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 <reda.housniala...@gmail.com> 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