You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@olingo.apache.org by "Tobias Stolzenberger (JIRA)" <ji...@apache.org> on 2016/04/01 17:04:25 UTC
[jira] [Updated] (OLINGO-926) Batch Request fails if request line
is absolute
[ https://issues.apache.org/jira/browse/OLINGO-926?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Tobias Stolzenberger updated OLINGO-926:
----------------------------------------
Description:
Hi,
I'm using Olingo version 2.0.6 with JPA adapter. I'm sending a batch message to the server that causes an Exception with text: Invalid URI: line '6'
The reason for that is that parsing of the HTTP status line seems not to be able to handle absolute path values.
This is the request line I'm sending:
GET /com.sap.icmobile.demo.application/odata/referenceservice/RootEntity1s HTTP/1.1
If I use the relative URI instead the batch message get processed without an error:
GET /com.sap.icmobile.demo.application/odata/referenceservice/RootEntity1s HTTP/1.1
This is the complete HTTP request body that I send:
POST /mypath/odata/referenceservice/$batch HTTP/1.1
Content-Type: multipart/mixed; boundary=batch_f90a925d-f990-4b20-bbc3-057f6eb1c692
X-CSRF-Token: ...
...
--batch_f90a925d-f990-4b20-bbc3-057f6eb1c692
Content-Disposition: form-data; name="1"; filename="1"
Content-Type: application/http
Content-Transfer-Encoding: binary
GET /mypath/odata/referenceservice/RootEntity1s HTTP/1.1
Host: myhost
Accept: application/atom+xml;type=feed
--batch_f90a925d-f990-4b20-bbc3-057f6eb1c692--
And this is the Exception stacktrace:
2016 04 01 14:53:29#+00#ERROR#org.apache.olingo.odata2.api.processor.ODataErrorCallback##demo49@sap.com#http-bio-8041-exec-8#na#industrymobility1#hep#web#industrymobility2#Message = Invalid URI: line '6'. - org.apache.olingo.odata2.api.batch.BatchException: Invalid URI: line '6'.
at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.parseUri(BatchTransformatorCommon.java:216)
at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.parse(BatchTransformatorCommon.java:165)
at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.<init>(BatchTransformatorCommon.java:156)
at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.createRequest(BatchRequestTransformator.java:85)
at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.processQueryOperation(BatchRequestTransformator.java:78)
at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.transform(BatchRequestTransformator.java:52)
at org.apache.olingo.odata2.core.batch.v2.BatchParser.parseBatch(BatchParser.java:86)
at org.apache.olingo.odata2.core.batch.v2.BatchParser.parse(BatchParser.java:64)
at org.apache.olingo.odata2.core.batch.v2.BatchParser.parseBatchRequest(BatchParser.java:58)
at org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.parseBatchRequest(ProviderFacadeImpl.java:237)
at org.apache.olingo.odata2.api.ep.EntityProvider.parseBatchRequest(EntityProvider.java:887)
was:
Hi,
I'm using Olingo version 2.0.6 with JPA adapter. Here I want to perform an "InsertLink Request" as defined in OData spec (2.2.7.1.2 InsertLink Request) and also on odata.org (2.10 Creating Links between Entries).
For that I do a HTTP POST request with this URL:
http://myhost/myservice/ItemEntity1_1s('A')/$links/RootEntity1Details.
This operation fails with error message: The request dispatcher does not allow the HTTP method used for the request.
Below I have pasted the relevant Stacktrace.
Regards,
Tobias Stolzenberger
2016 03 16 10:09:01#+0100#ERROR#org.apache.olingo.odata2.api.processor.ODataErrorCallback##test#http-bio-8080-exec-3#na##dev_default#Message = The request dispatcher does not allow the HTTP method used for the request. - org.apache.olingo.odata2.api.exception.ODataMethodNotAllowedException: The request dispatcher does not allow the HTTP method used for the request.
at org.apache.olingo.odata2.core.ODataRequestHandler.validateUriMethod(ODataRequestHandler.java:250)
at org.apache.olingo.odata2.core.ODataRequestHandler.validateMethodAndUri(ODataRequestHandler.java:215)
at org.apache.olingo.odata2.core.ODataRequestHandler.handle(ODataRequestHandler.java:112)
at org.apache.olingo.odata2.core.rest.ODataSubLocator.handle(ODataSubLocator.java:164)
at org.apache.olingo.odata2.core.rest.ODataSubLocator.handlePost(ODataSubLocator.java:86)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:198)
> Batch Request fails if request line is absolute
> -----------------------------------------------
>
> Key: OLINGO-926
> URL: https://issues.apache.org/jira/browse/OLINGO-926
> Project: Olingo
> Issue Type: Bug
> Components: odata2-core
> Affects Versions: V2 2.0.6
> Reporter: Tobias Stolzenberger
>
> Hi,
> I'm using Olingo version 2.0.6 with JPA adapter. I'm sending a batch message to the server that causes an Exception with text: Invalid URI: line '6'
> The reason for that is that parsing of the HTTP status line seems not to be able to handle absolute path values.
> This is the request line I'm sending:
> GET /com.sap.icmobile.demo.application/odata/referenceservice/RootEntity1s HTTP/1.1
> If I use the relative URI instead the batch message get processed without an error:
> GET /com.sap.icmobile.demo.application/odata/referenceservice/RootEntity1s HTTP/1.1
> This is the complete HTTP request body that I send:
> POST /mypath/odata/referenceservice/$batch HTTP/1.1
> Content-Type: multipart/mixed; boundary=batch_f90a925d-f990-4b20-bbc3-057f6eb1c692
> X-CSRF-Token: ...
> ...
> --batch_f90a925d-f990-4b20-bbc3-057f6eb1c692
> Content-Disposition: form-data; name="1"; filename="1"
> Content-Type: application/http
> Content-Transfer-Encoding: binary
> GET /mypath/odata/referenceservice/RootEntity1s HTTP/1.1
> Host: myhost
> Accept: application/atom+xml;type=feed
> --batch_f90a925d-f990-4b20-bbc3-057f6eb1c692--
> And this is the Exception stacktrace:
> 2016 04 01 14:53:29#+00#ERROR#org.apache.olingo.odata2.api.processor.ODataErrorCallback##demo49@sap.com#http-bio-8041-exec-8#na#industrymobility1#hep#web#industrymobility2#Message = Invalid URI: line '6'. - org.apache.olingo.odata2.api.batch.BatchException: Invalid URI: line '6'.
> at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.parseUri(BatchTransformatorCommon.java:216)
> at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.parse(BatchTransformatorCommon.java:165)
> at org.apache.olingo.odata2.core.batch.v2.BatchTransformatorCommon$HttpRequestStatusLine.<init>(BatchTransformatorCommon.java:156)
> at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.createRequest(BatchRequestTransformator.java:85)
> at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.processQueryOperation(BatchRequestTransformator.java:78)
> at org.apache.olingo.odata2.core.batch.v2.BatchRequestTransformator.transform(BatchRequestTransformator.java:52)
> at org.apache.olingo.odata2.core.batch.v2.BatchParser.parseBatch(BatchParser.java:86)
> at org.apache.olingo.odata2.core.batch.v2.BatchParser.parse(BatchParser.java:64)
> at org.apache.olingo.odata2.core.batch.v2.BatchParser.parseBatchRequest(BatchParser.java:58)
> at org.apache.olingo.odata2.core.ep.ProviderFacadeImpl.parseBatchRequest(ProviderFacadeImpl.java:237)
> at org.apache.olingo.odata2.api.ep.EntityProvider.parseBatchRequest(EntityProvider.java:887)
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)