mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 22:32:06 +01:00
AMP should use provider/packet packages and JUL
- Move AMPExtensionProvider to amp.provider - Move AMPExtension to amp.packet - Move java.util.logging for logging SMACK-544
This commit is contained in:
parent
6110872062
commit
0058631ed6
8 changed files with 48 additions and 28 deletions
|
@ -17,6 +17,8 @@
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp;
|
||||||
|
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
|
|
||||||
public class AMPDeliverCondition implements AMPExtension.Condition {
|
public class AMPDeliverCondition implements AMPExtension.Condition {
|
||||||
|
|
||||||
|
@ -26,8 +28,9 @@ public class AMPDeliverCondition implements AMPExtension.Condition {
|
||||||
* Check if server supports deliver condition
|
* Check if server supports deliver condition
|
||||||
* @param connection Smack connection instance
|
* @param connection Smack connection instance
|
||||||
* @return true if deliver condition is supported.
|
* @return true if deliver condition is supported.
|
||||||
|
* @throws XMPPException
|
||||||
*/
|
*/
|
||||||
public static boolean isSupported(XMPPConnection connection) {
|
public static boolean isSupported(XMPPConnection connection) throws XMPPException {
|
||||||
return AMPManager.isConditionSupported(connection, NAME);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp;
|
||||||
|
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
import org.jivesoftware.smack.util.XmppDateTime;
|
import org.jivesoftware.smack.util.XmppDateTime;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
@ -30,8 +32,9 @@ public class AMPExpireAtCondition implements AMPExtension.Condition {
|
||||||
* Check if server supports expire-at condition
|
* Check if server supports expire-at condition
|
||||||
* @param connection Smack connection instance
|
* @param connection Smack connection instance
|
||||||
* @return true if expire-at condition is supported.
|
* @return true if expire-at condition is supported.
|
||||||
|
* @throws XMPPException
|
||||||
*/
|
*/
|
||||||
public static boolean isSupported(XMPPConnection connection) {
|
public static boolean isSupported(XMPPConnection connection) throws XMPPException {
|
||||||
return AMPManager.isConditionSupported(connection, NAME);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.jivesoftware.smackx.amp;
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
import org.jivesoftware.smack.ConnectionCreationListener;
|
import org.jivesoftware.smack.ConnectionCreationListener;
|
||||||
import org.jivesoftware.smack.XMPPException;
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
import org.jivesoftware.smackx.disco.ServiceDiscoveryManager;
|
||||||
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
|
import org.jivesoftware.smackx.disco.packet.DiscoverInfo;
|
||||||
|
|
||||||
|
@ -82,8 +83,9 @@ public class AMPManager {
|
||||||
* @param connection active xmpp connection
|
* @param connection active xmpp connection
|
||||||
* @param action action to check
|
* @param action action to check
|
||||||
* @return true if this action is supported.
|
* @return true if this action is supported.
|
||||||
|
* @throws XMPPException
|
||||||
*/
|
*/
|
||||||
public static boolean isActionSupported(XMPPConnection connection, AMPExtension.Action action) {
|
public static boolean isActionSupported(XMPPConnection connection, AMPExtension.Action action) throws XMPPException {
|
||||||
String featureName = AMPExtension.NAMESPACE + "?action=" + action.toString();
|
String featureName = AMPExtension.NAMESPACE + "?action=" + action.toString();
|
||||||
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
@ -93,28 +95,25 @@ public class AMPManager {
|
||||||
* @param connection active xmpp connection
|
* @param connection active xmpp connection
|
||||||
* @param conditionName name of condition to check
|
* @param conditionName name of condition to check
|
||||||
* @return true if this condition is supported.
|
* @return true if this condition is supported.
|
||||||
|
* @throws XMPPException
|
||||||
* @see AMPDeliverCondition
|
* @see AMPDeliverCondition
|
||||||
* @see AMPExpireAtCondition
|
* @see AMPExpireAtCondition
|
||||||
* @see AMPMatchResourceCondition
|
* @see AMPMatchResourceCondition
|
||||||
*/
|
*/
|
||||||
public static boolean isConditionSupported(XMPPConnection connection, String conditionName) {
|
public static boolean isConditionSupported(XMPPConnection connection, String conditionName) throws XMPPException {
|
||||||
String featureName = AMPExtension.NAMESPACE + "?condition=" + conditionName;
|
String featureName = AMPExtension.NAMESPACE + "?condition=" + conditionName;
|
||||||
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) {
|
private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) throws XMPPException {
|
||||||
try {
|
ServiceDiscoveryManager discoveryManager = ServiceDiscoveryManager.getInstanceFor(connection);
|
||||||
ServiceDiscoveryManager discoveryManager = ServiceDiscoveryManager.getInstanceFor(connection);
|
DiscoverInfo info = discoveryManager.discoverInfo(connection.getServiceName(), node);
|
||||||
DiscoverInfo info = discoveryManager.discoverInfo(connection.getServiceName(), node);
|
Iterator<DiscoverInfo.Feature> it = info.getFeatures();
|
||||||
Iterator<DiscoverInfo.Feature> it = info.getFeatures();
|
while (it.hasNext()) {
|
||||||
while (it.hasNext()) {
|
DiscoverInfo.Feature feature = it.next();
|
||||||
DiscoverInfo.Feature feature = it.next();
|
if (featureName.equals(feature.getVar())) {
|
||||||
if (featureName.equals(feature.getVar())) {
|
return true;
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (XMPPException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp;
|
||||||
|
|
||||||
import org.jivesoftware.smack.XMPPConnection;
|
import org.jivesoftware.smack.XMPPConnection;
|
||||||
|
import org.jivesoftware.smack.XMPPException;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
|
|
||||||
public class AMPMatchResourceCondition implements AMPExtension.Condition {
|
public class AMPMatchResourceCondition implements AMPExtension.Condition {
|
||||||
|
|
||||||
|
@ -26,8 +28,9 @@ public class AMPMatchResourceCondition implements AMPExtension.Condition {
|
||||||
* Check if server supports match-resource condition
|
* Check if server supports match-resource condition
|
||||||
* @param connection Smack connection instance
|
* @param connection Smack connection instance
|
||||||
* @return true if match-resource condition is supported.
|
* @return true if match-resource condition is supported.
|
||||||
|
* @throws XMPPException
|
||||||
*/
|
*/
|
||||||
public static boolean isSupported(XMPPConnection connection) {
|
public static boolean isSupported(XMPPConnection connection) throws XMPPException {
|
||||||
return AMPManager.isConditionSupported(connection, NAME);
|
return AMPManager.isConditionSupported(connection, NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,12 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp.packet;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.PacketExtension;
|
import org.jivesoftware.smack.packet.PacketExtension;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPDeliverCondition;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPExpireAtCondition;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPMatchResourceCondition;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
@ -259,7 +262,7 @@ public class AMPExtension implements PacketExtension {
|
||||||
*/
|
*/
|
||||||
notify;
|
notify;
|
||||||
|
|
||||||
static final String ATTRIBUTE_NAME="action";
|
public static final String ATTRIBUTE_NAME="action";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
|
@ -14,14 +14,21 @@
|
||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp.provider;
|
||||||
|
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.PacketExtension;
|
import org.jivesoftware.smack.packet.PacketExtension;
|
||||||
import org.jivesoftware.smack.provider.PacketExtensionProvider;
|
import org.jivesoftware.smack.provider.PacketExtensionProvider;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPDeliverCondition;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPExpireAtCondition;
|
||||||
|
import org.jivesoftware.smackx.amp.AMPMatchResourceCondition;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
||||||
|
|
||||||
public class AMPExtensionProvider implements PacketExtensionProvider {
|
public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
|
private static final Logger LOGGER = Logger.getLogger(AMPExtensionProvider.class.getName());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new AMPExtensionProvider.
|
* Creates a new AMPExtensionProvider.
|
||||||
|
@ -46,7 +53,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
try {
|
try {
|
||||||
status = AMPExtension.Status.valueOf(statusString);
|
status = AMPExtension.Status.valueOf(statusString);
|
||||||
} catch (IllegalArgumentException ex) {
|
} catch (IllegalArgumentException ex) {
|
||||||
System.err.println("Found invalid amp status " + statusString);
|
LOGGER.severe("Found invalid amp status " + statusString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,12 +80,12 @@ public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
try {
|
try {
|
||||||
action = AMPExtension.Action.valueOf(actionString);
|
action = AMPExtension.Action.valueOf(actionString);
|
||||||
} catch (IllegalArgumentException ex) {
|
} catch (IllegalArgumentException ex) {
|
||||||
System.err.println("Found invalid rule action value " + actionString);
|
LOGGER.severe("Found invalid rule action value " + actionString);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (action == null || condition == null) {
|
if (action == null || condition == null) {
|
||||||
System.err.println("Rule is skipped because either it's action or it's condition is invalid");
|
LOGGER.severe("Rule is skipped because either it's action or it's condition is invalid");
|
||||||
} else {
|
} else {
|
||||||
AMPExtension.Rule rule = new AMPExtension.Rule(action, condition);
|
AMPExtension.Rule rule = new AMPExtension.Rule(action, condition);
|
||||||
ampExtension.addRule(rule);
|
ampExtension.addRule(rule);
|
||||||
|
@ -96,7 +103,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
|
|
||||||
private AMPExtension.Condition createCondition(String name, String value) {
|
private AMPExtension.Condition createCondition(String name, String value) {
|
||||||
if (name == null || value == null) {
|
if (name == null || value == null) {
|
||||||
System.err.println("Can't create rule condition from null name and/or value");
|
LOGGER.severe("Can't create rule condition from null name and/or value");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,7 +112,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
try {
|
try {
|
||||||
return new AMPDeliverCondition(AMPDeliverCondition.Value.valueOf(value));
|
return new AMPDeliverCondition(AMPDeliverCondition.Value.valueOf(value));
|
||||||
} catch (IllegalArgumentException ex) {
|
} catch (IllegalArgumentException ex) {
|
||||||
System.err.println("Found invalid rule delivery condition value " + value);
|
LOGGER.severe("Found invalid rule delivery condition value " + value);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} else if (AMPExpireAtCondition.NAME.equals(name)) {
|
} else if (AMPExpireAtCondition.NAME.equals(name)) {
|
||||||
|
@ -114,11 +121,11 @@ public class AMPExtensionProvider implements PacketExtensionProvider {
|
||||||
try {
|
try {
|
||||||
return new AMPMatchResourceCondition(AMPMatchResourceCondition.Value.valueOf(value));
|
return new AMPMatchResourceCondition(AMPMatchResourceCondition.Value.valueOf(value));
|
||||||
} catch (IllegalArgumentException ex) {
|
} catch (IllegalArgumentException ex) {
|
||||||
System.err.println("Found invalid rule match-resource condition value " + value);
|
LOGGER.severe("Found invalid rule match-resource condition value " + value);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
System.err.println("Found unknown rule condition name " + name);
|
LOGGER.severe("Found unknown rule condition name " + name);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -453,7 +453,7 @@
|
||||||
<extensionProvider>
|
<extensionProvider>
|
||||||
<elementName>amp</elementName>
|
<elementName>amp</elementName>
|
||||||
<namespace>http://jabber.org/protocol/amp</namespace>
|
<namespace>http://jabber.org/protocol/amp</namespace>
|
||||||
<className>org.jivesoftware.smackx.amp.AMPExtensionProvider</className>
|
<className>org.jivesoftware.smackx.amp.provider.AMPExtensionProvider</className>
|
||||||
</extensionProvider>
|
</extensionProvider>
|
||||||
|
|
||||||
</smackProviders>
|
</smackProviders>
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
package org.jivesoftware.smackx.amp;
|
package org.jivesoftware.smackx.amp;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.PacketExtension;
|
import org.jivesoftware.smack.packet.PacketExtension;
|
||||||
|
import org.jivesoftware.smackx.amp.packet.AMPExtension;
|
||||||
|
import org.jivesoftware.smackx.amp.provider.AMPExtensionProvider;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.xmlpull.v1.XmlPullParser;
|
import org.xmlpull.v1.XmlPullParser;
|
||||||
|
|
Loading…
Reference in a new issue