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 d3831ed  The SessionContext can be null in StateAwareProtocolWorker
d3831ed is described below

commit d3831edbd8ad9d209dd8dfac267a686f889e84c0
Author: Réda Housni Alaoui <reda.housniala...@gmail.com>
AuthorDate: Sun Sep 8 10:53:35 2019 +0200

    The SessionContext can be null in StateAwareProtocolWorker
---
 .../inbound/DeliveringInternalInboundStanzaRelay.java     |  4 ++--
 .../org/apache/vysper/xmpp/protocol/ProtocolWorker.java   |  2 +-
 .../vysper/xmpp/protocol/StateAwareProtocolWorker.java    | 14 ++++++++------
 .../protocol/worker/AbstractStateAwareProtocolWorker.java | 15 ++++++++-------
 4 files changed, 19 insertions(+), 16 deletions(-)

diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
index 6b71fe0..c1172ff 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java
@@ -412,7 +412,7 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
                 }
                 try {
                     StanzaHandler stanzaHandler = 
receivingSession.getServerRuntimeContext().getHandler(stanza);
-                    
inboundStanzaProtocolWorker.processStanza(receivingSession, sessionStateHolder, 
stanza,
+                    
inboundStanzaProtocolWorker.processStanza(serverRuntimeContext, 
receivingSession, sessionStateHolder, stanza,
                             stanzaHandler);
                 } catch (Exception e) {
                     relayResult.addProcessingError(new DeliveryException("no 
relay to non-authenticated sessions"));
@@ -450,7 +450,7 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
                 }
                 try {
                     StanzaHandler stanzaHandler = 
sessionContext.getServerRuntimeContext().getHandler(stanza);
-                    inboundStanzaProtocolWorker.processStanza(sessionContext, 
sessionStateHolder, stanza,
+                    
inboundStanzaProtocolWorker.processStanza(serverRuntimeContext, sessionContext, 
sessionStateHolder, stanza,
                             stanzaHandler);
                 } catch (Exception e) {
                     relayResult.addProcessingError(new DeliveryException(e));
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
index e9139ce..d82a3f9 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
@@ -189,7 +189,7 @@ public class ProtocolWorker implements StanzaProcessor {
         }
         
         try {
-            stateAwareProtocolWorker.processStanza(sessionContext, 
sessionStateHolder, stanza, stanzaHandler);
+            stateAwareProtocolWorker.processStanza(serverRuntimeContext, 
sessionContext, sessionStateHolder, stanza, stanzaHandler);
         } catch (Exception e) {
             logger.error("error executing handler {} with stanza {}", 
stanzaHandler.getClass().getName(),
                     DenseStanzaLogRenderer.render(stanza));
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
index 4897905..88482b5 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java
@@ -20,18 +20,20 @@
 package org.apache.vysper.xmpp.protocol;
 
 import org.apache.vysper.xmpp.server.InternalSessionContext;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
- * this handler is aware of the session state and can act accordingly.
- * for every session state, a dedicated implementation exists.
- * the most interesting case is "authenticated", where the "common" XMPP 
happens (iq, message, presence)
- * special treatment has to be given to other states, which cover session 
handshake and shutdown.
+ * this handler is aware of the session state and can act accordingly. for 
every
+ * session state, a dedicated implementation exists. the most interesting case
+ * is "authenticated", where the "common" XMPP happens (iq, message, presence)
+ * special treatment has to be given to other states, which cover session
+ * handshake and shutdown.
  *
  * @author The Apache MINA Project (d...@mina.apache.org)
  */
 public interface StateAwareProtocolWorker {
 
-    void processStanza(InternalSessionContext sessionContext, 
SessionStateHolder sessionStateHolder, Stanza stanza,
-                                          StanzaHandler stanzaHandler);
+    void processStanza(ServerRuntimeContext serverRuntimeContext, 
InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, 
StanzaHandler stanzaHandler);
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
index 9f3e354..bebdefc 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java
@@ -28,6 +28,7 @@ import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
 import org.apache.vysper.xmpp.protocol.StateAwareProtocolWorker;
 import org.apache.vysper.xmpp.server.InternalSessionContext;
+import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
@@ -46,24 +47,24 @@ public abstract class AbstractStateAwareProtocolWorker 
implements StateAwareProt
 
     public abstract SessionState getHandledState();
 
-    public void processStanza(InternalSessionContext sessionContext, 
SessionStateHolder sessionStateHolder,
-            Stanza stanza, StanzaHandler stanzaHandler) {
+    public void processStanza(ServerRuntimeContext serverRuntimeContext, 
InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, 
StanzaHandler stanzaHandler) {
         boolean proceed = checkState(sessionContext, sessionStateHolder, 
stanza, stanzaHandler);
         if (!proceed)
             return; // TODO close stream?
 
-        executeHandler(sessionContext, sessionStateHolder, stanza, 
stanzaHandler);
+        executeHandler(serverRuntimeContext, sessionContext, 
sessionStateHolder, stanza, stanzaHandler);
     }
 
     protected boolean checkState(InternalSessionContext sessionContext, 
SessionStateHolder sessionStateHolder,
             Stanza stanza, StanzaHandler stanzaHandler) {
-        return getHandledState() == sessionContext.getState();
+        return sessionContext != null && getHandledState() == 
sessionContext.getState();
     }
 
-    private void executeHandler(InternalSessionContext sessionContext, 
SessionStateHolder sessionStateHolder,
-            Stanza stanza, StanzaHandler stanzaHandler) {
+    private void executeHandler(ServerRuntimeContext serverRuntimeContext, 
InternalSessionContext sessionContext,
+            SessionStateHolder sessionStateHolder, Stanza stanza, 
StanzaHandler stanzaHandler) {
         try {
-            stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, 
sessionContext.getServerRuntimeContext(),
+            stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, 
serverRuntimeContext,
                     isProcessingOutboundStanzas(), sessionContext, 
sessionStateHolder);
         } catch (ProtocolException e) {
             ResponseWriter.handleProtocolError(e, sessionContext, stanza);

Reply via email to