You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2011/01/25 22:01:32 UTC

svn commit: r1063460 - in /mina/vysper/branches/xep0114: examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/ server/admin-console/src/test/java/org/apache/vysper/console/ server/core/src/main/java/org/apache/vysper/mina/ se...

Author: ngn
Date: Tue Jan 25 21:01:31 2011
New Revision: 1063460

URL: http://svn.apache.org/viewvc?rev=1063460&view=rev
Log:
Make endpoints aware of what type of sessions they will be serving and ensure only that type of stanzas are allowed

Added:
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/AbstractTCPEndpoint.java
      - copied, changed from r1062271, mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/C2SEndpoint.java
Removed:
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java
Modified:
    mina/vysper/branches/xep0114/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java
    mina/vysper/branches/xep0114/server/admin-console/src/test/java/org/apache/vysper/console/ServerMain.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/MinaBackedSessionContext.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/S2SEndpoint.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionContext.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionFactory.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
    mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java
    mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/ServerMain.java
    mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/DemoServer.java
    mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java
    mina/vysper/branches/xep0114/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java
    mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/ServerMain.java
    mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java
    mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/demo/pubsub/client/ServerMain.java
    mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java
    mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
    mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java

Modified: mina/vysper/branches/xep0114/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java (original)
+++ mina/vysper/branches/xep0114/examples/embedded-war/src/main/java/org/apache/vysper/xmpp/exemples/embeddedwar/VysperListener.java Tue Jan 25 21:01:31 2011
@@ -3,7 +3,7 @@ package org.apache.vysper.xmpp.exemples.
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -34,7 +34,7 @@ public class VysperListener implements S
             }
     
             server = new XMPPServer(domain);
-            server.addEndpoint(new TCPEndpoint());
+            server.addEndpoint(new C2SEndpoint());
             server.setStorageProviderRegistry(providerRegistry);
     
             server.setTLSCertificateInfo(sce.getServletContext().getResourceAsStream("WEB-INF/bogus_mina_tls.cert"), "boguspw");

Modified: mina/vysper/branches/xep0114/server/admin-console/src/test/java/org/apache/vysper/console/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/admin-console/src/test/java/org/apache/vysper/console/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/admin-console/src/test/java/org/apache/vysper/console/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/admin-console/src/test/java/org/apache/vysper/console/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -20,15 +20,13 @@
 package org.apache.vysper.console;
 
 import java.io.File;
-import java.io.FileNotFoundException;
 import java.util.Arrays;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
-import org.apache.vysper.xmpp.authorization.AccountCreationException;
 import org.apache.vysper.xmpp.authorization.AccountManagement;
 import org.apache.vysper.xmpp.modules.extension.xep0049_privatedata.PrivateDataModule;
 import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsModule;
@@ -68,7 +66,7 @@ public class ServerMain {
         }
 
         XMPPServer server = new XMPPServer(domain);
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         //server.addEndpoint(new StanzaSessionFactory());
         server.setStorageProviderRegistry(providerRegistry);
 

Copied: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/AbstractTCPEndpoint.java (from r1062271, mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java)
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/AbstractTCPEndpoint.java?p2=mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/AbstractTCPEndpoint.java&p1=mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java&r1=1062271&r2=1063460&rev=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/TCPEndpoint.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/AbstractTCPEndpoint.java Tue Jan 25 21:01:31 2011
@@ -29,21 +29,30 @@ import org.apache.mina.transport.socket.
 import org.apache.vysper.mina.codec.XMPPProtocolCodecFactory;
 import org.apache.vysper.xmpp.server.Endpoint;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 
 /**
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class TCPEndpoint implements Endpoint {
+public abstract class AbstractTCPEndpoint implements Endpoint {
 
     private ServerRuntimeContext serverRuntimeContext;
 
-    private int port = 5222;
+    private int port;
+    
+    private SessionMode endpointType;
 
     private SocketAcceptor acceptor;
 
     private DefaultIoFilterChainBuilder filterChainBuilder;
 
+    
+    public AbstractTCPEndpoint(int defaultPort, SessionMode endpointType) {
+        this.port = defaultPort;
+        this.endpointType = endpointType;
+    }
+
     public DefaultIoFilterChainBuilder getFilterChainBuilder() {
         return filterChainBuilder;
     }
@@ -65,7 +74,7 @@ public class TCPEndpoint implements Endp
         filterChainBuilder.addLast("loggingFilter", new StanzaLoggingFilter());
         acceptor.setFilterChainBuilder(filterChainBuilder);
 
-        XmppIoHandlerAdapter adapter = new XmppIoHandlerAdapter();
+        XmppIoHandlerAdapter adapter = new XmppIoHandlerAdapter(endpointType);
         adapter.setServerRuntimeContext(serverRuntimeContext);
         acceptor.setHandler(adapter);
 

Added: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/C2SEndpoint.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/C2SEndpoint.java?rev=1063460&view=auto
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/C2SEndpoint.java (added)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/C2SEndpoint.java Tue Jan 25 21:01:31 2011
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  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.mina;
+
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
+
+
+/**
+ * Endpoint used for server-to-servr (s2s) connections
+ *
+ * @author The Apache MINA Project (dev@mina.apache.org)
+ */
+public class C2SEndpoint extends AbstractTCPEndpoint {
+
+    public C2SEndpoint() {
+        super(5222, SessionMode.CLIENT_2_SERVER);
+    }
+    
+}

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/MinaBackedSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/MinaBackedSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/MinaBackedSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/MinaBackedSessionContext.java Tue Jan 25 21:01:31 2011
@@ -55,8 +55,8 @@ public class MinaBackedSessionContext ex
     protected CloseFuture closeFuture;
 
     public MinaBackedSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder,
-            IoSession minaSession) {
-        super(serverRuntimeContext, sessionStateHolder);
+            IoSession minaSession, SessionMode sessionMode) {
+        super(serverRuntimeContext, sessionStateHolder, sessionMode);
         this.minaSession = minaSession;
         closeFuture = minaSession.getCloseFuture();
         closeFuture.addListener(this);

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/S2SEndpoint.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/S2SEndpoint.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/S2SEndpoint.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/S2SEndpoint.java Tue Jan 25 21:01:31 2011
@@ -19,16 +19,17 @@
  */
 package org.apache.vysper.mina;
 
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
+
 
 /**
  * Endpoint used for server-to-servr (s2s) connections
  *
  * @author The Apache MINA Project (dev@mina.apache.org)
  */
-public class S2SEndpoint extends TCPEndpoint {
+public class S2SEndpoint extends AbstractTCPEndpoint {
 
     public S2SEndpoint() {
-        setPort(5269);
+        super(5269, SessionMode.SERVER_2_SERVER);
     }
-    
 }

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/mina/XmppIoHandlerAdapter.java Tue Jan 25 21:01:31 2011
@@ -29,6 +29,7 @@ import org.apache.vysper.xmpp.protocol.S
 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.SessionMode;
 import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.slf4j.Logger;
@@ -47,8 +48,14 @@ public class XmppIoHandlerAdapter implem
 
     final Logger logger = LoggerFactory.getLogger(XmppIoHandlerAdapter.class);
 
+    private SessionMode endpointType;
+    
     private ServerRuntimeContext serverRuntimeContext;
 
+    public XmppIoHandlerAdapter(SessionMode endpointType) {
+        this.endpointType = endpointType;
+    }
+
     public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
         this.serverRuntimeContext = serverRuntimeContext;
     }
@@ -101,7 +108,8 @@ public class XmppIoHandlerAdapter implem
 
     public void sessionCreated(IoSession ioSession) throws Exception {
         SessionStateHolder stateHolder = new SessionStateHolder();
-        SessionContext sessionContext = new MinaBackedSessionContext(serverRuntimeContext, stateHolder, ioSession);
+        SessionContext sessionContext = new MinaBackedSessionContext(serverRuntimeContext, stateHolder, ioSession, endpointType);
+        
         ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSION, sessionContext);
         ioSession.setAttribute(ATTRIBUTE_VYSPER_SESSIONSTATEHOLDER, stateHolder);
     }

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionContext.java Tue Jan 25 21:01:31 2011
@@ -39,8 +39,8 @@ public class StanzaSessionContext extend
 
     protected Queue<Stanza> stanzaQueue = new LinkedList<Stanza>();
 
-    public StanzaSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
-        super(serverRuntimeContext, sessionStateHolder);
+    public StanzaSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder, SessionMode sessionMode) {
+        super(serverRuntimeContext, sessionStateHolder, sessionMode);
     }
 
     public StanzaWriter getResponseWriter() {

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionFactory.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionFactory.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionFactory.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/stanzasession/StanzaSessionFactory.java Tue Jan 25 21:01:31 2011
@@ -23,6 +23,7 @@ import org.apache.vysper.xmpp.protocol.S
 import org.apache.vysper.xmpp.server.Endpoint;
 import org.apache.vysper.xmpp.server.ServerRuntimeContext;
 import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 
 /**
  *
@@ -38,7 +39,7 @@ public class StanzaSessionFactory implem
     public StanzaSession createNewSession() {
         SessionStateHolder stateHolder = new SessionStateHolder();
         stateHolder.setState(SessionState.INITIATED);
-        StanzaSessionContext sessionContext = new StanzaSessionContext(serverRuntimeContext, stateHolder);
+        StanzaSessionContext sessionContext = new StanzaSessionContext(serverRuntimeContext, stateHolder, SessionMode.CLIENT_2_SERVER);
         StanzaSession session = new StanzaSession(sessionContext);
         return session;
     }

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/StreamStartHandler.java Tue Jan 25 21:01:31 2011
@@ -34,6 +34,7 @@ import org.apache.vysper.xmpp.server.Ser
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.server.XMPPVersion;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
 import org.apache.vysper.xmpp.server.response.ServerResponses;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -68,17 +69,6 @@ public class StreamStartHandler implemen
         XMLElementVerifier xmlElementVerifier = stanza.getVerifier();
         boolean jabberNamespace = NamespaceURIs.HTTP_ETHERX_JABBER_ORG_STREAMS.equals(stanza.getNamespaceURI());
 
-        boolean clientCall = xmlElementVerifier.namespacePresent(NamespaceURIs.JABBER_CLIENT);
-        boolean serverCall = xmlElementVerifier.namespacePresent(NamespaceURIs.JABBER_SERVER);
-
-        // TODO is it better to derive c2s or s2s from the type of endpoint and verify the namespace here?
-        if (clientCall && serverCall)
-            serverCall = false; // silently ignore ambiguous attributes
-        if (serverCall)
-            sessionContext.setServerToServer();
-        else
-            sessionContext.setClientToServer();
-
         if (sessionStateHolder.getState() != SessionState.INITIATED
                 && sessionStateHolder.getState() != SessionState.ENCRYPTED
                 && sessionStateHolder.getState() != SessionState.AUTHENTICATED) {
@@ -127,7 +117,7 @@ public class StreamStartHandler implemen
         }
 
         Stanza responseStanza = null;
-        if (clientCall) {
+        if (sessionContext.isSessionMode(SessionMode.CLIENT_2_SERVER)) {
             // RFC3920: 'to' attribute SHOULD be used by the initiating entity
             String toValue = stanza.getAttributeValue("to");
             if (toValue != null) {
@@ -147,7 +137,7 @@ public class StreamStartHandler implemen
             }
             responseStanza = new ServerResponses().getStreamOpenerForClient(sessionContext.getServerJID(),
                     responseVersion, sessionContext);
-        } else if (serverCall) {
+        } else if (sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER)) {
             // RFC3920: 'from' attribute SHOULD be used by the receiving entity
             String fromValue = stanza.getAttributeValue("from");
             if (fromValue != null) {

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/modules/core/base/handler/XMPPCoreStanzaHandler.java Tue Jan 25 21:01:31 2011
@@ -29,6 +29,7 @@ import org.apache.vysper.xmpp.protocol.S
 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.SessionMode;
 import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
 import org.apache.vysper.xmpp.stanza.IQStanzaType;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -100,7 +101,7 @@ public abstract class XMPPCoreStanzaHand
         }
 
         Entity to = stanza.getTo();
-        if (sessionContext != null && sessionContext.isServerToServer() && to == null) {
+        if (sessionContext != null && sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER) && to == null) {
             // "to" MUST be present for jabber:server
             return new ResponseStanzaContainerImpl(ServerErrorResponses.getStreamError(
                     StreamErrorCondition.IMPROPER_ADDRESSING, stanza.getXMLLang(), "missing to attribute", null));

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/NamespaceURIs.java Tue Jan 25 21:01:31 2011
@@ -44,6 +44,8 @@ public class NamespaceURIs {
 
     public static final String JABBER_CLIENT = "jabber:client";
 
+    public static final String JABBER_COMPONENT_ACCEPT = "jabber:component:accep";
+
     public static final String JABBER_SERVER = "jabber:server";
 
     public static final String JABBER_SERVER_DIALBACK = "jabber:server:dialback";

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/ProtocolWorker.java Tue Jan 25 21:01:31 2011
@@ -35,6 +35,7 @@ import org.apache.vysper.xmpp.protocol.w
 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.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -94,6 +95,7 @@ public class ProtocolWorker implements S
             responseWriter.handleUnsupportedStanzaType(sessionContext, stanza);
             return;
         }
+        
         if (sessionContext == null && stanzaHandler.isSessionRequired()) {
             throw new IllegalStateException("handler requires session context");
         }
@@ -103,10 +105,20 @@ public class ProtocolWorker implements S
             throw new IllegalStateException("no protocol worker for state " + sessionContext.getState().toString());
         }
 
+        XMPPCoreStanza coreStanza = XMPPCoreStanza.getWrapper(stanza);
+        if(coreStanza != null) {
+            // is a core stanza, must match session mode (e.g. only messages in 
+            // jabber:client namespace sent in C2S session)
+            if(!coreStanza.isValidForMode(sessionContext.getSessionMode())) {
+                responseWriter.handleUnsupportedStanzaType(sessionContext, stanza);
+                return;
+            }
+        }
+        
         // check as of RFC3920/4.3:
         if (sessionStateHolder.getState() != SessionState.AUTHENTICATED) {
             // is not authenticated...
-            if (XMPPCoreStanza.getWrapper(stanza) != null
+            if (coreStanza != null
                     && !(stanzaHandler instanceof InBandRegistrationHandler)) {
                 // ... and is a IQ/PRESENCE/MESSAGE stanza!
                 responseWriter.handleNotAuthorized(sessionContext, stanza);
@@ -115,9 +127,7 @@ public class ProtocolWorker implements S
         }
 
         Entity from = stanza.getFrom();
-        if(sessionContext.isServerToServer()) {
-            XMPPCoreStanza coreStanza = XMPPCoreStanza.getWrapper(stanza);
-            
+        if(sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER)) {
             if(coreStanza != null) {
                 // stanza must come from the origin server
                 if(from == null) {

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/EncryptedProtocolWorker.java Tue Jan 25 21:01:31 2011
@@ -30,6 +30,7 @@ import org.apache.vysper.xmpp.protocol.S
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -55,9 +56,9 @@ public class EncryptedProtocolWorker ext
             return true; // PSI client sends that. 
         } else if (stanzaHandler instanceof InBandRegistrationHandler) {
             return true;
-        } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbResultHandler) {
+        } else if (sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER) && stanzaHandler instanceof DbResultHandler) {
             return true;
-        } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbVerifyHandler) {
+        } else if (sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER) && stanzaHandler instanceof DbVerifyHandler) {
             return true;
         }
         ResponseWriter.writeUnsupportedStanzaError(sessionContext);

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/protocol/worker/StartedProtocolWorker.java Tue Jan 25 21:01:31 2011
@@ -28,6 +28,7 @@ import org.apache.vysper.xmpp.protocol.S
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.SessionState;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.stanza.Stanza;
 
 /**
@@ -49,9 +50,9 @@ public class StartedProtocolWorker exten
             return true;
         } else if (stanzaHandler instanceof InBandRegistrationHandler) {
             return true;
-        } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbVerifyHandler) {
+        } else if (sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER) && stanzaHandler instanceof DbVerifyHandler) {
             return true;
-        } else if (sessionContext.isServerToServer() && stanzaHandler instanceof DbResultHandler) {
+        } else if (sessionContext.isSessionMode(SessionMode.SERVER_2_SERVER) && stanzaHandler instanceof DbResultHandler) {
             return true;
         }
         ResponseWriter.writeUnsupportedStanzaError(sessionContext);

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/AbstractSessionContext.java Tue Jan 25 21:01:31 2011
@@ -60,16 +60,17 @@ public abstract class AbstractSessionCon
 
     private Entity initiatingEntity;
 
-    private boolean serverToServer = false;
+    private SessionMode sessionMode = SessionMode.CLIENT_2_SERVER;
 
     private Map<String, Object> attributeMap = new HashMap<String, Object>();
 
-    public AbstractSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
+    public AbstractSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder, SessionMode sessionMode) {
         this.serverRuntimeContext = serverRuntimeContext;
         sessionId = serverRuntimeContext.getNextSessionId();
         serverEntity = serverRuntimeContext.getServerEnitity();
         xmlLang = serverRuntimeContext.getDefaultXMLLang();
         this.sessionStateHolder = sessionStateHolder;
+        this.sessionMode = sessionMode;
     }
 
     @Override
@@ -97,16 +98,12 @@ public abstract class AbstractSessionCon
         this.initiatingEntity = entity;
     }
 
-    public boolean isServerToServer() {
-        return serverToServer;
+    public boolean isSessionMode(SessionMode mode) {
+        return mode.equals(sessionMode);
     }
 
-    public void setServerToServer() {
-        serverToServer = true;
-    }
-
-    public void setClientToServer() {
-        serverToServer = false;
+    public SessionMode getSessionMode() {
+        return sessionMode;
     }
 
     public SessionState getState() {

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -25,7 +25,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -83,7 +83,7 @@ public class ServerMain {
         }
 
         XMPPServer server = new XMPPServer(domain);
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         //server.addEndpoint(new StanzaSessionFactory());
         server.setStorageProviderRegistry(providerRegistry);
 

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/SessionContext.java Tue Jan 25 21:01:31 2011
@@ -60,6 +60,12 @@ public interface SessionContext {
 
     }
 
+    public enum SessionMode {
+        CLIENT_2_SERVER,
+        SERVER_2_SERVER,
+        COMPONENT_ACCEPT
+    }
+
     /**
      * Gets the {@link ServerRuntimeContext}.
      *
@@ -89,21 +95,16 @@ public interface SessionContext {
     void setInitiatingEntity(Entity entity);
 
     /**
-     * @return <code>true</code> if this session is handling server-to-server
-     *         communication (namespace "jabber:server").
-     */
-    boolean isServerToServer();
-
-    /**
-     * Set this session to handle server-to-server communication.
+     * Get the mode of this session, c2s, s2s or component connections.
      */
-    void setServerToServer();
+    SessionMode getSessionMode();
 
     /**
-     * Set this session to handle client-to-server communication.
+     * Verify the current session mode against a matching type
+     * @return true if the provided {@link SessionMode} matches that of this session 
      */
-    void setClientToServer();
-
+    boolean isSessionMode(SessionMode mode);
+    
     /**
      * @return the state of this session
      */

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/DefaultXMPPServerConnector.java Tue Jan 25 21:01:31 2011
@@ -53,6 +53,7 @@ import org.apache.vysper.xmpp.server.Ser
 import org.apache.vysper.xmpp.server.SessionContext;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.server.XMPPVersion;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.server.response.ServerResponses;
 import org.apache.vysper.xmpp.server.s2s.XmppEndpointResolver.ResolvedAddress;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -337,7 +338,7 @@ public class DefaultXMPPServerConnector 
          */
         @Override
         public void sessionOpened(IoSession session) throws Exception {
-            sessionContext = new MinaBackedSessionContext(serverRuntimeContext, sessionStateHolder, session);
+            sessionContext = new MinaBackedSessionContext(serverRuntimeContext, sessionStateHolder, session, SessionMode.SERVER_2_SERVER);
             sessionStateHolder.setState(SessionState.INITIATED);
             Stanza opener = new ServerResponses().getStreamOpenerForServerConnector(serverRuntimeContext.getServerEnitity(), otherServer, XMPPVersion.VERSION_1_0, sessionContext);
             

Modified: mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/main/java/org/apache/vysper/xmpp/stanza/XMPPCoreStanza.java Tue Jan 25 21:01:31 2011
@@ -22,6 +22,7 @@ package org.apache.vysper.xmpp.stanza;
 
 import org.apache.vysper.xml.fragment.XMLElementVerifier;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 
 /**
  * wraps an all-purpose stanza into a core stanza (iq, message, presence)
@@ -78,8 +79,19 @@ abstract public class XMPPCoreStanza ext
         return "error".equals(getType());
     }
 
-    public boolean isServerCall() {
-        return getNamespaceURI().equals(NamespaceURIs.JABBER_SERVER);
+    public boolean isValidForMode(SessionMode sessionMode) {
+        String expectedNamespace = "";
+        switch(sessionMode) {
+        case CLIENT_2_SERVER:
+            expectedNamespace = NamespaceURIs.JABBER_CLIENT;
+            break;
+        case SERVER_2_SERVER:
+            expectedNamespace = NamespaceURIs.JABBER_SERVER;
+            break;
+        case COMPONENT_ACCEPT:
+            expectedNamespace = NamespaceURIs.JABBER_COMPONENT_ACCEPT;
+            break;
+        }
+        return getNamespaceURI().equals(expectedNamespace);
     }
-
 }

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/IQHandlerTestCase.java Tue Jan 25 21:01:31 2011
@@ -27,6 +27,7 @@ import org.apache.vysper.xmpp.protocol.N
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
 import org.apache.vysper.xmpp.protocol.SessionStateHolder;
 import org.apache.vysper.xmpp.server.TestSessionContext;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.stanza.IQStanza;
 import org.apache.vysper.xmpp.stanza.IQStanzaType;
 import org.apache.vysper.xmpp.stanza.Stanza;
@@ -43,10 +44,11 @@ public class IQHandlerTestCase extends T
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        sessionContext = new TestSessionContext(sessionStateHolder);
+        sessionContext = new TestSessionContext(sessionStateHolder, SessionMode.CLIENT_2_SERVER);
     }
 
     public void testMissingToInServerCall() {
+        sessionContext = new TestSessionContext(sessionStateHolder, SessionMode.SERVER_2_SERVER);
         StanzaBuilder stanzaBuilder = new StanzaBuilder("iq", NamespaceURIs.JABBER_SERVER);
         stanzaBuilder.addAttribute("type", "get");
         // missing stanzaBuilder.addAttribute("to", "test@example.com");
@@ -54,7 +56,6 @@ public class IQHandlerTestCase extends T
         stanzaBuilder.startInnerElement("inner", NamespaceURIs.JABBER_SERVER).endInnerElement();
 
         TestSessionContext sessionContext = this.sessionContext;
-        sessionContext.setServerToServer();
 
         TestIQHandler iqHandler = new TestIQHandler();
         ResponseStanzaContainer responseStanzaContainer = iqHandler.execute(stanzaBuilder.build(), sessionContext

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/base/handler/MessageHandlerRelayTestCase.java Tue Jan 25 21:01:31 2011
@@ -34,6 +34,7 @@ import org.apache.vysper.xmpp.protocol.N
 import org.apache.vysper.xmpp.protocol.ResponseStanzaContainer;
 import org.apache.vysper.xmpp.protocol.SessionStateHolder;
 import org.apache.vysper.xmpp.server.TestSessionContext;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 import org.apache.vysper.xmpp.stanza.XMPPCoreStanza;
@@ -84,8 +85,6 @@ public class MessageHandlerRelayTestCase
         stanzaBuilder.startInnerElement("timestamp", NamespaceURIs.JABBER_SERVER).addAttribute("value", timestamp)
                 .endInnerElement();
 
-        senderSessionContext.setClientToServer();
-
         assertNull(receiverUser.getNextStanza()); // nothing there yet
         assertNull(senderUser.getNextStanza()); // nothing there yet
 

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/modules/core/starttls/handler/StartTLSHandlerTestCase.java Tue Jan 25 21:01:31 2011
@@ -28,6 +28,7 @@ import org.apache.vysper.xmpp.protocol.R
 import org.apache.vysper.xmpp.protocol.SessionStateHolder;
 import org.apache.vysper.xmpp.server.SessionState;
 import org.apache.vysper.xmpp.server.TestSessionContext;
+import org.apache.vysper.xmpp.server.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.stanza.StanzaBuilder;
 
@@ -41,7 +42,7 @@ public class StartTLSHandlerTestCase ext
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        sessionContext = new TestSessionContext(sessionStateHolder);
+        sessionContext = new TestSessionContext(sessionStateHolder, SessionMode.SERVER_2_SERVER);
     }
 
     public void testAppropriateSessionState() {
@@ -49,7 +50,6 @@ public class StartTLSHandlerTestCase ext
         Stanza starttlsStanza = stanzaBuilder.build();
 
         TestSessionContext sessionContext = this.sessionContext;
-        sessionContext.setServerToServer();
 
         sessionContext.setSessionState(SessionState.INITIATED);
         Stanza responseStanza = executeStartTLSHandler(starttlsStanza, sessionContext);

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java Tue Jan 25 21:01:31 2011
@@ -56,7 +56,7 @@ public class TestSessionContext extends 
      */
     public static TestSessionContext createSessionContext(Entity entity) {
         SessionStateHolder sessionStateHolder = new SessionStateHolder();
-        TestSessionContext sessionContext = new TestSessionContext(sessionStateHolder);
+        TestSessionContext sessionContext = new TestSessionContext(sessionStateHolder, SessionMode.CLIENT_2_SERVER);
         if (entity != null)
             sessionContext.setInitiatingEntity(entity.getBareJID());
         return sessionContext;
@@ -82,7 +82,7 @@ public class TestSessionContext extends 
         DefaultServerRuntimeContext serverContext = new DefaultServerRuntimeContext(new EntityImpl(null, "test", null),
                 relay);
         relay.setServerRuntimeContext(serverContext);
-        return new TestSessionContext(serverContext, sessionStateHolder);
+        return new TestSessionContext(serverContext, sessionStateHolder, SessionMode.CLIENT_2_SERVER);
     }
 
     /**
@@ -95,20 +95,29 @@ public class TestSessionContext extends 
             ServerRuntimeContext serverContext) {
         StanzaReceiverRelay relay = (StanzaReceiverRelay) serverContext.getStanzaRelay();
         relay.setServerRuntimeContext(serverContext);
-        return new TestSessionContext(serverContext, sessionStateHolder);
+        return new TestSessionContext(serverContext, sessionStateHolder, SessionMode.CLIENT_2_SERVER);
     }
 
     public TestSessionContext(SessionStateHolder sessionStateHolder) {
+        this(sessionStateHolder, SessionMode.CLIENT_2_SERVER);
+    }
+
+    public TestSessionContext(SessionStateHolder sessionStateHolder, SessionMode sessionMode) {
         this(new DefaultServerRuntimeContext(new EntityImpl(null, "test", null), new RecordingStanzaRelay(),
-                new MemoryStorageProviderRegistry()), sessionStateHolder);
+                new MemoryStorageProviderRegistry()), sessionStateHolder, sessionMode);
     }
 
-    public TestSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
-        super(serverRuntimeContext, sessionStateHolder);
+    public TestSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder, SessionMode sessionMode) {
+        super(serverRuntimeContext, sessionStateHolder, sessionMode);
         sessionId = serverRuntimeContext.getNextSessionId();
         xmlLang = "de";
     }
 
+    public TestSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
+        this(serverRuntimeContext, sessionStateHolder, SessionMode.CLIENT_2_SERVER);
+    }
+
+    
     public Stanza getNextRecordedResponse() {
         return recordedResponses.poll();
     }

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/Server2Server.java Tue Jan 25 21:01:31 2011
@@ -1,8 +1,8 @@
 package org.apache.vysper.xmpp.server.s2s;
 import java.io.File;
 
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.mina.S2SEndpoint;
-import org.apache.vysper.mina.TCPEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -55,7 +55,7 @@ public class Server2Server {
         server.addEndpoint(new S2SEndpoint());
         
         // C2S endpoint
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         
         server.setStorageProviderRegistry(providerRegistry);
         server.setTLSCertificateInfo(new File(keystorePath), keystorePassword);

Modified: mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/core/src/test/java/org/apache/vysper/xmpp/server/s2s/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -24,8 +24,8 @@ import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.mina.S2SEndpoint;
-import org.apache.vysper.mina.TCPEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -93,7 +93,7 @@ public class ServerMain {
         server.addEndpoint(new S2SEndpoint());
 
         // C2S endpoint
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         
         //server.addEndpoint(new StanzaSessionFactory());
         server.setStorageProviderRegistry(providerRegistry);

Modified: mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/DemoServer.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/DemoServer.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/DemoServer.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/DemoServer.java Tue Jan 25 21:01:31 2011
@@ -22,7 +22,7 @@ package org.apache.vysper.xmpp.extension
 import java.io.File;
 import java.io.FileNotFoundException;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -76,7 +76,7 @@ public class DemoServer {
         
         XMPPServer server = new XMPPServer("vysper.org");
 
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
 
         WebSocketEndpoint wsEndpoint = new WebSocketEndpoint() {
 

Modified: mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/websockets/src/examples/java/org/apache/vysper/xmpp/extension/websockets/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -24,7 +24,7 @@ import java.io.FileNotFoundException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -87,7 +87,7 @@ public class ServerMain {
 
         XMPPServer server = new XMPPServer("vysper.org");
 
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
 
         WebSocketEndpoint wsEndpoint = new WebSocketEndpoint();
 //        wsEndpoint.setSSLEnabled(true);

Modified: mina/vysper/branches/xep0114/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/websockets/src/main/java/org/apache/vysper/xmpp/extension/websockets/WebSocketBackedSessionContext.java Tue Jan 25 21:01:31 2011
@@ -38,6 +38,7 @@ import org.apache.vysper.xmpp.server.Abs
 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.SessionContext.SessionMode;
 import org.apache.vysper.xmpp.server.response.ServerErrorResponses;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.writer.StanzaWriter;
@@ -62,7 +63,7 @@ public class WebSocketBackedSessionConte
     private NonBlockingXMLReader xmlReader = new DefaultNonBlockingXMLReader();
     
     public WebSocketBackedSessionContext(ServerRuntimeContext serverRuntimeContext) {
-        super(serverRuntimeContext, new SessionStateHolder());
+        super(serverRuntimeContext, new SessionStateHolder(), SessionMode.CLIENT_2_SERVER);
         XMPPContentHandler contentHandler = new XMPPContentHandler(new StanzaBuilderFactory());
         contentHandler.setListener(this);
         

Modified: mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -21,7 +21,7 @@ package org.apache.vysper.xmpp.modules.e
 
 import java.io.File;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
@@ -54,7 +54,7 @@ public class ServerMain {
         accountManagement.addUser(EntityImpl.parseUnchecked("user2@vysper.org"), "password1");
 
         XMPPServer server = new XMPPServer("vysper.org");
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         server.setStorageProviderRegistry(providerRegistry);
 
         server.setTLSCertificateInfo(new File("src/main/config/bogus_mina_tls.cert"), "boguspw");

Modified: mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/TestSessionContext.java Tue Jan 25 21:01:31 2011
@@ -108,7 +108,7 @@ public class TestSessionContext extends 
     }
 
     public TestSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
-        super(serverRuntimeContext, sessionStateHolder);
+        super(serverRuntimeContext, sessionStateHolder, SessionMode.CLIENT_2_SERVER);
         sessionId = serverRuntimeContext.getNextSessionId();
         xmlLang = "de";
     }

Modified: mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/demo/pubsub/client/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/demo/pubsub/client/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/demo/pubsub/client/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/demo/pubsub/client/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -22,7 +22,7 @@ package org.apache.vysper.demo.pubsub.cl
 import java.io.File;
 import java.io.FileNotFoundException;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -77,7 +77,7 @@ public class ServerMain {
         }
 
         XMPPServer server = new XMPPServer("vysper.org");
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
         //server.addEndpoint(new StanzaSessionFactory());
         server.setStorageProviderRegistry(providerRegistry);
 

Modified: mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0060-pubsub/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0060_pubsub/TestSessionContext.java Tue Jan 25 21:01:31 2011
@@ -108,7 +108,7 @@ public class TestSessionContext extends 
     }
 
     public TestSessionContext(ServerRuntimeContext serverRuntimeContext, SessionStateHolder sessionStateHolder) {
-        super(serverRuntimeContext, sessionStateHolder);
+        super(serverRuntimeContext, sessionStateHolder, SessionMode.CLIENT_2_SERVER);
         sessionId = serverRuntimeContext.getNextSessionId();
         xmlLang = "de";
     }

Modified: mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java Tue Jan 25 21:01:31 2011
@@ -131,7 +131,7 @@ public class BoshBackedSessionContext ex
      * @param inactivityChecker
      */
     public BoshBackedSessionContext(BoshHandler boshHandler, ServerRuntimeContext serverRuntimeContext, InactivityChecker inactivityChecker) {
-        super(serverRuntimeContext, new SessionStateHolder());
+        super(serverRuntimeContext, new SessionStateHolder(), SessionMode.CLIENT_2_SERVER);
 
         // in BOSH we jump directly to the encrypted state
         sessionStateHolder.setState(SessionState.ENCRYPTED);

Modified: mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java?rev=1063460&r1=1063459&r2=1063460&view=diff
==============================================================================
--- mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java (original)
+++ mina/vysper/branches/xep0114/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java Tue Jan 25 21:01:31 2011
@@ -25,7 +25,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.vysper.mina.TCPEndpoint;
+import org.apache.vysper.mina.C2SEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.Entity;
@@ -88,7 +88,7 @@ public class ServerMain {
 
         XMPPServer server = new XMPPServer("vysper.org");
 
-        server.addEndpoint(new TCPEndpoint());
+        server.addEndpoint(new C2SEndpoint());
 
         BoshEndpoint boshEndpoint = new BoshEndpoint();
         boshEndpoint.setAccessControlAllowOrigin(Arrays.asList("*"));