diff options
Diffstat (limited to '')
21 files changed, 0 insertions, 1890 deletions
diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/LICENSE b/branches/sca-java-2.0-M4/modules/host-http-osgi/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed 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. - - - diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/META-INF/MANIFEST.MF b/branches/sca-java-2.0-M4/modules/host-http-osgi/META-INF/MANIFEST.MF deleted file mode 100644 index efe05b13da..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/META-INF/MANIFEST.MF +++ /dev/null @@ -1,25 +0,0 @@ -Manifest-Version: 1.0
-Private-Package: org.apache.tuscany.sca.http.osgi;version="2.0.0"
-Tool: Bnd-0.0.255
-Bundle-Name: Apache Tuscany SCA Jetty Servlet Host Extension
-Created-By: 1.6.0_07 (Sun Microsystems Inc.)
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bnd-LastModified: 1225397258562
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA Jetty Servlet Host Extension
-Import-Package: javax.net.ssl;resolution:=optional,
- javax.servlet,
- javax.servlet.http,
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.host.http;version="2.0.0",
- org.apache.tuscany.sca.work;version="2.0.0",
- org.osgi.framework;version="1.4.0",
- org.osgi.service.http;version="1.2",
- org.osgi.util.tracker;version="1.3.0"
-Bundle-SymbolicName: org.apache.tuscany.sca.host.http.osgi
-Bundle-DocURL: http://www.apache.org/
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: org.apache.tuscany.sca.http.osgi.OSGiServletHost
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/NOTICE b/branches/sca-java-2.0-M4/modules/host-http-osgi/NOTICE deleted file mode 100644 index 25bb89c9b2..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2009 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/pom.xml b/branches/sca-java-2.0-M4/modules/host-http-osgi/pom.xml deleted file mode 100644 index 8f397c6146..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/pom.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * 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. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-M4-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-host-http-osgi</artifactId> - <name>Apache Tuscany SCA OSGi HTTP Service Based Servlet Host Extension</name> - - <dependencies> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-host-http</artifactId> - <version>2.0-M4-SNAPSHOT</version> - </dependency> - <dependency> - <groupId>org.eclipse</groupId> - <artifactId>osgi</artifactId> - <version>3.5.0-v20090520</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.eclipse.osgi</groupId> - <artifactId>services</artifactId> - <version>3.2.0-v20090520-1800</version> - <scope>compile</scope> - </dependency> - <dependency> - <groupId>org.eclipse.equinox</groupId> - <artifactId>http</artifactId> - <version>1.0.300-v20090520-1800</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-extensibility-equinox</artifactId> - <version>2.0-M4-SNAPSHOT</version> - <scope>runtime</scope> - </dependency> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-node-launcher-equinox</artifactId> - <version>2.0-M4-SNAPSHOT</version> - <scope>test</scope> - </dependency> - </dependencies> - -</project> diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/HttpServiceWrapper.java b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/HttpServiceWrapper.java deleted file mode 100644 index 3cfca3e6c8..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/HttpServiceWrapper.java +++ /dev/null @@ -1,145 +0,0 @@ -/* - * 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.http.osgi; - -import javax.servlet.Servlet; - -import org.osgi.framework.BundleContext; -import org.osgi.framework.InvalidSyntaxException; -import org.osgi.framework.ServiceEvent; -import org.osgi.framework.ServiceListener; -import org.osgi.framework.ServiceReference; -import org.osgi.service.http.HttpService; -import org.osgi.util.tracker.ServiceTracker; - -/** - * A whiteboard for HttpService and Servlet - */ -public class HttpServiceWrapper { - - static final String SERVLET_URI = "servlet.uri"; - private ServiceTracker httpTracker; - private BundleContext bc; - - private class HttpServiceTracker extends ServiceTracker { - private HttpServiceTracker() { - super(bc, HttpService.class.getName(), null); - } - - @Override - public Object addingService(ServiceReference reference) { - HttpService httpService = (HttpService)super.addingService(reference); - // Register existing servlets - String filter = "(objectclass=" + Servlet.class.getName() + ")"; - ServiceReference[] servlets = null; - try { - servlets = bc.getServiceReferences(null, filter); - } catch (InvalidSyntaxException e) { - throw new IllegalStateException(e); - } - for (int i = 0; servlets != null && i < servlets.length; i++) { - Servlet servlet = (Servlet)bc.getService(servlets[i]); - String alias = (String)servlets[i].getProperty(SERVLET_URI); - - try { - httpService.registerServlet(alias, servlet, null, null); - } catch (Exception e) { - throw new IllegalStateException(e); - } - } - return httpService; - } - } - - public HttpServiceWrapper(BundleContext bc) { - super(); - this.bc = bc; - } - - void open() { - httpTracker = new HttpServiceTracker(); - httpTracker.open(); - - ServiceListener sl = new ServiceListener() { - public void serviceChanged(ServiceEvent ev) { - ServiceReference sr = ev.getServiceReference(); - switch (ev.getType()) { - case ServiceEvent.REGISTERED: { - registerServlet(sr); - } - break; - case ServiceEvent.UNREGISTERING: { - unregisterServlet(sr); - } - break; - } - } - }; - - String filter = "(objectclass=" + Servlet.class.getName() + ")"; - try { - bc.addServiceListener(sl, filter); - ServiceReference[] servlets = bc.getServiceReferences(null, filter); - for (int i = 0; servlets != null && i < servlets.length; i++) { - sl.serviceChanged(new ServiceEvent(ServiceEvent.REGISTERED, servlets[i])); - } - } catch (InvalidSyntaxException e) { - e.printStackTrace(); - } - } - - void close() { - if (httpTracker != null) { - httpTracker.close(); - } - } - - void registerServlet(ServiceReference sr) { - Servlet servlet = (Servlet)bc.getService(sr); - String alias = (String)sr.getProperty(SERVLET_URI); - - Object[] httpServices = httpTracker.getServices(); - - for (int i = 0; httpServices != null && i < httpServices.length; i++) { - HttpService http = (HttpService)httpServices[i]; - try { - http.registerServlet(alias, servlet, null, null); - } catch (Exception e) { - throw new IllegalStateException(e); - } - } - } - - void unregisterServlet(ServiceReference sr) { - String alias = (String)sr.getProperty(SERVLET_URI); - Object[] httpServices = httpTracker.getServices(); - - for (int i = 0; httpServices != null && i < httpServices.length; i++) { - HttpService http = (HttpService)httpServices[i]; - try { - http.unregister(alias); - } catch (Exception e) { - throw new IllegalStateException(e); - } - bc.ungetService(sr); - } - } - -} diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/OSGiServletHost.java b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/OSGiServletHost.java deleted file mode 100644 index db77162b41..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/OSGiServletHost.java +++ /dev/null @@ -1,275 +0,0 @@ -/* - * 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.http.osgi; - -import java.io.IOException; -import java.io.PrintWriter; -import java.net.InetAddress; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.net.UnknownHostException; -import java.util.Dictionary; -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.logging.Logger; - -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServlet; - -import org.apache.tuscany.sca.host.http.ServletHost; -import org.apache.tuscany.sca.host.http.ServletMappingException; -import org.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceRegistration; - -/** - * - */ -public class OSGiServletHost implements ServletHost, BundleActivator { - static final String DUMMY_URI = "/_tuscany"; - - /** - * Default servlet - */ - private static class DefaultServlet extends HttpServlet { - - @Override - public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { - PrintWriter pw = response.getWriter(); - pw.println("<html><body><h1>Apache Tuscany</h1></body></html>"); - pw.flush(); - } - } - - private Map<String, Servlet> servlets = new ConcurrentHashMap<String, Servlet>(); - - private static final Logger logger = Logger.getLogger(OSGiServletHost.class.getName()); - - private String contextPath = "/"; - private int defaultPortNumber = 8080; - - private ServletContext servletContext; - private Map<String, Object> attributes = new HashMap<String, Object>(); - private HttpServiceWrapper wrapper; - - private static BundleContext bundleContext; - - public void start(BundleContext context) { - bundleContext = context; - wrapper = new HttpServiceWrapper(bundleContext); - wrapper.open(); - - HttpServlet defaultServlet = new DefaultServlet(); - addServletMapping(DUMMY_URI, defaultServlet); - // this.servletContext = defaultServlet.getServletContext(); - } - - public void stop(BundleContext bundleContext) { - removeServletMapping(DUMMY_URI); - wrapper.close(); - } - - public void setDefaultPort(int port) { - defaultPortNumber = port; - } - - public int getDefaultPort() { - return defaultPortNumber; - } - - public void addServletMapping(String suri, Servlet servlet) throws ServletMappingException { - URI pathURI = URI.create(suri); - - // Make sure that the path starts with a / - suri = pathURI.getPath(); - if (!suri.startsWith("/")) { - suri = '/' + suri; - } - - if (!suri.startsWith(contextPath)) { - suri = contextPath + suri; - } - - // In a webapp just use the given path and ignore the host and port - // as they are fixed by the Web container - try { - Dictionary<String, Object> props = new Hashtable<String, Object>(); - props.put(HttpServiceWrapper.SERVLET_URI, suri); - ServiceRegistration reg = bundleContext.registerService(Servlet.class.getName(), servlet, props); - servlets.put(suri, servlet); - } catch (Exception e) { - throw new ServletMappingException(e); - } - - logger.info("Added Servlet mapping: " + suri); - } - - public Servlet removeServletMapping(String suri) throws ServletMappingException { - URI pathURI = URI.create(suri); - - // Make sure that the path starts with a / - suri = pathURI.getPath(); - if (!suri.startsWith("/")) { - suri = '/' + suri; - } - - if (!suri.startsWith(contextPath)) { - suri = contextPath + suri; - } - - // In a webapp just use the given path and ignore the host and port - // as they are fixed by the Web container - try { - return servlets.remove(suri); - } catch (Exception e) { - throw new ServletMappingException(e); - } - - } - - public Servlet getServletMapping(String suri) throws ServletMappingException { - if (!suri.startsWith("/")) { - suri = '/' + suri; - } - - if (!suri.startsWith(contextPath)) { - suri = contextPath + suri; - } - - // Get the Servlet mapped to the given path - Servlet servlet = servlets.get(suri); - return servlet; - } - - public URL getURLMapping(String suri) throws ServletMappingException { - URI uri = URI.create(suri); - - // Get the URI scheme and port - String scheme = uri.getScheme(); - if (scheme == null) { - scheme = "http"; - } - int portNumber = uri.getPort(); - if (portNumber == -1) { - portNumber = defaultPortNumber; - } - - // Get the host - String host; - try { - host = InetAddress.getLocalHost().getHostName(); - } catch (UnknownHostException e) { - host = "localhost"; - } - - // Construct the URL - String path = uri.getPath(); - if (!path.startsWith("/")) { - path = '/' + path; - } - - if (contextPath != null && !path.startsWith(contextPath)) { - path = contextPath + path; - } - - URL url; - try { - url = new URL(scheme, host, portNumber, path); - } catch (MalformedURLException e) { - throw new ServletMappingException(e); - } - return url; - } - - public RequestDispatcher getRequestDispatcher(String suri) throws ServletMappingException { - - // Make sure that the path starts with a / - if (!suri.startsWith("/")) { - suri = '/' + suri; - } - - suri = contextPath + suri; - - // Get the Servlet mapped to the given path - Servlet servlet = servlets.get(suri); - if (servlet != null) { - return new ServletRequestDispatcher(suri, servlet); - } - - for (Map.Entry<String, Servlet> entry : servlets.entrySet()) { - String servletPath = entry.getKey(); - if (servletPath.endsWith("*")) { - servletPath = servletPath.substring(0, servletPath.length() - 1); - if (suri.startsWith(servletPath)) { - // entry key is contextPath/servletPath, WebAppRequestDispatcher only wants servletPath - return new ServletRequestDispatcher(entry.getKey().substring(contextPath.length()), entry - .getValue()); - } else { - if ((suri + "/").startsWith(servletPath)) { - return new ServletRequestDispatcher(entry.getKey().substring(contextPath.length()), entry - .getValue()); - } - } - } - } - - // No Servlet found - return null; - } - - public String getContextPath() { - return contextPath; - } - - public void setContextPath(String path) { - } - - /** - * TODO: How context paths work is still up in the air so for now - * this hacks in a path that gets some samples working - * can't use setContextPath as NodeImpl calls that later - */ - public void setContextPath2(String path) { - if (path != null && path.length() > 0) { - this.contextPath = path; - } - } - - public void setAttribute(String name, Object value) { - if (servletContext != null) { - servletContext.setAttribute(name, value); - } else { - attributes.put(name, value); - } - } - - public String getName() { - return "osgi"; - } - -} diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/ServletRequestDispatcher.java b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/ServletRequestDispatcher.java deleted file mode 100644 index 789deeb94e..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/main/java/org/apache/tuscany/sca/http/osgi/ServletRequestDispatcher.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * 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.http.osgi; - -import java.io.IOException; -import java.util.StringTokenizer; - -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletRequestWrapper; - -/** - * A Servlet request dispatcher that can be used to delegate requests to a - * Servlet registered with the Webapp Servlet host. - * - * @version $Rev$ $Date$ - */ -class ServletRequestDispatcher implements RequestDispatcher { - private String servletPath; - private Servlet servlet; - - public ServletRequestDispatcher(String mapping, Servlet servlet) { - if (mapping.endsWith("*")) { - mapping = mapping.substring(0, mapping.length()-1); - } - if (mapping.endsWith("/")) { - mapping = mapping.substring(0, mapping.length()-1); - } - this.servletPath = mapping; - this.servlet = servlet; - } - - /** - * Returns a request wrapper which will return the correct Servlet path - * and path info. - * - * @param request - * @return - */ - private HttpServletRequest createRequestWrapper(ServletRequest request) { - HttpServletRequest requestWrapper = new HttpServletRequestWrapper((HttpServletRequest)request) { - - @Override - public String getServletPath() { - return servletPath; - } - - @Override - public String getPathInfo() { - String path = super.getServletPath(); - if (path.length() == 0) { - path = super.getPathInfo(); - } - - // TODO: another context path hack, revisit when context path is sorted out - path = fiddlePath(path, servletPath); - - return path; - } - }; - return requestWrapper; - } - - /** - * Remove any path suffix thats part of the Servlet context path - */ - protected String fiddlePath(String path, String servletPath) { - StringTokenizer st = new StringTokenizer(path, "/"); - if (st.countTokens() == 1) { - return path; - } - String root = ""; - while (st.hasMoreTokens()){ - String s = st.nextToken(); - if (servletPath.endsWith((root + "/" + s))) { - root += "/" + s; - } else { - break; - } - } - String fiddlePath = path.substring(root.length()); - return fiddlePath; - } - - public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException { - servlet.service(createRequestWrapper(request), response); - } - - public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException { - servlet.service(createRequestWrapper(request), response); - } -} - diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/java/org/apache/tuscany/sca/http/osgi/OSGiServletHostTestCase.java b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/java/org/apache/tuscany/sca/http/osgi/OSGiServletHostTestCase.java deleted file mode 100644 index b38543a7e9..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/java/org/apache/tuscany/sca/http/osgi/OSGiServletHostTestCase.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * 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.http.osgi; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.net.URL; - -import org.apache.tuscany.sca.node.equinox.launcher.EquinoxHost; -import org.junit.AfterClass; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; - -/** - * - */ -public class OSGiServletHostTestCase { - /** Standard OSGi port property for HTTP service */ - public static final String HTTP_PORT = "org.osgi.service.http.port"; - - /** Standard OSGi port property for HTTPS service */ - public static final String HTTPS_PORT = "org.osgi.service.http.port.secure"; - - private static EquinoxHost host; - private static String port; - - /** - * @throws java.lang.Exception - */ - @BeforeClass - public static void setUpBeforeClass() throws Exception { - port = System.setProperty(HTTP_PORT, "8085"); - host = new EquinoxHost(); - BundleContext context = host.start(); - for (Bundle b : context.getBundles()) { - System.out.println(b.getSymbolicName()); - b.start(); - } - } - - /** - * @throws java.lang.Exception - */ - @AfterClass - public static void tearDownAfterClass() throws Exception { - if (host != null) { - host.stop(); - if (port != null) { - System.setProperty(HTTP_PORT, port); - } else { - System.clearProperty(HTTP_PORT); - } - } - } - - @Test - public void testHost() throws IOException { - URL url = new URL("http://localhost:8085" + OSGiServletHost.DUMMY_URI); - InputStream is = url.openStream(); - Reader reader = new InputStreamReader(is); - char[] content = new char[1024]; - int len = 0; - while (true) { - int size = reader.read(content, len, 1024 - len); - if (size < 0) { - break; - } - len += size; - } - Assert.assertTrue(len > 0); - String str = new String(content, 0, len); - System.out.println(str); - Assert.assertEquals("<html><body><h1>Apache Tuscany</h1></body></html>", str.trim()); - } -} diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/content/test.html b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/content/test.html deleted file mode 100644 index 9ee377e1ff..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/content/test.html +++ /dev/null @@ -1,23 +0,0 @@ -<!-- - * 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. ---> -<html> -<body> -<h1>Hello from Apache Tuscany!</h1> -</body> -</html>
\ No newline at end of file diff --git a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/tuscany.keyStore b/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/tuscany.keyStore Binary files differdeleted file mode 100644 index 7ea23f7ff4..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http-osgi/src/test/resources/tuscany.keyStore +++ /dev/null diff --git a/branches/sca-java-2.0-M4/modules/host-http/LICENSE b/branches/sca-java-2.0-M4/modules/host-http/LICENSE deleted file mode 100644 index 8aa906c321..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/LICENSE +++ /dev/null @@ -1,205 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed 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. - - - diff --git a/branches/sca-java-2.0-M4/modules/host-http/META-INF/MANIFEST.MF b/branches/sca-java-2.0-M4/modules/host-http/META-INF/MANIFEST.MF deleted file mode 100644 index b4ad3f121e..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/META-INF/MANIFEST.MF +++ /dev/null @@ -1,21 +0,0 @@ -Manifest-Version: 1.0
-Export-Package: org.apache.tuscany.sca.host.http;uses:="javax.servlet,
- javax.servlet.http";version="2.0.0"
-Tool: Bnd-0.0.255
-Bundle-Name: Apache Tuscany SCA HTTP Servlet Host Extension Point
-Created-By: 1.6.0_07 (Sun Microsystems Inc.)
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Version: 2.0.0
-Bnd-LastModified: 1225397255593
-Bundle-ManifestVersion: 2
-Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
-Bundle-Description: Apache Tuscany SCA HTTP Servlet Host Extension Poi
- nt
-Import-Package: javax.servlet,
- javax.servlet.http,
- org.apache.tuscany.sca.core;version="2.0.0",
- org.apache.tuscany.sca.extensibility;version="2.0.0",
- org.apache.tuscany.sca.host.http;version="2.0.0"
-Bundle-SymbolicName: org.apache.tuscany.sca.host.http
-Bundle-DocURL: http://www.apache.org/
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,JavaSE-1.6 diff --git a/branches/sca-java-2.0-M4/modules/host-http/NOTICE b/branches/sca-java-2.0-M4/modules/host-http/NOTICE deleted file mode 100644 index 25bb89c9b2..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/NOTICE +++ /dev/null @@ -1,6 +0,0 @@ -${pom.name} -Copyright (c) 2005 - 2009 The Apache Software Foundation - -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - diff --git a/branches/sca-java-2.0-M4/modules/host-http/pom.xml b/branches/sca-java-2.0-M4/modules/host-http/pom.xml deleted file mode 100644 index 26a12a92f9..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * 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. ---> -<project> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-modules</artifactId> - <version>2.0-M4-SNAPSHOT</version> - <relativePath>../pom.xml</relativePath> - </parent> - <artifactId>tuscany-host-http</artifactId> - <name>Apache Tuscany SCA HTTP Servlet Host Extension Point</name> - - <dependencies> - <dependency> - <groupId>org.apache.tuscany.sca</groupId> - <artifactId>tuscany-core-spi</artifactId> - <version>2.0-M4-SNAPSHOT</version> - </dependency> - - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - <scope>provided</scope> - </dependency> - </dependencies> - -</project> diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultResourceServlet.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultResourceServlet.java deleted file mode 100644 index 3de0b9f5a7..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultResourceServlet.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * 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.host.http; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.net.URLDecoder; - -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * A minimal implementation of a Servlet that serves documents in a document root - * directory. - * - * A Servlet host implementation is not required to use this implementation and can map - * the URI and document root to a more complete and more efficient implementation of - * a resource Servlet, for example the Tomcat or Jetty default Servlets. - * - * @version $Rev$ $Date$ - */ -public class DefaultResourceServlet extends HttpServlet implements Servlet { - private static final long serialVersionUID = 2865466417329430610L; - - private String documentRoot; - - /** - * Constructs a new ResourceServlet - * @param documentRoot the document root - */ - public DefaultResourceServlet(String documentRoot) { - this.documentRoot = documentRoot; - } - - /** - * Returns the document root. - * @return the document root - */ - public String getDocumentRoot() { - return documentRoot; - } - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - // Determine the resource path - String path = URLDecoder.decode(request.getRequestURI().substring(request.getServletPath().length()), "UTF-8"); - if (path.startsWith("/")) { - path = path.substring(1); - } - URL url = new URL(documentRoot + '/' + path); - - // Write the resource - InputStream is = url.openStream(); - OutputStream os = response.getOutputStream(); - byte[] buffer = new byte[2048]; - for (;;) { - int n = is.read(buffer); - if (n <= 0) - break; - os.write(buffer, 0, n); - } - } -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultServletHostExtensionPoint.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultServletHostExtensionPoint.java deleted file mode 100644 index d91485cbb5..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/DefaultServletHostExtensionPoint.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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.host.http; - -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; - -import org.apache.tuscany.sca.core.ExtensionPointRegistry; -import org.apache.tuscany.sca.core.LifeCycleListener; -import org.apache.tuscany.sca.extensibility.ServiceDeclaration; -import org.apache.tuscany.sca.extensibility.ServiceDiscovery; - -/** - * Default implementation of a Servlet host extension point. - * - * @version $Rev$ $Date$ - */ -public class DefaultServletHostExtensionPoint implements ServletHostExtensionPoint, LifeCycleListener { - - private List<ServletHost> servletHosts = new ArrayList<ServletHost>(); - private boolean loaded; - - private ExtensionPointRegistry registry; - - public DefaultServletHostExtensionPoint(ExtensionPointRegistry registry) { - this.registry = registry; - } - - public void addServletHost(ServletHost servletHost) { - servletHosts.add(servletHost); - if (servletHost instanceof LifeCycleListener) { - ((LifeCycleListener)servletHost).start(); - } - } - - public void removeServletHost(ServletHost servletHost) { - servletHosts.remove(servletHost); - if (servletHost instanceof LifeCycleListener) { - ((LifeCycleListener)servletHost).stop(); - } - } - - public List<ServletHost> getServletHosts() { - loadServletHosts(); - return servletHosts; - } - - private synchronized void loadServletHosts() { - if (loaded) - return; - - // Get the databinding service declarations - Collection<ServiceDeclaration> sds; - try { - sds = ServiceDiscovery.getInstance().getServiceDeclarations(ServletHost.class, true); - } catch (IOException e) { - throw new IllegalStateException(e); - } - - // Load data bindings - for (ServiceDeclaration sd : sds) { - // Create a data binding wrapper and register it - ServletHost servletHost = new LazyServletHost(sd); - addServletHost(servletHost); - } - - loaded = true; - } - - /** - * A data binding facade allowing data bindings to be lazily loaded and - * initialized. - */ - public class LazyServletHost implements ServletHost, LifeCycleListener { - private ServiceDeclaration sd; - private ServletHost host; - - /** - * @param sd - */ - public LazyServletHost(ServiceDeclaration sd) { - super(); - this.sd = sd; - } - - public synchronized ServletHost getServletHost() { - if (host == null) { - try { - Class<?> cls = sd.loadClass(); - Constructor<?> ctor = null; - try { - ctor = cls.getConstructor(ExtensionPointRegistry.class); - host = (ServletHost)ctor.newInstance(registry); - } catch (NoSuchMethodException e) { - ctor = cls.getConstructor(); - host = (ServletHost)ctor.newInstance(); - } - if(host instanceof LifeCycleListener) { - ((LifeCycleListener) host).start(); - } - } catch (Throwable e) { - throw new IllegalStateException(e); - } - } - return host; - } - - public void addServletMapping(String uri, Servlet servlet) throws ServletMappingException { - getServletHost().addServletMapping(uri, servlet); - } - - public String getContextPath() { - return getServletHost().getContextPath(); - } - - public int getDefaultPort() { - return getServletHost().getDefaultPort(); - } - - public RequestDispatcher getRequestDispatcher(String uri) throws ServletMappingException { - return getServletHost().getRequestDispatcher(uri); - } - - public Servlet getServletMapping(String uri) throws ServletMappingException { - return getServletHost().getServletMapping(uri); - } - - public URL getURLMapping(String uri) { - return getServletHost().getURLMapping(uri); - } - - public Servlet removeServletMapping(String uri) throws ServletMappingException { - return getServletHost().removeServletMapping(uri); - } - - public void setAttribute(String name, Object value) { - getServletHost().setAttribute(name, value); - } - - public void setContextPath(String path) { - getServletHost().setContextPath(path); - } - - public void setDefaultPort(int port) { - getServletHost().setDefaultPort(port); - } - - public String getName() { - return sd.getAttributes().get("name"); - } - - public void start() { - } - - public void stop() { - if (host instanceof LifeCycleListener) { - ((LifeCycleListener)host).stop(); - } - } - } - - public void start() { - } - - public void stop() { - for (ServletHost host : servletHosts) { - if (host instanceof LifeCycleListener) { - ((LifeCycleListener)host).stop(); - } - } - servletHosts.clear(); - registry = null; - } -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ExtensibleServletHost.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ExtensibleServletHost.java deleted file mode 100644 index 4dfa1dd8a3..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ExtensibleServletHost.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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.host.http; - -import java.net.URL; - -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; - -/** - * Default implementation of an extensible Servlet host. - * - * @version $Rev$ $Date$ - */ -public class ExtensibleServletHost implements ServletHost { - - private ServletHostExtensionPoint servletHosts; - - public ExtensibleServletHost(ServletHostExtensionPoint servletHosts) { - this.servletHosts = servletHosts; - } - - public void setDefaultPort(int port) { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - for (ServletHost servletHost: servletHosts.getServletHosts()) { - servletHost.setDefaultPort(port); - } - } - - private ServletHost getDefaultServletHost() { - return servletHosts.getServletHosts().get(0); - } - - public int getDefaultPort() { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - return getDefaultServletHost().getDefaultPort(); - } - - public void addServletMapping(String uri, Servlet servlet) throws ServletMappingException { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - // TODO implement selection of the correct Servlet host based on the mapping - // For now just select the first one - getDefaultServletHost().addServletMapping(uri, servlet); - } - - public Servlet getServletMapping(String uri) throws ServletMappingException { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - // TODO implement selection of the correct Servlet host based on the mapping - // For now just select the first one - return getDefaultServletHost().getServletMapping(uri); - } - - public Servlet removeServletMapping(String uri) throws ServletMappingException { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - // TODO implement selection of the correct Servlet host based on the mapping - // For now just select the first one - return getDefaultServletHost().removeServletMapping(uri); - } - - public RequestDispatcher getRequestDispatcher(String uri) throws ServletMappingException { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - // TODO implement selection of the correct Servlet host based on the mapping - // For now just select the first one - return getDefaultServletHost().getRequestDispatcher(uri); - } - - public String getContextPath() { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - // TODO implement selection of the correct Servlet host based on the mapping - // For now just select the first one - return getDefaultServletHost().getContextPath(); - } - - public URL getURLMapping(String uri) { - if (servletHosts.getServletHosts().isEmpty()) { - throw new ServletMappingException("No servlet host available"); - } - - return getDefaultServletHost().getURLMapping(uri); - } - - public void setContextPath(String path) { - getDefaultServletHost().setContextPath(path); - } - - public void setAttribute(String name, Object value) { - getDefaultServletHost().setAttribute(name, value); - } - - public String getName() { - return getDefaultServletHost().getName(); - } -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHost.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHost.java deleted file mode 100644 index dffc1e73d4..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHost.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * 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.host.http; - -import java.net.URL; - -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; - -/** - * Interface implemented by host environments that allow Servlets to be - * registered. - * <p/> - * This interface allows a system service to register a Servlet - * to handle inbound requests. - * - * @version $Rev$ $Date$ - */ -public interface ServletHost { - - /** - * Sets the default port for the server. - * - * @param port the default port - */ - void setDefaultPort(int port); - - /** - * Returns the default port for the server. - * - * @return the default port - */ - int getDefaultPort(); - - /** - * Add a mapping for an instance of a Servlet. This requests that the - * Servlet container direct all requests to the designated mapping to the - * supplied Servlet instance. - * - * @param uri the URI-mapping for the Servlet - * @param servlet the Servlet that should be invoked - * @throws ServletMappingException - */ - void addServletMapping(String uri, Servlet servlet) throws ServletMappingException; - - /** - * Remove a Servlet mapping. This directs the Servlet container not to direct - * any more requests to a previously registered Servlet. - * - * @param uri the URI-mapping for the Servlet - * @return the Servlet that was registered to the mapping, null if nothing - * was registered to the mapping - * @throws ServletMappingException - */ - Servlet removeServletMapping(String uri) throws ServletMappingException; - - /** - * Returns the Servlet mapped to the given URI. - * - * @param uri the URI-mapping for the Servlet - * @return the Servlet registered with the mapping - * @throws ServletMappingException - */ - Servlet getServletMapping(String uri) throws ServletMappingException; - - /** - * Returns a Servlet request dispatcher for the Servlet mapped to the specified URI. - * - * @param uri the URI mapped to a Servlet - * @return a RequestDispatcher that can be used to dispatch requests to - * that Servlet - * @throws ServletMappingException - */ - RequestDispatcher getRequestDispatcher(String uri) throws ServletMappingException; - - /** - * Returns the portion of the request URI that indicates the context of the request - * - * @return a String specifying the portion of the request URI that indicates the context of the request - */ - String getContextPath(); - - /** - * Sets the portion of the request URI that indicates the context of the request - * - * @param path the context path - */ - void setContextPath(String path); - - /** - * Returns the complete URL mapped to the specified URI. - * @return the URL mapped to the specified URI - */ - URL getURLMapping(String uri); - - /** - * Set an attribute in the application ServletContext - * @param name the name of the attribute - * @param value the attribute value - */ - void setAttribute(String name, Object value); - - String getName(); -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHostExtensionPoint.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHostExtensionPoint.java deleted file mode 100644 index fbd085ba2b..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHostExtensionPoint.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * 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.host.http; - -import java.util.List; - -/** - * An extension point for Servlet hosts. - * - * @version $Rev$ $Date$ - */ -public interface ServletHostExtensionPoint { - - /** - * Adds a Servlet host extension. - * - * @param servletHost - */ - void addServletHost(ServletHost servletHost); - - /** - * Removes a Servlet host extension. - * - * @param servletHost - */ - void removeServletHost(ServletHost servletHost); - - /** - * Returns a list of Servlet host extensions. - * - * @return - */ - List<ServletHost> getServletHosts(); - -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletMappingException.java b/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletMappingException.java deleted file mode 100644 index ae66c44c3e..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletMappingException.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * 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.host.http; - -/** - * Indicates an exception while registering a Servlet mapping. - * - * @version $Rev$ $Date$ - */ -public class ServletMappingException extends RuntimeException { - private static final long serialVersionUID = 1L; - - public ServletMappingException() { - super(); - } - - public ServletMappingException(String message) { - super(message); - } - - public ServletMappingException(String message, Throwable cause) { - super(message, cause); - } - - public ServletMappingException(Throwable cause) { - super(cause); - } -} diff --git a/branches/sca-java-2.0-M4/modules/host-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.host.http.ServletHostExtensionPoint b/branches/sca-java-2.0-M4/modules/host-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.host.http.ServletHostExtensionPoint deleted file mode 100644 index 44f4550b40..0000000000 --- a/branches/sca-java-2.0-M4/modules/host-http/src/main/resources/META-INF/services/org.apache.tuscany.sca.host.http.ServletHostExtensionPoint +++ /dev/null @@ -1,18 +0,0 @@ -# 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.
-
-org.apache.tuscany.sca.host.http.DefaultServletHostExtensionPoint
|