You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/11/05 14:31:36 UTC
olingo-odata4 git commit: [OLINGO-818] All verbs are allowed for
individual requests in batch requests
Repository: olingo-odata4
Updated Branches:
refs/heads/master 734ea9198 -> 303c4e869
[OLINGO-818] All verbs are allowed for individual requests in batch requests
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/303c4e86
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/303c4e86
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/303c4e86
Branch: refs/heads/master
Commit: 303c4e869f2bce30694504ca767b89838e95c536
Parents: 734ea91
Author: Christian Holzer <c....@sap.com>
Authored: Thu Nov 5 14:30:51 2015 +0100
Committer: Christian Holzer <c....@sap.com>
Committed: Thu Nov 5 14:30:51 2015 +0100
----------------------------------------------------------------------
.../batch/BatchDeserializerException.java | 2 -
.../batch/HttpRequestStatusLine.java | 15 +----
.../server-core-exceptions-i18n.properties | 1 -
.../batch/BatchRequestParserTest.java | 61 ++++++++++++++++++--
4 files changed, 59 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/303c4e86/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/batch/BatchDeserializerException.java
----------------------------------------------------------------------
diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/batch/BatchDeserializerException.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/batch/BatchDeserializerException.java
index cff3b25..e7a81da 100644
--- a/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/batch/BatchDeserializerException.java
+++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/deserializer/batch/BatchDeserializerException.java
@@ -43,8 +43,6 @@ public class BatchDeserializerException extends DeserializerException {
/** parameter: line */
INVALID_METHOD,
/** parameter: line */
- INVALID_QUERY_OPERATION_METHOD,
- /** parameter: line */
INVALID_STATUS_LINE,
/** parameter: line */
INVALID_URI,
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/303c4e86/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/HttpRequestStatusLine.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/HttpRequestStatusLine.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/HttpRequestStatusLine.java
index efe1ce1..f2d006a 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/HttpRequestStatusLine.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/HttpRequestStatusLine.java
@@ -33,7 +33,6 @@ import org.apache.olingo.server.api.deserializer.batch.BatchDeserializerExceptio
public class HttpRequestStatusLine {
private static final Pattern PATTERN_RELATIVE_URI = Pattern.compile("([^/][^?]*)(?:\\?(.*))?");
- private static final Set<String> HTTP_BATCH_METHODS = new HashSet<String>(Arrays.asList(new String[] { "GET" }));
private static final Set<String> HTTP_CHANGE_SET_METHODS = new HashSet<String>(Arrays.asList(new String[] { "POST",
"PUT", "DELETE", "PATCH" }));
private static final String HTTP_VERSION = "HTTP/1.1";
@@ -144,17 +143,9 @@ public class HttpRequestStatusLine {
}
public void validateHttpMethod(final boolean isChangeSet) throws BatchDeserializerException {
- Set<String> validMethods = (isChangeSet) ? HTTP_CHANGE_SET_METHODS : HTTP_BATCH_METHODS;
-
- if (!validMethods.contains(getMethod().toString())) {
- if (isChangeSet) {
- throw new BatchDeserializerException("Invalid change set method", MessageKeys.INVALID_CHANGESET_METHOD,
- Integer.toString(statusLine.getLineNumber()));
- } else {
- throw new BatchDeserializerException("Invalid query operation method",
- MessageKeys.INVALID_QUERY_OPERATION_METHOD,
- Integer.toString(statusLine.getLineNumber()));
- }
+ if(isChangeSet && !HTTP_CHANGE_SET_METHODS.contains(getMethod().toString())) {
+ throw new BatchDeserializerException("Invalid change set method", MessageKeys.INVALID_CHANGESET_METHOD,
+ Integer.toString(statusLine.getLineNumber()));
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/303c4e86/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
index 08e9eb8..046edfd 100644
--- a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
+++ b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
@@ -142,7 +142,6 @@ BatchDeserializerException.UNEXPECTED_CONTENT_TYPE=Content-Type at line '%1$s' s
BatchDeserializerException.INVALID_CONTENT_ID=Invalid Content-ID HTTP header at line '%1$s'.
BatchDeserializerException.INVALID_HTTP_VERSION=The HTTP version must be HTTP/1.1 at line '%1$s'.
BatchDeserializerException.INVALID_METHOD=Invalid HTTP method at line '%1$s'.
-BatchDeserializerException.INVALID_QUERY_OPERATION_METHOD=The query operation at line '%1$s' can only contain retrieve requests.
BatchDeserializerException.INVALID_STATUS_LINE=Invalid HTTP status line at line '%1$s'.
BatchDeserializerException.INVALID_URI=Invalid URI at line '%1$s'.
BatchDeserializerException.FORBIDDEN_HEADER=Forbidden header at line '%1$s'.
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/303c4e86/lib/server-core/src/test/java/org/apache/olingo/server/core/deserializer/batch/BatchRequestParserTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/deserializer/batch/BatchRequestParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/deserializer/batch/BatchRequestParserTest.java
index 155c678..008fdbe 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/deserializer/batch/BatchRequestParserTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/deserializer/batch/BatchRequestParserTest.java
@@ -33,9 +33,9 @@ import org.apache.olingo.commons.api.http.HttpHeader;
import org.apache.olingo.commons.api.http.HttpMethod;
import org.apache.olingo.server.api.ODataRequest;
import org.apache.olingo.server.api.deserializer.batch.BatchDeserializerException;
+import org.apache.olingo.server.api.deserializer.batch.BatchDeserializerException.MessageKeys;
import org.apache.olingo.server.api.deserializer.batch.BatchOptions;
import org.apache.olingo.server.api.deserializer.batch.BatchRequestPart;
-import org.apache.olingo.server.api.deserializer.batch.BatchDeserializerException.MessageKeys;
import org.junit.Test;
public class BatchRequestParserTest {
@@ -437,16 +437,67 @@ public class BatchRequestParserTest {
}
@Test
- public void testInvalidMethodForBatch() throws Exception {
+ public void testMethodsForIndividualRequests() throws Exception {
final String batch = "--batch_8194-cf13-1f56" + CRLF
+ MIME_HEADERS
+ CRLF
- + "POST Employees('1')/EmployeeName HTTP/1.1" + CRLF
+ + "POST Employees HTTP/1.1" + CRLF
+ + "Content-Type: application/json" + CRLF
+ + CRLF
+ + "{ \"Name\": \"Foo\" }"
+ + CRLF
+ + "--batch_8194-cf13-1f56" + CRLF
+ + MIME_HEADERS
+ + CRLF
+ + "DELETE Employees('1') HTTP/1.1" + CRLF
+ + CRLF
+ + CRLF
+ + "--batch_8194-cf13-1f56" + CRLF
+ + MIME_HEADERS
+ + CRLF
+ + "PATCH Employees('1') HTTP/1.1" + CRLF
+ + "Content-Type: application/json" + CRLF
+ + CRLF
+ + "{ \"Name\": \"Foo\" }" + CRLF
+ + "--batch_8194-cf13-1f56" + CRLF
+ + MIME_HEADERS
+ + CRLF
+ + "PUT Employees('1') HTTP/1.1" + CRLF
+ + "Content-Type: application/json" + CRLF
+ + CRLF
+ + "{ \"Name\": \"Foo\" }" + CRLF
+ + "--batch_8194-cf13-1f56" + CRLF
+ + MIME_HEADERS
+ + CRLF
+ + "GET Employees('1') HTTP/1.1" + CRLF
+ + "Accept: application/json" + CRLF
+ CRLF
+ CRLF
+ "--batch_8194-cf13-1f56--";
-
- parseInvalidBatchBody(batch, BatchDeserializerException.MessageKeys.INVALID_QUERY_OPERATION_METHOD);
+
+ List<BatchRequestPart> requests = parse(batch);
+ assertEquals(HttpMethod.POST, requests.get(0).getRequests().get(0).getMethod());
+ assertEquals("/Employees", requests.get(0).getRequests().get(0).getRawODataPath());
+ assertEquals("{ \"Name\": \"Foo\" }", IOUtils.toString(requests.get(0).getRequests().get(0).getBody()));
+
+ requests = parse(batch);
+ assertEquals(HttpMethod.DELETE, requests.get(1).getRequests().get(0).getMethod());
+ assertEquals("/Employees('1')", requests.get(1).getRequests().get(0).getRawODataPath());
+
+ requests = parse(batch);
+ assertEquals(HttpMethod.PATCH, requests.get(2).getRequests().get(0).getMethod());
+ assertEquals("{ \"Name\": \"Foo\" }", IOUtils.toString(requests.get(0).getRequests().get(0).getBody()));
+ assertEquals("/Employees('1')", requests.get(2).getRequests().get(0).getRawODataPath());
+
+ requests = parse(batch);
+ assertEquals(HttpMethod.PUT, requests.get(3).getRequests().get(0).getMethod());
+ assertEquals("{ \"Name\": \"Foo\" }", IOUtils.toString(requests.get(0).getRequests().get(0).getBody()));
+ assertEquals("/Employees('1')", requests.get(3).getRequests().get(0).getRawODataPath());
+
+ requests = parse(batch);
+ assertEquals(HttpMethod.GET, requests.get(4).getRequests().get(0).getMethod());
+ assertEquals("/Employees('1')", requests.get(4).getRequests().get(0).getRawODataPath());
+
}
@Test