You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by sk...@apache.org on 2014/05/28 10:30:48 UTC

git commit: [OLINGO-305] fixed (case insensitve header)

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 402ad9a8d -> 7a111e691


[OLINGO-305] fixed (case insensitve header)


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/7a111e69
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/7a111e69
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/7a111e69

Branch: refs/heads/master
Commit: 7a111e6916e0bf94fc3b3dc4c380094f0bcd9988
Parents: 402ad9a
Author: Stephan Klevenz <sk...@apache.org>
Authored: Wed May 28 10:30:39 2014 +0200
Committer: Stephan Klevenz <sk...@apache.org>
Committed: Wed May 28 10:30:39 2014 +0200

----------------------------------------------------------------------
 .../olingo/odata2/core/ODataRequestImpl.java    | 40 +++++++++++++++++---
 1 file changed, 35 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/7a111e69/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
index dd3173b..5bfcaf9 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/ODataRequestImpl.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
+import java.util.Map.Entry;
 
 import org.apache.olingo.odata2.api.commons.ODataHttpMethod;
 import org.apache.olingo.odata2.api.processor.ODataRequest;
@@ -37,7 +38,7 @@ import org.apache.olingo.odata2.core.commons.ContentType;
 public class ODataRequestImpl extends ODataRequest {
 
   private ODataHttpMethod method;
-  private Map<String, List<String>> requestHeaders = new HashMap<String, List<String>>();
+  private CaseInsensitiveMap requestHeaders = new CaseInsensitiveMap();
   private InputStream body;
   private PathInfo pathInfo;
   private Map<String, String> queryParameters;
@@ -73,7 +74,7 @@ public class ODataRequestImpl extends ODataRequest {
 
   @Override
   public Map<String, List<String>> getRequestHeaders() {
-    return Collections.unmodifiableMap(requestHeaders);
+    return requestHeaders;
   }
 
   @Override
@@ -93,7 +94,7 @@ public class ODataRequestImpl extends ODataRequest {
 
   public class ODataRequestBuilderImpl extends ODataRequestBuilder {
     private ODataHttpMethod method;
-    private Map<String, List<String>> requestHeaders = new HashMap<String, List<String>>();
+    private CaseInsensitiveMap requestHeaders = new CaseInsensitiveMap();
     private InputStream body;
     private PathInfo pathInfo;
     private Map<String, String> queryParameters;
@@ -116,7 +117,11 @@ public class ODataRequestImpl extends ODataRequest {
 
     @Override
     public ODataRequestBuilder requestHeaders(final Map<String, List<String>> headers) {
-      requestHeaders = headers;
+      requestHeaders = new CaseInsensitiveMap();
+      for (Entry<String, List<String>> set : headers.entrySet()) {
+        requestHeaders.put(set.getKey(), set.getValue());
+      }
+
       return this;
     }
 
@@ -170,7 +175,11 @@ public class ODataRequestImpl extends ODataRequest {
       if (request.getContentType() != null) {
         contentType = ContentType.create(request.getContentType());
       }
-      requestHeaders = request.getRequestHeaders();
+
+      requestHeaders = new CaseInsensitiveMap();
+      for (Entry<String, List<String>> set : request.getRequestHeaders().entrySet()) {
+        requestHeaders.put(set.getKey(), set.getValue());
+      }
 
       if (request.getAcceptHeaders() != null) {
         acceptHeaders = new ArrayList<String>();
@@ -195,4 +204,25 @@ public class ODataRequestImpl extends ODataRequest {
     }
 
   }
+
+  private class CaseInsensitiveMap extends HashMap<String, List<String>> {
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public List<String> put(String key, List<String> value) {
+      return super.put(key.toLowerCase(), value);
+    }
+
+    // not @Override because that would require the key parameter to be of type Object
+    public List<String> get(String key) {
+      return super.get(key.toLowerCase());
+    }
+
+    @Override
+    public List<String> get(Object key) {
+      String skey = (String) key;
+      return super.get(skey.toLowerCase());
+    }
+  }
 }