}
}
@Override
public ODataResponse handleRequest(final ODataRequest suppliedRequest) throws ODataException {
ODataRequest request;
String mimeHeaderContentId =
suppliedRequest.getRequestHeaderValue(BatchHelper.MIME_HEADER_CONTENT_ID.toLowerCase(Locale.ENGLISH));
String requestHeaderContentId =
suppliedRequest.getRequestHeaderValue(BatchHelper.REQUEST_HEADER_CONTENT_ID.toLowerCase(Locale.ENGLISH));
List<PathSegment> odataSegments = suppliedRequest.getPathInfo().getODataSegments();
if (!odataSegments.isEmpty() && odataSegments.get(0).getPath().matches("\\$.*")) {
request = modifyRequest(suppliedRequest, odataSegments);
} else {
request = suppliedRequest;
}
ODataRequestHandler handler = createHandler(request);
ODataResponse response = handler.handle(request);
if (response.getStatus().getStatusCode() < BAD_REQUEST) {
response = setContentIdHeader(response, mimeHeaderContentId, requestHeaderContentId);
}
if (request.getMethod().equals(ODataHttpMethod.POST)) {
String baseUri = getBaseUri(request);
if (mimeHeaderContentId != null) {
fillContentIdMap(response, mimeHeaderContentId, baseUri);
} else if (requestHeaderContentId != null) {
fillContentIdMap(response, requestHeaderContentId, baseUri);