You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by an...@apache.org on 2007/05/14 12:06:00 UTC

svn commit: r537766 - in /incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2: TuscanyDispatcher.java TuscanyListingAgent.java

Author: antelder
Date: Mon May 14 03:05:56 2007
New Revision: 537766

URL: http://svn.apache.org/viewvc?view=rev&rev=537766
Log:
Fix axis2 binding to work in both webapp and standalone hetty hosts (?wsdl is still returning an incorrect endpoint

Modified:
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyDispatcher.java
    incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyListingAgent.java

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyDispatcher.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyDispatcher.java?view=diff&rev=537766&r1=537765&r2=537766
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyDispatcher.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyDispatcher.java Mon May 14 03:05:56 2007
@@ -20,6 +20,7 @@
 package org.apache.tuscany.sca.binding.axis2;
 
 import java.net.URI;
+import java.util.HashMap;
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
@@ -29,6 +30,7 @@
 import org.apache.axis2.description.HandlerDescription;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.RequestURIBasedDispatcher;
+import org.apache.axis2.util.JavaUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -60,7 +62,8 @@
             ConfigurationContext configurationContext = messageContext.getConfigurationContext();
             AxisConfiguration registry = configurationContext.getAxisConfiguration();
 
-            return registry.getService(path);
+            String serviceName = findAxisServiceName(registry, path);
+            return registry.getService(serviceName);
 
         } else {
             if(isDebugEnabled){
@@ -73,4 +76,26 @@
     public void initDispatcher() {
         init(new HandlerDescription(NAME));
     }
+
+    protected String findAxisServiceName(AxisConfiguration registry, String path) {
+        HashMap services = registry.getServices();
+        if (services == null) {
+            return null;
+        }
+        String[] parts = JavaUtils.split(path, '/');
+        String serviceName = "";
+        for (int i=parts.length-1; i>=0; i--) {
+            serviceName = parts[i] + serviceName;
+            if (services.containsKey(serviceName)) {
+                return serviceName;
+            }
+            serviceName = "/" + serviceName;
+            if (services.containsKey(serviceName)) {
+                return serviceName;
+            }
+        }
+
+        return null;
+    }
+
 }

Modified: incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyListingAgent.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyListingAgent.java?view=diff&rev=537766&r1=537765&r2=537766
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyListingAgent.java (original)
+++ incubator/tuscany/java/sca/modules/binding-ws-axis2/src/main/java/org/apache/tuscany/sca/binding/axis2/TuscanyListingAgent.java Mon May 14 03:05:56 2007
@@ -46,6 +46,7 @@
 import org.apache.axis2.description.PolicyInclude;
 import org.apache.axis2.transport.http.ListingAgent;
 import org.apache.axis2.util.ExternalPolicySerializer;
+import org.apache.axis2.util.JavaUtils;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyRegistry;
 import org.apache.ws.commons.schema.XmlSchema;
@@ -64,6 +65,27 @@
         super(aConfigContext);
     }
 
+    protected String findAxisServiceName(String path) {
+        HashMap services = configContext.getAxisConfiguration().getServices();
+        if (services == null) {
+            return null;
+        }
+        String[] parts = JavaUtils.split(path, '/');
+        String serviceName = "";
+        for (int i=parts.length-1; i>=0; i--) {
+            serviceName = parts[i] + serviceName;
+            if (services.containsKey(serviceName)) {
+                return serviceName;
+            }
+            serviceName = "/" + serviceName;
+            if (services.containsKey(serviceName)) {
+                return serviceName;
+            }
+        }
+
+        return null;
+    }
+    
     @Override
     public void processListService(HttpServletRequest req,
                                    HttpServletResponse res)
@@ -75,15 +97,16 @@
 //                                                filePart.length());
 // Change the Axis2 code so as to use the complete ServletPath as the service name
 // this line is the only change to to Axis2 code
-        String serviceName = req.getServletPath();
 
-        HashMap services = configContext.getAxisConfiguration().getServices();
+        String serviceName = findAxisServiceName(filePart);
+
         String query = req.getQueryString();
         int wsdl2 = query.indexOf("wsdl2");
         int wsdl = query.indexOf("wsdl");
         int xsd = query.indexOf("xsd");
         int policy = query.indexOf("policy");
 
+        HashMap services = configContext.getAxisConfiguration().getServices();
         if ((services != null) && !services.isEmpty()) {
             Object serviceObj = services.get(serviceName);
             if (serviceObj != null) {



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org