diff options
Diffstat (limited to '')
-rw-r--r-- | sca-java-2.x/contrib/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/sca-java-2.x/contrib/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java b/sca-java-2.x/contrib/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java new file mode 100644 index 0000000000..6a89bf8a06 --- /dev/null +++ b/sca-java-2.x/contrib/modules/binding-comet-runtime/src/main/java/org/apache/tuscany/sca/binding/comet/runtime/ServletFactory.java @@ -0,0 +1,43 @@ +package org.apache.tuscany.sca.binding.comet.runtime; + +import java.util.HashMap; +import java.util.Map; + +import org.apache.tuscany.sca.host.http.ServletHost; +import org.apache.tuscany.sca.interfacedef.Operation; +import org.apache.tuscany.sca.runtime.RuntimeEndpoint; +import org.atmosphere.cpr.AtmosphereServlet; + +public class ServletFactory { + + private static final String PACKAGE_KEY = "com.sun.jersey.config.property.packages"; + private static final String PACKAGE_VALUE = "org.apache.tuscany.sca.binding.comet.runtime"; + public static final String ENDPOINTS_KEY = "org.apache.tuscany.sca.binding.comet.endpoints"; + public static final String OPERATIONS_KEY = "org.apache.tuscany.sca.binding.comet.operations"; + public static final String PATH = "/tuscany-comet/*"; + + private static AtmosphereServlet servlet = null; + + public static synchronized void registerServlet(ServletHost servletHost, + RuntimeEndpoint endpoint, + Operation operation) { + if (servlet == null) { + servlet = new AtmosphereServlet(); + servlet.addInitParameter(PACKAGE_KEY, PACKAGE_VALUE); + servletHost.addServletMapping(PATH, servlet); + Map<String, RuntimeEndpoint> endpoints = new HashMap<String, RuntimeEndpoint>(); + servlet.getServletContext().setAttribute(ENDPOINTS_KEY, endpoints); + Map<String, Operation> operations = new HashMap<String, Operation>(); + servlet.getServletContext().setAttribute(OPERATIONS_KEY, operations); + } + String url = endpoint.getBinding().getURI() + "/" + operation.getName(); + System.out.println("Adding endpoint and operation for url: " + url); + Map<String, RuntimeEndpoint> endpoints = + (Map<String, RuntimeEndpoint>)servlet.getServletContext().getAttribute(ENDPOINTS_KEY); + endpoints.put(url, endpoint); + Map<String, Operation> operations = + (Map<String, Operation>)servlet.getServletContext().getAttribute(OPERATIONS_KEY); + operations.put(url, operation); + } + +} |