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 2010/12/26 23:03:42 UTC

svn commit: r1052970 - in /mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server: DefaultServerRuntimeContext.java ServerRuntimeContext.java s2s/XMPPServerConnector.java s2s/XMPPServerConnectorRegistry.java

Author: ngn
Date: Sun Dec 26 22:03:42 2010
New Revision: 1052970

URL: http://svn.apache.org/viewvc?rev=1052970&view=rev
Log:
Getting server connector for the ServerRuntimeContext

Modified:
    mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
    mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
    mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnector.java
    mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnectorRegistry.java

Modified: mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java?rev=1052970&r1=1052969&r2=1052970&view=diff
==============================================================================
--- mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java (original)
+++ mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/DefaultServerRuntimeContext.java Sun Dec 26 22:03:42 2010
@@ -45,6 +45,7 @@ import org.apache.vysper.xmpp.protocol.S
 import org.apache.vysper.xmpp.protocol.StanzaHandlerLookup;
 import org.apache.vysper.xmpp.protocol.StanzaProcessor;
 import org.apache.vysper.xmpp.server.components.Component;
+import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.state.presence.LatestPresenceCache;
 import org.apache.vysper.xmpp.state.presence.SimplePresenceCache;
@@ -111,6 +112,8 @@ public class DefaultServerRuntimeContext
      */
     private LatestPresenceCache presenceCache = new SimplePresenceCache();
 
+    private XMPPServerConnectorRegistry serverConnectorRegistry = new XMPPServerConnectorRegistry(this);
+    
     /**
      * holds the storage services
      */
@@ -186,7 +189,11 @@ public class DefaultServerRuntimeContext
         return serverFeatures;
     }
 
-    public void addDictionary(NamespaceHandlerDictionary namespaceHandlerDictionary) {
+    public XMPPServerConnectorRegistry getServerConnectorRegistry() {
+        return serverConnectorRegistry;
+    }
+
+    public void addDictionary(HandlerDictionary namespaceHandlerDictionary) {
         stanzaHandlerLookup.addDictionary(namespaceHandlerDictionary);
     }
 

Modified: mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java?rev=1052970&r1=1052969&r2=1052970&view=diff
==============================================================================
--- mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java (original)
+++ mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerRuntimeContext.java Sun Dec 26 22:03:42 2010
@@ -30,6 +30,7 @@ import org.apache.vysper.xmpp.modules.Se
 import org.apache.vysper.xmpp.protocol.StanzaHandler;
 import org.apache.vysper.xmpp.protocol.StanzaProcessor;
 import org.apache.vysper.xmpp.server.components.Component;
+import org.apache.vysper.xmpp.server.s2s.XMPPServerConnectorRegistry;
 import org.apache.vysper.xmpp.stanza.Stanza;
 import org.apache.vysper.xmpp.state.presence.LatestPresenceCache;
 import org.apache.vysper.xmpp.state.resourcebinding.ResourceRegistry;
@@ -71,4 +72,6 @@ public interface ServerRuntimeContext {
     void registerComponent(Component component);
 
     StanzaProcessor getComponentStanzaProcessor(Entity entity);
+    
+    XMPPServerConnectorRegistry getServerConnectorRegistry();
 }

Modified: mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnector.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnector.java?rev=1052970&r1=1052969&r2=1052970&view=diff
==============================================================================
--- mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnector.java (original)
+++ mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnector.java Sun Dec 26 22:03:42 2010
@@ -12,7 +12,6 @@ import org.apache.mina.transport.socket.
 import org.apache.vysper.mina.MinaBackedSessionContext;
 import org.apache.vysper.mina.StanzaLoggingFilter;
 import org.apache.vysper.mina.codec.XMPPProtocolCodecFactory;
-import org.apache.vysper.xml.fragment.XMLElement;
 import org.apache.vysper.xmpp.addressing.Entity;
 import org.apache.vysper.xmpp.modules.extension.xep0220_server_dailback.DailbackIdGenerator;
 import org.apache.vysper.xmpp.protocol.NamespaceURIs;
@@ -53,29 +52,40 @@ public class XMPPServerConnector {
 
             @Override
             public void messageReceived(IoSession session, Object message) throws Exception {
-                XMLElement msg = (XMLElement) message;
+                Stanza msg = (Stanza) message;
                 
                 if(msg.getName().equals("stream")) {
-                    Entity originating = serverRuntimeContext.getServerEnitity();
-
-                    String dailbackId = new DailbackIdGenerator().generate(otherServer, originating, msg.getAttributeValue("id"));
-                    
-                    Stanza dbResult = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db")
-                        .addAttribute("from", originating.getDomain())
-                        .addAttribute("to", otherServer.getDomain())
-                        .addText(dailbackId)
-                        .build();
-                    
-                    sessionContext.write(dbResult);
-                } else if(msg.getName().equals("result")) {
+                    sessionContext.setSessionId(msg.getAttributeValue("id"));
+                } else if(msg.getName().equals("features")) {
+                    if(dialbackSupported(msg)) {
+                        Entity originating = serverRuntimeContext.getServerEnitity();
+
+                        String dailbackId = new DailbackIdGenerator().generate(otherServer, originating, sessionContext.getSessionId());
+                        
+                        Stanza dbResult = new StanzaBuilder("result", NamespaceURIs.JABBER_SERVER_DIALBACK, "db")
+                            .addAttribute("from", originating.getDomain())
+                            .addAttribute("to", otherServer.getDomain())
+                            .addText(dailbackId)
+                            .build();
+                        
+                        sessionContext.write(dbResult);
+                    } else {
+                        throw new RuntimeException("Unsupported features");
+                    }
+                } else if(msg.getName().equals("result") && NamespaceURIs.JABBER_SERVER_DIALBACK.equals(msg.getNamespaceURI())) {
                     // TODO check and handle dailback result
                     sessionStateHolder.setState(SessionState.AUTHENTICATED);
-                    System.out.println("Done with dailback");
+                    System.out.println("Done with dialback");
                     latch.countDown();
                 } else {
                     // TODO other stanzas coming here?
                 }
             }
+            
+            private boolean dialbackSupported(Stanza stanza) {
+                // TODO check for dialback namespace
+                return !stanza.getInnerElementsNamed("dialback", NamespaceURIs.URN_XMPP_FEATURES_DIALBACK).isEmpty();
+            }
 
             @Override
             public void sessionClosed(IoSession session) throws Exception {

Modified: mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnectorRegistry.java
URL: http://svn.apache.org/viewvc/mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnectorRegistry.java?rev=1052970&r1=1052969&r2=1052970&view=diff
==============================================================================
--- mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnectorRegistry.java (original)
+++ mina/vysper/branches/s2s/server/core/src/main/java/org/apache/vysper/xmpp/server/s2s/XMPPServerConnectorRegistry.java Sun Dec 26 22:03:42 2010
@@ -10,6 +10,10 @@ public class XMPPServerConnectorRegistry
     private ServerRuntimeContext serverRuntimeContext;
     private Map<Entity, XMPPServerConnector> connectors = new ConcurrentHashMap<Entity, XMPPServerConnector>();
     
+    public XMPPServerConnectorRegistry(ServerRuntimeContext serverRuntimeContext) {
+        this.serverRuntimeContext = serverRuntimeContext;
+    }
+
     public synchronized XMPPServerConnector getConnector(Entity server) {
         XMPPServerConnector connector = connectors.get(server);