Author: ngn
Date: Wed Mar 23 10:25:08 2011
New Revision: 1084528

URL: http://svn.apache.org/viewvc?rev=1084528&view=rev
Log:
Add support for adding modules to XMPPServer before start() is called 
(VYSPER-279)

Modified:
    
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
    
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java

Modified: 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java?rev=1084528&r1=1084527&r2=1084528&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
 (original)
+++ 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
 Wed Mar 23 10:25:08 2011
@@ -89,13 +89,6 @@ public class ServerMain {
 
         server.setTLSCertificateInfo(new 
File("src/main/config/bogus_mina_tls.cert"), "boguspw");
 
-        try {
-            server.start();
-            System.out.println("vysper server is running...");
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
         server.addModule(new SoftwareVersionModule());
         server.addModule(new EntityTimeModule());
         server.addModule(new VcardTempModule());
@@ -113,6 +106,13 @@ public class ServerMain {
                 server.addModule(module);
             }
         }
+        
+        try {
+            server.start();
+            System.out.println("vysper server is running...");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
     private static List<Module> createModuleInstances(String[] 
moduleClassNames) {

Modified: 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
URL: 
http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java?rev=1084528&r1=1084527&r2=1084528&view=diff
==============================================================================
--- 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
 (original)
+++ 
mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/XMPPServer.java
 Wed Mar 23 10:25:08 2011
@@ -73,6 +73,8 @@ public class XMPPServer {
     private String tlsCertificatePassword;
 
     private final List<Endpoint> endpoints = new ArrayList<Endpoint>();
+
+    private final List<Module> initialModules = new ArrayList<Module>();
     
 
     public XMPPServer(String domain) {
@@ -80,6 +82,10 @@ public class XMPPServer {
 
         // default list of SASL mechanisms
         saslMechanisms.add(new Plain());
+        
+        // add default modules
+        initialModules.add(new ServiceDiscoveryModule());
+        initialModules.add(new RosterModule());
     }
 
     public void setSASLMechanisms(List<SASLMechanism> validMechanisms) {
@@ -137,8 +143,9 @@ public class XMPPServer {
         
serverRuntimeContext.setStorageProviderRegistry(storageProviderRegistry);
         serverRuntimeContext.setTlsContextFactory(tlsContextFactory);
 
-        serverRuntimeContext.addModule(new ServiceDiscoveryModule());
-        serverRuntimeContext.addModule(new RosterModule());
+        for(Module module : initialModules) {
+            serverRuntimeContext.addModule(module);
+        }
 
         stanzaRelayBroker.setServerRuntimeContext(serverRuntimeContext);
         internalStanzaRelay.setServerRuntimeContext(serverRuntimeContext);
@@ -169,7 +176,11 @@ public class XMPPServer {
     }
 
     public void addModule(Module module) {
-        serverRuntimeContext.addModule(module);
+        if(serverRuntimeContext != null) {
+            serverRuntimeContext.addModule(module);
+        } else {
+            initialModules.add(module);
+        }
     }
 
     private void addCoreDictionaries(List<HandlerDictionary> dictionaries) {


Reply via email to