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/06/27 17:39:03 UTC
[4/6] git commit: [OLINGO-328] improve multi valued headers of
ODataRequest
[OLINGO-328] improve multi valued headers of ODataRequest
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/af3f998b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/af3f998b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/af3f998b
Branch: refs/heads/olingo-328
Commit: af3f998b7f40b8ff1d22b4d4463b2f3a222776a4
Parents: 97222fa
Author: Stephan Klevenz <st...@sap.com>
Authored: Thu Jun 26 08:53:18 2014 +0200
Committer: Stephan Klevenz <st...@sap.com>
Committed: Thu Jun 26 08:53:18 2014 +0200
----------------------------------------------------------------------
.../apache/olingo/server/api/ODataRequest.java | 23 +++++++++++---
.../olingo/server/api/ODataRequestTest.java | 33 ++++++++++++++++----
2 files changed, 45 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/af3f998b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataRequest.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataRequest.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataRequest.java
index 85883f0..5be8b96 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataRequest.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataRequest.java
@@ -19,6 +19,7 @@
package org.apache.olingo.server.api;
import java.io.InputStream;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -44,14 +45,26 @@ public class ODataRequest {
}
/**
- * Add header to request where name handled as case insensitive key.
+ * Add header to request where name handled as case insensitive key. If a header already exists then the list of
+ * values will just be extended.
* @param name case insensitive header name
* @param values
*/
public void addHeader(String name, List<String> values) {
- headers.put(name.toUpperCase(), values);
+ String key = name.toUpperCase();
+ if (headers.containsKey(key)) {
+ List<String> oldValues = headers.get(key);
+
+ List<String> newValues = new ArrayList<String>();
+ newValues.addAll(oldValues);
+ newValues.addAll(values);
+
+ headers.put(name.toUpperCase(), newValues);
+ } else {
+ headers.put(name.toUpperCase(), values);
+ }
}
-
+
/**
* Returns header value for name where name is a case insensitive key.
* @return the header value or null if not found
@@ -59,7 +72,7 @@ public class ODataRequest {
public List<String> getHeader(String name) {
return headers.get(name.toUpperCase());
}
-
+
public InputStream getBody() {
return body;
}
@@ -94,7 +107,7 @@ public class ODataRequest {
public void setRawODataPath(String rawODataPath) {
this.rawODataPath = rawODataPath;
-
+
}
public void setRawBaseUri(String rawBaseUri) {
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/af3f998b/lib/server-test/src/test/java/org/apache/olingo/server/api/ODataRequestTest.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/api/ODataRequestTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/api/ODataRequestTest.java
index f256798..d740731 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/api/ODataRequestTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/api/ODataRequestTest.java
@@ -25,21 +25,42 @@ import java.util.Arrays;
import org.junit.Test;
public class ODataRequestTest {
-
+
@Test
public void testHeader() {
ODataRequest r = new ODataRequest();
-
+
r.addHeader("aa", Arrays.asList("cc"));
-
+
assertEquals("cc", r.getHeader("aa").get(0));
assertEquals("cc", r.getHeader("aA").get(0));
assertEquals("cc", r.getHeader("AA").get(0));
-
+
+ }
+
+ @Test
+ public void testHeader2() {
+ ODataRequest r = new ODataRequest();
r.addHeader("AA", Arrays.asList("dd"));
-
+
assertEquals("dd", r.getHeader("aa").get(0));
assertEquals("dd", r.getHeader("aA").get(0));
- assertEquals("dd", r.getHeader("AA").get(0));
+ assertEquals("dd", r.getHeader("AA").get(0));
+ }
+
+ @Test
+ public void testMultiValueHeader() {
+ ODataRequest r = new ODataRequest();
+
+ r.addHeader("aa", Arrays.asList("a", "b"));
+
+ assertEquals("a", r.getHeader("aa").get(0));
+ assertEquals("b", r.getHeader("aA").get(1));
+
+ r.addHeader("Aa", Arrays.asList("c"));
+
+ assertEquals("a", r.getHeader("aa").get(0));
+ assertEquals("b", r.getHeader("aA").get(1));
+ assertEquals("c", r.getHeader("aA").get(2));
}
}