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 f791974 Move offline stanza receiver to the default stanza broker
f791974 is described below
commit f7919746764f44d389bf74e891162f11e5786a9b
Author: Réda Housni Alaoui <[email protected]>
AuthorDate: Sun Sep 8 11:45:21 2019 +0200
Move offline stanza receiver to the default stanza broker
---
.../DeliveringInternalInboundStanzaRelay.java | 64 +++++++++++-----------
.../modules/core/base/handler/MessageHandler.java | 5 ++
.../modules/core/im/handler/PresenceHandler.java | 5 ++
...eStanzaBroker.java => DefaultStanzaBroker.java} | 31 ++++++++---
.../xmpp/protocol/SimpleStanzaHandlerExecutor.java | 9 ++-
.../SimpleStanzaHandlerExecutorFactory.java | 12 +++-
.../xmpp/server/DefaultServerRuntimeContext.java | 16 +++---
.../org/apache/vysper/xmpp/server/XMPPServer.java | 9 ++-
.../stanzasession/StanzaSessionTestCase.java | 2 +-
...eliveringInteralInboundStanzaRelayTestCase.java | 2 +-
.../base/handler/MessageHandlerRelayTestCase.java | 8 +--
.../base/handler/RelayingIQHandlerTestCase.java | 4 +-
.../handler/DirectedPresenceHandlerTestCase.java | 10 ++--
.../PresenceAvailInitialOutHandlerTestCase.java | 10 ++--
.../PresenceAvailUpdateOutHandlerTestCase.java | 6 +-
.../PresenceSubRequestOutHandlerTestCase.java | 8 +--
.../handler/ExtendedDiscoInfoTestCase.java | 4 +-
.../ComponentStanzaProcessorTestCase.java | 6 +-
.../AbstractMUCOccupantDiscoTestCase.java | 4 +-
.../handler/AbstractMUCHandlerTestCase.java | 4 +-
.../handler/AbstractMUCMessageHandlerTestCase.java | 4 +-
.../xep0045_muc/handler/ChangeNickTestCase.java | 4 +-
.../xep0045_muc/handler/ChangeStatusTestCase.java | 4 +-
.../xep0045_muc/handler/EnterRoomTestCase.java | 4 +-
.../xep0045_muc/handler/ExitRoomTestCase.java | 4 +-
.../org/apache/vysper/RecordingStanzaBroker.java | 3 -
.../AbstractPublishSubscribeTestCase.java | 4 +-
.../disco/PubSubDiscoItemsTestCase.java | 10 ++--
.../xep0313_mam/user/UserMessageStanzaBroker.java | 20 +++----
.../xep0313_mam/user/UserArchiveTest.java | 12 +++-
30 files changed, 163 insertions(+), 125 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 c1172ff..7993ea4 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
@@ -39,21 +39,20 @@ import org.apache.vysper.xmpp.addressing.EntityUtils;
import org.apache.vysper.xmpp.authentication.AccountManagement;
import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
-import
org.apache.vysper.xmpp.delivery.failure.DeliveredToOfflineReceiverException;
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
import org.apache.vysper.xmpp.delivery.failure.LocalRecipientOfflineException;
import org.apache.vysper.xmpp.delivery.failure.NoSuchLocalUserException;
import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException;
-import
org.apache.vysper.xmpp.modules.extension.xep0160_offline_storage.OfflineStorageProvider;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory;
import org.apache.vysper.xmpp.protocol.StanzaProcessor;
import org.apache.vysper.xmpp.protocol.worker.InboundStanzaProtocolWorker;
+import org.apache.vysper.xmpp.protocol.worker.UnconnectedProtocolWorker;
+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.server.InternalSessionContext;
import org.apache.vysper.xmpp.server.components.ComponentRegistry;
import org.apache.vysper.xmpp.server.resources.ManagedThreadPool;
import org.apache.vysper.xmpp.server.resources.ManagedThreadPoolUtil;
@@ -77,7 +76,7 @@ import org.slf4j.LoggerFactory;
*/
public class DeliveringInternalInboundStanzaRelay implements StanzaRelay,
ManagedThreadPool {
- final Logger logger =
LoggerFactory.getLogger(DeliveringInternalInboundStanzaRelay.class);
+ private static final Logger LOG =
LoggerFactory.getLogger(DeliveringInternalInboundStanzaRelay.class);
private static class RejectedDeliveryHandler implements
RejectedExecutionHandler {
@@ -97,6 +96,8 @@ public class DeliveringInternalInboundStanzaRelay implements
StanzaRelay, Manage
private InboundStanzaProtocolWorker inboundStanzaProtocolWorker;
+ private UnconnectedProtocolWorker unconnectedProtocolWorker;
+
private final ComponentRegistry componentRegistry;
private static final Integer PRIO_THRESHOLD = 0;
@@ -107,8 +108,6 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
protected AccountManagement accountVerification;
- protected OfflineStanzaReceiver offlineStanzaReceiver = null;
-
protected Entity serverEntity;
protected ServerRuntimeContext serverRuntimeContext = null;
@@ -120,25 +119,23 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
protected long lastDumpTimestamp = 0;
public DeliveringInternalInboundStanzaRelay(Entity serverEntity,
InternalResourceRegistry resourceRegistry,
- StorageProviderRegistry
storageProviderRegistry, ComponentRegistry componentRegistry) {
+ StorageProviderRegistry storageProviderRegistry, ComponentRegistry
componentRegistry) {
this(serverEntity, resourceRegistry, componentRegistry,
- storageProviderRegistry.retrieve(AccountManagement.class),
-
storageProviderRegistry.retrieve(OfflineStorageProvider.class));
+ storageProviderRegistry.retrieve(AccountManagement.class)
+ );
}
public DeliveringInternalInboundStanzaRelay(Entity serverEntity,
InternalResourceRegistry resourceRegistry,
- ComponentRegistry
componentRegistry, AccountManagement accountVerification,
- OfflineStanzaReceiver
offlineStanzaReceiver) {
+ ComponentRegistry
componentRegistry, AccountManagement accountVerification) {
this.serverEntity = serverEntity;
this.resourceRegistry = resourceRegistry;
this.componentRegistry = requireNonNull(componentRegistry);
this.accountVerification = accountVerification;
- this.offlineStanzaReceiver = offlineStanzaReceiver;
int coreThreadCount = 10;
int maxThreadCount = 20;
int threadTimeoutSeconds = 2 * 60;
this.executor = new ThreadPoolExecutor(coreThreadCount,
maxThreadCount, threadTimeoutSeconds, TimeUnit.SECONDS,
- new LinkedBlockingQueue<Runnable>(), new
RejectedDeliveryHandler(this, logger));
+ new LinkedBlockingQueue<>(), new RejectedDeliveryHandler(this,
LOG));
}
/* package */ DeliveringInternalInboundStanzaRelay(ExecutorService
executor) {
@@ -152,6 +149,7 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
public void setStanzaHandlerExecutorFactory(StanzaHandlerExecutorFactory
stanzaHandlerExecutorFactory) {
this.inboundStanzaProtocolWorker = new
InboundStanzaProtocolWorker(stanzaHandlerExecutorFactory);
+ this.unconnectedProtocolWorker = new
UnconnectedProtocolWorker(stanzaHandlerExecutorFactory);
}
public final void setLogStorageProvider(final LogStorageProvider
logStorageProvider) {
@@ -194,7 +192,7 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
}
public void relay(InternalSessionContext sessionContext, Entity receiver,
Stanza stanza,
- DeliveryFailureStrategy deliveryFailureStrategy) throws
DeliveryException {
+ DeliveryFailureStrategy deliveryFailureStrategy) throws
DeliveryException {
if (!isRelaying()) {
throw new ServiceNotAvailableException("internal inbound relay is
not relaying");
}
@@ -225,7 +223,7 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
protected final UnmodifyableSessionStateHolder sessionStateHolder =
new UnmodifyableSessionStateHolder();
Relay(InternalSessionContext sessionContext, Entity receiver, Stanza
stanza,
- DeliveryFailureStrategy deliveryFailureStrategy) {
+ DeliveryFailureStrategy deliveryFailureStrategy) {
this.sessionContext = sessionContext;
this.receiver = receiver;
this.stanza = stanza;
@@ -340,7 +338,7 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
return relayToBestSessions(false);
}
- return relayNotPossible();
+ return new RelayResult(new ServiceNotAvailableException());
}
@SpecCompliant(spec = "draft-ietf-xmpp-3921bis-00", section = "8.2.",
status = SpecCompliant.ComplianceStatus.IN_PROGRESS, coverage =
SpecCompliant.ComplianceCoverage.COMPLETE)
@@ -375,19 +373,21 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
return new RelayResult(new ServiceNotAvailableException());
}
- private RelayResult relayNotPossible() {
+ private RelayResult relayToOfflineReceiver() {
if (!accountVerification.verifyAccountExists(receiver)) {
- logger.warn("cannot relay to unexisting receiver {} stanza
{}", receiver.getFullQualifiedName(),
- stanza.toString());
+ LOG.warn("cannot relay to unexisting receiver {} stanza {}",
receiver.getFullQualifiedName(),
+ stanza);
return new RelayResult(new NoSuchLocalUserException());
- } else if (offlineStanzaReceiver != null) {
- offlineStanzaReceiver.receive(stanza);
- return new RelayResult(new
DeliveredToOfflineReceiverException());
- } else {
- logger.warn("cannot relay to offline receiver {} stanza {}",
receiver.getFullQualifiedName(),
- stanza.toString());
+ }
+
+ StanzaHandler stanzaHandler =
serverRuntimeContext.getHandler(stanza);
+ if (stanzaHandler.isSessionRequired()) {
+ LOG.warn("cannot relay to offline receiver {} stanza {}",
receiver.getFullQualifiedName(), stanza);
return new RelayResult(new LocalRecipientOfflineException());
}
+ unconnectedProtocolWorker.processStanza(serverRuntimeContext,
null, sessionStateHolder, stanza,
+ stanzaHandler);
+ return new RelayResult().setProcessed();
}
protected RelayResult relayToBestSessions(final boolean
fallbackToBareJIDAllowed) {
@@ -401,7 +401,7 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
}
if (receivingSessions.size() == 0) {
- return relayNotPossible();
+ return relayToOfflineReceiver();
}
RelayResult relayResult = new RelayResult();
@@ -412,8 +412,8 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
}
try {
StanzaHandler stanzaHandler =
receivingSession.getServerRuntimeContext().getHandler(stanza);
-
inboundStanzaProtocolWorker.processStanza(serverRuntimeContext,
receivingSession, sessionStateHolder, stanza,
- stanzaHandler);
+
inboundStanzaProtocolWorker.processStanza(serverRuntimeContext,
receivingSession,
+ sessionStateHolder, stanza, stanzaHandler);
} catch (Exception e) {
relayResult.addProcessingError(new DeliveryException("no
relay to non-authenticated sessions"));
continue;
@@ -434,11 +434,11 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
: resourceRegistry.getSessions(receiver, prioThreshold);
if (receivingSessions.size() == 0) {
- return relayNotPossible();
+ return relayToOfflineReceiver();
}
if (receivingSessions.size() > 1) {
- logger.warn("multiplexing: {} sessions will be processing {}
", receivingSessions.size(), stanza);
+ LOG.warn("multiplexing: {} sessions will be processing {} ",
receivingSessions.size(), stanza);
}
RelayResult relayResult = new RelayResult();
@@ -450,8 +450,8 @@ public class DeliveringInternalInboundStanzaRelay
implements StanzaRelay, Manage
}
try {
StanzaHandler stanzaHandler =
sessionContext.getServerRuntimeContext().getHandler(stanza);
-
inboundStanzaProtocolWorker.processStanza(serverRuntimeContext, sessionContext,
sessionStateHolder, stanza,
- stanzaHandler);
+
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/modules/core/base/handler/MessageHandler.java
b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
index 75c127f..5f87f08 100644
---
a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
+++
b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandler.java
@@ -54,6 +54,11 @@ public class MessageHandler extends XMPPCoreStanzaHandler {
}
@Override
+ public boolean isSessionRequired() {
+ return false;
+ }
+
+ @Override
protected List<Stanza> executeCore(XMPPCoreStanza stanza,
ServerRuntimeContext serverRuntimeContext,
boolean isOutboundStanza, SessionContext sessionContext,
StanzaBroker stanzaBroker) {
diff --git
a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandler.java
b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandler.java
index a3fcfd5..49e2541 100644
---
a/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandler.java
+++
b/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandler.java
@@ -55,6 +55,11 @@ public class PresenceHandler extends XMPPCoreStanzaHandler {
}
@Override
+ public boolean isSessionRequired() {
+ return false;
+ }
+
+ @Override
protected List<Stanza> executeCore(XMPPCoreStanza stanza,
ServerRuntimeContext serverRuntimeContext,
boolean isOutboundStanza,
SessionContext sessionContext, StanzaBroker stanzaBroker) {
PresenceStanza presenceStanza = (PresenceStanza) stanza;
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/DefaultStanzaBroker.java
similarity index 66%
rename from
server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java
rename to
server/core/src/main/java/org/apache/vysper/xmpp/protocol/DefaultStanzaBroker.java
index f52c2f6..4c3b9ba 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/DefaultStanzaBroker.java
@@ -22,6 +22,7 @@ package org.apache.vysper.xmpp.protocol;
import static java.util.Objects.requireNonNull;
import org.apache.vysper.xmpp.addressing.Entity;
+import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
@@ -31,15 +32,23 @@ import org.apache.vysper.xmpp.stanza.Stanza;
/**
* @author Réda Housni Alaoui
*/
-public class SimpleStanzaBroker implements StanzaBroker {
+public class DefaultStanzaBroker implements StanzaBroker {
private final StanzaRelay stanzaRelay;
private final InternalSessionContext sessionContext;
- public SimpleStanzaBroker(StanzaRelay stanzaRelay, InternalSessionContext
sessionContext) {
+ private final OfflineStanzaReceiver offlineStanzaReceiver;
+
+ public DefaultStanzaBroker(StanzaRelay stanzaRelay, InternalSessionContext
sessionContext,
+ OfflineStanzaReceiver offlineStanzaReceiver) {
this.stanzaRelay = requireNonNull(stanzaRelay);
this.sessionContext = sessionContext;
+ this.offlineStanzaReceiver = offlineStanzaReceiver;
+ }
+
+ public DefaultStanzaBroker(StanzaRelay stanzaRelay, InternalSessionContext
sessionContext){
+ this(stanzaRelay, sessionContext, null);
}
@Override
@@ -56,11 +65,14 @@ public class SimpleStanzaBroker implements StanzaBroker {
if (stanza == null) {
return;
}
- if (sessionContext == null) {
- // TODO Move offline storage here?
+ if (sessionContext != null) {
+ sessionContext.getResponseWriter().write(stanza);
+ return;
+ }
+ if (offlineStanzaReceiver == null) {
return;
}
- sessionContext.getResponseWriter().write(stanza);
+ offlineStanzaReceiver.receive(stanza);
}
@Override
@@ -72,18 +84,23 @@ public class SimpleStanzaBroker implements StanzaBroker {
return false;
}
- SimpleStanzaBroker that = (SimpleStanzaBroker) o;
+ DefaultStanzaBroker that = (DefaultStanzaBroker) o;
if (!stanzaRelay.equals(that.stanzaRelay)) {
return false;
}
- return sessionContext != null ?
sessionContext.equals(that.sessionContext) : that.sessionContext == null;
+ if (sessionContext != null ?
!sessionContext.equals(that.sessionContext) : that.sessionContext != null) {
+ return false;
+ }
+ return offlineStanzaReceiver != null ?
offlineStanzaReceiver.equals(that.offlineStanzaReceiver)
+ : that.offlineStanzaReceiver == null;
}
@Override
public int hashCode() {
int result = stanzaRelay.hashCode();
result = 31 * result + (sessionContext != null ?
sessionContext.hashCode() : 0);
+ result = 31 * result + (offlineStanzaReceiver != null ?
offlineStanzaReceiver.hashCode() : 0);
return result;
}
}
diff --git
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
index 25e28f8..3ceb0af 100644
---
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
+++
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutor.java
@@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.protocol;
import static java.util.Objects.requireNonNull;
+import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.server.InternalSessionContext;
import org.apache.vysper.xmpp.server.ServerRuntimeContext;
@@ -35,9 +36,13 @@ class SimpleStanzaHandlerExecutor implements
StanzaHandlerExecutor {
private final StanzaHandler stanzaHandler;
- public SimpleStanzaHandlerExecutor(StanzaRelay stanzaRelay, StanzaHandler
stanzaHandler) {
+ private final OfflineStanzaReceiver offlineStanzaReceiver;
+
+ public SimpleStanzaHandlerExecutor(StanzaRelay stanzaRelay, StanzaHandler
stanzaHandler,
+ OfflineStanzaReceiver offlineStanzaReceiver) {
this.stanzaRelay = requireNonNull(stanzaRelay);
this.stanzaHandler = requireNonNull(stanzaHandler);
+ this.offlineStanzaReceiver = offlineStanzaReceiver;
}
@Override
@@ -47,7 +52,7 @@ class SimpleStanzaHandlerExecutor implements
StanzaHandlerExecutor {
serverRuntimeContext.getStanzaHandlerInterceptors());
interceptorChain.intercept(stanza, serverRuntimeContext,
isOutboundStanza, sessionContext, sessionStateHolder,
- new SimpleStanzaBroker(stanzaRelay, sessionContext));
+ new DefaultStanzaBroker(stanzaRelay, sessionContext,
offlineStanzaReceiver));
}
}
diff --git
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutorFactory.java
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutorFactory.java
index efcf05e..b8c0e84 100644
---
a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutorFactory.java
+++
b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaHandlerExecutorFactory.java
@@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.protocol;
import static java.util.Objects.requireNonNull;
+import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
/**
@@ -30,13 +31,20 @@ public class SimpleStanzaHandlerExecutorFactory implements
StanzaHandlerExecutor
private final StanzaRelay stanzaRelay;
- public SimpleStanzaHandlerExecutorFactory(StanzaRelay stanzaRelay) {
+ private final OfflineStanzaReceiver offlineStanzaReceiver;
+
+ public SimpleStanzaHandlerExecutorFactory(StanzaRelay stanzaRelay,
OfflineStanzaReceiver offlineStanzaReceiver) {
this.stanzaRelay = requireNonNull(stanzaRelay);
+ this.offlineStanzaReceiver = offlineStanzaReceiver;
+ }
+
+ public SimpleStanzaHandlerExecutorFactory(StanzaRelay stanzaRelay){
+ this(stanzaRelay, null);
}
@Override
public StanzaHandlerExecutor build(StanzaHandler stanzaHandler) {
- return new SimpleStanzaHandlerExecutor(stanzaRelay, stanzaHandler);
+ return new SimpleStanzaHandlerExecutor(stanzaRelay, stanzaHandler,
offlineStanzaReceiver);
}
}
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 0ec8de5..ff1f171 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
@@ -38,6 +38,7 @@ import org.apache.vysper.storage.StorageProviderRegistry;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.authentication.UserAuthentication;
import org.apache.vysper.xmpp.cryptography.TLSContextFactory;
+import org.apache.vysper.xmpp.delivery.OfflineStanzaReceiver;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.modules.Module;
import org.apache.vysper.xmpp.modules.ModuleRegistry;
@@ -131,7 +132,7 @@ public class DefaultServerRuntimeContext implements
InternalServerRuntimeContext
*/
private final Map<String, ServerRuntimeContextService>
serverRuntimeContextServiceMap = new HashMap<String,
ServerRuntimeContextService>();
- private List<Module> modules = new ArrayList<Module>();
+ private List<Module> modules = new ArrayList<>();
/**
* map of all registered components, index by the subdomain they are
registered
@@ -147,12 +148,13 @@ public class DefaultServerRuntimeContext implements
InternalServerRuntimeContext
public DefaultServerRuntimeContext(Entity serverEntity, StanzaRelay
stanzaRelay, StanzaProcessor stanzaProcessor,
AlterableComponentRegistry componentRegistry, ResourceRegistry
resourceRegistry,
- ServerFeatures serverFeatures, List<HandlerDictionary>
dictionaries) {
+ ServerFeatures serverFeatures, List<HandlerDictionary>
dictionaries,
+ OfflineStanzaReceiver offlineStanzaReceiver) {
this.serverEntity = serverEntity;
this.stanzaRelay = stanzaRelay;
this.componentRegistry = requireNonNull(componentRegistry);
StanzaHandlerExecutorFactory simpleStanzaHandlerExecutorFactory = new
SimpleStanzaHandlerExecutorFactory(
- stanzaRelay);
+ stanzaRelay, offlineStanzaReceiver);
this.serverConnectorRegistry = new
DefaultXMPPServerConnectorRegistry(this, simpleStanzaHandlerExecutorFactory,
stanzaProcessor);
this.stanzaHandlerLookup = new StanzaHandlerLookup(this);
@@ -171,17 +173,17 @@ public class DefaultServerRuntimeContext implements
InternalServerRuntimeContext
}
public DefaultServerRuntimeContext(Entity serverEntity, StanzaRelay
stanzaRelay) {
- this(serverEntity, stanzaRelay, new ProtocolWorker(new
SimpleStanzaHandlerExecutorFactory(stanzaRelay)),
+ this(serverEntity, stanzaRelay,
+ new ProtocolWorker(new
SimpleStanzaHandlerExecutorFactory(stanzaRelay, null)),
new SimpleComponentRegistry(serverEntity), new
DefaultResourceRegistry(), new ServerFeatures(),
- Collections.emptyList());
+ Collections.emptyList(),
+ null);
}
/**
* change the presence cache implementation. this is a setter intended to
be
* used at initialisation time. (thus, this method is not part of
* ServerRuntimeContext.
- *
- * @param presenceCache
*/
public void setPresenceCache(LatestPresenceCache presenceCache) {
this.presenceCache = presenceCache;
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 414313e..9d7799c 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
@@ -55,7 +55,6 @@ import
org.apache.vysper.xmpp.server.components.AlterableComponentRegistry;
import org.apache.vysper.xmpp.server.components.SimpleComponentRegistry;
import org.apache.vysper.xmpp.state.resourcebinding.DefaultResourceRegistry;
import org.apache.vysper.xmpp.state.resourcebinding.InternalResourceRegistry;
-import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry;
/**
* this class is able to boot a standalone XMPP server. <code>
@@ -190,7 +189,7 @@ public class XMPPServer {
AlterableComponentRegistry componentRegistry = new
SimpleComponentRegistry(serverEntity);
DeliveringInternalInboundStanzaRelay internalStanzaRelay = new
DeliveringInternalInboundStanzaRelay(
- serverEntity, resourceRegistry, componentRegistry,
accountManagement, offlineReceiver);
+ serverEntity, resourceRegistry, componentRegistry,
accountManagement);
DeliveringExternalInboundStanzaRelay externalStanzaRelay = new
DeliveringExternalInboundStanzaRelay();
if (maxInternalRelayThreads >= 0)
@@ -203,12 +202,12 @@ public class XMPPServer {
stanzaRelayBroker.setExternalRelay(externalStanzaRelay);
StanzaHandlerExecutorFactory stanzaHandlerExecutorFactory = new
SimpleStanzaHandlerExecutorFactory(
- stanzaRelayBroker);
+ stanzaRelayBroker, offlineReceiver);
stanzaProcessor = new ProtocolWorker(stanzaHandlerExecutorFactory);
serverRuntimeContext = new DefaultServerRuntimeContext(serverEntity,
stanzaRelayBroker, stanzaProcessor,
- componentRegistry, resourceRegistry, serverFeatures,
dictionaries);
+ componentRegistry, resourceRegistry, serverFeatures,
dictionaries, offlineReceiver);
serverRuntimeContext.setStorageProviderRegistry(storageProviderRegistry);
serverRuntimeContext.setTlsContextFactory(tlsContextFactory);
@@ -225,7 +224,7 @@ public class XMPPServer {
if (logStorageProvider != null)
internalStanzaRelay.setLogStorageProvider(logStorageProvider);
- if (endpoints.size() == 0)
+ if (endpoints.isEmpty())
throw new IllegalStateException("server must have at least one
endpoint");
/*
diff --git
a/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
b/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
index 1e63b3e..53911ad 100644
---
a/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/stanzasession/StanzaSessionTestCase.java
@@ -61,7 +61,7 @@ public class StanzaSessionTestCase extends TestCase {
ProtocolWorker protocolWorker = new ProtocolWorker(new
SimpleStanzaHandlerExecutorFactory(relay));
DefaultServerRuntimeContext serverContext = new
DefaultServerRuntimeContext(serverEntity, relay, protocolWorker,
new SimpleComponentRegistry(serverEntity), new
DefaultResourceRegistry(), new ServerFeatures(),
- dictionaries);
+ dictionaries, null);
relay.setServerRuntimeContext(serverContext);
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 50bdbe2..054bc15 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
@@ -88,7 +88,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase
extends TestCase {
accountVerification = new AccountVerificationMock();
serverEntity = EntityImpl.parse("vysper.org");
stanzaRelay = new DeliveringInternalInboundStanzaRelay(serverEntity,
resourceRegistry,
- new SimpleComponentRegistry(serverEntity),
accountVerification, null);
+ new SimpleComponentRegistry(serverEntity),
accountVerification);
}
public void testSimpleRelay() throws EntityFormatException,
XMLSemanticError, DeliveryException {
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
index cdd6bf9..324c2ae 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
@@ -30,7 +30,7 @@ import
org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.modules.core.TestUser;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -92,7 +92,7 @@ public class MessageHandlerRelayTestCase extends TestCase {
Stanza stanza = stanzaBuilder.build();
messageHandler.execute(stanza,
senderSessionContext.getServerRuntimeContext(), true, senderSessionContext,
null,
- new SimpleStanzaBroker(senderSessionContext.getStanzaRelay(),
senderSessionContext));
+ new DefaultStanzaBroker(senderSessionContext.getStanzaRelay(),
senderSessionContext));
Stanza receivedStanza = receiverUser.getNextStanza();
XMLElementVerifier timestampVerifier =
receivedStanza.getFirstInnerElement().getVerifier();
@@ -119,12 +119,12 @@ public class MessageHandlerRelayTestCase extends TestCase
{
Stanza successfulMessageStanza =
StanzaBuilder.createMessageStanza(sender, receiver, "en", "info").build();
messageHandler.execute(successfulMessageStanza,
senderSessionContext.getServerRuntimeContext(), true,
- senderSessionContext, null, new
SimpleStanzaBroker(stanzaRelay, senderSessionContext));
+ senderSessionContext, null, new
DefaultStanzaBroker(stanzaRelay, senderSessionContext));
assertEquals(successfulMessageStanza, receiverQueue.getNext());
Stanza failureMessageStanza =
StanzaBuilder.createMessageStanza(sender, noReceiver, "en", "info").build();
messageHandler.execute(failureMessageStanza,
senderSessionContext.getServerRuntimeContext(), true,
- senderSessionContext, null, new
SimpleStanzaBroker(stanzaRelay, senderSessionContext));
+ senderSessionContext, null, new
DefaultStanzaBroker(stanzaRelay, senderSessionContext));
assertNull(receiverQueue.getNext());
Stanza rejectionStanza = senderQueue.getNext();
assertNotNull(rejectionStanza);
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
index f004403..c501485 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/RelayingIQHandlerTestCase.java
@@ -22,7 +22,7 @@ package org.apache.vysper.xmpp.modules.core.base.handler;
import
org.apache.vysper.xmpp.modules.core.im.handler.PresenceHandlerBaseTestCase;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.RecordingStanzaBroker;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -40,7 +40,7 @@ public class RelayingIQHandlerTestCase extends
PresenceHandlerBaseTestCase {
protected void setUp() throws Exception {
super.setUp();
- stanzaBroker = new RecordingStanzaBroker(new
SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ stanzaBroker = new RecordingStanzaBroker(new
DefaultStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
}
public void testIQClientToClient_Outbound_NotSubscribed() {
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
index abbe900..8877404 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/DirectedPresenceHandlerTestCase.java
@@ -25,7 +25,7 @@ import java.util.Set;
import org.apache.vysper.xmpp.addressing.Entity;
import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.PresenceStanza;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -49,7 +49,7 @@ public class DirectedPresenceHandlerTestCase extends
PresenceHandlerBaseTestCase
.createPresenceStanza(initiatingUser.getEntityFQ(),
unrelatedUser.getEntityFQ(), null, null, null, null)
.build());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
assertTrue(0 < receiverRelay.getCountDelivered());
// directed presence has been recorded internally
@@ -71,7 +71,7 @@ public class DirectedPresenceHandlerTestCase extends
PresenceHandlerBaseTestCase
.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(),
unrelatedUser.getEntityFQ(), null,
PresenceStanzaType.UNAVAILABLE, null, null).build());
handler.executeCore(directedUnvailPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
assertTrue(0 < receiverRelay.getCountDelivered());
// directed presence has been recorded internally
@@ -99,7 +99,7 @@ public class DirectedPresenceHandlerTestCase extends
PresenceHandlerBaseTestCase
.createPresenceStanza(initiatingUser.getEntityFQ(),
unrelatedUser.getEntityFQ(), null, null, null, null)
.build());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
// directed presence has been recorded internally
Set<Entity> map = (Set<Entity>) sessionContext
@@ -113,7 +113,7 @@ public class DirectedPresenceHandlerTestCase extends
PresenceHandlerBaseTestCase
.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(),
null, null,
PresenceStanzaType.UNAVAILABLE, null, null).build());
handler.executeCore(generalUnavailable,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
assertTrue(0 < receiverRelay.getCountDelivered());
ResourceState resourceState =
sessionContext.getServerRuntimeContext().getResourceRegistry()
.getResourceState(initiatingUser.getBoundResourceId());
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
index 24938b7..970eb8f 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailInitialOutHandlerTestCase.java
@@ -27,7 +27,7 @@ import java.util.List;
import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.stanza.StanzaErrorCondition;
@@ -47,7 +47,7 @@ public class PresenceAvailInitialOutHandlerTestCase extends
PresenceHandlerBaseT
assertEquals(ResourceState.CONNECTED, getResourceState());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
// check resource state change, do not override interested
assertEquals(ResourceState.AVAILABLE, getResourceState());
@@ -112,7 +112,7 @@ public class PresenceAvailInitialOutHandlerTestCase extends
PresenceHandlerBaseT
.getWrapper(StanzaBuilder.createPresenceStanza(null, null,
null, null, null, null).build());
List<Stanza> stanzas = handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true,
- sessionContext, new
SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ sessionContext, new
DefaultStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
Stanza stanza = stanzas.get(0);
// ... and will give an error:
assertEquals("error", stanza.getAttribute("type").getValue());
@@ -127,7 +127,7 @@ public class PresenceAvailInitialOutHandlerTestCase extends
PresenceHandlerBaseT
.unbindResource(anotherAvailableUser.getBoundResourceId());
// 3 other resources got unbound, remaining one should now be unique
stanzas = handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
stanza = stanzas.get(0);
assertNull(stanza); // no return, esp no error stanza - all the
handling is done through relays
stanza = initiatingUser.getNextStanza();
@@ -141,7 +141,7 @@ public class PresenceAvailInitialOutHandlerTestCase extends
PresenceHandlerBaseT
.unbindResource(initiatingUser.getBoundResourceId());
assertTrue(noRemainingBinds);
stanzas = handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
stanza = stanzas.get(0);
assertEquals("error", stanza.getAttribute("type").getValue());
assertEquals(StanzaErrorCondition.UNKNOWN_SENDER.value(),
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailUpdateOutHandlerTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailUpdateOutHandlerTestCase.java
index 4311cab..c45c9dd 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailUpdateOutHandlerTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceAvailUpdateOutHandlerTestCase.java
@@ -22,7 +22,7 @@ package org.apache.vysper.xmpp.modules.core.im.handler;
import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
@@ -42,7 +42,7 @@ public class PresenceAvailUpdateOutHandlerTestCase extends
PresenceHandlerBaseTe
XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(
StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), null, null,
null, null, null).build());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
assertTrue(0 < receiverRelay.getCountDelivered());
resetRecordedStanzas(); // purge recorded
assertTrue(0 == receiverRelay.getCountDelivered());
@@ -53,7 +53,7 @@ public class PresenceAvailUpdateOutHandlerTestCase extends
PresenceHandlerBaseTe
XMPPCoreStanza updatePresence = XMPPCoreStanza.getWrapper(StanzaBuilder
.createPresenceStanza(initiatingUser.getEntityFQ(), null,
null, null, showValue, null).build());
handler.executeCore(updatePresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(receiverRelay, sessionContext));
+ new DefaultStanzaBroker(receiverRelay, sessionContext));
// check resource state
assertEquals(ResourceState.AVAILABLE, getResourceState());
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
index eaf6e36..9c3ad38 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
@@ -27,7 +27,7 @@ import static
org.apache.vysper.xmpp.modules.roster.SubscriptionType.NONE;
import org.apache.vysper.xmpp.addressing.EntityFormatException;
import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.delivery.StanzaReceiverRelay;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -52,7 +52,7 @@ public class PresenceSubRequestOutHandlerTestCase extends
PresenceHandlerBaseTes
.getWrapper(StanzaBuilder.createPresenceStanza(unrelatedUser.getEntityFQ(),
initiatingUser.getEntity(),
null, PresenceStanzaType.SUBSCRIBED, null,
null).build());
handler.executeCore(requestApproval,
sessionContext.getServerRuntimeContext(), false, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
// 3 roster pushes but...
StanzaReceiverRelay relay = (StanzaReceiverRelay)
sessionContext.getStanzaRelay();
@@ -76,7 +76,7 @@ public class PresenceSubRequestOutHandlerTestCase extends
PresenceHandlerBaseTes
null, PresenceStanzaType.SUBSCRIBE, null,
null).build());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
// 1 to TO + 3 roster pushes
@@ -126,7 +126,7 @@ public class PresenceSubRequestOutHandlerTestCase extends
PresenceHandlerBaseTes
subscribed_FROM.getEntity(), null,
PresenceStanzaType.SUBSCRIBE, null, null).build());
handler.executeCore(initialPresence,
sessionContext.getServerRuntimeContext(), true, sessionContext,
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
// 1 to TO + 3 roster pushes
diff --git
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/ExtendedDiscoInfoTestCase.java
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/ExtendedDiscoInfoTestCase.java
index cea8ece..10eb1fd 100644
---
a/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/ExtendedDiscoInfoTestCase.java
+++
b/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/ExtendedDiscoInfoTestCase.java
@@ -39,7 +39,7 @@ import
org.apache.vysper.xmpp.modules.servicediscovery.management.InfoRequestLis
import
org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscoveryRequestException;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
import org.apache.vysper.xmpp.server.InternalSessionContext;
import org.apache.vysper.xmpp.server.TestSessionContext;
@@ -91,7 +91,7 @@ public class ExtendedDiscoInfoTestCase extends TestCase {
runtimeContext.getStanzaRelay());
List<Stanza> resultStanzas = infoIQHandler.handleGet(finalStanza,
runtimeContext, sessionContext,
- new SimpleStanzaBroker(runtimeContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(runtimeContext.getStanzaRelay(),
sessionContext));
assertTrue(resultStanzas.get(0).getVerifier().onlySubelementEquals("query",
NamespaceURIs.XEP0030_SERVICE_DISCOVERY_INFO));
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 de256ae..865b021 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
@@ -29,7 +29,7 @@ import org.apache.vysper.xmpp.addressing.EntityImpl;
import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.protocol.ProtocolException;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.SimpleStanzaHandlerExecutorFactory;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.InternalSessionContext;
@@ -97,7 +97,7 @@ public class ComponentStanzaProcessorTestCase {
processor.processStanza(serverRuntimeContext, sessionContext, stanza,
sessionStateHolder);
verify(handler).execute(stanza, serverRuntimeContext, false,
sessionContext, sessionStateHolder,
- new SimpleStanzaBroker(stanzaRelay, sessionContext));
+ new DefaultStanzaBroker(stanzaRelay, sessionContext));
}
@Test(expected = RuntimeException.class)
@@ -107,7 +107,7 @@ public class ComponentStanzaProcessorTestCase {
// new SimpleStanzaBroker(stanzaRelay,
sessionContext))).thenReturn(container);
doThrow(new RuntimeException()).when(handler).execute(stanza,
serverRuntimeContext, false, sessionContext,
- sessionStateHolder, new SimpleStanzaBroker(stanzaRelay,
sessionContext));
+ sessionStateHolder, new DefaultStanzaBroker(stanzaRelay,
sessionContext));
processor.addHandler(handler);
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
index 02f3f6c..f2f2a0f 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/AbstractMUCOccupantDiscoTestCase.java
@@ -26,7 +26,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.ConferenceTest
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -37,7 +37,7 @@ public abstract class AbstractMUCOccupantDiscoTestCase
extends AbstractMUCHandle
private Stanza sendDisco(Stanza stanza) throws ProtocolException {
RecordingStanzaBroker recordingStanzaBroker = new
RecordingStanzaBroker(
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
handler.execute(stanza, sessionContext.getServerRuntimeContext(), true,
sessionContext, null, recordingStanzaBroker);
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
index 40e15b1..6df7089 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCHandlerTestCase.java
@@ -39,7 +39,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.Statu
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
@@ -272,7 +272,7 @@ public abstract class AbstractMUCHandlerTestCase extends
TestCase {
Stanza iqStanza = stanzaBuilder.build();
- RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
DefaultStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
handler.execute(iqStanza, sessionContext.getServerRuntimeContext(),
true, sessionContext, null, stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
}
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
index febacae..906fb0e 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/AbstractMUCMessageHandlerTestCase.java
@@ -28,7 +28,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.RecordingStanzaBroke
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -62,7 +62,7 @@ public abstract class AbstractMUCMessageHandlerTestCase
extends AbstractMUCHandl
Stanza messageStanza = stanzaBuilder.build();
RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
handler.execute(messageStanza,
sessionContext.getServerRuntimeContext(), true, sessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
index 27e46e7..a33c7d3 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeNickTestCase.java
@@ -32,7 +32,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserItem;
import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Status.StatusCode;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -51,7 +51,7 @@ public class ChangeNickTestCase extends
AbstractMUCHandlerTestCase {
Stanza presenceStanza = stanzaBuilder.build();
RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
handler.execute(presenceStanza,
sessionContext.getServerRuntimeContext(), true, sessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
index e5e44c7..747046c 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ChangeStatusTestCase.java
@@ -29,7 +29,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.MucUserItem;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
@@ -44,7 +44,7 @@ public class ChangeStatusTestCase extends
AbstractMUCHandlerTestCase {
status);
Stanza presenceStanza = stanzaBuilder.build();
- RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
DefaultStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
handler.execute(presenceStanza,
sessionContext.getServerRuntimeContext(), true, sessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
index ba37ca5..63a246c 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/EnterRoomTestCase.java
@@ -39,7 +39,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.Password;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.stanzas.X;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.MessageStanza;
@@ -78,7 +78,7 @@ public class EnterRoomTestCase extends
AbstractMUCHandlerTestCase {
}
Stanza presenceStanza = stanzaBuilder.build();
RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
handler.execute(presenceStanza,
userSessionContext.getServerRuntimeContext(), true, userSessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
index 1774684..f7fb1f6 100644
---
a/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
+++
b/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/ExitRoomTestCase.java
@@ -31,7 +31,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Room;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.RoomType;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
import org.apache.vysper.xmpp.protocol.ProtocolException;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaHandler;
import org.apache.vysper.xmpp.stanza.PresenceStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -51,7 +51,7 @@ public class ExitRoomTestCase extends
AbstractMUCHandlerTestCase {
Stanza presenceStanza = stanzaBuilder.build();
RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(
- new SimpleStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
+ new DefaultStanzaBroker(sessionContext.getStanzaRelay(),
sessionContext));
handler.execute(presenceStanza,
sessionContext.getServerRuntimeContext(), true, sessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
index d742af8..c536080 100644
---
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
+++
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/RecordingStanzaBroker.java
@@ -25,12 +25,9 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.delivery.StanzaRelay;
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
import org.apache.vysper.xmpp.protocol.StanzaBroker;
-import org.apache.vysper.xmpp.server.SessionContext;
import org.apache.vysper.xmpp.stanza.Stanza;
/**
diff --git
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
index 4193130..8faf009 100644
---
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
+++
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/AbstractPublishSubscribeTestCase.java
@@ -31,7 +31,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.C
import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.storageprovider.LeafNodeInMemoryStorageProvider;
import
org.apache.vysper.xmpp.modules.servicediscovery.collection.ServiceCollector;
import org.apache.vysper.xmpp.protocol.SessionStateHolder;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext;
import org.apache.vysper.xmpp.server.SessionState;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -152,7 +152,7 @@ public abstract class AbstractPublishSubscribeTestCase
extends TestCase {
protected abstract AbstractStanzaGenerator getDefaultStanzaGenerator();
protected Stanza sendStanza(Stanza toSend, boolean isOutboundStanza) {
- RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
SimpleStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
+ RecordingStanzaBroker stanzaBroker = new RecordingStanzaBroker(new
DefaultStanzaBroker(sessionContext.getStanzaRelay(), sessionContext));
handler.execute(toSend, sessionContext.getServerRuntimeContext(),
isOutboundStanza, sessionContext, null,
stanzaBroker);
return stanzaBroker.getUniqueStanzaWrittenToSession();
diff --git
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
index 127cba6..5e26253 100644
---
a/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
+++
b/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/disco/PubSubDiscoItemsTestCase.java
@@ -31,7 +31,7 @@ import
org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.handler.AbstractS
import org.apache.vysper.xmpp.modules.extension.xep0060_pubsub.model.LeafNode;
import
org.apache.vysper.xmpp.modules.servicediscovery.handler.DiscoItemIQHandler;
import org.apache.vysper.xmpp.protocol.NamespaceURIs;
-import org.apache.vysper.xmpp.protocol.SimpleStanzaBroker;
+import org.apache.vysper.xmpp.protocol.DefaultStanzaBroker;
import org.apache.vysper.xmpp.stanza.IQStanza;
import org.apache.vysper.xmpp.stanza.IQStanzaType;
import org.apache.vysper.xmpp.stanza.Stanza;
@@ -151,17 +151,17 @@ public class PubSubDiscoItemsTestCase extends
AbstractPublishSubscribeTestCase {
XMLElement item1 = new XMLElement("namespace1", "item1", null,
(Attribute[]) null, (XMLFragment[]) null);
XMLElement item2 = new XMLElement("namespace2", "item2", null,
(Attribute[]) null, (XMLFragment[]) null);
XMLElement item3 = new XMLElement("namespace3", "item3", null,
(Attribute[]) null, (XMLFragment[]) null);
- node.publish(client, new SimpleStanzaBroker(relay, sessionContext),
"itemid1", item1);
+ node.publish(client, new DefaultStanzaBroker(relay, sessionContext),
"itemid1", item1);
Thread.sleep(10);
- node.publish(client, new SimpleStanzaBroker(relay, sessionContext),
"itemid2", item1); // publish this one with
+ node.publish(client, new DefaultStanzaBroker(relay, sessionContext),
"itemid2", item1); // publish this one with
// the same id as the
// next one (overwritten
// by the next)
- node.publish(client, new SimpleStanzaBroker(relay, sessionContext),
"itemid2", item2); // overwrite the prev.
+ node.publish(client, new DefaultStanzaBroker(relay, sessionContext),
"itemid2", item2); // overwrite the prev.
// item (use the same
// itemid)
Thread.sleep(10);
- node.publish(client, new SimpleStanzaBroker(relay, sessionContext),
"itemid3", item3);
+ node.publish(client, new DefaultStanzaBroker(relay, sessionContext),
"itemid3", item3);
DefaultDiscoInfoStanzaGenerator sg = (DefaultDiscoInfoStanzaGenerator)
getDefaultStanzaGenerator();
Stanza stanza = sg.getStanza(client, pubsubService.getBareJID(),
"id123", "news");
diff --git
a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
index 9e6f77c..3ef8a6a 100644
---
a/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
+++
b/server/extensions/xep0313-mam/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserMessageStanzaBroker.java
@@ -27,7 +27,6 @@ import java.util.Optional;
import org.apache.vysper.xml.fragment.XMLElement;
import org.apache.vysper.xml.fragment.XMLSemanticError;
import org.apache.vysper.xmpp.addressing.Entity;
-import org.apache.vysper.xmpp.addressing.EntityUtils;
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy;
import org.apache.vysper.xmpp.modules.core.base.handler.XMPPCoreStanzaHandler;
@@ -79,9 +78,6 @@ class UserMessageStanzaBroker extends DelegatingStanzaBroker {
}
private Stanza archive(Stanza stanza) {
- if (!isOutbound) {
- return stanza;
- }
if (!MessageStanza.isOfType(stanza)) {
return stanza;
}
@@ -108,10 +104,13 @@ class UserMessageStanzaBroker extends
DelegatingStanzaBroker {
}
// TODO Check preferences
-
- addToSenderArchive(messageStanza, sessionContext);
- return
addToReceiverArchive(messageStanza).map(MessageStanzaWithId::new).map(MessageStanzaWithId::toStanza)
- .orElse(stanza);
+ if (isOutbound) {
+ addToSenderArchive(messageStanza, sessionContext);
+ return messageStanza;
+ } else {
+ return
addToReceiverArchive(messageStanza).map(MessageStanzaWithId::new).map(MessageStanzaWithId::toStanza)
+ .orElse(stanza);
+ }
}
private void addToSenderArchive(MessageStanza messageStanza,
SessionContext sessionContext) {
@@ -127,11 +126,6 @@ class UserMessageStanzaBroker extends
DelegatingStanzaBroker {
}
private Optional<ArchivedMessage> addToReceiverArchive(MessageStanza
messageStanza) {
- Entity to = requireNonNull(messageStanza.getTo(), "No 'to' found in "
+ messageStanza);
- if (!EntityUtils.isAddressingServer(to,
serverRuntimeContext.getServerEntity())) {
- LOG.debug("Receiver {} is not managed by this server", to);
- return Optional.empty();
- }
// Servers that expose archive messages of sent/received messages on
behalf of
// local users MUST expose these archives to the user on the user's
bare JID.
Entity receiverArchiveId = requireNonNull(messageStanza.getTo(), "No
'to' found in " + messageStanza)
diff --git
a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
index a8cf981..bef02b9 100644
---
a/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
+++
b/server/extensions/xep0313-mam/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0313_mam/user/UserArchiveTest.java
@@ -219,10 +219,16 @@ public class UserArchiveTest extends IntegrationTest {
Thread.sleep(200);
- assertNull(carolReceivedMessage.get());
+ assertNotNull(carolReceivedMessage.get());
+ assertEquals("Hello carol", carolReceivedMessage.get().getBody());
- Message message = fetchUniqueArchivedMessage(carol());
- assertEquals("Hello carol", message.getBody());
+ Message archivedMessage = fetchUniqueArchivedMessage(carol());
+ String storedStanzaId = extractStanzaId(archivedMessage);
+ assertNotNull(storedStanzaId);
+
+ String receivedStanzaId = extractStanzaId(carolReceivedMessage.get());
+
+ assertEquals(storedStanzaId, receivedStanzaId);
}
@Test