You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/04/26 05:11:39 UTC

svn commit: r937920 - in /camel/trunk/components: camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java

Author: ningjiang
Date: Mon Apr 26 03:11:39 2010
New Revision: 937920

URL: http://svn.apache.org/viewvc?rev=937920&view=rev
Log:
CAMEL-2673 Refactored the DefaultHttpBinding so user can override it easily

Modified:
    camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
    camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java

Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java?rev=937920&r1=937919&r2=937920&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/DefaultHttpBinding.java Mon Apr 26 03:11:39 2010
@@ -58,15 +58,12 @@ public class DefaultHttpBinding implemen
     }
 
     public void readRequest(HttpServletRequest request, HttpMessage message) {
-        // lets parser the parameterMap first to avoid consuming the POST parameters as InputStream
-        Map parameterMap = request.getParameterMap();
-        
+
         // lets force a parse of the body and headers
         message.getBody();
         // populate the headers from the request
         Map<String, Object> headers = message.getHeaders();
         
-        String contentType = "";
         //apply the headerFilterStrategy
         Enumeration names = request.getHeaderNames();
         while (names.hasMoreElements()) {
@@ -75,7 +72,6 @@ public class DefaultHttpBinding implemen
             // mapping the content-type 
             if (name.toLowerCase().equals("content-type")) {
                 name = Exchange.CONTENT_TYPE;
-                contentType = (String) value;                
             }
             if (headerFilterStrategy != null
                 && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
@@ -83,17 +79,7 @@ public class DefaultHttpBinding implemen
             }
         }
 
-        //we populate the http request parameters without checking the request method
-        
-        names = request.getParameterNames();
-        while (names.hasMoreElements()) {
-            String name = (String)names.nextElement();
-            Object value = request.getParameter(name);
-            if (headerFilterStrategy != null
-                && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
-                headers.put(name, value);
-            }
-        }
+        popluateRequestParameters(request, message);
         
         // store the method and query and other info in headers
         headers.put(Exchange.HTTP_METHOD, request.getMethod());
@@ -104,8 +90,26 @@ public class DefaultHttpBinding implemen
         headers.put(Exchange.CONTENT_TYPE, request.getContentType());
         headers.put(Exchange.HTTP_CHARACTER_ENCODING, request.getCharacterEncoding());
         
+        popluateAttachments(request, message);
+    }
+    
+    protected void popluateRequestParameters(HttpServletRequest request, HttpMessage message) {
+        //we populate the http request parameters without checking the request method
+        Map<String, Object> headers = message.getHeaders();
+        Enumeration names = request.getParameterNames();
+        while (names.hasMoreElements()) {
+            String name = (String)names.nextElement();
+            Object value = request.getParameter(name);
+            if (headerFilterStrategy != null
+                && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
+                headers.put(name, value);
+            }
+        }
+    }
+    
+    protected void popluateAttachments(HttpServletRequest request, HttpMessage message) {
         // check if there is multipart files, if so will put it into DataHandler
-        names = request.getAttributeNames();
+        Enumeration names = request.getAttributeNames();
         while (names.hasMoreElements()) {
             String name = (String) names.nextElement();
             Object object = request.getAttribute(name);

Modified: camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java?rev=937920&r1=937919&r2=937920&view=diff
==============================================================================
--- camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java (original)
+++ camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/DefaultHttpBinding.java Mon Apr 26 03:11:39 2010
@@ -57,42 +57,30 @@ public class DefaultHttpBinding implemen
         this.headerFilterStrategy = headerFilterStrategy;
     }
 
-    @SuppressWarnings("unchecked")
     public void readRequest(HttpServletRequest request, HttpMessage message) {
-        // lets parser the parameterMap first to avoid consuming the POST parameters as InputStream
-        request.getParameterMap();
 
         // lets force a parse of the body and headers
         message.getBody();
         // populate the headers from the request
         Map<String, Object> headers = message.getHeaders();
-
+        
         //apply the headerFilterStrategy
         Enumeration names = request.getHeaderNames();
         while (names.hasMoreElements()) {
-            String name = (String) names.nextElement();
+            String name = (String)names.nextElement();
             Object value = request.getHeader(name);
             // mapping the content-type 
             if (name.toLowerCase().equals("content-type")) {
                 name = Exchange.CONTENT_TYPE;
             }
             if (headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
-                headers.put(name, value);
-            }
-        }
-
-        //we populate the http request parameters without checking the request method
-        names = request.getParameterNames();
-        while (names.hasMoreElements()) {
-            String name = (String) names.nextElement();
-            Object value = request.getParameter(name);
-            if (headerFilterStrategy != null
-                    && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
+                && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
                 headers.put(name, value);
             }
         }
 
+        popluateRequestParameters(request, message);
+        
         // store the method and query and other info in headers
         headers.put(Exchange.HTTP_METHOD, request.getMethod());
         headers.put(Exchange.HTTP_QUERY, request.getQueryString());
@@ -102,8 +90,26 @@ public class DefaultHttpBinding implemen
         headers.put(Exchange.CONTENT_TYPE, request.getContentType());
         headers.put(Exchange.HTTP_CHARACTER_ENCODING, request.getCharacterEncoding());
         
+        popluateAttachments(request, message);
+    }
+    
+    protected void popluateRequestParameters(HttpServletRequest request, HttpMessage message) {
+        //we populate the http request parameters without checking the request method
+        Map<String, Object> headers = message.getHeaders();
+        Enumeration names = request.getParameterNames();
+        while (names.hasMoreElements()) {
+            String name = (String)names.nextElement();
+            Object value = request.getParameter(name);
+            if (headerFilterStrategy != null
+                && !headerFilterStrategy.applyFilterToExternalHeaders(name, value, message.getExchange())) {
+                headers.put(name, value);
+            }
+        }
+    }
+    
+    protected void popluateAttachments(HttpServletRequest request, HttpMessage message) {
         // check if there is multipart files, if so will put it into DataHandler
-        names = request.getAttributeNames();
+        Enumeration names = request.getAttributeNames();
         while (names.hasMoreElements()) {
             String name = (String) names.nextElement();
             Object object = request.getAttribute(name);
@@ -112,7 +118,6 @@ public class DefaultHttpBinding implemen
                 message.addAttachment(fileName, new DataHandler(new FileDataSource((File)object), FileTypeMap.getDefaultFileTypeMap().getContentType(fileName)));
             }
         }
-       
     }
 
     public void writeResponse(Exchange exchange, HttpServletResponse response) throws IOException {