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 sa...@apache.org on 2006/02/14 08:45:02 UTC

svn commit: r377664 - /webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java

Author: saminda
Date: Mon Feb 13 23:45:01 2006
New Revision: 377664

URL: http://svn.apache.org/viewcvs?rev=377664&view=rev
Log:
Applying Thilini's patch. Improvement of client side REST handling. No test case is available. 

Modified:
    webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java

Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java?rev=377664&r1=377663&r2=377664&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/RESTSender.java Mon Feb 13 23:45:01 2006
@@ -29,10 +29,11 @@
 public class RESTSender extends AbstractHTTPSender {
     private Log log = LogFactory.getLog(getClass());
 
+    /*Obtain two strings;one to go in the url and rest to pass in the body
+    **when doing POST in application/x-www-form-urlencoded form.
+    */
     public RequestData createRequest(MessageContext msgContext, OMElement dataout) {
 
-        // Obtain two strings;one to go in the url and rest to pass in the body
-        // when doing POST in application/x-www-form-urlencoded form.
         RequestData data = new RequestData();
         Iterator iter1 = dataout.getChildElements();
         ArrayList paraList = new ArrayList();
@@ -40,8 +41,8 @@
 
         // urlParameterList contains the parameters which go in the URL
         String[] urlParameterList = new String[0];
-        if (msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST)!=null){
-           urlParameterList = (String[])msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST);
+        if (msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST) != null) {
+            urlParameterList = (String[]) msgContext.getProperty(Constants.Configuration.URL_PARAMETER_LIST);
         }
         OMElement bodypara = OMAbstractFactory.getOMFactory().createOMElement("temp", null);
 
@@ -68,11 +69,9 @@
         }
 
         String urlString = "";
-
         for (int i = 0; i < urlList.size(); i++) {
             String c = (String) urlList.get(i);
-
-            urlString = urlString + "&" + c;
+            urlString = "".equals(urlString) ? c : (urlString + "&" + c);
             data.urlRequest = urlString;
         }
 
@@ -90,8 +89,7 @@
 
         for (int j = 0; j < paraList.size(); j++) {
             String b = (String) paraList.get(j);
-
-            paraString = paraString + "&" + b;
+            paraString = "".equals(paraString) ? b : (paraString + "&" + b);
             data.bodyRequest = paraString;
         }
 
@@ -115,7 +113,7 @@
                     (String) msgContext.getProperty(Constants.Configuration.HTTP_METHOD);
 
             if ((httpMethod != null)
-                    && Constants.Configuration.HTTP_METHOD_GET.equalsIgnoreCase(httpMethod)) {
+                && Constants.Configuration.HTTP_METHOD_GET.equalsIgnoreCase(httpMethod)) {
                 this.sendViaGet(msgContext, url);
 
                 return;
@@ -138,14 +136,15 @@
         String charEncoding =
                 (String) msgContext.getProperty(MessageContext.CHARACTER_SET_ENCODING);
 
-        if (charEncoding == null) {    // Default encoding scheme
+        // Default encoding scheme
+        if (charEncoding == null) {
             getMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE,
-                    HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="
-                            + MessageContext.DEFAULT_CHAR_SET_ENCODING);
+                                       HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="
+                                       + MessageContext.DEFAULT_CHAR_SET_ENCODING);
         } else {
             getMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE,
-                    HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="
-                            + charEncoding);
+                                       HTTPConstants.MEDIA_TYPE_X_WWW_FORM + "; charset="
+                                       + charEncoding);
         }
 
         this.httpClient = new HttpClient();
@@ -177,14 +176,14 @@
 
             if (value != null) {
                 if ((value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)
-                        || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {
+                    || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {
                     processResponse(getMethod, msgContext);
                 }
             }
         } else {
             throw new AxisFault(Messages.getMessage("transportError",
-                    String.valueOf(getMethod.getStatusCode()),
-                    getMethod.getResponseBodyAsString()));
+                                                    String.valueOf(getMethod.getStatusCode()),
+                                                    getMethod.getResponseBodyAsString()));
         }
     }
 
@@ -227,14 +226,19 @@
         if (httpContentType.equalsIgnoreCase(HTTPConstants.MEDIA_TYPE_X_WWW_FORM)) {
             reqData = createRequest(msgContext, dataout);
             postMethod.setPath(url.getPath() + ((reqData.urlRequest) != null
-                    ? ("?" + reqData.urlRequest)
-                    : ""));
+                                                ? ("?" + reqData.urlRequest)
+                                                : ""));
+
+            if (reqData.bodyRequest == null) {
+                reqData.bodyRequest = "0";
+            }
             postMethod.setRequestEntity(new AxisRESTRequestEntity(reqData.bodyRequest,
-                    charEncoding, msgContext, httpContentType));
+                                                                  charEncoding, msgContext, httpContentType));
+
         } else {
             postMethod.setPath(url.getPath());
             postMethod.setRequestEntity(new AxisRequestEntity(dataout, chunked, msgContext,
-                    charEncoding, soapActionString));
+                                                              charEncoding, soapActionString));
         }
 
         if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chunked) {
@@ -253,14 +257,14 @@
             if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) {
                 httpClient.getParams().setVersion(HttpVersion.HTTP_1_0);
                 postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION,
-                        HTTPConstants.HEADER_CONNECTION_KEEPALIVE);
+                                            HTTPConstants.HEADER_CONNECTION_KEEPALIVE);
             } else {
 
                 // allowing keep-alive for 1.1
                 postMethod.setRequestHeader(HTTPConstants.HEADER_CONNECTION,
-                        HTTPConstants.HEADER_CONNECTION_KEEPALIVE);
+                                            HTTPConstants.HEADER_CONNECTION_KEEPALIVE);
                 postMethod.setRequestHeader(HTTPConstants.HEADER_EXPECT,
-                        HTTPConstants.HEADER_EXPECT_100_Continue);
+                                            HTTPConstants.HEADER_EXPECT_100_Continue);
             }
         }
 
@@ -286,7 +290,7 @@
                     String value = contenttypeHheader.getValue();
 
                     if ((value.indexOf(SOAP11Constants.SOAP_11_CONTENT_TYPE) >= 0)
-                            || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {
+                        || (value.indexOf(SOAP12Constants.SOAP_12_CONTENT_TYPE) >= 0)) {
                         processResponse(postMethod, msgContext);
 
                         return;
@@ -295,8 +299,8 @@
             }
 
             throw new AxisFault(Messages.getMessage("transportError",
-                    String.valueOf(postMethod.getStatusCode()),
-                    postMethod.getResponseBodyAsString()));
+                                                    String.valueOf(postMethod.getStatusCode()),
+                                                    postMethod.getResponseBodyAsString()));
         } catch (Exception e) {
             log.error("Error in processing POST request", e);
         }
@@ -323,8 +327,7 @@
 
         for (int i = 0; i < count; i++) {
             String c = (String) paraList.get(i);
-
-            paraString = paraString + "&" + c;
+            paraString = "".equals(paraString) ? c : (paraString + "&" + c);
         }
 
         return paraString;
@@ -360,7 +363,6 @@
             return true;
         }
     }
-
 
     private class RequestData {
         private String bodyRequest;