ws-axis-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kei...@apache.org
Subject svn commit: r584132 - /webservices/axis2/branches/java/1_3_post_mods/modules/kernel/src/org/apache/axis2/dispatchers/HTTPLocationBasedDispatcher.java
Date Fri, 12 Oct 2007 11:09:04 GMT
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


Mime
View raw message