diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-12 11:11:42 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2008-08-12 11:11:42 +0000 |
commit | 26a224f07b26d2aa59e156d81d410b864db48273 (patch) | |
tree | 90abd9bc696a1f3cc1cfb7ad4eb06c5d6dd12663 /java/sca/modules/implementation-web-runtime | |
parent | 87a1386ea8d95f5dd1596451e1ac30ee5f0e5964 (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')
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() {
|