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 42fd131  Pass the current SessionContext to the StanzaRelay
42fd131 is described below

commit 42fd1318b3fffcf65fc55e520cf72022f552e1ed
Author: Réda Housni Alaoui <reda.housniala...@gmail.com>
AuthorDate: Sat Aug 31 20:06:01 2019 +0200

    Pass the current SessionContext to the StanzaRelay
---
 .../vysper/xmpp/delivery/RecordingStanzaRelay.java |  3 +-
 .../vysper/xmpp/delivery/StanzaReceiverRelay.java  |  3 +-
 .../apache/vysper/xmpp/delivery/StanzaRelay.java   | 27 +++++++-----
 .../vysper/xmpp/delivery/StanzaRelayBroker.java    |  7 ++--
 .../DeliveringExternalInboundStanzaRelay.java      |  3 +-
 .../DeliveringInternalInboundStanzaRelay.java      | 24 ++++++-----
 .../vysper/xmpp/protocol/SimpleStanzaBroker.java   |  2 +-
 .../components/ComponentStanzaProcessor.java       | 48 +---------------------
 .../xmpp/delivery/StanzaRelayBrokerTestCase.java   | 26 ++++++------
 ...liveringExternalInboundStanzaRelayTestCase.java | 21 ++++++----
 ...eliveringInteralInboundStanzaRelayTestCase.java | 17 ++++----
 .../ComponentStanzaProcessorTestCase.java          | 36 ++++++++++------
 12 files changed, 104 insertions(+), 113 deletions(-)

diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
index 653a650..ab8ebf2 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java
@@ -27,6 +27,7 @@ import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
 import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -42,7 +43,7 @@ public class RecordingStanzaRelay implements StanzaRelay {
 
     protected final AtomicBoolean isRelaying = new AtomicBoolean(true);
 
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
+    public void relay(SessionContext sessionContext, Entity receiver, Stanza 
stanza, DeliveryFailureStrategy deliveryFailureStrategy)
             throws DeliveryException {
         if (!isRelaying()) throw new ServiceNotAvailableException("recording 
stanza relay is not relaying");
         entityStanzaPairs.add(new Triple(receiver, stanza, 
deliveryFailureStrategy));
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
index ec4d230..24bcef8 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
@@ -29,6 +29,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.LocalRecipientOfflineException;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -62,7 +63,7 @@ public class StanzaReceiverRelay implements StanzaRelay {
         receiverMap.put(receiverID, receiver);
     }
 
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
+    public void relay(SessionContext sessionContext, Entity receiver, Stanza 
stanza, DeliveryFailureStrategy deliveryFailureStrategy)
             throws DeliveryException {
         if (!isRelaying()) {
             throw new ServiceNotAvailableException("relay is not relaying");
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java
index e2b8451..fa719a2 100644
--- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java
+++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java
@@ -23,6 +23,7 @@ package org.apache.vysper.xmpp.delivery;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
 import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -34,22 +35,28 @@ public interface StanzaRelay {
 
     /**
      * relaying a stanza
-     * @param receiver the stanza receiver
-     * @param stanza the payload
-     * @param deliveryFailureStrategy what to do in case of errors
-     * @throws ServiceNotAvailableException relaying is stopped
-     * @throws DeliveryException error while relaying
+     *
+     * @param sessionContext
+     *            The current session context. Can be null.
+     * @param receiver
+     *            the stanza receiver
+     * @param stanza
+     *            the payload
+     * @param deliveryFailureStrategy
+     *            what to do in case of errors
+     * @throws DeliveryException
+     *             error while relaying
      */
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
-            throws DeliveryException;
+    void relay(SessionContext sessionContext, Entity receiver, Stanza stanza,
+            DeliveryFailureStrategy deliveryFailureStrategy) throws 
DeliveryException;
 
     /**
      * @return TRUE iff the relay is live (started and not stopped)
      */
-    public boolean isRelaying();
-    
+    boolean isRelaying();
+
     /**
      * Shutdown this relay and prevent it from accepting any further stanzas.
      */
-    public void stop();
+    void stop();
 }
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
index 7270b73..d898fe8 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java
@@ -25,6 +25,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.DeliveryException;
 import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.resources.ManagedThreadPool;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
@@ -67,7 +68,7 @@ public class StanzaRelayBroker implements StanzaRelay {
         this.serverRuntimeContext = serverRuntimeContext;
     }
 
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
+    public void relay(SessionContext sessionContext, Entity receiver, Stanza 
stanza, DeliveryFailureStrategy deliveryFailureStrategy)
             throws DeliveryException {
         
         if (!isRelaying()) {
@@ -92,11 +93,11 @@ public class StanzaRelayBroker implements StanzaRelay {
         boolean relayToExternal = 
serverRuntimeContext.getServerFeatures().isRelayingToFederationServers();
 
         if (EntityUtils.isAddressingServer(receiver, 
serverRuntimeContext.getServerEntity()) || toComponent) {
-            internalRelay.relay(receiver, stanza, deliveryFailureStrategy);
+            internalRelay.relay(sessionContext, receiver, stanza, 
deliveryFailureStrategy);
         } else {
             if (!relayToExternal)
                 throw new IllegalStateException("this server is not relaying 
to external currently");
-            externalRelay.relay(receiver, stanza, deliveryFailureStrategy);
+            externalRelay.relay(sessionContext, receiver, stanza, 
deliveryFailureStrategy);
         }
     }
 
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java
index 7869daf..d6c50cb 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java
@@ -39,6 +39,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.resources.ManagedThreadPool;
 import org.apache.vysper.xmpp.server.resources.ManagedThreadPoolUtil;
 import org.apache.vysper.xmpp.server.s2s.XMPPServerConnector;
@@ -136,7 +137,7 @@ public class DeliveringExternalInboundStanzaRelay 
implements StanzaRelay, Manage
         lastCompleted = completedTaskCount;
     }
 
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
+    public void relay(SessionContext sessionContext, Entity receiver, Stanza 
stanza, DeliveryFailureStrategy deliveryFailureStrategy)
             throws DeliveryException {
         
         if (!isRelaying()) {
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 998f50c..5b20df1 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
@@ -151,8 +151,7 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
         this.serverRuntimeContext = serverRuntimeContext;
     }
 
-    public void setStanzaHandlerExecutorFactory(
-            StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory) {
+    public void setStanzaHandlerExecutorFactory(StanzaHandlerExecutorFactory 
stanzaHandlerExecutorFactory) {
         this.inboundStanzaProtocolWorker = new 
InboundStanzaProtocolWorker(stanzaHandlerExecutorFactory);
     }
 
@@ -195,13 +194,14 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
         lastCompleted = completedTaskCount;
     }
 
-    public void relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
-            throws DeliveryException {
+    public void relay(SessionContext sessionContext, Entity receiver, Stanza 
stanza,
+            DeliveryFailureStrategy deliveryFailureStrategy) throws 
DeliveryException {
         if (!isRelaying()) {
             throw new ServiceNotAvailableException("internal inbound relay is 
not relaying");
         }
 
-        Future<RelayResult> resultFuture = executor.submit(new Relay(receiver, 
stanza, deliveryFailureStrategy));
+        executor
+                .submit(new Relay(sessionContext, receiver, stanza, 
deliveryFailureStrategy));
         if (this.logStorageProvider != null) {
             this.logStorageProvider.logStanza(receiver, stanza);
         }
@@ -216,15 +216,19 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
     }
 
     private class Relay implements Callable<RelayResult> {
-        private Entity receiver;
+        private final SessionContext sessionContext;
 
-        private Stanza stanza;
+        private final Entity receiver;
 
-        private DeliveryFailureStrategy deliveryFailureStrategy;
+        private final Stanza stanza;
+
+        private final DeliveryFailureStrategy deliveryFailureStrategy;
 
         protected final UnmodifyableSessionStateHolder sessionStateHolder = 
new UnmodifyableSessionStateHolder();
 
-        Relay(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy) {
+        Relay(SessionContext sessionContext, Entity receiver, Stanza stanza,
+                DeliveryFailureStrategy deliveryFailureStrategy) {
+            this.sessionContext = sessionContext;
             this.receiver = receiver;
             this.stanza = stanza;
             this.deliveryFailureStrategy = deliveryFailureStrategy;
@@ -286,7 +290,7 @@ public class DeliveringInternalInboundStanzaRelay 
implements StanzaRelay, Manage
                                 "cannot retrieve component stanza processor 
for" + receiverDomain));
                     }
 
-                    processor.processStanza(serverRuntimeContext, null, 
stanza, null);
+                    processor.processStanza(serverRuntimeContext, 
sessionContext, stanza, sessionStateHolder);
                     return new RelayResult().setProcessed();
                 }
 
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
index 938ec25..5a54b39 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
@@ -45,7 +45,7 @@ public class SimpleStanzaBroker implements StanzaBroker {
     @Override
     public void write(Entity receiver, Stanza stanza, DeliveryFailureStrategy 
deliveryFailureStrategy)
             throws DeliveryException {
-        stanzaRelay.relay(receiver, stanza, deliveryFailureStrategy);
+        stanzaRelay.relay(sessionContext, receiver, stanza, 
deliveryFailureStrategy);
     }
 
     @Override
diff --git 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
index 0ef52d1..36737ca 100644
--- 
a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
+++ 
b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java
@@ -21,17 +21,12 @@ package org.apache.vysper.xmpp.server.components;
 
 import static java.util.Objects.requireNonNull;
 
-import java.util.List;
-
-import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
-import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
 import org.apache.vysper.xmpp.protocol.NamespaceHandlerDictionary;
 import org.apache.vysper.xmpp.protocol.ProtocolException;
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
+import org.apache.vysper.xmpp.protocol.ResponseWriter;
 import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.StanzaBroker;
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
-import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutor;
 import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
 import org.apache.vysper.xmpp.protocol.StanzaProcessor;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -86,50 +81,11 @@ public class ComponentStanzaProcessor implements 
StanzaProcessor {
         if (responseStanzaContainer == null) {
             return;
         }
-        List<Stanza> responseStanzas = 
responseStanzaContainer.getResponseStanzas();
-        try {
-            // module
-            StanzaHandlerExecutor executor = 
stanzaHandlerExecutorFactory.build(new RelayingStanzaHandler());
-            for (Stanza responseStanza : responseStanzas) {
-                executor.execute(responseStanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder);
-            }
-        } catch (ProtocolException e) {
-            throw new RuntimeException(e);
-        }
+        ResponseWriter.writeResponse(sessionContext, responseStanzaContainer);
 
     }
 
     public void processTLSEstablished(SessionContext sessionContext, 
SessionStateHolder sessionStateHolder) {
         throw new RuntimeException("should not be called for components, which 
only acts as an established session");
     }
-
-    private static class RelayingStanzaHandler implements StanzaHandler {
-
-        @Override
-        public String getName() {
-            return null;
-        }
-
-        @Override
-        public boolean verify(Stanza stanza) {
-            return false;
-        }
-
-        @Override
-        public boolean isSessionRequired() {
-            return false;
-        }
-
-        @Override
-        public ResponseStanzaContainer execute(Stanza stanza, 
ServerRuntimeContext serverRuntimeContext,
-                boolean isOutboundStanza, SessionContext sessionContext, 
SessionStateHolder sessionStateHolder,
-                StanzaBroker stanzaBroker) {
-            try {
-                stanzaBroker.write(stanza.getTo(), stanza, 
IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY);
-            } catch (DeliveryException e) {
-                throw new RuntimeException(e);
-            }
-            return null;
-        }
-    }
 }
diff --git 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java
 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java
index c40baa8..1e12e11 100644
--- 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java
+++ 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java
@@ -28,6 +28,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.server.ServerFeatures;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 import org.junit.Before;
@@ -52,6 +53,7 @@ public class StanzaRelayBrokerTestCase extends Mockito {
     
     private StanzaRelay internalRelay = mock(StanzaRelay.class);
     private StanzaRelay externalRelay = mock(StanzaRelay.class);
+    private SessionContext sessionContext = mock(SessionContext.class);
     private ServerRuntimeContext serverRuntimeContext = 
mock(ServerRuntimeContext.class);
     private ServerFeatures serverFeatures = mock(ServerFeatures.class);
 
@@ -72,9 +74,9 @@ public class StanzaRelayBrokerTestCase extends Mockito {
     
     @Test
     public void toInternal() throws DeliveryException {
-        broker.relay(INTERNAL, stanza, failureStrategy);
+        broker.relay(sessionContext, INTERNAL, stanza, failureStrategy);
 
-        verify(internalRelay).relay(INTERNAL, stanza, failureStrategy);
+        verify(internalRelay).relay(sessionContext, INTERNAL, stanza, 
failureStrategy);
         verifyZeroInteractions(externalRelay);
     }
 
@@ -82,19 +84,19 @@ public class StanzaRelayBrokerTestCase extends Mockito {
     public void toExternalWithFederation() throws DeliveryException {
         when(serverFeatures.isRelayingToFederationServers()).thenReturn(true);
         
-        broker.relay(EXTERNAL, stanza, failureStrategy);
+        broker.relay(sessionContext, EXTERNAL, stanza, failureStrategy);
 
         verifyZeroInteractions(internalRelay);
-        verify(externalRelay).relay(EXTERNAL, stanza, failureStrategy);
+        verify(externalRelay).relay(sessionContext, EXTERNAL, stanza, 
failureStrategy);
     }
     
     @Test
     public void toComponent() throws DeliveryException {
         when(serverFeatures.isRelayingToFederationServers()).thenReturn(true);
         
-        broker.relay(COMPONENT, stanza, failureStrategy);
+        broker.relay(sessionContext, COMPONENT, stanza, failureStrategy);
         
-        verify(internalRelay).relay(COMPONENT, stanza, failureStrategy);
+        verify(internalRelay).relay(sessionContext, COMPONENT, stanza, 
failureStrategy);
         verifyZeroInteractions(externalRelay);
     }
     
@@ -102,9 +104,9 @@ public class StanzaRelayBrokerTestCase extends Mockito {
     public void toComponentUser() throws DeliveryException {
         when(serverFeatures.isRelayingToFederationServers()).thenReturn(true);
         
-        broker.relay(COMPONENT_USER, stanza, failureStrategy);
+        broker.relay(sessionContext, COMPONENT_USER, stanza, failureStrategy);
         
-        verify(internalRelay).relay(COMPONENT_USER, stanza, failureStrategy);
+        verify(internalRelay).relay(sessionContext, COMPONENT_USER, stanza, 
failureStrategy);
         verifyZeroInteractions(externalRelay);
     }
     
@@ -112,17 +114,17 @@ public class StanzaRelayBrokerTestCase extends Mockito {
     public void toExternalWithoutFederation() throws DeliveryException {
         when(serverFeatures.isRelayingToFederationServers()).thenReturn(false);
         
-        broker.relay(EXTERNAL, stanza, failureStrategy);
+        broker.relay(sessionContext, EXTERNAL, stanza, failureStrategy);
     }
     
     @Test(expected=RuntimeException.class)
     public void toServer() throws DeliveryException {
-        broker.relay(SERVER, stanza, failureStrategy);
+        broker.relay(sessionContext, SERVER, stanza, failureStrategy);
     }
     
     @Test(expected=RuntimeException.class)
     public void toNullReceiver() throws DeliveryException {
-        broker.relay(null, stanza, failureStrategy);
+        broker.relay(sessionContext, null, stanza, failureStrategy);
     }
 
     @Test
@@ -132,7 +134,7 @@ public class StanzaRelayBrokerTestCase extends Mockito {
         Assert.assertFalse(broker.isRelaying());
         
         try {
-            broker.relay(INTERNAL, stanza, null);
+            broker.relay(sessionContext, INTERNAL, stanza, null);
             Assert.fail("ServiceNotAvailableException expected");
         } catch (ServiceNotAvailableException e) {
             // test succeeds
diff --git 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java
 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java
index 15abbee..c304823 100644
--- 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java
+++ 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java
@@ -30,6 +30,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.RemoteServerNotFoundException;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.s2s.XMPPServerConnector;
 import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -41,6 +42,8 @@ import org.mockito.Mockito;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
+import static org.mockito.Mockito.mock;
+
 /**
  */
 public class DeliveringExternalInboundStanzaRelayTestCase extends TestCase {
@@ -57,19 +60,21 @@ public class DeliveringExternalInboundStanzaRelayTestCase 
extends TestCase {
 
     private static final Stanza STANZA = 
XMPPCoreStanza.getWrapper(StanzaBuilder.createMessageStanza(FROM, TO, LANG,
             BODY).build());
+    
+    private SessionContext sessionContext = mock(SessionContext.class);
 
     public void testRemoteServerError() throws Exception {
-        XMPPServerConnectorRegistry registry = 
Mockito.mock(XMPPServerConnectorRegistry.class);
+        XMPPServerConnectorRegistry registry = 
mock(XMPPServerConnectorRegistry.class);
         Mockito.when(registry.connect(SERVER)).thenThrow(new 
RemoteServerNotFoundException());
 
-        ServerRuntimeContext serverRuntimeContext = 
Mockito.mock(ServerRuntimeContext.class);
+        ServerRuntimeContext serverRuntimeContext = 
mock(ServerRuntimeContext.class);
         
Mockito.when(serverRuntimeContext.getServerConnectorRegistry()).thenReturn(registry);
 
         DeliveringExternalInboundStanzaRelay relay = new 
DeliveringExternalInboundStanzaRelay(new TestExecutorService());
         relay.setServerRuntimeContext(serverRuntimeContext);
 
         RecordingDeliveryFailureStrategy deliveryFailureStrategy = new 
RecordingDeliveryFailureStrategy();
-        relay.relay(TO, STANZA, deliveryFailureStrategy);
+        relay.relay(sessionContext, TO, STANZA, deliveryFailureStrategy);
 
         Stanza failedStanza = deliveryFailureStrategy.getRecordedStanza();
         Assert.assertNotNull(failedStanza);
@@ -81,19 +86,19 @@ public class DeliveringExternalInboundStanzaRelayTestCase 
extends TestCase {
     }
 
     public void testSuccessfulRelay() throws Exception {
-        XMPPServerConnector connector = 
Mockito.mock(XMPPServerConnector.class);
+        XMPPServerConnector connector = mock(XMPPServerConnector.class);
         
-        XMPPServerConnectorRegistry registry = 
Mockito.mock(XMPPServerConnectorRegistry.class);
+        XMPPServerConnectorRegistry registry = 
mock(XMPPServerConnectorRegistry.class);
         Mockito.when(registry.connect(SERVER)).thenReturn(connector);
 
-        ServerRuntimeContext serverRuntimeContext = 
Mockito.mock(ServerRuntimeContext.class);
+        ServerRuntimeContext serverRuntimeContext = 
mock(ServerRuntimeContext.class);
         
Mockito.when(serverRuntimeContext.getServerConnectorRegistry()).thenReturn(registry);
 
         DeliveringExternalInboundStanzaRelay relay = new 
DeliveringExternalInboundStanzaRelay(new TestExecutorService());
         relay.setServerRuntimeContext(serverRuntimeContext);
 
         RecordingDeliveryFailureStrategy deliveryFailureStrategy = new 
RecordingDeliveryFailureStrategy();
-        relay.relay(TO, STANZA, deliveryFailureStrategy);
+        relay.relay(sessionContext, TO, STANZA, deliveryFailureStrategy);
 
         Assert.assertNull(deliveryFailureStrategy.getRecordedStanza());
 
@@ -119,7 +124,7 @@ public class DeliveringExternalInboundStanzaRelayTestCase 
extends TestCase {
         Assert.assertTrue(testExecutorService.isShutdown());
 
         try {
-            relay.relay(TO, STANZA, null);
+            relay.relay(sessionContext, TO, STANZA, null);
             Assert.fail("ServiceNotAvailableException expected");
         } catch (ServiceNotAvailableException e) {
             // test succeeds
diff --git 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java
 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java
index 38aa8ec..4d44192 100644
--- 
a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java
+++ 
b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInteralInboundStanzaRelayTestCase.java
@@ -36,6 +36,7 @@ import 
org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
 import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
 import org.apache.vysper.xmpp.protocol.SimpleStanzaHandlerExecutorFactory;
 import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.server.TestSessionContext;
 import org.apache.vysper.xmpp.server.components.SimpleComponentRegistry;
@@ -61,6 +62,8 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
     protected AccountManagement accountVerification;
 
     protected DeliveringInternalInboundStanzaRelay stanzaRelay;
+    
+    private SessionContext sessionContext = mock(SessionContext.class);
 
     static class AccountVerificationMock implements AccountManagement {
         public void addUser(Entity username, String password) throws 
AccountCreationException {
@@ -101,7 +104,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
         Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "Hello").build();
 
         try {
-            stanzaRelay.relay(TO_ENTITY, stanza, new IgnoreFailureStrategy());
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, new 
IgnoreFailureStrategy());
             Stanza recordedStanza = 
sessionContext.getNextRecordedResponse(1000);
             assertNotNull("stanza delivered", recordedStanza);
             assertEquals("Hello", 
recordedStanza.getSingleInnerElementsNamed("body").getSingleInnerText().getText());
@@ -119,7 +122,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
         Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "Hello").build();
 
         try {
-            stanzaRelay.relay(TO_ENTITY, stanza, new IgnoreFailureStrategy());
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, new 
IgnoreFailureStrategy());
             Stanza recordedStanza = 
sessionContext.getNextRecordedResponse(1000);
             assertNull("stanza not delivered to unbound", recordedStanza);
         } catch (DeliveryException e) {
@@ -147,7 +150,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
         Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "Hello").build();
 
         try {
-            stanzaRelay.relay(TO_ENTITY, stanza, new IgnoreFailureStrategy());
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, new 
IgnoreFailureStrategy());
             Stanza recordedStanza_1 = 
sessionContextTO_ENTITY_1_prio3.getNextRecordedResponse(100);
             assertNotNull("stanza 1 delivered", recordedStanza_1);
             Stanza recordedStanza_2 = 
sessionContextTO_ENTITY_2_prio0.getNextRecordedResponse(100);
@@ -181,7 +184,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
         Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "Hello").build();
 
         try {
-            stanzaRelay.relay(TO_ENTITY, stanza, new IgnoreFailureStrategy());
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, new 
IgnoreFailureStrategy());
             Stanza recordedStanza_1 = 
sessionContextTO_ENTITY_1_prio3.getNextRecordedResponse(100);
             assertNotNull("stanza 1 delivered", recordedStanza_1);
             Stanza recordedStanza_2 = 
sessionContextTO_ENTITY_2_prio0.getNextRecordedResponse(100);
@@ -215,7 +218,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
 
         Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "Hello").build();
         try {
-            relay.relay(TO_ENTITY, stanza, null);
+            relay.relay(sessionContext, TO_ENTITY, stanza, null);
             Assert.fail("ServiceNotAvailableException expected");
         } catch (ServiceNotAvailableException e) {
             // test succeeds
@@ -237,7 +240,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
 
         for (int i = 0; i < STANZA_COUNT; i++) {
             Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "" + i).build();
-            stanzaRelay.relay(TO_ENTITY, stanza, null);
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, null);
         }
         for (int i = 0; i < STANZA_COUNT; i++) {
             final Stanza nextResponse = 
sessionContext.getNextRecordedResponse(100);
@@ -261,7 +264,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase 
extends TestCase {
 
         for (int i = 0; i < STANZA_COUNT; i++) {
             Stanza stanza = StanzaBuilder.createMessageStanza(FROM_ENTITY, 
TO_ENTITY, "en", "" + i).build();
-            stanzaRelay.relay(TO_ENTITY, stanza, null);
+            stanzaRelay.relay(sessionContext, TO_ENTITY, stanza, null);
         }
 
         /*
diff --git 
a/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
 
b/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
index 2d3c514..f801ba9 100644
--- 
a/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
+++ 
b/server/core/src/test/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessorTestCase.java
@@ -35,10 +35,16 @@ import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
+import org.apache.vysper.xmpp.writer.StanzaWriter;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
 /**
  */
 public class ComponentStanzaProcessorTestCase {
@@ -47,15 +53,15 @@ public class ComponentStanzaProcessorTestCase {
 
     private static final Entity TO = EntityImpl.parseUnchecked("vysper.org");
 
-    private ServerRuntimeContext serverRuntimeContext = 
Mockito.mock(ServerRuntimeContext.class);
+    private ServerRuntimeContext serverRuntimeContext = 
mock(ServerRuntimeContext.class);
 
-    private SessionContext sessionContext = Mockito.mock(SessionContext.class);
+    private SessionContext sessionContext = mock(SessionContext.class);
 
     private SessionStateHolder sessionStateHolder = new SessionStateHolder();
 
-    private StanzaRelay stanzaRelay = Mockito.mock(StanzaRelay.class);
+    private StanzaRelay stanzaRelay = mock(StanzaRelay.class);
 
-    private StanzaHandler handler = Mockito.mock(StanzaHandler.class);
+    private StanzaHandler handler = mock(StanzaHandler.class);
 
     private Stanza stanza = StanzaBuilder.createMessageStanza(FROM, TO, null, 
"body").build();
 
@@ -65,11 +71,16 @@ public class ComponentStanzaProcessorTestCase {
 
     private ComponentStanzaProcessor processor = new ComponentStanzaProcessor(
             new SimpleStanzaHandlerExecutorFactory(stanzaRelay));
+    
+    private StanzaWriter sessionContextStanzaWriter;
 
     @Before
     public void before() {
-        Mockito.when(handler.verify(stanza)).thenReturn(true);
-        Mockito.when(handler.getName()).thenReturn("message");
+        when(handler.verify(stanza)).thenReturn(true);
+        when(handler.getName()).thenReturn("message");
+
+        sessionContextStanzaWriter = mock(StanzaWriter.class);
+        
when(sessionContext.getResponseWriter()).thenReturn(sessionContextStanzaWriter);
     }
 
     @Test(expected = RuntimeException.class)
@@ -99,19 +110,19 @@ public class ComponentStanzaProcessorTestCase {
 
     @Test
     public void processSuccessfulWithResponse() throws ProtocolException, 
DeliveryException {
-        Mockito.when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
+        when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
                 new SimpleStanzaBroker(stanzaRelay, 
sessionContext))).thenReturn(container);
 
         processor.addHandler(handler);
 
         processor.processStanza(serverRuntimeContext, sessionContext, stanza, 
sessionStateHolder);
 
-        Mockito.verify(stanzaRelay).relay(FROM, responseStanza, 
IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY);
+        verify(sessionContextStanzaWriter).write(responseStanza);
     }
 
     @Test
     public void handlerThrowsException() throws ProtocolException, 
DeliveryException {
-        Mockito.when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
+        when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
                 new SimpleStanzaBroker(stanzaRelay, 
sessionContext))).thenThrow(new ProtocolException());
 
         processor.addHandler(handler);
@@ -122,11 +133,10 @@ public class ComponentStanzaProcessorTestCase {
     }
 
     @Test(expected = RuntimeException.class)
-    public void processThenFailRelaying() throws ProtocolException, 
DeliveryException {
-        Mockito.when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
+    public void processThenFailRelaying() throws ProtocolException {
+        when(handler.execute(stanza, serverRuntimeContext, false, 
sessionContext, sessionStateHolder,
                 new SimpleStanzaBroker(stanzaRelay, 
sessionContext))).thenReturn(container);
-        Mockito.doThrow(new DeliveryException()).when(stanzaRelay).relay(FROM, 
responseStanza,
-                IgnoreFailureStrategy.IGNORE_FAILURE_STRATEGY);
+        doThrow(new 
RuntimeException()).when(sessionContextStanzaWriter).write(responseStanza);
 
         processor.addHandler(handler);
 

Reply via email to