Uploaded image for project: 'Olingo'
  1. Olingo
  2. OLINGO-926

Batch Request fails if request line is absolute

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Workaround
    • V2 2.0.6
    • None
    • odata2-core
    • None

    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 RootEntity1s HTTP/1.1
      

      I had a look in OData V2 spec: http://www.odata.org/documentation/odata-version-2-0/batch-processing/
      In the example on this page you see two different variants of the request line:

      GET /service/Customers('ALFKI') HTTP/1.1
      
      GET service/Products HTTP/1.1
      

      It's Interesting to see that in first example there is a leading slash while in the second example there isn't. If you have a look at the HTTP 1.1 spec you see that the leading slash seems to be the correct format: https://tools.ietf.org/html/rfc7230#section-5.3

      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:

       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)
      

      Regards,
      Tobias

      Attachments

        Issue Links

          Activity

            People

              mirbo mibo
              tobias.stolzenberger Tobias Stolzenberger
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: