You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2008/08/12 13:11:43 UTC

svn commit: r685119 - in /tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web: ./ runtime/

Author: antelder
Date: Tue Aug 12 04:11:42 2008
New Revision: 685119

URL: http://svn.apache.org/viewvc?rev=685119&view=rev
Log:
Update to add and use the ComponentContext to the app context

Modified:
    tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java
    tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java
    tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java

Modified: tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java?rev=685119&r1=685118&r2=685119&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java (original)
+++ tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/ComponentContextServlet.java Tue Aug 12 04:11:42 2008
@@ -23,8 +23,11 @@
 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 @@
     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 @@
         // 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
+        
+    }
 }

Modified: tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java?rev=685119&r1=685118&r2=685119&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java (original)
+++ tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/DefaultContextScriptProcessorExtensionPoint.java Tue Aug 12 04:11:42 2008
@@ -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);
+            }
+        }
     }
 
 }

Modified: tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java
URL: http://svn.apache.org/viewvc/tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java?rev=685119&r1=685118&r2=685119&view=diff
==============================================================================
--- tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java (original)
+++ tuscany/java/sca/modules/implementation-web-runtime/src/main/java/org/apache/tuscany/sca/implementation/web/runtime/WebImplementationProviderFactory.java Tue Aug 12 04:11:42 2008
@@ -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.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() {