summaryrefslogtreecommitdiffstats
path: root/java/sca/modules/implementation-web-runtime
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-12 11:11:42 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2008-08-12 11:11:42 +0000
commit26a224f07b26d2aa59e156d81d410b864db48273 (patch)
tree90abd9bc696a1f3cc1cfb7ad4eb06c5d6dd12663 /java/sca/modules/implementation-web-runtime
parent87a1386ea8d95f5dd1596451e1ac30ee5f0e5964 (diff)
Update to add and use the ComponentContext to the app context
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@685119 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/sca/modules/implementation-web-runtime')
-rw-r--r--java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java28
-rw-r--r--java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java24
-rw-r--r--java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java22
3 files changed, 72 insertions, 2 deletions
diff --git a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java
index fd51eac208..c08129dc85 100644
--- a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java
+++ b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java
@@ -23,8 +23,11 @@ import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
@@ -45,10 +48,18 @@ public class ComponentContextServlet extends HttpServlet {
protected static final String FOOTER = "/** --- Apache Tuscany componentContext.js EOF --- */\n";
public static final String COMPONENT_CONTEXT_SCRIPT_URI = "org.apache.tuscany.sca.componentContext.js";
+
+ protected transient Map<String, Object> attributes = new HashMap<String, Object>();
+ protected transient ServletContext servletContext;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
-
+ this.servletContext = servletConfig.getServletContext();
+ if (attributes.size() > 0) {
+ for (String name : attributes.keySet()) {
+ servletContext.setAttribute(name, attributes.get(name));
+ }
+ }
}
@Override
@@ -103,4 +114,19 @@ public class ComponentContextServlet extends HttpServlet {
// TODO: support properties
}
+ /**
+ * Set an attribute on the ServletContext
+ */
+ public void setAttribute(String name, Object value) {
+ if (servletContext != null) {
+ servletContext.setAttribute(name, value);
+ } else {
+ attributes.put(name, value);
+ }
+ }
+
+ public void addContextScriptProcessor(ContextScriptProcessor csp) {
+ // TODO Auto-generated method stub
+
+ }
}
diff --git a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java
index 49124331df..89b951e7d2 100644
--- a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java
+++ b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java
@@ -19,11 +19,33 @@
package org.apache.tuscany.sca.implementation.web;
+import java.util.ArrayList;
+import java.util.List;
+
public class DefaultContextScriptProcessorExtensionPoint implements ContextScriptProcessorExtensionPoint {
+ protected ComponentContextServlet componentContextServlet;
+ protected List<ContextScriptProcessor> tempCSPHolder = new ArrayList<ContextScriptProcessor>();
+
+ public DefaultContextScriptProcessorExtensionPoint() {
+ }
+
public void addContextScriptProcessor(ContextScriptProcessor csp) {
- WebSingleton.INSTANCE.addContextScriptProcessor(csp);
+ if (componentContextServlet != null) {
+ componentContextServlet.addContextScriptProcessor(csp);
+ } else {
+ tempCSPHolder.add(csp);
+ }
+ }
+
+ public void setComponentContextServlet(ComponentContextServlet servlet) {
+ componentContextServlet = servlet;
+ if (tempCSPHolder.size() > 0) {
+ for (ContextScriptProcessor csp : tempCSPHolder) {
+ componentContextServlet.addContextScriptProcessor(csp);
+ }
+ }
}
}
diff --git a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
index 18a1bd3326..1692cb2b42 100644
--- a/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
+++ b/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
@@ -18,8 +18,15 @@
*/
package org.apache.tuscany.sca.implementation.web.runtime;
+import java.util.List;
+
import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.host.http.ServletHost;
+import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
import org.apache.tuscany.sca.host.webapp.WebAppServletHost;
+import org.apache.tuscany.sca.implementation.web.ComponentContextServlet;
+import org.apache.tuscany.sca.implementation.web.ContextScriptProcessorExtensionPoint;
+import org.apache.tuscany.sca.implementation.web.DefaultContextScriptProcessorExtensionPoint;
import org.apache.tuscany.sca.implementation.web.WebImplementation;
import org.apache.tuscany.sca.interfacedef.Operation;
import org.apache.tuscany.sca.invocation.Invoker;
@@ -29,11 +36,26 @@ import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.apache.tuscany.sca.runtime.RuntimeComponentService;
public class WebImplementationProviderFactory implements ImplementationProviderFactory<WebImplementation> {
+ private ServletHost servletHost;
+ private ComponentContextServlet contextServlet;
+
public WebImplementationProviderFactory(ExtensionPointRegistry extensionPoints) {
+ ServletHostExtensionPoint servletHosts = extensionPoints.getExtensionPoint(ServletHostExtensionPoint.class);
+ List<ServletHost> hosts = servletHosts.getServletHosts();
+ if (!hosts.isEmpty()) {
+ this.servletHost = hosts.get(0);
+ }
+
+ contextServlet = new ComponentContextServlet();
+
+ DefaultContextScriptProcessorExtensionPoint dcspep = (DefaultContextScriptProcessorExtensionPoint)extensionPoints.getExtensionPoint(ContextScriptProcessorExtensionPoint.class);
+ dcspep.setComponentContextServlet(contextServlet);
}
public ImplementationProvider createImplementationProvider(RuntimeComponent component, WebImplementation implementation) {
+ servletHost.addServletMapping("org.osoa.sca.componentContext.js", contextServlet);
+ contextServlet.setAttribute("org.osoa.sca.ComponentContext", new ComponentContextProxy(component));
WebAppServletHost.getInstance().setAttribute("org.osoa.sca.ComponentContext", new ComponentContextProxy(component));
return new ImplementationProvider() {