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/05/30 23:14:14 UTC
svn commit: r949578 - in
/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124:
BoshBackedSessionContext.java BoshEndpoint.java BoshIoHandler.java
ServerMain.java
Author: ngn
Date: Sun May 30 21:14:13 2010
New Revision: 949578
URL: http://svn.apache.org/viewvc?rev=949578&view=rev
Log:
Code formatting and fixing path to keystore (VYSPER-204). By Bogdan Pistol
Modified:
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshEndpoint.java
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshIoHandler.java
mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java
Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java?rev=949578&r1=949577&r2=949578&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshBackedSessionContext.java Sun May 30 21:14:13 2010
@@ -33,24 +33,25 @@ import org.apache.vysper.xmpp.writer.Sta
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-
/**
* connects MINA 2 frontend to the vysper backend through the Bosh protocol
*
* @author The Apache MINA Project (dev@mina.apache.org)
*/
-public class BoshBackedSessionContext extends AbstractSessionContext implements StanzaWriter, IoFutureListener {
+public class BoshBackedSessionContext extends AbstractSessionContext implements
+ StanzaWriter, IoFutureListener {
- final Logger logger = LoggerFactory.getLogger(BoshBackedSessionContext.class);
+ final Logger logger = LoggerFactory
+ .getLogger(BoshBackedSessionContext.class);
private IoSession minaSession;
+
private boolean openingStanzaWritten = false;
+
protected CloseFuture closeFuture;
- public BoshBackedSessionContext(
- ServerRuntimeContext serverRuntimeContext,
- SessionStateHolder sessionStateHolder,
- IoSession minaSession) {
+ public BoshBackedSessionContext(ServerRuntimeContext serverRuntimeContext,
+ SessionStateHolder sessionStateHolder, IoSession minaSession) {
super(serverRuntimeContext, sessionStateHolder);
this.minaSession = minaSession;
closeFuture = minaSession.getCloseFuture();
@@ -82,8 +83,8 @@ public class BoshBackedSessionContext ex
logger.info("close future called");
}
- public void switchToTLS() {
- // Bosh cannot switch dynamically
- // SSL can be enabled/disabled in BoshEndpoint#setSslEnabled()
- }
+ public void switchToTLS() {
+ // Bosh cannot switch dynamically
+ // SSL can be enabled/disabled in BoshEndpoint#setSslEnabled()
+ }
}
Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshEndpoint.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshEndpoint.java?rev=949578&r1=949577&r2=949578&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshEndpoint.java (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshEndpoint.java Sun May 30 21:14:13 2010
@@ -33,46 +33,47 @@ import org.slf4j.LoggerFactory;
* @author The Apache MINA Project (dev@mina.apache.org)
*/
public class BoshEndpoint implements Endpoint {
-
- private final Logger logger = LoggerFactory.getLogger(BoshEndpoint.class);
+
+ private final Logger logger = LoggerFactory.getLogger(BoshEndpoint.class);
private ServerRuntimeContext serverRuntimeContext;
private int port = 8080;
private Server server;
-
- public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
+
+ public void setServerRuntimeContext(
+ ServerRuntimeContext serverRuntimeContext) {
this.serverRuntimeContext = serverRuntimeContext;
}
public void setPort(int port) {
this.port = port;
}
-
+
public void setSslEnabled(boolean value) {
- // TODO:
+ // TODO:
}
-
+
public void start() throws IOException {
- server = new Server(port);
- BoshIoHandler boshIoHandler = new BoshIoHandler();
- boshIoHandler.setServerRuntimeContext(serverRuntimeContext);
- server.setHandler(boshIoHandler);
- try {
- server.start();
- } catch (Exception e) {
- // TODO IOException(Exception) is only Java 1.6, so throwing a RuntimeException for now
- throw new RuntimeException(e);
- }
+ server = new Server(port);
+ BoshIoHandler boshIoHandler = new BoshIoHandler();
+ boshIoHandler.setServerRuntimeContext(serverRuntimeContext);
+ server.setHandler(boshIoHandler);
+ try {
+ server.start();
+ } catch (Exception e) {
+ // TODO IOException(Exception) is only Java 1.6, so throwing a RuntimeException for now
+ throw new RuntimeException(e);
+ }
}
public void stop() {
- try {
- server.stop();
- } catch (Exception e) {
- logger.warn("Could not stop the Jetty server", e);
- }
+ try {
+ server.stop();
+ } catch (Exception e) {
+ logger.warn("Could not stop the Jetty server", e);
+ }
}
}
Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshIoHandler.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshIoHandler.java?rev=949578&r1=949577&r2=949578&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshIoHandler.java (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/BoshIoHandler.java Sun May 30 21:14:13 2010
@@ -44,67 +44,73 @@ public class BoshIoHandler extends Abstr
private ServerRuntimeContext serverRuntimeContext;
- public void setServerRuntimeContext(ServerRuntimeContext serverRuntimeContext) {
+ public void setServerRuntimeContext(
+ ServerRuntimeContext serverRuntimeContext) {
this.serverRuntimeContext = serverRuntimeContext;
}
-
- public void handle(String target, Request baseRequest,
- HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
-
- if (request.getMethod().equals("GET") && request.getPathInfo().equals("/crossdomain.xml")) {
- // request for the cross-domain policy from Flash (e.g. flXHR)
- response.setContentType("text/xml");
- response.setStatus(HttpServletResponse.SC_OK);
- response.getWriter().println("<cross-domain-policy><site-control permitted-cross-domain-policies='all'/><allow-access-from domain='*'/><allow-http-request-headers-from domain='*' headers='*'/></cross-domain-policy>");
- ((Request)request).setHandled(true);
- return;
- }
-
- if (!request.getMethod().equals("POST")) {
- // it should not reach here normally, but it can happen if the user explicitly makes a non-POST request (e.g. GET, DELETE, etc)
- response.setContentType("text/html");
- response.setStatus(HttpServletResponse.SC_OK);
- response.getWriter().println("<html>This is an XMPP BOSH connection manager, you need to use a compatible BOSH client to use its services!</html>");
- ((Request)request).setHandled(true);
- return;
- }
-
- BufferedReader reader = request.getReader();
-
- char [] buf = new char[1024];
- StringBuilder sb = new StringBuilder();
-
- for (;;) {
- int n = reader.read(buf);
- if (n == -1) {
- break;
- }
- sb.append(buf, 0, n);
- }
-
- String body = sb.toString();
- logger.debug("BOSH CM received : {}", body);
-
-
- // test if this is the first request (kind of a hack - should be parsing XML)
- if (body.indexOf("sid=") == -1) {
- // initial request
- String sid = Long.toString(new Random().nextLong(), 16);
- response.setContentType("text/xml; charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- response.getWriter().print("<body xmlns='http://jabber.org/protocol/httpbind' wait='60' inactivity='60' polling='5' requests='2' hold='1' maxpause='120' sid='");
- response.getWriter().print(sid);
- response.getWriter().print("' ver='1.6' from='vysper.org'/>");
- ((Request)request).setHandled(true);
- return;
- }
-
- // session exists
- // not handled yet, TODO
- response.setContentType("text/xml; charset=utf-8");
- response.setStatus(HttpServletResponse.SC_OK);
- ((Request)request).setHandled(true);
+
+ public void handle(String target, Request baseRequest,
+ HttpServletRequest request, HttpServletResponse response)
+ throws IOException, ServletException {
+
+ if (request.getMethod().equals("GET")
+ && request.getPathInfo().equals("/crossdomain.xml")) {
+ // request for the cross-domain policy from Flash (e.g. flXHR)
+ response.setContentType("text/xml");
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.getWriter()
+ .println(
+ "<cross-domain-policy><site-control permitted-cross-domain-policies='all'/><allow-access-from domain='*'/><allow-http-request-headers-from domain='*' headers='*'/></cross-domain-policy>");
+ ((Request) request).setHandled(true);
+ return;
+ }
+
+ if (!request.getMethod().equals("POST")) {
+ // it should not reach here normally, but it can happen if the user explicitly makes a non-POST request (e.g. GET, DELETE, etc)
+ response.setContentType("text/html");
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.getWriter()
+ .println(
+ "<html>This is an XMPP BOSH connection manager, you need to use a compatible BOSH client to use its services!</html>");
+ ((Request) request).setHandled(true);
+ return;
+ }
+
+ BufferedReader reader = request.getReader();
+
+ char[] buf = new char[1024];
+ StringBuilder sb = new StringBuilder();
+
+ for (;;) {
+ int n = reader.read(buf);
+ if (n == -1) {
+ break;
+ }
+ sb.append(buf, 0, n);
+ }
+
+ String body = sb.toString();
+ logger.debug("BOSH CM received : {}", body);
+
+ // test if this is the first request (kind of a hack - should be parsing XML)
+ if (body.indexOf("sid=") == -1) {
+ // initial request
+ String sid = Long.toString(new Random().nextLong(), 16);
+ response.setContentType("text/xml; charset=utf-8");
+ response.setStatus(HttpServletResponse.SC_OK);
+ response.getWriter()
+ .print("<body xmlns='http://jabber.org/protocol/httpbind' wait='60' inactivity='60' polling='5' requests='2' hold='1' maxpause='120' sid='");
+ response.getWriter().print(sid);
+ response.getWriter().print("' ver='1.6' from='vysper.org'/>");
+ ((Request) request).setHandled(true);
+ return;
+ }
+
+ // session exists
+ // not handled yet, TODO
+ response.setContentType("text/xml; charset=utf-8");
+ response.setStatus(HttpServletResponse.SC_OK);
+ ((Request) request).setHandled(true);
}
}
Modified: mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java?rev=949578&r1=949577&r2=949578&view=diff
==============================================================================
--- mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java (original)
+++ mina/vysper/trunk/server/extensions/xep0124-xep0206-bosh/src/main/java/org/apache/vysper/xmpp/extension/xep0124/ServerMain.java Sun May 30 21:14:13 2010
@@ -1,4 +1,3 @@
-package org.apache.vysper.xmpp.extension.xep0124;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -18,7 +17,7 @@ package org.apache.vysper.xmpp.extension
* under the License.
*
*/
-
+package org.apache.vysper.xmpp.extension.xep0124;
import java.io.File;
import java.util.ArrayList;
@@ -55,7 +54,8 @@ public class ServerMain {
*
* @param args
*/
- public static void main(String[] args) throws AccountCreationException, EntityFormatException {
+ public static void main(String[] args) throws AccountCreationException,
+ EntityFormatException {
String addedModuleProperty = System.getProperty("vysper.add.module");
List<Module> listOfModules = null;
@@ -68,15 +68,19 @@ public class ServerMain {
//StorageProviderRegistry providerRegistry = new JcrStorageProviderRegistry();
StorageProviderRegistry providerRegistry = new MemoryStorageProviderRegistry();
- final AccountManagement accountManagement = (AccountManagement)providerRegistry.retrieve(AccountManagement.class);
+ final AccountManagement accountManagement = (AccountManagement) providerRegistry
+ .retrieve(AccountManagement.class);
- if (!accountManagement.verifyAccountExists(EntityImpl.parse("user1@vysper.org"))) {
+ if (!accountManagement.verifyAccountExists(EntityImpl
+ .parse("user1@vysper.org"))) {
accountManagement.addUser("user1@vysper.org", "password1");
}
- if (!accountManagement.verifyAccountExists(EntityImpl.parse("user2@vysper.org"))) {
+ if (!accountManagement.verifyAccountExists(EntityImpl
+ .parse("user2@vysper.org"))) {
accountManagement.addUser("user2@vysper.org", "password1");
}
- if (!accountManagement.verifyAccountExists(EntityImpl.parse("user3@vysper.org"))) {
+ if (!accountManagement.verifyAccountExists(EntityImpl
+ .parse("user3@vysper.org"))) {
accountManagement.addUser("user3@vysper.org", "password1");
}
@@ -87,7 +91,9 @@ public class ServerMain {
//server.addEndpoint(new StanzaSessionFactory());
server.setStorageProviderRegistry(providerRegistry);
- server.setTLSCertificateInfo(new File("src/main/config/bogus_mina_tls.cert"), "boguspw");
+ server.setTLSCertificateInfo(new File(
+ "../vysper-core/src/main/config/bogus_mina_tls.cert"),
+ "boguspw");
try {
server.start();
@@ -111,23 +117,26 @@ public class ServerMain {
private static List<Module> createModuleInstances(String[] moduleClassNames) {
List<Module> modules = new ArrayList<Module>();
-
+
for (String moduleClassName : moduleClassNames) {
Class<Module> moduleClass;
try {
- moduleClass = (Class<Module>)Class.forName(moduleClassName);
+ moduleClass = (Class<Module>) Class.forName(moduleClassName);
} catch (ClassCastException e) {
- System.err.println("not a Vysper module class: " + moduleClassName);
+ System.err.println("not a Vysper module class: "
+ + moduleClassName);
continue;
} catch (ClassNotFoundException e) {
- System.err.println("could not load module class " + moduleClassName);
+ System.err.println("could not load module class "
+ + moduleClassName);
continue;
}
try {
Module module = moduleClass.newInstance();
modules.add(module);
} catch (Exception e) {
- System.err.println("failed to instantiate module class " + moduleClassName);
+ System.err.println("failed to instantiate module class "
+ + moduleClassName);
continue;
}
}