Allow to override ServerRuntimeContext creation in XMPPServer (#7)
diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
index 0a869f4..0972ab4 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
@@ -81,4 +81,6 @@
List<Module> getModules();
<T> T getModule(Class<T> clazz);
+
+ void addModule(Module module);
}
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 01baafb..f22f66b 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
@@ -34,8 +34,8 @@
import org.apache.vysper.xmpp.authentication.AccountManagement;
import org.apache.vysper.xmpp.authentication.Plain;
import org.apache.vysper.xmpp.authentication.SASLMechanism;
-import org.apache.vysper.xmpp.cryptography.NonCheckingX509TrustManagerFactory;
import org.apache.vysper.xmpp.cryptography.InputStreamBasedTLSContextFactory;
+import org.apache.vysper.xmpp.cryptography.NonCheckingX509TrustManagerFactory;
import org.apache.vysper.xmpp.cryptography.TrustManagerFactory;
import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelayBroker;
@@ -68,7 +68,7 @@
private String serverDomain;
- private DefaultServerRuntimeContext serverRuntimeContext;
+ private ServerRuntimeContext serverRuntimeContext;
private StorageProviderRegistry storageProviderRegistry;
@@ -187,12 +187,9 @@
stanzaRelayBroker.setInternalRelay(internalStanzaRelay);
stanzaRelayBroker.setExternalRelay(externalStanzaRelay);
- serverRuntimeContext = new DefaultServerRuntimeContext(serverEntity, stanzaRelayBroker, serverFeatures,
- dictionaries, resourceRegistry);
- serverRuntimeContext.setStorageProviderRegistry(storageProviderRegistry);
- serverRuntimeContext.setTlsContextFactory(tlsContextFactory);
-
- for(Module module : initialModules) {
+ serverRuntimeContext = createServerRuntimeContext(serverFeatures, tlsContextFactory, dictionaries,
+ resourceRegistry, serverEntity);
+ for (Module module : initialModules) {
serverRuntimeContext.addModule(module);
}
@@ -211,6 +208,17 @@
}
}
+ protected ServerRuntimeContext createServerRuntimeContext(ServerFeatures serverFeatures,
+ InputStreamBasedTLSContextFactory tlsContextFactory, List<HandlerDictionary> dictionaries,
+ ResourceRegistry resourceRegistry, EntityImpl serverEntity) {
+ DefaultServerRuntimeContext serverRuntimeContext = new DefaultServerRuntimeContext(serverEntity,
+ stanzaRelayBroker, serverFeatures, dictionaries, resourceRegistry);
+ serverRuntimeContext.setStorageProviderRegistry(storageProviderRegistry);
+ serverRuntimeContext.setTlsContextFactory(tlsContextFactory);
+
+ return serverRuntimeContext;
+ }
+
protected ServerFeatures createServerFeatures() {
return new ServerFeatures();
}