This is an automated email from the ASF dual-hosted git repository.

ralaoui pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mina-vysper.git


The following commit(s) were added to refs/heads/master by this push:
     new 5bcde9d  Remove createComponentStanzaProcessor from the 
ServerRuntimeContext
5bcde9d is described below

commit 5bcde9dd39e5d088c883e00604786d1626f511fd
Author: Réda Housni Alaoui <reda.housniala...@gmail.com>
AuthorDate: Sun Aug 25 11:38:11 2019 +0200

    Remove createComponentStanzaProcessor from the ServerRuntimeContext
---
 .../apache/vysper/xmpp/addressing/EntityUtils.java |  9 +++
 .../xmpp/server/AlterableComponentRegistry.java    |  3 +-
 ...y.java => ComponentStanzaProcessorFactory.java} | 16 ++++-
 .../xmpp/server/DefaultServerRuntimeContext.java   | 11 ++--
 .../vysper/xmpp/server/ServerRuntimeContext.java   |  2 -
 .../xmpp/server/SimpleComponentRegistry.java       | 70 ++++++++++++----------
 .../org/apache/vysper/xmpp/server/XMPPServer.java  |  2 +-
 .../vysper/xmpp/server/components/Component.java   | 25 ++++----
 .../modules/extension/xep0045_muc/MUCModule.java   | 27 +++++----
 .../xep0060_pubsub/PublishSubscribeModule.java     | 53 ++++++++--------
 .../xmpp/extension/xep0065_socks/Socks5Module.java | 29 ++++-----
 .../extension/xep0065_socks/Socks5ModuleTest.java  |  9 ---
 12 files changed, 136 insertions(+), 120 deletions(-)

diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityUtils.java 
b/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityUtils.java
index 2401848..0bbc4c1 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityUtils.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/addressing/EntityUtils.java
@@ -60,4 +60,13 @@ public class EntityUtils {
             throw new RuntimeException("could not create component domain", e);
         }
     }
+    
+    public static Entity createComponentDomain(String subdomain, Entity 
serverEntity){
+        try {
+            return EntityImpl.parse(subdomain + "." + 
serverEntity.getDomain());
+        } catch (EntityFormatException e) {
+            // only happens when server entity is bad.
+            throw new RuntimeException("could not create component domain", e);
+        }
+    }
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
index f4ff214..b38fe0a 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
@@ -19,6 +19,7 @@
  */
 package org.apache.vysper.xmpp.server;
 
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.server.components.Component;
 
 /**
@@ -26,6 +27,6 @@ import org.apache.vysper.xmpp.server.components.Component;
  */
 public interface AlterableComponentRegistry extends ComponentRegistry {
 
-    void registerComponent(Component component);
+    void registerComponent(ComponentStanzaProcessorFactory processorFactory, 
Component component);
 
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/ComponentStanzaProcessorFactory.java
similarity index 64%
copy from 
server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
copy to 
server/core/src/main/java/org/apache/vysper/xmpp/server/ComponentStanzaProcessorFactory.java
index f4ff214..ef2dc04 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/AlterableComponentRegistry.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/ComponentStanzaProcessorFactory.java
@@ -19,13 +19,23 @@
  */
 package org.apache.vysper.xmpp.server;
 
-import org.apache.vysper.xmpp.server.components.Component;
+import static java.util.Objects.requireNonNull;
+
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
+import org.apache.vysper.xmpp.server.components.ComponentStanzaProcessor;
 
 /**
  * @author Réda Housni Alaoui
  */
-public interface AlterableComponentRegistry extends ComponentRegistry {
+public class ComponentStanzaProcessorFactory {
+
+    private final StanzaRelay stanzaRelay;
 
-    void registerComponent(Component component);
+    public ComponentStanzaProcessorFactory(StanzaRelay stanzaRelay) {
+        this.stanzaRelay = requireNonNull(stanzaRelay);
+    }
 
+    public ComponentStanzaProcessor build() {
+        return new ComponentStanzaProcessor(stanzaRelay);
+    }
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
index 83b1edb..87aac14 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
@@ -48,7 +48,6 @@ import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.StanzaHandlerLookup;
 import org.apache.vysper.xmpp.protocol.StanzaProcessor;
 import org.apache.vysper.xmpp.server.components.Component;
-import org.apache.vysper.xmpp.server.components.ComponentStanzaProcessor;
 import org.apache.vysper.xmpp.server.s2s.DefaultXMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -142,6 +141,8 @@ public class DefaultServerRuntimeContext implements 
ServerRuntimeContext, Module
     private final AlterableComponentRegistry componentRegistry;
 
     private final SimpleEventBus eventBus;
+    
+    private final ComponentStanzaProcessorFactory 
componentStanzaProcessorFactory;
 
     public DefaultServerRuntimeContext(Entity serverEntity, StanzaRelay 
stanzaRelay,
             AlterableComponentRegistry componentRegistry, ResourceRegistry 
resourceRegistry,
@@ -155,6 +156,7 @@ public class DefaultServerRuntimeContext implements 
ServerRuntimeContext, Module
         this.eventBus = new SimpleEventBus();
         this.serverFeatures = serverFeatures;
         this.resourceRegistry = resourceRegistry;
+        this.componentStanzaProcessorFactory = new 
ComponentStanzaProcessorFactory(stanzaRelay);
 
         addDictionaries(dictionaries);
     }
@@ -408,7 +410,7 @@ public class DefaultServerRuntimeContext implements 
ServerRuntimeContext, Module
 
     @Override
     public void registerComponent(Component component) {
-        componentRegistry.registerComponent(component);
+        componentRegistry.registerComponent(componentStanzaProcessorFactory, 
component);
     }
 
     @Override
@@ -416,9 +418,4 @@ public class DefaultServerRuntimeContext implements 
ServerRuntimeContext, Module
         return componentRegistry.getComponentStanzaProcessor(entity) != null;
     }
 
-    @Override
-    public ComponentStanzaProcessor createComponentStanzaProcessor() {
-        return new ComponentStanzaProcessor(stanzaRelay);
-    }
-
 }
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 9a1563b..1cebe0d 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
@@ -76,8 +76,6 @@ public interface ServerRuntimeContext {
 
     boolean hasComponentStanzaProcessor(Entity entity);
     
-    ComponentStanzaProcessor createComponentStanzaProcessor();
-    
     XMPPServerConnectorRegistry getServerConnectorRegistry();
     
     List<Module> getModules();
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/SimpleComponentRegistry.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/SimpleComponentRegistry.java
index d2df521..30b480e 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/SimpleComponentRegistry.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/SimpleComponentRegistry.java
@@ -19,48 +19,52 @@
  */
 package org.apache.vysper.xmpp.server;
 
-import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityUtils;
-import org.apache.vysper.xmpp.protocol.StanzaProcessor;
-import org.apache.vysper.xmpp.server.components.Component;
+import static java.util.Objects.requireNonNull;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import static java.util.Objects.requireNonNull;
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.addressing.EntityUtils;
+import org.apache.vysper.xmpp.protocol.StanzaProcessor;
+import org.apache.vysper.xmpp.server.components.Component;
+import org.apache.vysper.xmpp.server.components.ComponentStanzaProcessor;
 
 /**
  * @author Réda Housni Alaoui
  */
 public class SimpleComponentRegistry implements AlterableComponentRegistry {
-       
-       private final Entity serverEntity;
-       
-       /**
-        * map of all registered components, index by the subdomain they are 
registered for
-        */
-       private final Map<String, Component> componentMap = new HashMap<>();
 
-       public SimpleComponentRegistry(Entity serverEntity) {
-               this.serverEntity = requireNonNull(serverEntity);
-       }
-       
-       @Override
-       public void registerComponent(Component component){
-               componentMap.put(component.getSubdomain(), component);
-       }
+    private final Entity serverEntity;
+
+    /**
+     * map of all registered components, index by the subdomain they are 
registered
+     * for
+     */
+    private final Map<String, StanzaProcessor> processorBySubdomain = new 
HashMap<>();
+
+    public SimpleComponentRegistry(Entity serverEntity) {
+        this.serverEntity = requireNonNull(serverEntity);
+    }
+
+    @Override
+    public void registerComponent(ComponentStanzaProcessorFactory 
processorFactory, Component component) {
+        ComponentStanzaProcessor processor = processorFactory.build();
+        Entity fullDomain = 
EntityUtils.createComponentDomain(component.getSubdomain(), serverEntity);
+        
component.getComponentHandlers(fullDomain).forEach(processor::addHandler);
+        
component.getComponentHandlerDictionnaries(fullDomain).forEach(processor::addDictionary);
+        processorBySubdomain.put(component.getSubdomain(), processor);
+    }
+
+    @Override
+    public StanzaProcessor getComponentStanzaProcessor(Entity entity) {
+        String serverDomain = serverEntity.getDomain();
+        if (!EntityUtils.isAddressingServerComponent(entity, serverEntity)) {
+            return null;
+        }
+        String domain = entity.getDomain();
+        String subdomain = domain.replace("." + serverDomain, "");
+        return processorBySubdomain.get(subdomain);
+    }
 
-       @Override
-       public StanzaProcessor getComponentStanzaProcessor(Entity entity) {
-               String serverDomain = serverEntity.getDomain();
-               if (!EntityUtils.isAddressingServerComponent(entity, 
serverEntity)) {
-                       return null;
-               }
-               String domain = entity.getDomain();
-               String subdomain = domain.replace("." + serverDomain, "");
-               Component component = componentMap.get(subdomain);
-               if (component == null)
-                       return null;
-               return component.getStanzaProcessor();
-       }
 }
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 5268bc9..0176190 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
@@ -168,7 +168,7 @@ public class XMPPServer {
             tlsContextFactory.setKeyStoreType(tlsKeyStoreType);
         }
 
-        List<HandlerDictionary> dictionaries = new 
ArrayList<HandlerDictionary>();
+        List<HandlerDictionary> dictionaries = new ArrayList<>();
         addCoreDictionaries(dictionaries);
 
         ResourceRegistry resourceRegistry = new DefaultResourceRegistry();
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/Component.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/Component.java
index d3687b2..a7d2462 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/Component.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/Component.java
@@ -19,25 +19,28 @@
  */
 package org.apache.vysper.xmpp.server.components;
 
-import org.apache.vysper.xmpp.protocol.StanzaProcessor;
+import java.util.List;
+
+import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
 
 /**
- * a component is a server subsystem providing a dedicated extension.
- * components operate on their own subdomain, e.g. conference.vysper.org for 
MUC.
- * components have a dedicated context in which they receive stanzas 
+ * a component is a server subsystem providing a dedicated extension. 
components
+ * operate on their own subdomain, e.g. conference.vysper.org for MUC.
+ * components have a dedicated context in which they receive stanzas
  */
 public interface Component {
 
     /**
-     * the subdomain this component should become available under.
-     * example: subdomain = 'chat' + server domain = 'vysper.org' => 
'chat.vysper.org'
+     * the subdomain this component should become available under. example:
+     * subdomain = 'chat' + server domain = 'vysper.org' => 'chat.vysper.org'
+     * 
      * @return
      */
     String getSubdomain();
 
-    /**
-     * retrieve the stanza processor for the component
-     * @return
-     */
-    StanzaProcessor getStanzaProcessor();
+    List<StanzaHandler> getComponentHandlers(Entity fullDomain);
+
+    List<NamespaceHandlerDictionary> getComponentHandlerDictionnaries(Entity 
fullDomain);
 }
diff --git 
a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
 
b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
index 540c46a..572e61a 100644
--- 
a/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
+++ 
b/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/MUCModule.java
@@ -20,6 +20,7 @@
 package org.apache.vysper.xmpp.modules.extension.xep0045_muc;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -41,12 +42,12 @@ import 
org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ItemRequestListener;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
+import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.protocol.StanzaBroker;
-import org.apache.vysper.xmpp.protocol.StanzaProcessor;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.components.Component;
-import org.apache.vysper.xmpp.server.components.ComponentStanzaProcessor;
 import org.apache.vysper.xmpp.stanza.IQStanzaType;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 import org.slf4j.Logger;
@@ -73,8 +74,6 @@ public class MUCModule extends DefaultDiscoAwareModule
 
     private ServerRuntimeContext serverRuntimeContext;
 
-    private ComponentStanzaProcessor stanzaProcessor;
-
     public MUCModule(String subdomain) {
         this(subdomain, null);
     }
@@ -103,12 +102,6 @@ public class MUCModule extends DefaultDiscoAwareModule
 
         fullDomain = EntityUtils.createComponentDomain(subdomain, 
serverRuntimeContext);
 
-        ComponentStanzaProcessor processor = 
serverRuntimeContext.createComponentStanzaProcessor();
-        processor.addHandler(new MUCPresenceHandler(conference));
-        processor.addHandler(new MUCMessageHandler(conference, fullDomain));
-        processor.addHandler(new MUCIqAdminHandler(conference));
-        stanzaProcessor = processor;
-
         RoomStorageProvider roomStorageProvider = 
serverRuntimeContext.getStorageProvider(RoomStorageProvider.class);
         OccupantStorageProvider occupantStorageProvider = serverRuntimeContext
                 .getStorageProvider(OccupantStorageProvider.class);
@@ -245,8 +238,18 @@ public class MUCModule extends DefaultDiscoAwareModule
         return subdomain;
     }
 
-    public StanzaProcessor getStanzaProcessor() {
-        return stanzaProcessor;
+    @Override
+    public List<StanzaHandler> getComponentHandlers(Entity fullDomain) {
+        List<StanzaHandler> handlers = new ArrayList<>();
+        handlers.add(new MUCPresenceHandler(conference));
+        handlers.add(new MUCMessageHandler(conference, fullDomain));
+        handlers.add(new MUCIqAdminHandler(conference));
+        return handlers;
+    }
+
+    @Override
+    public List<NamespaceHandlerDictionary> 
getComponentHandlerDictionnaries(Entity fullDomain) {
+        return Collections.emptyList();
     }
 
 }
diff --git 
a/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
 
b/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
index 4ea5607..be965a4 100644
--- 
a/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
+++ 
b/server/extensions/xep0060-pubsub/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/PublishSubscribeModule.java
@@ -20,6 +20,7 @@
 package org.apache.vysper.xmpp.modules.extension.xep0060_pubsub;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.vysper.compliance.SpecCompliant;
@@ -74,8 +75,6 @@ public class PublishSubscribeModule extends 
DefaultDiscoAwareModule implements C
     // for debugging
     private final Logger logger = 
LoggerFactory.getLogger(PublishSubscribeModule.class);
 
-    private ComponentStanzaProcessor stanzaProcessor;
-
     private ServerRuntimeContext serverRuntimeContext;
 
     /**
@@ -138,13 +137,6 @@ public class PublishSubscribeModule extends 
DefaultDiscoAwareModule implements C
             
serviceConfiguration.setLeafNodeStorageProvider(leafNodeStorageProvider);
         }
 
-        ComponentStanzaProcessor processor = 
serverRuntimeContext.createComponentStanzaProcessor();
-        addPubsubHandlers(processor);
-        addPubsubOwnerHandlers(processor);
-        processor
-                .addDictionary(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_EVENT, new 
MessageHandler()));
-        stanzaProcessor = processor;
-
         this.serviceConfiguration.setDomainJID(fullDomain);
         this.serviceConfiguration.initialize();
     }
@@ -232,38 +224,49 @@ public class PublishSubscribeModule extends 
DefaultDiscoAwareModule implements C
         return items;
     }
 
+    public String getSubdomain() {
+        return subdomain;
+    }
+
+    @Override
+    public List<StanzaHandler> getComponentHandlers(Entity fullDomain) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<NamespaceHandlerDictionary> 
getComponentHandlerDictionnaries(Entity fullDomain) {
+        List<NamespaceHandlerDictionary> dictionaries = new ArrayList<>();
+        addPubsubHandlers(dictionaries);
+        addPubsubOwnerHandlers(dictionaries);
+        dictionaries.add(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_EVENT, new 
MessageHandler()));
+        return dictionaries;
+    }
+
     /**
      * Inserts the handlers for the pubsub#owner namespace into the 
HandlerDictionary.
-     * @param dictionary the list to which the handlers should be appended.
+     * @param dictionaries the list to which the handlers should be appended.
      */
-    private void addPubsubOwnerHandlers(ComponentStanzaProcessor dictionary) {
-        ArrayList<StanzaHandler> pubsubOwnerHandlers = new 
ArrayList<StanzaHandler>();
+    private void addPubsubOwnerHandlers(List<NamespaceHandlerDictionary> 
dictionaries) {
+        ArrayList<StanzaHandler> pubsubOwnerHandlers = new ArrayList<>();
         pubsubOwnerHandlers.add(new 
PubSubOwnerConfigureNodeHandler(serviceConfiguration));
         pubsubOwnerHandlers.add(new 
PubSubOwnerDeleteNodeHandler(serviceConfiguration));
-        dictionary
-                .addDictionary(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, 
pubsubOwnerHandlers));
+        dictionaries
+                .add(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB_OWNER, 
pubsubOwnerHandlers));
     }
 
     /**
      * Inserts the handlers for the pubsub namespace into the 
HandlerDictionary.
-     * @param dictionary the list to which the handlers should be appended.
+     * @param dictionaries the list to which the handlers should be appended.
      */
-    private void addPubsubHandlers(ComponentStanzaProcessor dictionary) {
-        ArrayList<StanzaHandler> pubsubHandlers = new 
ArrayList<StanzaHandler>();
+    private void addPubsubHandlers(List<NamespaceHandlerDictionary> 
dictionaries) {
+        ArrayList<StanzaHandler> pubsubHandlers = new ArrayList<>();
         pubsubHandlers.add(new PubSubSubscribeHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubUnsubscribeHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubPublishHandler(serviceConfiguration));
         pubsubHandlers.add(new PubSubCreateNodeHandler(serviceConfiguration));
         pubsubHandlers.add(new 
PubSubRetrieveSubscriptionsHandler(serviceConfiguration));
         pubsubHandlers.add(new 
PubSubRetrieveAffiliationsHandler(serviceConfiguration));
-        dictionary.addDictionary(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
-    }
-
-    public String getSubdomain() {
-        return subdomain;
+        dictionaries.add(new 
NamespaceHandlerDictionary(NamespaceURIs.XEP0060_PUBSUB, pubsubHandlers));
     }
 
-    public StanzaProcessor getStanzaProcessor() {
-        return stanzaProcessor;
-    }
 }
diff --git 
a/server/extensions/xep0065-socks/src/main/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5Module.java
 
b/server/extensions/xep0065-socks/src/main/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5Module.java
index a2331bc..24ef2de 100644
--- 
a/server/extensions/xep0065-socks/src/main/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5Module.java
+++ 
b/server/extensions/xep0065-socks/src/main/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5Module.java
@@ -22,6 +22,7 @@ package org.apache.vysper.xmpp.extension.xep0065_socks;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.commons.lang.Validate;
@@ -37,8 +38,10 @@ import 
org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequest;
 import org.apache.vysper.xmpp.modules.servicediscovery.management.Item;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ItemRequestListener;
 import 
org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
+import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.protocol.StanzaBroker;
+import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.StanzaProcessor;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.components.Component;
@@ -67,8 +70,6 @@ public class Socks5Module extends DefaultDiscoAwareModule 
implements Component,
     private InetSocketAddress proxyAddress = new 
InetSocketAddress(DEFAULT_PORT);
     private int idleTimeInSeconds = DEFAULT_IDLE_TIME;
     
-    private ComponentStanzaProcessor stanzaProcessor;
-    
     private Socks5ConnectionsRegistry connectionsRegistry = new 
DefaultSocks5ConnectionsRegistry();
     
     /*
@@ -122,9 +123,6 @@ public class Socks5Module extends DefaultDiscoAwareModule 
implements Component,
         
         fullDomain = EntityUtils.createComponentDomain(subdomain, 
serverRuntimeContext);
         
-        stanzaProcessor = 
serverRuntimeContext.createComponentStanzaProcessor();
-        stanzaProcessor.addHandler(new Socks5IqHandler(fullDomain, 
proxyAddress, connectionsRegistry));
-        
         try {
             startProxy();
         } catch (Exception e) {
@@ -165,17 +163,20 @@ public class Socks5Module extends DefaultDiscoAwareModule 
implements Component,
     /**
      * {@inheritDoc}
      */
-    public StanzaProcessor getStanzaProcessor() {
-        return stanzaProcessor;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
     public String getSubdomain() {
         return subdomain;
     }
 
+    @Override
+    public List<StanzaHandler> getComponentHandlers(Entity fullDomain) {
+        return Collections.singletonList(new Socks5IqHandler(fullDomain, 
proxyAddress, connectionsRegistry));
+    }
+
+    @Override
+    public List<NamespaceHandlerDictionary> 
getComponentHandlerDictionnaries(Entity fullDomain) {
+        return Collections.emptyList();
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -208,10 +209,6 @@ public class Socks5Module extends DefaultDiscoAwareModule 
implements Component,
         return COMPONENT_INFO;
     }
 
-    public Socks5ConnectionsRegistry getConnectionsRegistry() {
-        return connectionsRegistry;
-    }
-
     public void setConnectionsRegistry(Socks5ConnectionsRegistry 
connectionsRegistry) {
         this.connectionsRegistry = connectionsRegistry;
     }
diff --git 
a/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5ModuleTest.java
 
b/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5ModuleTest.java
index f01d701..59df298 100644
--- 
a/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5ModuleTest.java
+++ 
b/server/extensions/xep0065-socks/src/test/java/org/apache/vysper/xmpp/extension/xep0065_socks/Socks5ModuleTest.java
@@ -67,8 +67,6 @@ public class Socks5ModuleTest extends Mockito {
     @Before
     public void before() {
         when(serverRuntimeContext.getServerEntity()).thenReturn(SERVER);
-        ComponentStanzaProcessor componentStanzaProcessor = 
mock(ComponentStanzaProcessor.class);
-        
when(serverRuntimeContext.createComponentStanzaProcessor()).thenReturn(componentStanzaProcessor);
 
         module.setConnectionsRegistry(connectionsRegistry);
     }
@@ -104,13 +102,6 @@ public class Socks5ModuleTest extends Mockito {
     }
 
     @Test
-    public void getStanzaProcessor() throws Exception {
-        module = new Socks5Module("socks");
-        module.initialize(serverRuntimeContext);
-        Assert.assertTrue(module.getStanzaProcessor() instanceof 
ComponentStanzaProcessor);
-    }
-
-    @Test
     public void discoItems() throws Exception {
         ServiceCollector collector = new ServiceCollector();
 

Reply via email to