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 d6a9cb3 Hide session stanza writer in a StanzaReceivingSessionContext sub-interface d6a9cb3 is described below commit d6a9cb38ed9d184958109d5ac983f739cec06c9d Author: Réda Housni Alaoui <reda.housniala...@gmail.com> AuthorDate: Sun Sep 1 12:52:54 2019 +0200 Hide session stanza writer in a StanzaReceivingSessionContext sub-interface --- .../apache/vysper/mina/XmppIoHandlerAdapter.java | 44 ++++++++++++---------- .../vysper/xmpp/delivery/LocalDeliveryUtils.java | 19 ++++++---- .../vysper/xmpp/delivery/RecordingStanzaRelay.java | 4 +- .../vysper/xmpp/delivery/StanzaReceiverRelay.java | 6 +-- .../apache/vysper/xmpp/delivery/StanzaRelay.java | 5 ++- .../vysper/xmpp/delivery/StanzaRelayBroker.java | 4 +- .../DeliveringExternalInboundStanzaRelay.java | 4 +- .../DeliveringInternalInboundStanzaRelay.java | 22 +++++------ .../vysper/xmpp/protocol/ProtocolWorker.java | 22 +++++------ .../xmpp/protocol/QueuedStanzaProcessor.java | 15 ++++---- .../vysper/xmpp/protocol/ResponseWriter.java | 35 +++++------------ .../vysper/xmpp/protocol/SimpleStanzaBroker.java | 6 +-- .../xmpp/protocol/SimpleStanzaHandlerExecutor.java | 4 +- .../xmpp/protocol/StanzaHandlerExecutor.java | 4 +- .../vysper/xmpp/protocol/StanzaProcessor.java | 7 ++-- .../xmpp/protocol/StateAwareProtocolWorker.java | 6 +-- .../worker/AbstractStateAwareProtocolWorker.java | 13 ++++--- .../worker/AuthenticatedProtocolWorker.java | 6 +-- .../protocol/worker/EncryptedProtocolWorker.java | 6 +-- .../worker/EncryptionStartedProtocolWorker.java | 6 +-- .../protocol/worker/EndOrClosedProtocolWorker.java | 6 +-- .../protocol/worker/InitiatedProtocolWorker.java | 6 +-- .../protocol/worker/StartedProtocolWorker.java | 6 +-- .../protocol/worker/UnconnectedProtocolWorker.java | 6 +-- .../vysper/xmpp/server/AbstractSessionContext.java | 2 +- .../apache/vysper/xmpp/server/SessionContext.java | 2 - .../StanzaReceivingSessionContext.java} | 25 ++++-------- .../components/ComponentStanzaProcessor.java | 8 ++-- .../resourcebinding/DefaultResourceRegistry.java | 21 ++++++----- .../state/resourcebinding/ResourceRegistry.java | 11 +++--- .../xmpp/delivery/StanzaRelayBrokerTestCase.java | 3 +- ...liveringExternalInboundStanzaRelayTestCase.java | 3 +- ...eliveringInteralInboundStanzaRelayTestCase.java | 3 +- .../handler/DiscoInfoIQHandlerTestCase.java | 12 +++--- .../handler/ExtendedDiscoInfoTestCase.java | 4 +- .../ComponentStanzaProcessorTestCase.java | 3 +- .../resourcebinding/ResourceRegistryTestCase.java | 7 ++-- .../websockets/JettyXmppWebSocketTest.java | 3 +- .../websockets/TomcatXmppWebSocketTest.java | 3 +- .../xmpp/extension/xep0124/BoshHandlerTest.java | 11 +++--- 40 files changed, 191 insertions(+), 192 deletions(-) diff --git a/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java b/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java index cffa8d4..3ae94a7 100644 --- a/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java +++ b/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java @@ -34,16 +34,16 @@ import org.apache.vysper.xmpp.protocol.StreamErrorCondition; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionContext.SessionTerminationCause; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.response.ServerErrorResponses; import org.apache.vysper.xmpp.stanza.Stanza; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.xml.sax.SAXParseException; -import static java.util.Objects.requireNonNull; - /** * handler for client-to-server sessions + * * @author The Apache MINA Project (d...@mina.apache.org) */ public class XmppIoHandlerAdapter implements IoHandler { @@ -53,10 +53,11 @@ public class XmppIoHandlerAdapter implements IoHandler { public static final String ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER = "vysperSessionStateHolder"; public static final String ATTRIBUTE_VYSPER_TERMINATE_REASON = "vysperTerminateReason"; - + final Logger logger = LoggerFactory.getLogger(XmppIoHandlerAdapter.class); private final ServerRuntimeContext serverRuntimeContext; + private final StanzaProcessor stanzaProcessor; public XmppIoHandlerAdapter(ServerRuntimeContext serverRuntimeContext, StanzaProcessor stanzaProcessor) { @@ -74,20 +75,20 @@ public class XmppIoHandlerAdapter implements IoHandler { return; } - throw new IllegalArgumentException("xmpp handler only accepts Stanza-typed messages, but received type " - + message.getClass()); + throw new IllegalArgumentException( + "xmpp handler only accepts Stanza-typed messages, but received type " + message.getClass()); } Stanza stanza = (Stanza) message; - SessionContext session = extractSession(ioSession); + StanzaReceivingSessionContext session = extractSession(ioSession); SessionStateHolder stateHolder = (SessionStateHolder) ioSession .getAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER); stanzaProcessor.processStanza(serverRuntimeContext, session, stanza, stateHolder); } - private SessionContext extractSession(IoSession ioSession) { - return (SessionContext) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSION); + private StanzaReceivingSessionContext extractSession(IoSession ioSession) { + return (StanzaReceivingSessionContext) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSION); } @Override @@ -103,7 +104,7 @@ public class XmppIoHandlerAdapter implements IoHandler { @Override public void event(IoSession ioSession, FilterEvent event) throws Exception { if (event == SslEvent.SECURED) { - SessionContext session = extractSession(ioSession); + StanzaReceivingSessionContext session = extractSession(ioSession); SessionStateHolder stateHolder = (SessionStateHolder) ioSession .getAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER); stanzaProcessor.processTLSEstablished(session, stateHolder); @@ -115,7 +116,8 @@ public class XmppIoHandlerAdapter implements IoHandler { @Override public void sessionCreated(IoSession ioSession) throws Exception { SessionStateHolder stateHolder = new SessionStateHolder(); - SessionContext sessionContext = new MinaBackedSessionContext(serverRuntimeContext, stanzaProcessor, stateHolder, ioSession); + SessionContext sessionContext = new MinaBackedSessionContext(serverRuntimeContext, stanzaProcessor, stateHolder, + ioSession); ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSION, sessionContext); ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER, stateHolder); ioSession.setAttribute(ATTRIBUTE_VYSPER_TERMINATE_REASON, SessionTerminationCause.CLIENT_BYEBYE); @@ -129,7 +131,8 @@ public class XmppIoHandlerAdapter implements IoHandler { @Override public void sessionClosed(IoSession ioSession) throws Exception { SessionContext sessionContext = extractSession(ioSession); - SessionTerminationCause cause = (SessionTerminationCause) ioSession.getAttribute(ATTRIBUTE_VYSPER_TERMINATE_REASON); + SessionTerminationCause cause = (SessionTerminationCause) ioSession + .getAttribute(ATTRIBUTE_VYSPER_TERMINATE_REASON); String sessionId = "UNKNOWN"; if (sessionContext != null) { sessionId = sessionContext.getSessionId(); @@ -140,28 +143,29 @@ public class XmppIoHandlerAdapter implements IoHandler { @Override public void sessionIdle(IoSession ioSession, IdleStatus idleStatus) throws Exception { - logger.debug("session {} is idle", ((SessionContext) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSION)) - .getSessionId()); + logger.debug("session {} is idle", + ((SessionContext) ioSession.getAttribute(ATTRIBUTE_VYSPER_SESSION)).getSessionId()); } @Override public void exceptionCaught(IoSession ioSession, Throwable throwable) throws Exception { - SessionContext sessionContext = extractSession(ioSession); - - // Assume that the connection was aborted for now. Might be different depending on + StanzaReceivingSessionContext sessionContext = extractSession(ioSession); + + // Assume that the connection was aborted for now. Might be different depending + // on // cause of exception determined below. ioSession.setAttribute(ATTRIBUTE_VYSPER_TERMINATE_REASON, SessionTerminationCause.CONNECTION_ABORT); - + Stanza errorStanza; - if(throwable.getCause() != null && throwable.getCause() instanceof SAXParseException) { + if (throwable.getCause() != null && throwable.getCause() instanceof SAXParseException) { logger.info("Client sent not well-formed XML, closing session", throwable); errorStanza = ServerErrorResponses.getStreamError(StreamErrorCondition.XML_NOT_WELL_FORMED, sessionContext.getXMLLang(), "Stanza not well-formed", null); ioSession.setAttribute(ATTRIBUTE_VYSPER_TERMINATE_REASON, SessionTerminationCause.STREAM_ERROR); - } else if(throwable instanceof WriteToClosedSessionException) { + } else if (throwable instanceof WriteToClosedSessionException) { // ignore return; - } else if(throwable instanceof IOException) { + } else if (throwable instanceof IOException) { logger.info("error caught on transportation layer", throwable); return; } else { diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/LocalDeliveryUtils.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/LocalDeliveryUtils.java index 5ea8c76..bdff427 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/LocalDeliveryUtils.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/LocalDeliveryUtils.java @@ -19,7 +19,7 @@ */ package org.apache.vysper.xmpp.delivery; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry; import org.slf4j.Logger; @@ -31,17 +31,22 @@ import org.slf4j.LoggerFactory; */ public class LocalDeliveryUtils { - final static Logger logger = LoggerFactory.getLogger(LocalDeliveryUtils.class); + private static final Logger logger = LoggerFactory.getLogger(LocalDeliveryUtils.class); /** - * delivers a stanza to a server-local resource. used for sending a stanza to all resources of the same user. - * @param registry registry to look up session by resource ID - * @param resource receiving resource ID - * @param push stanza to be pushed + * delivers a stanza to a server-local resource. used for sending a stanza to + * all resources of the same user. + * + * @param registry + * registry to look up session by resource ID + * @param resource + * receiving resource ID + * @param push + * stanza to be pushed */ public static void relayToResourceDirectly(ResourceRegistry registry, String resource, Stanza push) { try { - SessionContext targetContext = registry.getSessionContext(resource); + StanzaReceivingSessionContext targetContext = registry.getSessionContext(resource); if (targetContext == null) return; targetContext.getResponseWriter().write(push); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java index ab8ebf2..6030527 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/RecordingStanzaRelay.java @@ -27,7 +27,7 @@ import org.apache.vysper.xmpp.addressing.Entity; import org.apache.vysper.xmpp.delivery.failure.DeliveryException; import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -43,7 +43,7 @@ public class RecordingStanzaRelay implements StanzaRelay { protected final AtomicBoolean isRelaying = new AtomicBoolean(true); - public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) + public void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { if (!isRelaying()) throw new ServiceNotAvailableException("recording stanza relay is not relaying"); entityStanzaPairs.add(new Triple(receiver, stanza, deliveryFailureStrategy)); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java index 3a48938..0b89ef9 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java @@ -29,7 +29,7 @@ import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.delivery.failure.LocalRecipientOfflineException; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -60,8 +60,8 @@ public class StanzaReceiverRelay implements StanzaRelay { receiverMap.put(receiverID, receiver); } - public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, - DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { + public void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, + DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { if (!isRelaying()) { throw new ServiceNotAvailableException("relay is not relaying"); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java index fa719a2..72f54e9 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelay.java @@ -24,6 +24,7 @@ import org.apache.vysper.xmpp.addressing.Entity; import org.apache.vysper.xmpp.delivery.failure.DeliveryException; import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -47,8 +48,8 @@ public interface StanzaRelay { * @throws DeliveryException * error while relaying */ - void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, - DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException; + void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, + DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException; /** * @return TRUE iff the relay is live (started and not stopped) diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java index d898fe8..a365467 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/StanzaRelayBroker.java @@ -25,7 +25,7 @@ import org.apache.vysper.xmpp.delivery.failure.DeliveryException; import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.resources.ManagedThreadPool; import org.apache.vysper.xmpp.stanza.Stanza; @@ -68,7 +68,7 @@ public class StanzaRelayBroker implements StanzaRelay { this.serverRuntimeContext = serverRuntimeContext; } - public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) + public void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { if (!isRelaying()) { diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java index d6c50cb..95ef94b 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelay.java @@ -39,7 +39,7 @@ import org.apache.vysper.xmpp.delivery.failure.DeliveryFailureStrategy; import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.protocol.NamespaceURIs; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.resources.ManagedThreadPool; import org.apache.vysper.xmpp.server.resources.ManagedThreadPoolUtil; import org.apache.vysper.xmpp.server.s2s.XMPPServerConnector; @@ -137,7 +137,7 @@ public class DeliveringExternalInboundStanzaRelay implements StanzaRelay, Manage lastCompleted = completedTaskCount; } - public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) + public void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { if (!isRelaying()) { diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java b/server/core/src/main/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringInternalInboundStanzaRelay.java index 5b20df1..7b53abc 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 @@ -26,7 +26,6 @@ import java.io.Writer; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; @@ -53,8 +52,8 @@ 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.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.components.ComponentRegistry; import org.apache.vysper.xmpp.server.resources.ManagedThreadPool; import org.apache.vysper.xmpp.server.resources.ManagedThreadPoolUtil; @@ -194,14 +193,13 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage lastCompleted = completedTaskCount; } - public void relay(SessionContext sessionContext, Entity receiver, Stanza stanza, + public void relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) throws DeliveryException { if (!isRelaying()) { throw new ServiceNotAvailableException("internal inbound relay is not relaying"); } - executor - .submit(new Relay(sessionContext, receiver, stanza, deliveryFailureStrategy)); + executor.submit(new Relay(sessionContext, receiver, stanza, deliveryFailureStrategy)); if (this.logStorageProvider != null) { this.logStorageProvider.logStanza(receiver, stanza); } @@ -216,7 +214,7 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage } private class Relay implements Callable<RelayResult> { - private final SessionContext sessionContext; + private final StanzaReceivingSessionContext sessionContext; private final Entity receiver; @@ -226,7 +224,7 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage protected final UnmodifyableSessionStateHolder sessionStateHolder = new UnmodifyableSessionStateHolder(); - Relay(SessionContext sessionContext, Entity receiver, Stanza stanza, + Relay(StanzaReceivingSessionContext sessionContext, Entity receiver, Stanza stanza, DeliveryFailureStrategy deliveryFailureStrategy) { this.sessionContext = sessionContext; this.receiver = receiver; @@ -393,7 +391,8 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage } protected RelayResult relayToBestSessions(final boolean fallbackToBareJIDAllowed) { - List<SessionContext> receivingSessions = resourceRegistry.getHighestPrioSessions(receiver, PRIO_THRESHOLD); + List<StanzaReceivingSessionContext> receivingSessions = resourceRegistry.getHighestPrioSessions(receiver, + PRIO_THRESHOLD); if (receivingSessions.size() == 0 && receiver.isResourceSet() && fallbackToBareJIDAllowed) { // no concrete session for this resource has been found @@ -406,7 +405,7 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage } RelayResult relayResult = new RelayResult(); - for (SessionContext receivingSession : receivingSessions) { + for (StanzaReceivingSessionContext receivingSession : receivingSessions) { if (receivingSession.getState() != SessionState.AUTHENTICATED) { relayResult.addProcessingError(new DeliveryException("no relay to non-authenticated sessions")); continue; @@ -430,7 +429,8 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage protected RelayResult relayToAllSessions(Integer prioThreshold) { - List<SessionContext> receivingSessions = prioThreshold == null ? resourceRegistry.getSessions(receiver) + List<StanzaReceivingSessionContext> receivingSessions = prioThreshold == null + ? resourceRegistry.getSessions(receiver) : resourceRegistry.getSessions(receiver, prioThreshold); if (receivingSessions.size() == 0) { @@ -443,7 +443,7 @@ public class DeliveringInternalInboundStanzaRelay implements StanzaRelay, Manage RelayResult relayResult = new RelayResult(); - for (SessionContext sessionContext : receivingSessions) { + for (StanzaReceivingSessionContext sessionContext : receivingSessions) { if (sessionContext.getState() != SessionState.AUTHENTICATED) { relayResult.addProcessingError(new DeliveryException("no relay to non-authenticated sessions")); continue; diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java index a10e185..51a7e60 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java @@ -35,8 +35,8 @@ import org.apache.vysper.xmpp.protocol.worker.InitiatedProtocolWorker; import org.apache.vysper.xmpp.protocol.worker.StartedProtocolWorker; import org.apache.vysper.xmpp.protocol.worker.UnconnectedProtocolWorker; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.response.ServerErrorResponses; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; @@ -85,8 +85,8 @@ public class ProtocolWorker implements StanzaProcessor { * @param stanza * @param sessionStateHolder */ - public void processStanza(ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext, Stanza stanza, - SessionStateHolder sessionStateHolder) { + public void processStanza(ServerRuntimeContext serverRuntimeContext, StanzaReceivingSessionContext sessionContext, Stanza stanza, + SessionStateHolder sessionStateHolder) { if (stanza == null) throw new RuntimeException("cannot process NULL stanzas"); @@ -124,15 +124,15 @@ public class ProtocolWorker implements StanzaProcessor { if(from == null) { Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.UNKNOWN_SENDER, coreStanza, StanzaErrorType.MODIFY, "Missing from attribute", null, null); - ResponseWriter.writeResponse(sessionContext, errorStanza); + sessionContext.getResponseWriter().write(errorStanza); return; } else if(!EntityUtils.isAddressingServer(sessionContext.getInitiatingEntity(), from)) { // make sure the from attribute refers to the correct remote server Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.UNKNOWN_SENDER, coreStanza, StanzaErrorType.MODIFY, "Incorrect from attribute", null, null); - ResponseWriter.writeResponse(sessionContext, errorStanza); - return; + sessionContext.getResponseWriter().write(errorStanza); + return; } Entity to = stanza.getTo(); @@ -140,13 +140,13 @@ public class ProtocolWorker implements StanzaProcessor { // TODO what's the appropriate error? StreamErrorCondition.IMPROPER_ADDRESSING? Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.BAD_REQUEST, coreStanza, StanzaErrorType.MODIFY, "Missing to attribute", null, null); - ResponseWriter.writeResponse(sessionContext, errorStanza); + sessionContext.getResponseWriter().write(errorStanza); return; } else if(!EntityUtils.isAddressingServer(serverRuntimeContext.getServerEntity(), to)) { // TODO what's the appropriate error? StreamErrorCondition.IMPROPER_ADDRESSING? Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.BAD_REQUEST, coreStanza, StanzaErrorType.MODIFY, "Invalid to attribute", null, null); - ResponseWriter.writeResponse(sessionContext, errorStanza); + sessionContext.getResponseWriter().write(errorStanza); return; } @@ -197,12 +197,12 @@ public class ProtocolWorker implements StanzaProcessor { } } - public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) { + public void processTLSEstablished(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder) { processTLSEstablishedInternal(sessionContext, sessionStateHolder, responseWriter); } - static void processTLSEstablishedInternal(SessionContext sessionContext, SessionStateHolder sessionStateHolder, - ResponseWriter responseWriter) { + static void processTLSEstablishedInternal(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, + ResponseWriter responseWriter) { if (sessionContext.getState() != SessionState.ENCRYPTION_STARTED) { responseWriter.handleProtocolError(new TLSException(), sessionContext, null); return; diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java index bc24210..9739189 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/QueuedStanzaProcessor.java @@ -25,7 +25,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -48,28 +48,29 @@ public class QueuedStanzaProcessor implements StanzaProcessor { int maxThreadCount = 20; int threadTimeoutSeconds = 2 * 60 * 1000; this.executor = new ThreadPoolExecutor(coreThreadCount, maxThreadCount, threadTimeoutSeconds, TimeUnit.SECONDS, - new LinkedBlockingQueue<Runnable>()); + new LinkedBlockingQueue<>()); this.stanzaProcessor = stanzaProcessor; } - public void processStanza(ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext, Stanza stanza, - SessionStateHolder sessionStateHolder) { + public void processStanza(ServerRuntimeContext serverRuntimeContext, StanzaReceivingSessionContext sessionContext, + Stanza stanza, SessionStateHolder sessionStateHolder) { executor.submit(new StanzaProcessorUnitOfWork(sessionContext, stanza, sessionStateHolder)); } - public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) { + public void processTLSEstablished(StanzaReceivingSessionContext sessionContext, + SessionStateHolder sessionStateHolder) { ProtocolWorker.processTLSEstablishedInternal(sessionContext, sessionStateHolder, responseWriter); } private class StanzaProcessorUnitOfWork implements Runnable { - private SessionContext sessionContext; + private StanzaReceivingSessionContext sessionContext; private Stanza stanza; private SessionStateHolder sessionStateHolder; - private StanzaProcessorUnitOfWork(SessionContext sessionContext, Stanza stanza, + private StanzaProcessorUnitOfWork(StanzaReceivingSessionContext sessionContext, Stanza stanza, SessionStateHolder sessionStateHolder) { this.sessionContext = sessionContext; this.stanza = stanza; diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java index 14ba14c..d47b230 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ResponseWriter.java @@ -22,6 +22,7 @@ package org.apache.vysper.xmpp.protocol; import org.apache.vysper.xmpp.parser.ParsingErrorCondition; import org.apache.vysper.xmpp.parser.ParsingException; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.XMPPVersion; import org.apache.vysper.xmpp.server.response.ServerErrorResponses; import org.apache.vysper.xmpp.server.response.ServerResponses; @@ -37,7 +38,7 @@ import org.apache.vysper.xmpp.stanza.XMPPCoreStanza; */ public class ResponseWriter { - public static void writeUnsupportedStanzaError(SessionContext sessionContext) { + public static void writeUnsupportedStanzaError(StanzaReceivingSessionContext sessionContext) { Stanza errorStanza = ServerErrorResponses.getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, sessionContext.getXMLLang(), "service unavailable at this session state", null); @@ -47,15 +48,8 @@ public class ResponseWriter { writeErrorAndClose(sessionContext, streamOpener); } - /** - * writes a response in this context - */ - public static void writeResponse(SessionContext sessionContext, Stanza responseStanza) { - sessionContext.getResponseWriter().write(responseStanza); - } - - public static void handleProtocolError(ProtocolException protocolException, SessionContext sessionContext, - Stanza receivedStanza) { + public static void handleProtocolError(ProtocolException protocolException, StanzaReceivingSessionContext sessionContext, + Stanza receivedStanza) { Stanza errorStanza = null; if (protocolException != null) errorStanza = protocolException.getErrorStanza(); @@ -67,19 +61,19 @@ public class ResponseWriter { writeErrorAndClose(sessionContext, errorStanza); } - public void handleUnsupportedStanzaType(SessionContext sessionContext, Stanza receivedStanza) { + public void handleUnsupportedStanzaType(StanzaReceivingSessionContext sessionContext, Stanza receivedStanza) { Stanza errorStanza = ServerErrorResponses.getStreamError(StreamErrorCondition.UNSUPPORTED_STANZA_TYPE, sessionContext.getXMLLang(), "could not process incoming stanza", receivedStanza); writeErrorAndClose(sessionContext, errorStanza); } - public void handleNotAuthorized(SessionContext sessionContext, Stanza receivedStanza) { + public void handleNotAuthorized(StanzaReceivingSessionContext sessionContext, Stanza receivedStanza) { Stanza errorStanza = ServerErrorResponses.getStreamError(StreamErrorCondition.NOT_AUTHORIZED, sessionContext.getXMLLang(), "could not process incoming stanza", receivedStanza); writeErrorAndClose(sessionContext, errorStanza); } - public void handleWrongFromJID(SessionContext sessionContext, Stanza receivedStanza) { + public void handleWrongFromJID(StanzaReceivingSessionContext sessionContext, Stanza receivedStanza) { XMPPCoreStanza receivedCoreStanza = XMPPCoreStanza.getWrapper(receivedStanza); if (receivedCoreStanza == null) { handleNotAuthorized(sessionContext, receivedStanza); @@ -89,20 +83,11 @@ public class ResponseWriter { Stanza errorStanza = ServerErrorResponses.getStanzaError(StanzaErrorCondition.UNKNOWN_SENDER, receivedCoreStanza, StanzaErrorType.MODIFY, "from attribute does not match authorized entity", null, null); - writeResponse(sessionContext, errorStanza); - } - - public void handleParsingException(SessionContext sessionContext, ParsingException e) { - // TODO write the __right__ error response, not bad-format default only - if (e.getErrorCondition() != ParsingErrorCondition.BAD_FORMAT) - throw new RuntimeException("cannot handle this error condition yet"); - Stanza errorStanza = ServerErrorResponses.getStreamError(StreamErrorCondition.BAD_FORMAT, - sessionContext.getXMLLang(), "could not parse incoming stanza", null); - writeErrorAndClose(sessionContext, errorStanza); + sessionContext.getResponseWriter().write(errorStanza); } - public static void writeErrorAndClose(SessionContext sessionContext, Stanza errorStanza) { - writeResponse(sessionContext, errorStanza); + public static void writeErrorAndClose(StanzaReceivingSessionContext sessionContext, Stanza errorStanza) { + sessionContext.getResponseWriter().write(errorStanza); sessionContext.endSession(SessionContext.SessionTerminationCause.STREAM_ERROR); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java index 3398378..6404ba0 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/SimpleStanzaBroker.java @@ -25,7 +25,7 @@ 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.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -35,9 +35,9 @@ public class SimpleStanzaBroker implements StanzaBroker { private final StanzaRelay stanzaRelay; - private final SessionContext sessionContext; + private final StanzaReceivingSessionContext sessionContext; - public SimpleStanzaBroker(StanzaRelay stanzaRelay, SessionContext sessionContext) { + public SimpleStanzaBroker(StanzaRelay stanzaRelay, StanzaReceivingSessionContext sessionContext) { this.stanzaRelay = requireNonNull(stanzaRelay); this.sessionContext = sessionContext; } 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 062d8ae..5de77af 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 @@ -23,7 +23,7 @@ import static java.util.Objects.requireNonNull; import org.apache.vysper.xmpp.delivery.StanzaRelay; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -42,7 +42,7 @@ class SimpleStanzaHandlerExecutor implements StanzaHandlerExecutor { @Override public void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza, - SessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException { + StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException { stanzaHandler.execute(stanza, serverRuntimeContext, isOutboundStanza, sessionContext, sessionStateHolder, new SimpleStanzaBroker(stanzaRelay, sessionContext)); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java index 4a19e64..18094bb 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaHandlerExecutor.java @@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.protocol; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -38,5 +39,6 @@ import org.apache.vysper.xmpp.stanza.Stanza; */ public interface StanzaHandlerExecutor { void execute(Stanza stanza, ServerRuntimeContext serverRuntimeContext, boolean isOutboundStanza, - SessionContext sessionContext, SessionStateHolder sessionStateHolder) throws ProtocolException; + StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder) + throws ProtocolException; } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java index e7b2952..8f910c3 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java @@ -21,6 +21,7 @@ package org.apache.vysper.xmpp.protocol; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -33,8 +34,8 @@ public interface StanzaProcessor { /** * processes a stanza as received from a local session */ - void processStanza(ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext, Stanza stanza, - SessionStateHolder sessionStateHolder); + void processStanza(ServerRuntimeContext serverRuntimeContext, StanzaReceivingSessionContext sessionContext, + Stanza stanza, SessionStateHolder sessionStateHolder); - void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder); + void processTLSEstablished(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java index 4036584..e33f4a2 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StateAwareProtocolWorker.java @@ -19,7 +19,7 @@ */ package org.apache.vysper.xmpp.protocol; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -32,6 +32,6 @@ import org.apache.vysper.xmpp.stanza.Stanza; */ public interface StateAwareProtocolWorker { - public void processStanza(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler); + void processStanza(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java index edcd9a6..5e70fd7 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AbstractStateAwareProtocolWorker.java @@ -29,6 +29,7 @@ import org.apache.vysper.xmpp.protocol.StanzaHandlerExecutorFactory; import org.apache.vysper.xmpp.protocol.StateAwareProtocolWorker; import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -46,8 +47,8 @@ public abstract class AbstractStateAwareProtocolWorker implements StateAwareProt abstract public SessionState getHandledState(); - public void processStanza(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + public void processStanza(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { boolean proceed = checkState(sessionContext, sessionStateHolder, stanza, stanzaHandler); if (!proceed) return; // TODO close stream? @@ -55,13 +56,13 @@ public abstract class AbstractStateAwareProtocolWorker implements StateAwareProt executeHandler(sessionContext, sessionStateHolder, stanza, stanzaHandler); } - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { return 0 == getHandledState().compareTo(sessionContext.getState()); } - private void executeHandler(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + private void executeHandler(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { try { stanzaHandlerExecutorFactory.build(stanzaHandler).execute(stanza, sessionContext.getServerRuntimeContext(), isProcessingOutboundStanzas(), sessionContext, sessionStateHolder); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AuthenticatedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AuthenticatedProtocolWorker.java index 10d37f8..c96496d 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AuthenticatedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/AuthenticatedProtocolWorker.java @@ -24,8 +24,8 @@ import org.apache.vysper.xmpp.protocol.ResponseWriter; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -39,8 +39,8 @@ public class AuthenticatedProtocolWorker extends AbstractStateAwareProtocolWorke } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { if (StreamStartHandler.class.isAssignableFrom(stanzaHandler.unwrapType())) return true; if (stanzaHandler.verify(stanza)) diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java index 96623f9..af62742 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java @@ -29,8 +29,8 @@ import org.apache.vysper.xmpp.protocol.ResponseWriter; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -49,8 +49,8 @@ public class EncryptedProtocolWorker extends AbstractStateAwareProtocolWorker { } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { Class<?> handlerUnwrappedType = stanzaHandler.unwrapType(); if (StreamStartHandler.class.isAssignableFrom(handlerUnwrappedType)) { diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptionStartedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptionStartedProtocolWorker.java index 20e84de..e99132e 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptionStartedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptionStartedProtocolWorker.java @@ -22,8 +22,8 @@ package org.apache.vysper.xmpp.protocol.worker; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -41,8 +41,8 @@ public class EncryptionStartedProtocolWorker extends AbstractStateAwareProtocolW } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { // StartTLS is currently completely handled on the protocol side. // anyway, there are no stanzas to be parsed between ENCRYPTION_STARTED and // ENCRYPTED. diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EndOrClosedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EndOrClosedProtocolWorker.java index dac84e3..1b58673 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EndOrClosedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EndOrClosedProtocolWorker.java @@ -22,8 +22,8 @@ package org.apache.vysper.xmpp.protocol.worker; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -42,8 +42,8 @@ public class EndOrClosedProtocolWorker extends AbstractStateAwareProtocolWorker } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { throw new RuntimeException("session was terminated"); } } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InitiatedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InitiatedProtocolWorker.java index cf0d9bd..d4ba8d9 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InitiatedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/InitiatedProtocolWorker.java @@ -25,8 +25,8 @@ import org.apache.vysper.xmpp.protocol.ResponseWriter; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -45,8 +45,8 @@ public class InitiatedProtocolWorker extends AbstractStateAwareProtocolWorker { } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { Class<?> handlerUnwrappedType = stanzaHandler.unwrapType(); if (XMLPrologHandler.class.isAssignableFrom(handlerUnwrappedType)) return true; diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java index 9887669..4bf4293 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java @@ -27,8 +27,8 @@ import org.apache.vysper.xmpp.protocol.ResponseWriter; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -47,8 +47,8 @@ public class StartedProtocolWorker extends AbstractStateAwareProtocolWorker { } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, + Stanza stanza, StanzaHandler stanzaHandler) { Class<?> handlerUnwrappedType = stanzaHandler.unwrapType(); if (StartTLSHandler.class.isAssignableFrom(handlerUnwrappedType)) { diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/UnconnectedProtocolWorker.java b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/UnconnectedProtocolWorker.java index e5e5f4e..1295851 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/UnconnectedProtocolWorker.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/UnconnectedProtocolWorker.java @@ -22,8 +22,8 @@ package org.apache.vysper.xmpp.protocol.worker; 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.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; /** @@ -42,8 +42,8 @@ public class UnconnectedProtocolWorker extends AbstractStateAwareProtocolWorker } @Override - protected boolean checkState(SessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, - StanzaHandler stanzaHandler) { + protected boolean checkState(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder, Stanza stanza, + StanzaHandler stanzaHandler) { // TODO return true; } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java index 848624e..3dc4ddf 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java @@ -38,7 +38,7 @@ import org.apache.vysper.xmpp.writer.StanzaWriter; * * @author The Apache MINA Project (d...@mina.apache.org) */ -public abstract class AbstractSessionContext implements SessionContext { +public abstract class AbstractSessionContext implements StanzaReceivingSessionContext { protected final ServerRuntimeContext serverRuntimeContext; diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java index f6d4b48..f0d14f9 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java @@ -130,8 +130,6 @@ public interface SessionContext { */ void setXMLLang(String languageCode); - StanzaWriter getResponseWriter(); - /** * Ends this session and the underlying TCP connection. * diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/StanzaReceivingSessionContext.java similarity index 54% copy from server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java copy to server/core/src/main/java/org/apache/vysper/xmpp/server/StanzaReceivingSessionContext.java index e7b2952..5901765 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/protocol/StanzaProcessor.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/StanzaReceivingSessionContext.java @@ -6,35 +6,26 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. - * + * */ -package org.apache.vysper.xmpp.protocol; +package org.apache.vysper.xmpp.server; -import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; -import org.apache.vysper.xmpp.stanza.Stanza; +import org.apache.vysper.xmpp.writer.StanzaWriter; /** - * processes stanzas emmitted from local sessions - * - * @author The Apache MINA Project (d...@mina.apache.org) + * @author Réda Housni Alaoui */ -public interface StanzaProcessor { +public interface StanzaReceivingSessionContext extends SessionContext { - /** - * processes a stanza as received from a local session - */ - void processStanza(ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext, Stanza stanza, - SessionStateHolder sessionStateHolder); + StanzaWriter getResponseWriter(); - void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder); } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java index 7ed26f9..8176620 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/server/components/ComponentStanzaProcessor.java @@ -28,7 +28,7 @@ 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.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.XMPPCoreStanza; @@ -52,8 +52,8 @@ public class ComponentStanzaProcessor implements StanzaProcessor { componentStanzaHandlerLookup.addDictionary(namespaceHandlerDictionary); } - public void processStanza(ServerRuntimeContext serverRuntimeContext, SessionContext sessionContext, Stanza stanza, - SessionStateHolder sessionStateHolder) { + public void processStanza(ServerRuntimeContext serverRuntimeContext, StanzaReceivingSessionContext sessionContext, Stanza stanza, + SessionStateHolder sessionStateHolder) { if (stanza == null) throw new RuntimeException("cannot process NULL stanzas"); @@ -77,7 +77,7 @@ public class ComponentStanzaProcessor implements StanzaProcessor { } - public void processTLSEstablished(SessionContext sessionContext, SessionStateHolder sessionStateHolder) { + public void processTLSEstablished(StanzaReceivingSessionContext sessionContext, SessionStateHolder sessionStateHolder) { throw new RuntimeException("should not be called for components, which only acts as an established session"); } } diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/DefaultResourceRegistry.java b/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/DefaultResourceRegistry.java index 00b0955..494aa7c 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/DefaultResourceRegistry.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/DefaultResourceRegistry.java @@ -31,6 +31,7 @@ import java.util.Map; import org.apache.vysper.xmpp.addressing.Entity; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.uuid.JVMBuiltinUUIDGenerator; import org.apache.vysper.xmpp.uuid.UUIDGenerator; import org.slf4j.Logger; @@ -47,13 +48,13 @@ public class DefaultResourceRegistry implements ResourceRegistry { private static class SessionData { - private final SessionContext context; + private final StanzaReceivingSessionContext context; private ResourceState state; private Integer priority; - SessionData(SessionContext context, ResourceState status, Integer priority) { + SessionData(StanzaReceivingSessionContext context, ResourceState status, Integer priority) { this.context = context; this.state = status; this.priority = priority == null ? 0 : priority; @@ -87,7 +88,7 @@ public class DefaultResourceRegistry implements ResourceRegistry { * @param sessionContext * @return newly allocated resource id */ - public String bindSession(SessionContext sessionContext) { + public String bindSession(StanzaReceivingSessionContext sessionContext) { if (sessionContext == null) { throw new IllegalArgumentException("session context cannot be NULL"); } @@ -225,7 +226,7 @@ public class DefaultResourceRegistry implements ResourceRegistry { return resourceList; } - public SessionContext getSessionContext(String resourceId) { + public StanzaReceivingSessionContext getSessionContext(String resourceId) { SessionData data = boundResources.get(resourceId); if (data == null) return null; @@ -277,8 +278,8 @@ public class DefaultResourceRegistry implements ResourceRegistry { * session for the JID's resource part. if it's a bare JID, it will return all session for the JID. * @param entity */ - public List<SessionContext> getSessions(Entity entity) { - List<SessionContext> sessionContexts = new ArrayList<SessionContext>(); + public List<StanzaReceivingSessionContext> getSessions(Entity entity) { + List<StanzaReceivingSessionContext> sessionContexts = new ArrayList<>(); List<String> boundResources = getBoundResources(entity, false); for (String resourceId : boundResources) { @@ -296,10 +297,10 @@ public class DefaultResourceRegistry implements ResourceRegistry { * for the threshold is 0 (zero), which is also the default when param is NULL. * @return returns the sessions matching the given JID (bare) with same or higher priority */ - public List<SessionContext> getSessions(Entity entity, Integer prioThreshold) { + public List<StanzaReceivingSessionContext> getSessions(Entity entity, Integer prioThreshold) { if (prioThreshold == null) prioThreshold = 0; - List<SessionContext> results = new ArrayList<SessionContext>(); + List<StanzaReceivingSessionContext> results = new ArrayList<>(); List<String> boundResourceIds = getBoundResources(entity, true); for (String resourceId : boundResourceIds) { @@ -333,9 +334,9 @@ public class DefaultResourceRegistry implements ResourceRegistry { * @return for a bare JID, it will return the highest prioritized sessions. for a full JID, it will return the * related session. */ - public List<SessionContext> getHighestPrioSessions(Entity entity, Integer prioThreshold) { + public List<StanzaReceivingSessionContext> getHighestPrioSessions(Entity entity, Integer prioThreshold) { Integer currentPrio = prioThreshold == null ? Integer.MIN_VALUE : prioThreshold; - List<SessionContext> results = new ArrayList<SessionContext>(); + List<StanzaReceivingSessionContext> results = new ArrayList<>(); boolean isResourceSet = entity.isResourceSet(); diff --git a/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistry.java b/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistry.java index 05f0a28..27f3e93 100644 --- a/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistry.java +++ b/server/core/src/main/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistry.java @@ -2,13 +2,14 @@ package org.apache.vysper.xmpp.state.resourcebinding; import org.apache.vysper.xmpp.addressing.Entity; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import java.util.List; /** */ public interface ResourceRegistry { - SessionContext getSessionContext(String resourceId); + StanzaReceivingSessionContext getSessionContext(String resourceId); boolean setResourceState(String resourceId, ResourceState state); @@ -20,17 +21,17 @@ public interface ResourceRegistry { String getUniqueResourceForSession(SessionContext sessionContext); - List<SessionContext> getSessions(Entity entity); + List<StanzaReceivingSessionContext> getSessions(Entity entity); - List<SessionContext> getSessions(Entity entity, Integer prioThreshold); + List<StanzaReceivingSessionContext> getSessions(Entity entity, Integer prioThreshold); - List<SessionContext> getHighestPrioSessions(Entity entity, Integer prioThreshold); + List<StanzaReceivingSessionContext> getHighestPrioSessions(Entity entity, Integer prioThreshold); void setResourcePriority(String resourceId, int priority); List<String> getAvailableResources(Entity entity); - String bindSession(SessionContext sessionContext); + String bindSession(StanzaReceivingSessionContext sessionContext); boolean unbindResource(String resourceId); diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java index 1e12e11..ce9b904 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/StanzaRelayBrokerTestCase.java @@ -29,6 +29,7 @@ import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.server.ServerFeatures; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.junit.Before; @@ -53,7 +54,7 @@ public class StanzaRelayBrokerTestCase extends Mockito { private StanzaRelay internalRelay = mock(StanzaRelay.class); private StanzaRelay externalRelay = mock(StanzaRelay.class); - private SessionContext sessionContext = mock(SessionContext.class); + private StanzaReceivingSessionContext sessionContext = mock(StanzaReceivingSessionContext.class); private ServerRuntimeContext serverRuntimeContext = mock(ServerRuntimeContext.class); private ServerFeatures serverFeatures = mock(ServerFeatures.class); diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java index c304823..8a49ad0 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/delivery/inbound/DeliveringExternalInboundStanzaRelayTestCase.java @@ -31,6 +31,7 @@ import org.apache.vysper.xmpp.delivery.failure.ServiceNotAvailableException; import org.apache.vysper.xmpp.protocol.NamespaceURIs; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.s2s.XMPPServerConnector; import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry; import org.apache.vysper.xmpp.stanza.Stanza; @@ -61,7 +62,7 @@ public class DeliveringExternalInboundStanzaRelayTestCase extends TestCase { private static final Stanza STANZA = XMPPCoreStanza.getWrapper(StanzaBuilder.createMessageStanza(FROM, TO, LANG, BODY).build()); - private SessionContext sessionContext = mock(SessionContext.class); + private StanzaReceivingSessionContext sessionContext = mock(StanzaReceivingSessionContext.class); public void testRemoteServerError() throws Exception { XMPPServerConnectorRegistry registry = mock(XMPPServerConnectorRegistry.class); 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 4d44192..b70fc76 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 @@ -38,6 +38,7 @@ import org.apache.vysper.xmpp.protocol.SimpleStanzaHandlerExecutorFactory; import org.apache.vysper.xmpp.server.DefaultServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; import org.apache.vysper.xmpp.server.SessionState; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.TestSessionContext; import org.apache.vysper.xmpp.server.components.SimpleComponentRegistry; import org.apache.vysper.xmpp.stanza.Stanza; @@ -63,7 +64,7 @@ public class DeliveringInteralInboundStanzaRelayTestCase extends TestCase { protected DeliveringInternalInboundStanzaRelay stanzaRelay; - private SessionContext sessionContext = mock(SessionContext.class); + private StanzaReceivingSessionContext sessionContext = mock(StanzaReceivingSessionContext.class); static class AccountVerificationMock implements AccountManagement { public void addUser(Entity username, String password) throws AccountCreationException { diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandlerTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandlerTestCase.java index 39ff493..ce48988 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandlerTestCase.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/modules/servicediscovery/handler/DiscoInfoIQHandlerTestCase.java @@ -19,6 +19,8 @@ */ package org.apache.vysper.xmpp.modules.servicediscovery.handler; +import static org.junit.Assert.assertTrue; + import java.util.Arrays; import java.util.List; @@ -36,7 +38,7 @@ import org.apache.vysper.xmpp.modules.servicediscovery.management.ServiceDiscove import org.apache.vysper.xmpp.protocol.NamespaceURIs; import org.apache.vysper.xmpp.protocol.StanzaBroker; import org.apache.vysper.xmpp.server.ServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.IQStanza; import org.apache.vysper.xmpp.stanza.IQStanzaType; import org.apache.vysper.xmpp.stanza.Stanza; @@ -50,8 +52,6 @@ import org.mockito.Mockito; import junit.framework.Assert; -import static org.junit.Assert.assertTrue; - /** */ public class DiscoInfoIQHandlerTestCase extends Mockito { @@ -68,7 +68,7 @@ public class DiscoInfoIQHandlerTestCase extends Mockito { private ServerRuntimeContext serverRuntimeContext = mock(ServerRuntimeContext.class); - private SessionContext sessionContext = mock(SessionContext.class); + private StanzaReceivingSessionContext sessionContext = mock(StanzaReceivingSessionContext.class); private ServiceCollector serviceCollector = mock(ServiceCollector.class); @@ -316,7 +316,7 @@ public class DiscoInfoIQHandlerTestCase extends Mockito { List<Stanza> responses = handler.handleResult(stanza, serverRuntimeContext, sessionContext, stanzaBroker); assertTrue(responses.isEmpty()); - + verify(stanzaBroker).write(eq(USER), eq(stanza), any(DeliveryFailureStrategy.class)); } @@ -329,7 +329,7 @@ public class DiscoInfoIQHandlerTestCase extends Mockito { List<Stanza> responses = handler.handleResult(stanza, serverRuntimeContext, sessionContext, stanzaBroker); assertTrue(responses.isEmpty()); - + verify(stanzaBroker).writeToSession(stanza); } 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 494291d..472fd9d 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 @@ -41,7 +41,7 @@ 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.server.DefaultServerRuntimeContext; -import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.TestSessionContext; import org.apache.vysper.xmpp.stanza.IQStanza; import org.apache.vysper.xmpp.stanza.IQStanzaType; @@ -87,7 +87,7 @@ public class ExtendedDiscoInfoTestCase extends TestCase { IQStanza finalStanza = (IQStanza) XMPPCoreStanza.getWrapper(request.build()); - SessionContext sessionContext = new TestSessionContext(runtimeContext, new SessionStateHolder(), + StanzaReceivingSessionContext sessionContext = new TestSessionContext(runtimeContext, new SessionStateHolder(), runtimeContext.getStanzaRelay()); List<Stanza> resultStanzas = infoIQHandler.handleGet(finalStanza, runtimeContext, sessionContext, 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 eb35444..00d556c 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 @@ -34,6 +34,7 @@ import org.apache.vysper.xmpp.protocol.SimpleStanzaHandlerExecutorFactory; import org.apache.vysper.xmpp.protocol.StanzaHandler; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.apache.vysper.xmpp.writer.StanzaWriter; @@ -51,7 +52,7 @@ public class ComponentStanzaProcessorTestCase { private ServerRuntimeContext serverRuntimeContext = mock(ServerRuntimeContext.class); - private SessionContext sessionContext = mock(SessionContext.class); + private StanzaReceivingSessionContext sessionContext = mock(StanzaReceivingSessionContext.class); private SessionStateHolder sessionStateHolder = new SessionStateHolder(); diff --git a/server/core/src/test/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistryTestCase.java b/server/core/src/test/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistryTestCase.java index 1f0ed77..84e85ac 100644 --- a/server/core/src/test/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistryTestCase.java +++ b/server/core/src/test/java/org/apache/vysper/xmpp/state/resourcebinding/ResourceRegistryTestCase.java @@ -26,6 +26,7 @@ import junit.framework.TestCase; import org.apache.vysper.xmpp.addressing.EntityFormatException; import org.apache.vysper.xmpp.addressing.EntityImpl; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.server.TestSessionContext; /** @@ -90,12 +91,12 @@ public class ResourceRegistryTestCase extends TestCase { assertTrue(resourceList.contains(resourceId1)); assertTrue(resourceList.contains(resourceId2)); - List<SessionContext> sessionList = resourceRegistry.getSessions(entity); + List<StanzaReceivingSessionContext> sessionList = resourceRegistry.getSessions(entity); assertEquals(2, resourceList.size()); assertTrue(sessionList.contains(sessionContext1)); assertTrue(sessionList.contains(sessionContext2)); - List<SessionContext> highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null); + List<StanzaReceivingSessionContext> highestPrioSessions = resourceRegistry.getHighestPrioSessions(entity, null); assertEquals(1, highestPrioSessions.size()); SessionContext highestPrioSession = highestPrioSessions.get(0); assertSame(resourceRegistry.getSessionContext(resourceId2), highestPrioSession); @@ -145,7 +146,7 @@ public class ResourceRegistryTestCase extends TestCase { assertTrue(resourceList.contains(resourceId1)); assertTrue(resourceList.contains(resourceId2)); - List<SessionContext> sessionList = resourceRegistry.getSessions(entity); + List<StanzaReceivingSessionContext> sessionList = resourceRegistry.getSessions(entity); assertEquals(2, resourceList.size()); assertTrue(sessionList.contains(sessionContext1)); assertTrue(sessionList.contains(sessionContext2)); diff --git a/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/JettyXmppWebSocketTest.java b/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/JettyXmppWebSocketTest.java index 868456c..d2f1d94 100644 --- a/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/JettyXmppWebSocketTest.java +++ b/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/JettyXmppWebSocketTest.java @@ -25,6 +25,7 @@ import org.apache.vysper.xmpp.protocol.SessionStateHolder; import org.apache.vysper.xmpp.protocol.StanzaProcessor; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.eclipse.jetty.websocket.WebSocket.Connection; @@ -50,7 +51,7 @@ public class JettyXmppWebSocketTest { Stanza expected = new StanzaBuilder("test").build(); Mockito.verify(stanzaProcessor).processStanza(Mockito.eq(serverRuntimeContext), - Mockito.any(SessionContext.class), Mockito.eq(expected), Mockito.any(SessionStateHolder.class)); + Mockito.any(StanzaReceivingSessionContext.class), Mockito.eq(expected), Mockito.any(SessionStateHolder.class)); } @Test diff --git a/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/TomcatXmppWebSocketTest.java b/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/TomcatXmppWebSocketTest.java index ac19a8b..9a1c6c9 100644 --- a/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/TomcatXmppWebSocketTest.java +++ b/server/extensions/websockets/src/test/java/org/apache/vysper/xmpp/extension/websockets/TomcatXmppWebSocketTest.java @@ -27,6 +27,7 @@ import org.apache.vysper.xmpp.protocol.SessionStateHolder; import org.apache.vysper.xmpp.protocol.StanzaProcessor; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.junit.Test; @@ -51,7 +52,7 @@ public class TomcatXmppWebSocketTest { Stanza expected = new StanzaBuilder("test").build(); Mockito.verify(stanzaProcessor).processStanza(Mockito.eq(serverRuntimeContext), - Mockito.any(SessionContext.class), Mockito.eq(expected), Mockito.any(SessionStateHolder.class)); + Mockito.any(StanzaReceivingSessionContext.class), Mockito.eq(expected), Mockito.any(SessionStateHolder.class)); } @Test diff --git a/server/extensions/xep0124-xep0206-bosh/src/test/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandlerTest.java b/server/extensions/xep0124-xep0206-bosh/src/test/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandlerTest.java index e01a829..9fd8c4a 100644 --- a/server/extensions/xep0124-xep0206-bosh/src/test/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandlerTest.java +++ b/server/extensions/xep0124-xep0206-bosh/src/test/java/org/apache/vysper/xmpp/extension/xep0124/BoshHandlerTest.java @@ -43,6 +43,7 @@ import org.apache.vysper.xmpp.protocol.StanzaProcessor; import org.apache.vysper.xmpp.server.ServerFeatures; import org.apache.vysper.xmpp.server.ServerRuntimeContext; import org.apache.vysper.xmpp.server.SessionContext; +import org.apache.vysper.xmpp.server.StanzaReceivingSessionContext; import org.apache.vysper.xmpp.stanza.Stanza; import org.apache.vysper.xmpp.stanza.StanzaBuilder; import org.easymock.Capture; @@ -131,11 +132,11 @@ public class BoshHandlerTest { expect(httpServletRequest.startAsync()).andReturn(asyncContext).atLeastOnce(); expect(httpServletRequest.getAsyncContext()).andReturn(asyncContext).anyTimes(); asyncContext.setTimeout(anyLong()); - httpServletRequest.setAttribute(eq(BOSH_REQUEST_ATTRIBUTE), EasyMock.<BoshRequest> capture(br)); - asyncContext.addListener(EasyMock.<AsyncListener> anyObject()); - Capture<Stanza> stanzaCaptured = new Capture<Stanza>(); - stanzaProcessor.processStanza(eq(serverRuntimeContext), EasyMock.<SessionContext> anyObject(), - EasyMock.<Stanza> capture(stanzaCaptured), EasyMock.<SessionStateHolder> anyObject()); + httpServletRequest.setAttribute(eq(BOSH_REQUEST_ATTRIBUTE), EasyMock.capture(br)); + asyncContext.addListener(EasyMock.anyObject()); + Capture<Stanza> stanzaCaptured = new Capture<>(); + stanzaProcessor.processStanza(eq(serverRuntimeContext), EasyMock.anyObject(), + EasyMock.capture(stanzaCaptured), EasyMock.anyObject()); mocksControl.replay(); boshRequest = createSaslRequest(); boshHandler.process(httpServletRequest, boshRequest);