You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ke...@apache.org on 2007/03/02 04:46:11 UTC

svn commit: r513608 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: builder/XFormURLEncodedBuilder.java engine/HTTPLocationBasedDispatcher.java transport/http/util/RESTUtil.java

Author: keithc
Date: Thu Mar  1 19:46:10 2007
New Revision: 513608

URL: http://svn.apache.org/viewvc?view=rev&rev=513608
Log:
Fixing few issues in HTTPLocation based dispatching and XFormURLEncodedBuilder

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/HTTPLocationBasedDispatcher.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java?view=diff&rev=513608&r1=513607&r2=513608
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/builder/XFormURLEncodedBuilder.java Thu Mar  1 19:46:10 2007
@@ -44,10 +44,14 @@
                 (AxisBindingOperation) messageContext.getProperty(
                         Constants.AXIS_BINDING_OPERATION);
         String queryParameterSeparator = null;
+        String templatedPath = null;
         if (axisBindingOperation != null) {
-            queryParameterSeparator = (String) messageContext
+            queryParameterSeparator = (String) axisBindingOperation
                     .getProperty(WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR);
-        } else {
+            templatedPath =
+                (String) axisBindingOperation.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION);
+        }
+        if (queryParameterSeparator == null) {
             queryParameterSeparator =
                     WSDL20DefaultValueHolder.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR_DEFAULT;
         }
@@ -62,8 +66,6 @@
         } else {
             soapFactory = getSOAPFactory(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
         }
-        String templatedPath =
-                (String) messageContext.getProperty(WSDL2Constants.ATTR_WHTTP_LOCATION);
         EndpointReference endpointReference = messageContext.getTo();
         if (endpointReference == null) {
             throw new AxisFault("Cannot create DocumentElement without destination EPR");
@@ -100,7 +102,7 @@
 
         String queryString;
 
-        if (query != null) {
+        if (query != null && !"".equals(query)) {
 
             try {
                 queryString = URIEncoderDecoder.decode(query);
@@ -118,6 +120,7 @@
 
         }
 
+        if (inputStream != null) {
         try {
             InputStreamReader inputStreamReader =
                     new InputStreamReader(inputStream, charsetEncoding);
@@ -139,7 +142,7 @@
         } catch (IOException e) {
             throw new AxisFault(e);
         }
-
+        }
     }
 
     /**

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/HTTPLocationBasedDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/HTTPLocationBasedDispatcher.java?view=diff&rev=513608&r1=513607&r2=513608
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/HTTPLocationBasedDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/HTTPLocationBasedDispatcher.java Thu Mar  1 19:46:10 2007
@@ -49,7 +49,7 @@
         AxisService axisService = messageContext.getAxisService();
         if (axisService != null) {
             String uri = messageContext.getTo().getAddress();
-            String httpLocation = parseRequestURL(uri);
+            String httpLocation = parseRequestURL(uri, messageContext.getConfigurationContext().getServiceContextPath());
 
             if (httpLocation != null) {
                 AxisEndpoint axisEndpoint = (AxisEndpoint) messageContext
@@ -83,22 +83,29 @@
         init(new HandlerDescription(NAME));
     }
 
-    private String parseRequestURL (String path) {
+    private String parseRequestURL(String path, String servicePath) {
 
-            path = path.substring(1);
-            int index = path.indexOf("/");
-            String service = null;
+        int index = path.lastIndexOf(servicePath);
+        String service = null;
 
-            if (-1 != index) {
-                service =  path.substring(index);
+        if (-1 != index) {
+            int serviceStart = index + servicePath.length();
+            if (path.length() > serviceStart + 1) {
+                service = path.substring(serviceStart + 1);
+            }
+        }
+
+        index = service.indexOf("/");
+        if (-1 != index) {
+                service = service.substring(index);
         } else {
-                int queryIndex = path.indexOf("?");
-                if (queryIndex != -1) {
-                    service = path.substring(queryIndex);
-                }
+            int queryIndex = path.indexOf("?");
+            if (queryIndex != -1) {
+                service = service.substring(queryIndex);
             }
-             return service;
-   }
+        }
+        return service;
+    }
 
     /**
      * Given the requestPath that the request came to his method returns the corresponding axisOperation

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java?view=diff&rev=513608&r1=513607&r2=513608
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/util/RESTUtil.java Thu Mar  1 19:46:10 2007
@@ -61,9 +61,6 @@
                                    contentType);
 
             msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
-            msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE,
-                                   HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
-            return invokeAxisEngine(msgContext);
 
         } catch (AxisFault axisFault) {
             throw axisFault;
@@ -71,7 +68,11 @@
             throw new AxisFault(e);
         } catch (IOException e) {
             throw new AxisFault(e);
+        } finally{
+            msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE,
+                                               HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
         }
+        return invokeAxisEngine(msgContext);
     }
 
     public static Handler.InvocationResponse processURLRequest(MessageContext msgContext,
@@ -101,16 +102,18 @@
             }
 
             msgContext.setEnvelope(soapEnvelope);
-            msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE,
-                                   HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
-            return invokeAxisEngine(msgContext);
+
 
         } catch (AxisFault axisFault) {
             throw axisFault;
         }
         catch (IOException e) {
             throw new AxisFault(e);
+        } finally{
+            msgContext.setProperty(Constants.Configuration.MESSAGE_TYPE,
+                                               HTTPConstants.MEDIA_TYPE_APPLICATION_XML);
         }
+        return invokeAxisEngine(msgContext);
     }
 
     private static Handler.InvocationResponse invokeAxisEngine(MessageContext messageContext)



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