rakhi kumari created OLINGO-1188:
------------------------------------
Summary: Having problem in "Batch Processing using changeset"
regarding Content-Id
Key: OLINGO-1188
URL: https://issues.apache.org/jira/browse/OLINGO-1188
Project: Olingo
Issue Type: Question
Components: MISC
Reporter: rakhi kumari
I am doing batch call. This is my payload:
--batch_8659-5318-e90f
Content-Type: multipart/mixed;boundary=changeset_abc
--changeset_abc
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-Id:1
POST Manufacturers HTTP/1.1
Content-Type: application/json
{
"Id":"3",
"Name":"Rakhi Manufacturers"
}
--changeset_abc--
--batch_8659-5318-e90f--
In backend these functions are being called:
@Override
public BatchResponsePart executeChangeSet(final BatchHandler handler, final
List<ODataRequest> requests)
throws ODataException {
List<ODataResponse> responses = new ArrayList<ODataResponse>();
for (ODataRequest request : requests) {
ODataResponse response =
handler.handleRequest(request);
if (response.getStatus().getStatusCode() >=
HttpStatusCodes.BAD_REQUEST
.getStatusCode()) {
List<ODataResponse> errorResponses =
new ArrayList<ODataResponse>(1);
errorResponses.add(response);
return
BatchResponsePart.responses(errorResponses).changeSet(false).build();
}
responses.add(response);
}
return
BatchResponsePart.responses(responses).changeSet(true).build();
}
public Map<String, Object> createManufacturer(int id, String name, Map<String,
Object> address, Calendar updated) {
Map<String, Object> data = new HashMap<String, Object>();
int k = 5/0 + 6; //This I have done intentionally.
data.put("Id", id);
data.put("Name", name);
data.put("Address", address);
data.put("Updated", updated);
return data;
}
Here createManufacturer function throws "Arithmetic divide by 0 exception". But
before coming to the executeChangeSet function, in between it hits
fillContentIdMap function which is like
private void fillContentIdMap(final ODataResponse response, final String
contentId, final String baseUri) {
String location = response.getHeader(HttpHeaders.LOCATION);
String relLocation = location.replace(baseUri + "/", ""); // here it gives
nullpointer exception because location is null
contentIdMap.put("$" + contentId, relLocation);
}
fillContentIdMap function is in BatchHandlerImpl class
Hence, in executeChangeSet function, nullpointer exception comes instead of
actual exception which was "Arithmetic divide by 0 Exception".
If we remove content-Id from payload, It throws proper exception which is
"Arithmetic divide by 0 Exception".
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)