Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.http/src/org')
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/HTTPUtil.java42
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPAcceptor.java23
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPConnector.java23
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/INet4jTransportServlet.java31
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/package.html43
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptor.java120
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptorFactory.java66
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPClientConnector.java66
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java74
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnectorFactory.java80
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPServerConnector.java49
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/Net4jTransportServlet.java74
-rw-r--r--plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/bundle/OM.java47
13 files changed, 738 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/HTTPUtil.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/HTTPUtil.java
new file mode 100644
index 0000000000..d466a3b032
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/HTTPUtil.java
@@ -0,0 +1,42 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.http;
+
+import org.eclipse.net4j.internal.http.HTTPAcceptorFactory;
+import org.eclipse.net4j.internal.http.HTTPConnectorFactory;
+import org.eclipse.net4j.util.container.IManagedContainer;
+
+/**
+ * @author Eike Stepper
+ */
+public final class HTTPUtil
+{
+ private HTTPUtil()
+ {
+ }
+
+ public static void prepareContainer(IManagedContainer container)
+ {
+ container.registerFactory(new HTTPAcceptorFactory());
+ container.registerFactory(new HTTPConnectorFactory());
+ }
+
+ public static IHTTPAcceptor getAcceptor(IManagedContainer container, String description)
+ {
+ return (IHTTPAcceptor)container.getElement(HTTPAcceptorFactory.PRODUCT_GROUP, HTTPAcceptorFactory.TYPE, description);
+ }
+
+ public static IHTTPConnector getConnector(IManagedContainer container, String description)
+ {
+ return (IHTTPConnector)container
+ .getElement(HTTPConnectorFactory.PRODUCT_GROUP, HTTPConnectorFactory.TYPE, description);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPAcceptor.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPAcceptor.java
new file mode 100644
index 0000000000..97400163aa
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPAcceptor.java
@@ -0,0 +1,23 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.http;
+
+import org.eclipse.net4j.acceptor.IAcceptor;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IHTTPAcceptor extends IAcceptor
+{
+ public static final int DEFAULT_PORT = 80;
+
+ public int getPort();
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPConnector.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPConnector.java
new file mode 100644
index 0000000000..e78c0887a5
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/IHTTPConnector.java
@@ -0,0 +1,23 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.http;
+
+import org.eclipse.net4j.connector.IConnector;
+
+/**
+ * @author Eike Stepper
+ */
+public interface IHTTPConnector extends IConnector
+{
+ public static final int DEFAULT_PORT = IHTTPAcceptor.DEFAULT_PORT;
+
+ public String getURL();
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/INet4jTransportServlet.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/INet4jTransportServlet.java
new file mode 100644
index 0000000000..56dddc7cf4
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/INet4jTransportServlet.java
@@ -0,0 +1,31 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.http;
+
+import javax.servlet.Servlet;
+
+/**
+ * @author Eike Stepper
+ */
+public interface INet4jTransportServlet extends Servlet
+{
+ public RequestHandler getRequestHandler();
+
+ public void setRequestHandler(RequestHandler handler);
+
+ /**
+ * @author Eike Stepper
+ */
+ public interface RequestHandler
+ {
+ public void connectRequested(String user);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/package.html b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/package.html
new file mode 100644
index 0000000000..0b3e577cb7
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/http/package.html
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+<head>
+<!--
+
+ Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License v1.0
+ which accompanies this distribution, and is available at
+ http://www.eclipse.org/legal/epl-v10.html
+
+ Contributors:
+ Eike Stepper - Initial API and implementation
+
+-->
+</head>
+<body bgcolor="white">
+
+Transport layer extension with support for HTTP connections.
+<p>
+
+<!--
+
+<h2>Package Specification</h2>
+
+##### FILL IN ANY SPECS NEEDED BY JAVA COMPATIBILITY KIT #####
+<ul>
+ <li><a href="">##### REFER TO ANY FRAMEMAKER SPECIFICATION HERE #####</a>
+</ul>
+
+<h2>Related Documentation</h2>
+
+For overviews, tutorials, examples, guides, and tool documentation, please see:
+<ul>
+ <li><a href="">##### REFER TO NON-SPEC DOCUMENTATION HERE #####</a>
+</ul>
+
+-->
+
+<!-- Put @see and @since tags down here. -->
+
+</body>
+</html>
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptor.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptor.java
new file mode 100644
index 0000000000..27e0775def
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptor.java
@@ -0,0 +1,120 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.net4j.http.IHTTPAcceptor;
+import org.eclipse.net4j.http.INet4jTransportServlet;
+import org.eclipse.net4j.internal.http.bundle.OM;
+import org.eclipse.net4j.internal.util.lifecycle.Worker;
+import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
+
+import org.eclipse.internal.net4j.acceptor.Acceptor;
+
+import java.io.IOException;
+import java.text.MessageFormat;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPAcceptor extends Acceptor implements IHTTPAcceptor, INet4jTransportServlet.RequestHandler
+{
+ public static final boolean DEFAULT_START_SYNCHRONOUSLY = true;
+
+ public static final long DEFAULT_SYNCHRONOUS_START_TIMEOUT = 2 * Worker.DEFAULT_TIMEOUT;
+
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HTTPAcceptor.class);
+
+ private boolean startSynchronously = DEFAULT_START_SYNCHRONOUSLY;
+
+ private long synchronousStartTimeout = DEFAULT_SYNCHRONOUS_START_TIMEOUT;
+
+ private CountDownLatch startLatch;
+
+ private int port = DEFAULT_PORT;
+
+ public HTTPAcceptor()
+ {
+ }
+
+ public int getPort()
+ {
+ return port;
+ }
+
+ public void setPort(int port)
+ {
+ this.port = port;
+ }
+
+ public boolean isStartSynchronously()
+ {
+ return startSynchronously;
+ }
+
+ public void setStartSynchronously(boolean startSynchronously)
+ {
+ this.startSynchronously = startSynchronously;
+ }
+
+ public long getSynchronousStartTimeout()
+ {
+ return synchronousStartTimeout;
+ }
+
+ public void setSynchronousStartTimeout(long synchronousStartTimeout)
+ {
+ this.synchronousStartTimeout = synchronousStartTimeout;
+ }
+
+ public void connectRequested(String user)
+ {
+ }
+
+ @Override
+ public String toString()
+ {
+ return MessageFormat.format("HTTPAcceptor[{0}]", port); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ if (startSynchronously)
+ {
+ startLatch = new CountDownLatch(1);
+ }
+ }
+
+ @Override
+ protected void doActivate() throws Exception
+ {
+ super.doActivate();
+
+ if (startLatch != null)
+ {
+ if (!startLatch.await(synchronousStartTimeout, TimeUnit.MILLISECONDS))
+ {
+ startLatch = null;
+ // IOUtil.closeSilent(serverSocketChannel);
+ throw new IOException("Registration with selector timed out after " + synchronousStartTimeout + " millis");
+ }
+ }
+ }
+
+ @Override
+ protected void doDeactivate() throws Exception
+ {
+ super.doDeactivate();
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptorFactory.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptorFactory.java
new file mode 100644
index 0000000000..97ee530f42
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPAcceptorFactory.java
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.internal.net4j.acceptor.AcceptorFactory;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPAcceptorFactory extends AcceptorFactory
+{
+ public static final String TYPE = "tcp";
+
+ private static final String SEPARATOR = ":"; //$NON-NLS-1$
+
+ public HTTPAcceptorFactory()
+ {
+ super(TYPE);
+ }
+
+ public HTTPAcceptor create(String description)
+ {
+ // String address = IHTTPAcceptor.DEFAULT_ADDRESS;
+ // int port = IHTTPAcceptor.DEFAULT_PORT;
+ //
+ // if (!StringUtil.isEmpty(description))
+ // {
+ // String[] tokens = description.split(SEPARATOR);
+ // if (!StringUtil.isEmpty(tokens[0]))
+ // {
+ // address = tokens[0];
+ // }
+ //
+ // if (tokens.length > 1 && !StringUtil.isEmpty(tokens[1]))
+ // {
+ // port = Integer.parseInt(tokens[1]);
+ // }
+ // }
+
+ HTTPAcceptor acceptor = new HTTPAcceptor();
+ // acceptor.setAddress(address);
+ // acceptor.setPort(port);
+ return acceptor;
+ }
+
+ @Override
+ public String getDescriptionFor(Object object)
+ {
+ // if (object instanceof HTTPAcceptor)
+ // {
+ // HTTPAcceptor acceptor = (HTTPAcceptor)object;
+ // return acceptor.getAddress() + SEPARATOR + acceptor.getPort();
+ // }
+
+ return null;
+
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPClientConnector.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPClientConnector.java
new file mode 100644
index 0000000000..e35f226007
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPClientConnector.java
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.net4j.connector.ConnectorLocation;
+import org.eclipse.net4j.http.IHTTPConnector;
+
+import java.text.MessageFormat;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPClientConnector extends HTTPConnector implements IHTTPConnector
+{
+ private String url;
+
+ public HTTPClientConnector()
+ {
+ }
+
+ public ConnectorLocation getLocation()
+ {
+ return ConnectorLocation.CLIENT;
+ }
+
+ @Override
+ public String getURL()
+ {
+ return url;
+ }
+
+ @Override
+ public void setURL(String url)
+ {
+ this.url = url;
+ }
+
+ @Override
+ public String toString()
+ {
+ if (getUserID() == null)
+ {
+ return MessageFormat.format("HTTPClientConnector[{0}]", getURL()); //$NON-NLS-1$
+ }
+
+ return MessageFormat.format("HTTPClientConnector[{1}@{0}]", getURL(), getUserID()); //$NON-NLS-1$
+ }
+
+ @Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ if (url == null)
+ {
+ throw new IllegalStateException("url == null");
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java
new file mode 100644
index 0000000000..e2b9a6c991
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnector.java
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.net4j.channel.IChannel;
+import org.eclipse.net4j.connector.ConnectorException;
+import org.eclipse.net4j.internal.http.bundle.OM;
+import org.eclipse.net4j.internal.util.om.trace.ContextTracer;
+import org.eclipse.net4j.protocol.IProtocol;
+import org.eclipse.net4j.util.security.INegotiationContext;
+
+import org.eclipse.internal.net4j.connector.Connector;
+
+/**
+ * @author Eike Stepper
+ */
+public abstract class HTTPConnector extends Connector
+{
+ private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, HTTPConnector.class);
+
+ private String url;
+
+ public HTTPConnector()
+ {
+ }
+
+ public String getURL()
+ {
+ return url;
+ }
+
+ public void setURL(String url)
+ {
+ this.url = url;
+ }
+
+ /**
+ * Called by an {@link IChannel} each time a new buffer is available for multiplexing. This or another buffer can be
+ * dequeued from the outputQueue of the {@link IChannel}.
+ */
+ public void multiplexChannel(IChannel channel)
+ {
+ }
+
+ @Override
+ protected void registerChannelWithPeer(int channelID, short channelIndex, IProtocol protocol)
+ throws ConnectorException
+ {
+ }
+
+ @Override
+ protected INegotiationContext createNegotiationContext()
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ protected void doBeforeActivate() throws Exception
+ {
+ super.doBeforeActivate();
+ if (url == null)
+ {
+ throw new IllegalStateException("url == null");
+ }
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnectorFactory.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnectorFactory.java
new file mode 100644
index 0000000000..5781b6c3f2
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPConnectorFactory.java
@@ -0,0 +1,80 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.internal.net4j.connector.ConnectorFactory;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPConnectorFactory extends ConnectorFactory
+{
+ public static final String TYPE = "tcp";
+
+ private static final String URL_SCHEME = "http://";
+
+ public HTTPConnectorFactory()
+ {
+ super(TYPE);
+ }
+
+ public HTTPClientConnector create(String description)
+ {
+ // try
+ // {
+ // // TODO Don't use URL
+ // // Scheme "tcp://" would be rejected!
+ // URL url = new URL(URL_SCHEME + description);
+ // String userID = url.getUserInfo();
+ // String host = url.getHost();
+ // int port = url.getPort();
+ // if (port == -1)
+ // {
+ // port = IHTTPConnector.DEFAULT_PORT;
+ // }
+
+ HTTPClientConnector connector = new HTTPClientConnector();
+ // connector.setUserID(userID);
+ // connector.setHost(host);
+ // connector.setPort(port);
+ return connector;
+ // }
+ // catch (MalformedURLException ex)
+ // {
+ // throw new ProductCreationException(ex);
+ // }
+ }
+
+ @Override
+ public String getDescriptionFor(Object object)
+ {
+ // if (object instanceof HTTPClientConnector)
+ // {
+ // HTTPClientConnector connector = (HTTPClientConnector)object;
+ // String description = connector.getHost();
+ // String userID = connector.getUserID();
+ // if (!StringUtil.isEmpty(userID))
+ // {
+ // description = userID + "@" + description;
+ // }
+ //
+ // int port = connector.getPort();
+ // if (port != IHTTPConnector.DEFAULT_PORT)
+ // {
+ // description = description + ":" + port;
+ // }
+ //
+ // return description;
+ // }
+
+ return null;
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPServerConnector.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPServerConnector.java
new file mode 100644
index 0000000000..fa7d7101d3
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/HTTPServerConnector.java
@@ -0,0 +1,49 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.net4j.connector.ConnectorLocation;
+
+import java.text.MessageFormat;
+
+/**
+ * @author Eike Stepper
+ */
+public class HTTPServerConnector extends HTTPConnector
+{
+ private HTTPAcceptor acceptor;
+
+ public HTTPServerConnector(HTTPAcceptor acceptor)
+ {
+ this.acceptor = acceptor;
+ }
+
+ public HTTPAcceptor getAcceptor()
+ {
+ return acceptor;
+ }
+
+ public ConnectorLocation getLocation()
+ {
+ return ConnectorLocation.SERVER;
+ }
+
+ @Override
+ public String toString()
+ {
+ if (getUserID() == null)
+ {
+ return MessageFormat.format("HTTPServerConnector[{0}]", acceptor); //$NON-NLS-1$
+ }
+
+ return MessageFormat.format("HTTPServerConnector[{1}@{0}]", acceptor, getUserID()); //$NON-NLS-1$
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/Net4jTransportServlet.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/Net4jTransportServlet.java
new file mode 100644
index 0000000000..611fd5edbd
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/Net4jTransportServlet.java
@@ -0,0 +1,74 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http;
+
+import org.eclipse.net4j.http.INet4jTransportServlet;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+/**
+ * @author Eike Stepper
+ */
+public class Net4jTransportServlet extends HttpServlet implements INet4jTransportServlet
+{
+ private static final long serialVersionUID = 1L;
+
+ private RequestHandler requestHandler;
+
+ public Net4jTransportServlet()
+ {
+ }
+
+ public RequestHandler getRequestHandler()
+ {
+ return requestHandler;
+ }
+
+ public void setRequestHandler(RequestHandler requestHandler)
+ {
+ this.requestHandler = requestHandler;
+ }
+
+ @Override
+ protected final void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ doPost(req, resp);
+ }
+
+ @Override
+ protected final void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ handleRequest(req, resp);
+ }
+
+ protected void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ BufferedReader reader = req.getReader();
+ String op = reader.readLine();
+ if ("connect".equals(op))
+ {
+ handleConnect(reader, req, resp);
+ }
+ }
+
+ protected void handleConnect(BufferedReader reader, HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException
+ {
+ String user = reader.readLine();
+ requestHandler.connectRequested(user);
+ }
+}
diff --git a/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/bundle/OM.java b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/bundle/OM.java
new file mode 100644
index 0000000000..063ac90ce0
--- /dev/null
+++ b/plugins/org.eclipse.net4j.http/src/org/eclipse/net4j/internal/http/bundle/OM.java
@@ -0,0 +1,47 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2008 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.internal.http.bundle;
+
+import org.eclipse.net4j.util.om.OMBundle;
+import org.eclipse.net4j.util.om.OMPlatform;
+import org.eclipse.net4j.util.om.OSGiActivator;
+import org.eclipse.net4j.util.om.log.OMLogger;
+import org.eclipse.net4j.util.om.trace.OMTracer;
+
+/**
+ * The <em>Operations & Maintenance</em> class of this bundle.
+ *
+ * @author Eike Stepper
+ */
+public abstract class OM
+{
+ public static final String BUNDLE_ID = "org.eclipse.net4j.http"; //$NON-NLS-1$
+
+ public static final OMBundle BUNDLE = OMPlatform.INSTANCE.bundle(BUNDLE_ID, OM.class);
+
+ public static final OMTracer DEBUG = BUNDLE.tracer("debug"); //$NON-NLS-1$
+
+ public static final int PROTOCOL_REGISTRATION_TIMEOUT = BUNDLE.getDebugSupport().getDebugOption(
+ "protocol.registration.timeout", 10000); //$NON-NLS-1$
+
+ public static final OMLogger LOG = BUNDLE.logger();
+
+ /**
+ * @author Eike Stepper
+ */
+ public static final class Activator extends OSGiActivator
+ {
+ public Activator()
+ {
+ super(BUNDLE);
+ }
+ }
+}

Back to the top