diff --git a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java index 73ad4ea024..4acfd53b30 100644 --- a/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java +++ b/spring-integration-xmpp/src/main/java/org/springframework/integration/xmpp/config/XmppConnectionFactoryBean.java @@ -124,6 +124,16 @@ public class XmppConnectionFactoryBean extends AbstractFactoryBean To disable Roster subscription (e.g. for sub-protocol without its support such a GCM) + * specify this option as {@code null}. + * @param subscriptionMode the {@link Roster.SubscriptionMode} to use. + * Can be {@code null}. + * @see Roster#setSubscriptionMode(Roster.SubscriptionMode) + */ public void setSubscriptionMode(Roster.SubscriptionMode subscriptionMode) { this.subscriptionMode = subscriptionMode; } @@ -167,7 +177,8 @@ public class XmppConnectionFactoryBean extends AbstractFactoryBean - + + The subscription mode for the XMPP connection. + Dictates the policy for handling inbound messages from entries not already on the roster. + Values can be "accept_all", "manual", "reject_all" or empty assuming 'null' + to disable the Roster subscription altogether. + diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-simple.xml b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-simple.xml index feb76ebd15..66d478e8e3 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-simple.xml +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests-simple.xml @@ -12,5 +12,6 @@ + user="happy.user" password="blah" host="localhost" auto-startup="false" + subscription-mode=""/> diff --git a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java index 5b76c2749a..985d87ccc4 100644 --- a/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java +++ b/spring-integration-xmpp/src/test/java/org/springframework/integration/xmpp/config/XmppConnectionParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,6 +52,7 @@ public class XmppConnectionParserTests { xmppFb = ac.getBean("&connectionWithResource", XmppConnectionFactoryBean.class); assertEquals("Smack", TestUtils.getPropertyValue(xmppFb, "resource")); + assertNull(TestUtils.getPropertyValue(xmppFb, "subscriptionMode")); ac.close(); } diff --git a/src/reference/asciidoc/xmpp.adoc b/src/reference/asciidoc/xmpp.adoc index 6bd34c8752..a0abbfbb97 100644 --- a/src/reference/asciidoc/xmpp.adoc +++ b/src/reference/asciidoc/xmpp.adoc @@ -52,6 +52,13 @@ The default name _xmppConnection_ will be used for this connection bean. If the XMPP Connection goes stale, reconnection attempts will be made with an automatic login as long as the previous connection state was logged (authenticated). We also register a `ConnectionListener` which will log connection events if the DEBUG logging level is enabled. +The `subscription-mode` initiates the Roster listener to deal with incoming subscriptions from other users. +This functionality isn't always available for the target XMPP servers. +For example GCM fully disables it. +To switch off the Roster listener for subscriptions you should configure it with an empty string when using XML +configuration: `subscription-mode=""`, or with `XmppConnectionFactoryBean.setSubscriptionMode(null)` +when using Java Configuration. + [[xmpp-messages]] === XMPP Messages