Author: antelder
Date: Fri Nov 30 01:48:31 2007
New Revision: 599758

URL: http://svn.apache.org/viewvc?rev=599758&view=rev
Log:
Simplify by reusing code in host-webapp

Added:
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
   (with props)
Removed:
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TomcatModuleActivator.java
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TomcatServletHost.java
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/resources/META-INF/services/org.apache.tuscany.sca.core.ModuleActivator
Modified:
    incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml
    
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java

Modified: incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml?rev=599758&r1=599757&r2=599758&view=diff
==============================================================================
--- incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml (original)
+++ incubator/tuscany/java/sca/modules/runtime-tomcat/pom.xml Fri Nov 30 
01:48:31 2007
@@ -78,5 +78,11 @@
                <version>1.1-incubating-SNAPSHOT</version>
         </dependency>
 
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-host-webapp</artifactId>
+               <version>1.1-incubating-SNAPSHOT</version>
+        </dependency>
+
     </dependencies>
 </project>

Modified: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java?rev=599758&r1=599757&r2=599758&view=diff
==============================================================================
--- 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
 (original)
+++ 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyHost.java
 Fri Nov 30 01:48:31 2007
@@ -20,17 +20,15 @@
 package org.apache.tuscany.sca.runtime.tomcat;
 
 import java.io.File;
-import java.io.IOException;
-import java.io.PrintWriter;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Map;
 
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
 
 import org.apache.catalina.Container;
-import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.Wrapper;
 import org.apache.catalina.core.StandardContext;
@@ -55,6 +53,8 @@
     private static final String REPO = "../sca-contributions";
 
     protected Launcher launcher;
+
+    private String contextPath = "/tuscany";
     
     public synchronized void start() throws LifecycleException {
         startRuntime();
@@ -69,8 +69,6 @@
     private void startRuntime() {
         System.out.println("XXXXXXXX TomcatHost.startRuntime");
         
-        TomcatServletHost.getInstance().setTuscanyHost(this);
-
         addTuscany();
         
         launcher = new Launcher(new File(REPO));
@@ -84,41 +82,18 @@
 
     private void addTuscany() {
         StandardContext tc = new TuscanyContext();
-        tc.setPath("/tuscany");
+        tc.setPath(contextPath);
         tc.setDocBase("tuscany");
         super.addChild(tc);
-    }
-
-    public void registerMapping(String mapping, Servlet servlet) {
-        Context ctx = map(mapping);
-        if (ctx == null) {
-            throw new UnsupportedOperationException("Cannot find context for 
mapping " + mapping);
-        }
-        String contextPath = ctx.getPath();
-
-        mapping = mapping.substring(contextPath.length());
-        Wrapper wrapper = new TuscanyWrapper(servlet);
-        wrapper.setName(mapping);
-        ctx.addChild(wrapper);
-        wrapper.addMapping(mapping);
-        ctx.getMapper().addWrapper(mapping, wrapper, false);
-    }
-
-    public Servlet unregisterMapping(String mapping) {
-        Context ctx = map(mapping);
-        if (ctx == null) {
-            throw new UnsupportedOperationException("Cannot find context for 
mapping " + mapping);
-        }
-        String contextPath = ctx.getPath();
-
-        mapping = mapping.substring(contextPath.length());
         
-        TuscanyWrapper wrapper = (TuscanyWrapper) ctx.findChild(mapping);
-        ctx.getMapper().removeWrapper(mapping);
-        ctx.removeChild(wrapper);
-
-        return wrapper.getServlet();
+        TuscanyServlet s = new TuscanyServlet();
+        s.init(new MockServletConfig(contextPath));
+        Wrapper wrapper = new TuscanyWrapper(s);
+        wrapper.setName("TuscanyServlet");
+        tc.addChild(wrapper);
+        tc.addServletMapping("/*", "TuscanyServlet", true);
     }
+
     private void stopRuntime() {
         System.out.println("XXXXXXXX TomcatHost.stopRuntime");
         if (launcher != null) {
@@ -138,12 +113,30 @@
 
 }
 
-class TestServlet extends HttpServlet {
-    public void doGet(HttpServletRequest request,
-                      HttpServletResponse response)
-        throws ServletException, IOException {
-      PrintWriter out = response.getWriter();
-      out.println("hi!");
+class MockServletConfig implements ServletConfig {
+
+    Map<String, String> initParams;
+    
+    public MockServletConfig(String contextPath) {
+        initParams = new HashMap<String, String>();
+        initParams.put("contextPath", contextPath);
+    }
+
+    public String getInitParameter(String initParam) {
+        return initParams.get(initParam);
+    }
+
+    @SuppressWarnings("unchecked")
+    public Enumeration getInitParameterNames() {
+        return Collections.enumeration(initParams.keySet());
+    }
+
+    public ServletContext getServletContext() {
+        return null;
+    }
+
+    public String getServletName() {
+        return null;
     }
     
 }

Added: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
URL: 
http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java?rev=599758&view=auto
==============================================================================
--- 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
 (added)
+++ 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
 Fri Nov 30 01:48:31 2007
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+package org.apache.tuscany.sca.runtime.tomcat;
+
+import java.io.IOException;
+
+import javax.servlet.RequestDispatcher;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.tuscany.sca.host.webapp.WebAppServletHost;
+
+/**
+ * A servlet that forwards requests to the servlets registered with the Tuscany
+ * ServletHost.
+ * 
+ * TODO: Copy of host-webapp TuscanyServlet. Can be removed once host-webapp 
TuscanyServlet
+ *       moved over to latest SCADomain API.
+ */
+public class TuscanyServlet extends HttpServlet {
+    private static final long serialVersionUID = 1L;
+
+    private transient WebAppServletHost servletHost;
+
+    @Override
+    public void init(ServletConfig config) {
+        servletHost = WebAppServletHost.getInstance();
+        servletHost.initContextPath(config);
+    }
+
+    @Override
+    public void service(ServletRequest req, ServletResponse res) throws 
ServletException, IOException {
+        String path = ((HttpServletRequest)req).getPathInfo();
+        RequestDispatcher dispatcher = servletHost.getRequestDispatcher(path);
+        if (dispatcher == null) {
+            throw new IllegalStateException("No servlet registered for path: " 
+ path);
+        }
+
+        dispatcher.forward(req, res);
+    }
+
+}

Propchange: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
incubator/tuscany/java/sca/modules/runtime-tomcat/src/main/java/org/apache/tuscany/sca/runtime/tomcat/TuscanyServlet.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to