VYSPER-343: enabling federation now possible in spring
diff --git a/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleXMPPServer.java b/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleXMPPServer.java
index e191e12..e3aba16 100644
--- a/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleXMPPServer.java
+++ b/server/core/src/main/java/org/apache/vysper/spring/SpringCompatibleXMPPServer.java
@@ -27,6 +27,7 @@
 
 import org.apache.vysper.xmpp.modules.Module;
 import org.apache.vysper.xmpp.server.Endpoint;
+import org.apache.vysper.xmpp.server.ServerFeatures;
 import org.apache.vysper.xmpp.server.XMPPServer;
 import org.springframework.core.io.Resource;
 
@@ -41,6 +42,8 @@
     protected final List<Module> listOfModules = new ArrayList<Module>();
     protected File certificateFile = null;
     protected String certificatePassword = null;
+    
+    protected boolean enableFederationFeature = false;
 
     public SpringCompatibleXMPPServer(String domain) {
         super(domain);
@@ -63,7 +66,18 @@
     public void setModules(Collection<Module> modules) {
         listOfModules.addAll(modules);
     }
-    
+
+    public void setEnableFederationFeature(boolean enableFederationFeature) {
+        this.enableFederationFeature = enableFederationFeature;
+    }
+
+    @Override
+    protected ServerFeatures createServerFeatures() {
+        final ServerFeatures serverFeatures = super.createServerFeatures();
+        serverFeatures.setRelayingToFederationServers(enableFederationFeature);
+        return serverFeatures;
+    }
+
     public void init() throws Exception {
         setTLSCertificateInfo(certificateFile, certificatePassword);
         start();
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
index e8f27e4..1cec6dd 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
@@ -166,7 +166,7 @@
         stanzaRelayBroker.setInternalRelay(internalStanzaRelay);
         stanzaRelayBroker.setExternalRelay(externalStanzaRelay);
 
-        ServerFeatures serverFeatures = new ServerFeatures();
+        ServerFeatures serverFeatures = createServerFeatures();
         serverFeatures.setAuthenticationMethods(saslMechanisms);
 
         serverRuntimeContext = new DefaultServerRuntimeContext(serverEntity, stanzaRelayBroker, serverFeatures,
@@ -193,6 +193,10 @@
         }
     }
 
+    protected ServerFeatures createServerFeatures() {
+        return new ServerFeatures();
+    }
+
     public void stop() {
         for (Endpoint endpoint : endpoints) {
             endpoint.stop();