You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by ke...@apache.org on 2007/10/12 13:09:04 UTC

svn commit: r584132 - /webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java

Author: keithc
Date: Fri Oct 12 04:09:03 2007
New Revision: 584132

URL: http://svn.apache.org/viewvc?rev=584132&view=rev
Log:
Updating HTTPLocationBasedDispatcher to work for the common case where the endpoint url cannot distinguish the endpopint.


Modified:
    webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java

Modified: webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java?rev=584132&r1=584131&r2=584132&view=diff
==============================================================================
--- webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java (original)
+++ webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java Fri Oct 12 04:09:03 2007
@@ -59,12 +59,30 @@
             if (httpLocation != null) {
                 AxisEndpoint axisEndpoint = (AxisEndpoint) messageContext
                         .getProperty(WSDL2Constants.ENDPOINT_LOCAL_NAME);
+                // Here we check whether the request was dispatched to the correct endpoint. If it
+                // was we can dispatch the operation using the HTTPLocationDispatcher table of that
+                // specific endpoint. In most cases we wont be able to do this. So as a last resort
+                // iterate through the endpoint map and try to dispatch the operation.
                 if (axisEndpoint != null) {
                     Map httpLocationTable = (Map) axisEndpoint.getBinding()
                             .getProperty(WSDL2Constants.HTTP_LOCATION_TABLE);
                     if (httpLocationTable != null) {
                         return getOperationFromHTTPLocation(httpLocation, httpLocationTable);
                     }
+                } else {
+                    Map endpoints = axisService.getEndpoints();
+                    if (endpoints != null) {
+                        Iterator iterator = endpoints.values().iterator();
+                        while (iterator.hasNext()) {
+                            AxisEndpoint endpoint = (AxisEndpoint) iterator.next();
+                            Map httpLocationTable = (Map) endpoint.getBinding()
+                                    .getProperty(WSDL2Constants.HTTP_LOCATION_TABLE);
+                            if (httpLocationTable != null) {
+                                return getOperationFromHTTPLocation(httpLocation,
+                                                                    httpLocationTable);
+                            }
+                        }
+                    }
                 }
             } else {
                 log.debug("Attempt to check for Operation using HTTP Location failed");
@@ -118,6 +136,7 @@
      * Given the requestPath that the request came to his method returns the corresponding axisOperation
      *
      * @param requestPath - Part of the request url which is the part after the service name
+     * @param httpLocationTable - The httpLocationTable stored in the relavant binding
      * @return AxisOperation - The corresponding AxisOperation
      */
     private AxisOperation getOperationFromHTTPLocation(String requestPath, Map httpLocationTable) {



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