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);