antelder
Fri, 30 Nov 2007 01:48:55 -0800
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]