You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by rf...@apache.org on 2010/09/08 07:56:06 UTC

svn commit: r993615 - in /tuscany/sca-java-2.x/trunk/modules: host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/ node-impl/src/main/java/org/apache/tuscany/sca/node/impl/

Author: rfeng
Date: Wed Sep  8 05:56:06 2010
New Revision: 993615

URL: http://svn.apache.org/viewvc?rev=993615&view=rev
Log:
Fix the base URI display

Added:
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java   (with props)
Modified:
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java
    tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
    tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java

Added: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java?rev=993615&view=auto
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java (added)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java Wed Sep  8 05:56:06 2010
@@ -0,0 +1,83 @@
+/*
+ * 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.webapp;
+
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.ServletContext;
+
+import org.apache.tuscany.sca.contribution.Artifact;
+import org.apache.tuscany.sca.contribution.Contribution;
+import org.apache.tuscany.sca.contribution.ContributionFactory;
+import org.apache.tuscany.sca.contribution.PackageType;
+import org.apache.tuscany.sca.contribution.processor.ContributionReadException;
+import org.apache.tuscany.sca.contribution.scanner.ContributionScanner;
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.FactoryExtensionPoint;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
+
+/**
+ * 
+ */
+public class WebAppContributionScanner implements ContributionScanner {
+    private ServletContext servletContext;
+    private ContributionFactory contributionFactory;
+
+    public WebAppContributionScanner(ExtensionPointRegistry registry) {
+        super();
+        this.servletContext = registry.getExtensionPoint(UtilityExtensionPoint.class).getUtility(ServletContext.class);
+        this.contributionFactory =
+            registry.getExtensionPoint(FactoryExtensionPoint.class).getFactory(ContributionFactory.class);
+    }
+
+    public String getContributionType() {
+        return PackageType.WAR;
+    }
+
+    public List<Artifact> scan(Contribution contribution) throws ContributionReadException {
+        try {
+            List<Artifact> artifacts = new ArrayList<Artifact>();
+            URL location = new URL(contribution.getLocation());
+            URL root = servletContext.getResource("/");
+            URI relative = root.toURI().relativize(location.toURI());
+            String path = relative.getPath();
+            if (!path.startsWith("/")) {
+                path = "/" + path;
+            }
+            for (Object file : servletContext.getResourcePaths(path)) {
+                Artifact artifact = contributionFactory.createArtifact();
+                String name = (String)file;
+                // Remove leading /
+                name = name.substring(1);
+                artifact.setURI(name);
+                URL artifactURL = new URL(location, name);
+                artifact.setLocation(artifactURL.toString());
+                artifacts.add(artifact);
+            }
+            return artifacts;
+        } catch (Exception e) {
+            throw new ContributionReadException(e);
+        }
+    }
+
+}

Propchange: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppContributionScanner.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java?rev=993615&r1=993614&r2=993615&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppHelper.java Wed Sep  8 05:56:06 2010
@@ -31,6 +31,7 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 
 import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.core.UtilityExtensionPoint;
 import org.apache.tuscany.sca.host.http.ServletHost;
 import org.apache.tuscany.sca.host.http.ServletHostExtensionPoint;
 import org.apache.tuscany.sca.node.Node;
@@ -72,6 +73,13 @@ public class WebAppHelper {
             }
         }
     }
+    
+    private static String[] parse(String listOfValues) {
+        if (listOfValues == null) {
+            return null;
+        }
+        return listOfValues.split("(\\s|,)+");
+    }
 
     @SuppressWarnings("unchecked")
     private static NodeConfiguration getNodeConfiguration(ServletContext servletContext) throws IOException,
@@ -88,21 +96,31 @@ public class WebAppHelper {
                 String name = names.nextElement();
                 if (name.equals(CONTRIBUTION) || name.startsWith(CONTRIBUTION + ".")) {
                     // We need to have a way to select one or more folders within the webapp as the contributions
-                    String contrib = (String)servletContext.getAttribute(name);
-                    if (contrib != null) {
-                        File f = new File(getResource(servletContext, contrib).toURI());
-                        configuration.addContribution(f.toURI().toURL());
+                    String listOfValues = (String)servletContext.getAttribute(name);
+                    if (listOfValues != null) {
+                        for (String path : parse(listOfValues)) {
+                            if ("".equals(path)) {
+                                continue;
+                            }
+                            File f = new File(getResource(servletContext, path).toURI());
+                            configuration.addContribution(f.toURI().toURL());
+                        }
                     }
                 } else if (name.equals(CONTRIBUTIONS) || name.startsWith(CONTRIBUTIONS + ".")) {
-                    String contrib = (String)servletContext.getAttribute(name);
-                    if (contrib != null) {
-                        File f = new File(getResource(servletContext, contrib).toURI());
-                        if (f.isDirectory()) {
-                            for (File n : f.listFiles()) {
-                                configuration.addContribution(n.toURI().toURL());
+                    String listOfValues = (String)servletContext.getAttribute(name);
+                    if (listOfValues != null) {
+                        for (String path : parse(listOfValues)) {
+                            if ("".equals(path)) {
+                                continue;
+                            }
+                            File f = new File(getResource(servletContext, path).toURI());
+                            if (f.isDirectory()) {
+                                for (File n : f.listFiles()) {
+                                    configuration.addContribution(n.toURI().toURL());
+                                }
+                            } else {
+                                configuration.addContribution(f.toURI().toURL());
                             }
-                        } else {
-                            configuration.addContribution(f.toURI().toURL());
                         }
                     }
                 }
@@ -163,7 +181,12 @@ public class WebAppHelper {
                 } else {
                     factory = NodeFactory.newInstance();
                 }
+                
+                // Add ServletContext as a utility
                 ExtensionPointRegistry registry = factory.getExtensionPointRegistry();
+                UtilityExtensionPoint utilityExtensionPoint = registry.getExtensionPoint(UtilityExtensionPoint.class);
+                utilityExtensionPoint.addUtility(ServletContext.class, servletContext);
+                
                 ServletHostExtensionPoint servletHosts = registry.getExtensionPoint(ServletHostExtensionPoint.class);
                 servletHosts.setWebApp(true);
 

Modified: tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java?rev=993615&r1=993614&r2=993615&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/host-webapp/src/main/java/org/apache/tuscany/sca/host/webapp/WebAppServletHost.java Wed Sep  8 05:56:06 2010
@@ -110,7 +110,7 @@ public class WebAppServletHost implement
         // as they are fixed by the Web container
         servlets.put(suri, servlet);
 
-        URL url = getURLMapping(suri, securityContext);
+        URL url = getURLMapping(pathURI.toString(), securityContext);
         logger.info("Added Servlet mapping: " + url);
         return url.toString();
     }
@@ -162,7 +162,8 @@ public class WebAppServletHost implement
             scheme = "http";
         }
         int portNumber = uri.getPort();
-        if (portNumber == -1) {
+        if (portNumber == -1 && uri.getScheme() == null) {
+            // Only set the default port number if the scheme is not present
             portNumber = defaultPortNumber;
         }
 

Modified: tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java?rev=993615&r1=993614&r2=993615&view=diff
==============================================================================
--- tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java (original)
+++ tuscany/sca-java-2.x/trunk/modules/node-impl/src/main/java/org/apache/tuscany/sca/node/impl/NodeFactoryImpl.java Wed Sep  8 05:56:06 2010
@@ -33,7 +33,6 @@ import java.net.URL;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;