[ https://issues.apache.org/jira/browse/OLINGO-1619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Florent Albert updated OLINGO-1619: ----------------------------------- Description: Use case: Batch request uploading a file (upsert media entity). The batch request body will contain the serialized file as binary. For example: {noformat} --batch Content-Type: multipart/mixed; boundary=changeset--changeset Content-Type: application/http Content-Transfer-Encoding:binary Content-Id: 001 POST Documents HTTP/1.1 Content-Type: application/json { "Name":"Doc OData batch", } --changeset Content-Type: application/http Content-Transfer-Encoding:binary Content-Id: 002 PUT $001/PrimaryContent HTTP/1.1 Content-Type: multipart/form-data; boundary=attachmentBoundary Content-Encoding: binary --attachmentBoundary Content-Disposition: form-data;name="file1"; filename="test.docx" Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document Content-Transfer-Encoding: binary Content-Encoding: binary <serialized file content here> --attachmentBoundary-- --changeset-- --batch--{noformat} In Olingo 4.9.0, when the batch request parts are deserialized by FixedFormatDeserializer.parseBatchRequest(InputStream, String, BatchOptions), the bodies of the resulting ODataRequest are different from the original request sent. This is a regression compared to Olingo 4.7.1, introduced by the following commit: [https://github.com/apache/olingo-odata4/commit/917ec01043987626cebd6809a91c9e0ff44c411a] . It assumes a request body can only be text. Using the 4.7.1 version of BatchLineReader fixed the issue. was: Use case: Batch request uploading a file (upsert media entity). The batch request body will contain the serialized file as binary. For example: {noformat} --batch Content-Type: multipart/mixed; boundary=changeset--changeset Content-Type: application/http Content-Transfer-Encoding:binary Content-Id: 001 POST Documents HTTP/1.1 Content-Type: application/json { "Name":"Doc OData batch", } --changeset Content-Type: application/http Content-Transfer-Encoding:binary Content-Id: 002 PUT $001/PrimaryContent HTTP/1.1 Content-Type: multipart/form-data; boundary=attachmentBoundary Content-Encoding: binary --attachmentBoundary Content-Disposition: form-data;name="file1"; filename="test.docx" Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document Content-Transfer-Encoding: binary Content-Encoding: binary <serialized file content here> --attachmentBoundary-- --changeset-- --batch--{noformat} In Olingo 4.9.0, when the batch request parts are deserialized by FixedFormatDeserializer.parseBatchRequest(InputStream, String, BatchOptions), the bodies of the resulting ODataRequest are different from the original request sent. This is a regression compared to Olingo 4.7.1, introduced by the following commit: [https://github.com/apache/olingo-odata4/commit/8bd229b40e30710525a056a4c395caf2565fe353]. It assumes a request body can only be text. Using the 4.7.1 version of BatchLineReader fixed the issue. > [Regression] Batch part body containining binary data is altered > ---------------------------------------------------------------- > > Key: OLINGO-1619 > URL: https://issues.apache.org/jira/browse/OLINGO-1619 > Project: Olingo > Issue Type: Bug > Components: odata4-server > Affects Versions: (Java) V4 4.9.0 > Reporter: Florent Albert > Priority: Major > Labels: Regression > > Use case: Batch request uploading a file (upsert media entity). > The batch request body will contain the serialized file as binary. For > example: > > {noformat} > --batch > Content-Type: multipart/mixed; boundary=changeset--changeset > Content-Type: application/http > Content-Transfer-Encoding:binary > Content-Id: 001 > POST Documents HTTP/1.1 > Content-Type: application/json > { > "Name":"Doc OData batch", > } > --changeset > Content-Type: application/http > Content-Transfer-Encoding:binary > Content-Id: 002 > PUT $001/PrimaryContent HTTP/1.1 > Content-Type: multipart/form-data; boundary=attachmentBoundary > Content-Encoding: binary > --attachmentBoundary > Content-Disposition: form-data;name="file1"; filename="test.docx" > Content-Type: > application/vnd.openxmlformats-officedocument.wordprocessingml.document > Content-Transfer-Encoding: binary > Content-Encoding: binary > <serialized file content here> > --attachmentBoundary-- > --changeset-- > --batch--{noformat} > > > In Olingo 4.9.0, when the batch request parts are deserialized by > FixedFormatDeserializer.parseBatchRequest(InputStream, String, BatchOptions), > the bodies of the resulting ODataRequest are different from the original > request sent. > This is a regression compared to Olingo 4.7.1, introduced by the following > commit: > [https://github.com/apache/olingo-odata4/commit/917ec01043987626cebd6809a91c9e0ff44c411a] > . It assumes a request body can only be text. > Using the 4.7.1 version of BatchLineReader fixed the issue. -- This message was sent by Atlassian Jira (v8.20.10#820010)