diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java index 22bdc4702..d8e705d71 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPDeliverCondition.java @@ -17,6 +17,8 @@ package org.jivesoftware.smackx.amp; import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smackx.amp.packet.AMPExtension; public class AMPDeliverCondition implements AMPExtension.Condition { @@ -26,8 +28,9 @@ public class AMPDeliverCondition implements AMPExtension.Condition { * Check if server supports deliver condition * @param connection Smack connection instance * @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); } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java index ee31f83c4..83b098038 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExpireAtCondition.java @@ -17,7 +17,9 @@ package org.jivesoftware.smackx.amp; import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.util.XmppDateTime; +import org.jivesoftware.smackx.amp.packet.AMPExtension; import java.util.Date; @@ -30,8 +32,9 @@ public class AMPExpireAtCondition implements AMPExtension.Condition { * Check if server supports expire-at condition * @param connection Smack connection instance * @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); } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java index b445d7cf1..51e2ab43a 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPManager.java @@ -19,6 +19,7 @@ package org.jivesoftware.smackx.amp; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.ConnectionCreationListener; import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smackx.amp.packet.AMPExtension; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; @@ -82,8 +83,9 @@ public class AMPManager { * @param connection active xmpp connection * @param action action to check * @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(); return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE); } @@ -93,28 +95,25 @@ public class AMPManager { * @param connection active xmpp connection * @param conditionName name of condition to check * @return true if this condition is supported. + * @throws XMPPException * @see AMPDeliverCondition * @see AMPExpireAtCondition * @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; return isFeatureSupportedByServer(connection, featureName, AMPExtension.NAMESPACE); } - private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) { - try { - ServiceDiscoveryManager discoveryManager = ServiceDiscoveryManager.getInstanceFor(connection); - DiscoverInfo info = discoveryManager.discoverInfo(connection.getServiceName(), node); - Iterator it = info.getFeatures(); - while (it.hasNext()) { - DiscoverInfo.Feature feature = it.next(); - if (featureName.equals(feature.getVar())) { - return true; - } + private static boolean isFeatureSupportedByServer(XMPPConnection connection, String featureName, String node) throws XMPPException { + ServiceDiscoveryManager discoveryManager = ServiceDiscoveryManager.getInstanceFor(connection); + DiscoverInfo info = discoveryManager.discoverInfo(connection.getServiceName(), node); + Iterator it = info.getFeatures(); + while (it.hasNext()) { + DiscoverInfo.Feature feature = it.next(); + if (featureName.equals(feature.getVar())) { + return true; } - } catch (XMPPException e) { - e.printStackTrace(); } return false; } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java index b7fcae4da..66d81c0f8 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPMatchResourceCondition.java @@ -17,6 +17,8 @@ package org.jivesoftware.smackx.amp; import org.jivesoftware.smack.XMPPConnection; +import org.jivesoftware.smack.XMPPException; +import org.jivesoftware.smackx.amp.packet.AMPExtension; public class AMPMatchResourceCondition implements AMPExtension.Condition { @@ -26,8 +28,9 @@ public class AMPMatchResourceCondition implements AMPExtension.Condition { * Check if server supports match-resource condition * @param connection Smack connection instance * @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); } diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtension.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/packet/AMPExtension.java similarity index 96% rename from extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtension.java rename to extensions/src/main/java/org/jivesoftware/smackx/amp/packet/AMPExtension.java index cb6aca8fa..d80d0a359 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtension.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/packet/AMPExtension.java @@ -14,9 +14,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.jivesoftware.smackx.amp; +package org.jivesoftware.smackx.amp.packet; 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.concurrent.CopyOnWriteArrayList; @@ -259,7 +262,7 @@ public class AMPExtension implements PacketExtension { */ notify; - static final String ATTRIBUTE_NAME="action"; + public static final String ATTRIBUTE_NAME="action"; } /** diff --git a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtensionProvider.java b/extensions/src/main/java/org/jivesoftware/smackx/amp/provider/AMPExtensionProvider.java similarity index 81% rename from extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtensionProvider.java rename to extensions/src/main/java/org/jivesoftware/smackx/amp/provider/AMPExtensionProvider.java index 5a746a628..772b231b8 100644 --- a/extensions/src/main/java/org/jivesoftware/smackx/amp/AMPExtensionProvider.java +++ b/extensions/src/main/java/org/jivesoftware/smackx/amp/provider/AMPExtensionProvider.java @@ -14,14 +14,21 @@ * See the License for the specific language governing permissions and * 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.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; public class AMPExtensionProvider implements PacketExtensionProvider { + private static final Logger LOGGER = Logger.getLogger(AMPExtensionProvider.class.getName()); /** * Creates a new AMPExtensionProvider. @@ -46,7 +53,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider { try { status = AMPExtension.Status.valueOf(statusString); } 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 { action = AMPExtension.Action.valueOf(actionString); } 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) { - 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 { AMPExtension.Rule rule = new AMPExtension.Rule(action, condition); ampExtension.addRule(rule); @@ -96,7 +103,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider { private AMPExtension.Condition createCondition(String name, String value) { 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; } @@ -105,7 +112,7 @@ public class AMPExtensionProvider implements PacketExtensionProvider { try { return new AMPDeliverCondition(AMPDeliverCondition.Value.valueOf(value)); } catch (IllegalArgumentException ex) { - System.err.println("Found invalid rule delivery condition value " + value); + LOGGER.severe("Found invalid rule delivery condition value " + value); return null; } } else if (AMPExpireAtCondition.NAME.equals(name)) { @@ -114,11 +121,11 @@ public class AMPExtensionProvider implements PacketExtensionProvider { try { return new AMPMatchResourceCondition(AMPMatchResourceCondition.Value.valueOf(value)); } 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; } } else { - System.err.println("Found unknown rule condition name " + name); + LOGGER.severe("Found unknown rule condition name " + name); return null; } } diff --git a/extensions/src/main/resources/org.jivesoftware.smackx/extensions.providers b/extensions/src/main/resources/org.jivesoftware.smackx/extensions.providers index 72fc8d29b..4efacbf6a 100644 --- a/extensions/src/main/resources/org.jivesoftware.smackx/extensions.providers +++ b/extensions/src/main/resources/org.jivesoftware.smackx/extensions.providers @@ -453,7 +453,7 @@ amp http://jabber.org/protocol/amp - org.jivesoftware.smackx.amp.AMPExtensionProvider + org.jivesoftware.smackx.amp.provider.AMPExtensionProvider diff --git a/extensions/src/test/java/org/jivesoftware/smackx/amp/AMPExtensionTest.java b/extensions/src/test/java/org/jivesoftware/smackx/amp/AMPExtensionTest.java index dfc9b5e71..7b54cd877 100644 --- a/extensions/src/test/java/org/jivesoftware/smackx/amp/AMPExtensionTest.java +++ b/extensions/src/test/java/org/jivesoftware/smackx/amp/AMPExtensionTest.java @@ -17,6 +17,8 @@ package org.jivesoftware.smackx.amp; 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.Test; import org.xmlpull.v1.XmlPullParser;