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 2bfe52c  Revert "Move S2S handlers to StanzaHandlerLookup"
2bfe52c is described below

commit 2bfe52c26c29d5f075c54c9d3e02a5f644658308
Author: Réda Housni Alaoui <reda.housniala...@gmail.com>
AuthorDate: Tue Aug 27 09:43:28 2019 +0200

    Revert "Move S2S handlers to StanzaHandlerLookup"
    
    This reverts commit e6df72e3
---
 .../vysper/xmpp/protocol/StanzaHandlerLookup.java  | 68 +++++++++-------------
 .../vysper/xmpp/server/ServerRuntimeContext.java   | 11 ++--
 .../server/s2s/DefaultXMPPServerConnector.java     | 21 ++++++-
 3 files changed, 53 insertions(+), 47 deletions(-)

diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
index 040d332..9820487 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerLookup.java
@@ -30,39 +30,27 @@ import 
org.apache.vysper.xmpp.modules.core.im.handler.PresenceHandler;
 import 
org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbResultHandler;
 import 
org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbVerifyHandler;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
-import org.apache.vysper.xmpp.server.s2s.FeaturesHandler;
-import org.apache.vysper.xmpp.server.s2s.TlsProceedHandler;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
 
 /**
- * for effeciently looking up the right handler for a stanza. at first this
- * class tries to determine the stanza's specific namespace which uniquely
- * brings up a NamespaceHandlerDictionary. then, all handlers in this directory
- * are visited and can verify if they might want to handle the stanza. the 
first
- * affirmative handler lucks out and can handle the stanza. regardless what
- * comes out of this handler, no other handler will then be tasked with
+ * for effeciently looking up the right handler for a stanza. at first this 
class tries to determine the stanza's
+ * specific namespace which uniquely brings up a NamespaceHandlerDictionary. 
then, all handlers in this directory
+ * are visited and can verify if they might want to handle the stanza. the 
first affirmative handler lucks out and
+ * can handle the stanza. regardless what comes out of this handler, no other 
handler will then be tasked with
  * handling.
  *
  * @author The Apache MINA Project (d...@mina.apache.org)
  */
 public class StanzaHandlerLookup extends AbstractStanzaHandlerLookup {
 
-    private static final ServiceUnavailableStanzaErrorHandler 
SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER = new 
ServiceUnavailableStanzaErrorHandler();
-
-    private final IQHandler iqHandler = new RelayingIQHandler();
-
-    private final MessageHandler messageHandler = new MessageHandler();
+    private IQHandler iqHandler = new RelayingIQHandler();
 
-    private final PresenceHandler presenceHandler = new PresenceHandler();
+    private MessageHandler messageHandler = new MessageHandler();
 
-    private final DbVerifyHandler dbVerifyHandler = new DbVerifyHandler();
+    private PresenceHandler presenceHandler = new PresenceHandler();
 
-    private final DbResultHandler dbResultHandler = new DbResultHandler();
-
-    private final TlsProceedHandler tlsProceedHandler = new 
TlsProceedHandler();
-
-    private final FeaturesHandler featuresHandler = new FeaturesHandler();
+    private static final ServiceUnavailableStanzaErrorHandler 
SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER = new 
ServiceUnavailableStanzaErrorHandler();
 
     protected ServerRuntimeContext serverRuntimeContext;
 
@@ -72,7 +60,6 @@ public class StanzaHandlerLookup extends 
AbstractStanzaHandlerLookup {
 
     /**
      * looks into the stanza to see which handler is responsible, if any
-     * 
      * @param stanza
      * @return NULL, if no handler could be
      */
@@ -83,41 +70,42 @@ public class StanzaHandlerLookup extends 
AbstractStanzaHandlerLookup {
 
         // allow extensions to override default handling
         StanzaHandler stanzaHandler = getHandlerForElement(stanza, stanza);
-
-        if (stanzaHandler != null) {
+        
+        if(stanzaHandler != null) {
             return stanzaHandler;
         } else {
             String name = stanza.getName();
-
+    
             if ("xml".equals(name)) {
                 return new XMLPrologHandler();
             } else if ("stream".equals(name)) {
                 return new StreamStartHandler();
-            } else if (dbVerifyHandler.verify(stanza)) {
-                return dbVerifyHandler;
-            } else if (dbResultHandler.verify(stanza)) {
-                return dbResultHandler;
-            } else if (tlsProceedHandler.verify(stanza)) {
-                return tlsProceedHandler;
-            } else if (featuresHandler.verify(stanza)) {
-                return featuresHandler;
+            } else if ("verify".equals(name)) {
+                return new DbVerifyHandler();
+            } else if ("result".equals(name)) {
+                return new DbResultHandler();
             } else if (iqHandler.verify(stanza)) {
                 return getIQHandler(stanza);
             } else if (messageHandler.verify(stanza)) {
-                return messageHandler;
+                return getMessageHandler(stanza);
             } else if (presenceHandler.verify(stanza)) {
-                return presenceHandler;
+                return getPresenceHandler(stanza);
             } else {
-                // ... and if we could not resolve and it's a core stanza, we 
can safely return
-                // an error
-                if (XMPPCoreStanza.getWrapper(stanza) != null)
-                    return SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER;
-                else
-                    return null;
+                // ... and if we could not resolve and it's a core stanza, we 
can safely return an error
+                if (XMPPCoreStanza.getWrapper(stanza) != null) return 
SERVICE_UNAVAILABLE_STANZA_ERROR_HANDLER;
+                else return null;
             }
         }
     }
 
+    private StanzaHandler getPresenceHandler(Stanza stanza) {
+        return presenceHandler;
+    }
+
+    private StanzaHandler getMessageHandler(Stanza stanza) {
+        return messageHandler;
+    }
+
     private StanzaHandler getIQHandler(Stanza stanza) {
         StanzaHandler handlerForElement = null;
 
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 5d69892..d73149a 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
@@ -28,10 +28,13 @@ import org.apache.vysper.event.EventBus;
 import org.apache.vysper.storage.StorageProvider;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.authentication.UserAuthentication;
+import org.apache.vysper.xmpp.delivery.StanzaRelay;
 import org.apache.vysper.xmpp.modules.Module;
 import org.apache.vysper.xmpp.modules.ServerRuntimeContextService;
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
+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.XMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.state.presence.LatestPresenceCache;
@@ -70,14 +73,14 @@ public interface ServerRuntimeContext {
     void registerComponent(Component component);
 
     boolean hasComponentStanzaProcessor(Entity entity);
-
+    
     XMPPServerConnectorRegistry getServerConnectorRegistry();
-
+    
     List<Module> getModules();
 
     <T> T getModule(Class<T> clazz);
-
+    
     void addModule(Module module);
-
+    
     EventBus getEventBus();
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
index 089dd5f..54aebd4 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
@@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.server.s2s;
 
 import java.net.InetSocketAddress;
 import java.nio.channels.UnresolvedAddressException;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -42,6 +43,8 @@ import 
org.apache.vysper.xmpp.delivery.failure.RemoteServerNotFoundException;
 import org.apache.vysper.xmpp.delivery.failure.RemoteServerTimeoutException;
 import 
org.apache.vysper.xmpp.modules.extension.xep0199_xmppping.XmppPingListener;
 import 
org.apache.vysper.xmpp.modules.extension.xep0199_xmppping.XmppPingModule;
+import 
org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbResultHandler;
+import 
org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DbVerifyHandler;
 import 
org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DialbackIdGenerator;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.protocol.ProtocolException;
@@ -70,6 +73,9 @@ public class DefaultXMPPServerConnector implements 
XmppPingListener, XMPPServerC
 
     private static final Logger LOG = 
LoggerFactory.getLogger(DefaultXMPPServerConnector.class);
 
+    private final static List<StanzaHandler> S2S_HANDSHAKE_HANDLERS = 
Arrays.asList(new DbVerifyHandler(),
+            new DbResultHandler(), new TlsProceedHandler(), new 
FeaturesHandler());
+
     private final ServerRuntimeContext serverRuntimeContext;
 
     private final StanzaRelay stanzaRelay;
@@ -204,15 +210,24 @@ public class DefaultXMPPServerConnector implements 
XmppPingListener, XMPPServerC
         }
     }
 
+    private StanzaHandler lookupS2SHandler(Stanza stanza) {
+        for (StanzaHandler handler : S2S_HANDSHAKE_HANDLERS) {
+            if (handler.verify(stanza)) {
+                return handler;
+            }
+        }
+        return null;
+    }
+
     public void handleReceivedStanza(Stanza stanza) {
 
         // check for basic stanza handlers
-        StanzaHandler handler = serverRuntimeContext.getHandler(stanza);
+        StanzaHandler s2sHandler = lookupS2SHandler(stanza);
 
-        if (handler != null) {
+        if (s2sHandler != null) {
             ResponseStanzaContainer container;
             try {
-                container = handler.execute(stanza, serverRuntimeContext, 
false, sessionContext, sessionStateHolder,
+                container = s2sHandler.execute(stanza, serverRuntimeContext, 
false, sessionContext, sessionStateHolder,
                         new SimpleStanzaBroker(stanzaRelay, sessionContext));
             } catch (ProtocolException e) {
                 return;

Reply via email to