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 <[email protected]>
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);