private Map<String, String> buildDefaultEntityHeaders(ODataRequestContext odataRequestContext, ChangeSetEntity changeSetEntity) { Map<String, String> headers = new HashMap<>(); ODataRequest oDataRequest = odataRequestContext.getRequest(); headers.putAll(oDataRequest.getHeaders()); headers.put("changeSetId", changeSetEntity.getChangeSetId()); return headers; }
private Map<String, String> buildDefaultEntityHeaders(ODataRequestContext odataRequestContext, ChangeSetEntity changeSetEntity) { Map<String, String> headers = new HashMap<>(); ODataRequest oDataRequest = odataRequestContext.getRequest(); headers.putAll(oDataRequest.getHeaders()); headers.put("changeSetId", changeSetEntity.getChangeSetId()); return headers; }
private void doWireLogging(ODataRequest request) throws UnsupportedEncodingException { if (LOG.isTraceEnabled()) { LOG.trace("RAW REQUEST LOGGING"); LOG.trace("{} request for URL: {}", request.getMethod().name(), request.getUri()); for (Map.Entry<String, String> headerEntry : request.getHeaders().entrySet()) { LOG.trace("Header: {} value: {}", headerEntry.getKey(), headerEntry.getValue()); } LOG.trace("BODY: {}", request.getBodyText(UTF_8.name())); } } }
private void doWireLogging(ODataRequest request) throws UnsupportedEncodingException { if (LOG.isTraceEnabled()) { LOG.trace("RAW REQUEST LOGGING"); LOG.trace("{} request for URL: {}", request.getMethod().name(), request.getUri()); for (Map.Entry<String, String> headerEntry : request.getHeaders().entrySet()) { LOG.trace("Header: {} value: {}", headerEntry.getKey(), headerEntry.getValue()); } LOG.trace("BODY: {}", request.getBodyText(UTF_8.name())); } } }
private String buildBatchId(ODataRequestContext requestContext) throws ODataBatchRendererException { StringBuilder sb = new StringBuilder(); String contentType = requestContext.getRequest().getHeaders().get(CONTENT_TYPE.toLowerCase()); if (contentType == null) { contentType = requestContext.getRequest().getHeader(CONTENT_TYPE); } if (isNullOrEmpty(contentType)) { throw new ODataBatchRendererException("Request Context Content-Type is missing"); } sb.append("--"); // get the batch UUID sb.append(contentType.substring(contentType.indexOf("=") + 1)); // substring existing batch id after "batch_" charset return sb.toString(); } }
private String buildBatchId(ODataRequestContext requestContext) throws ODataBatchRendererException { StringBuilder sb = new StringBuilder(); String contentType = requestContext.getRequest().getHeaders().get(CONTENT_TYPE.toLowerCase()); if (contentType == null) { contentType = requestContext.getRequest().getHeader(CONTENT_TYPE); } if (isNullOrEmpty(contentType)) { throw new ODataBatchRendererException("Request Context Content-Type is missing"); } sb.append("--"); // get the batch UUID sb.append(contentType.substring(contentType.indexOf("=") + 1)); // substring existing batch id after "batch_" charset return sb.toString(); } }
private ProcessorResult handlePOST(ODataRequestContext oDataRequestContext, ODataUri oDataUri, ChangeSetEntity changeSetEntity) throws ODataException { LOG.debug("Handling POST operation"); Object entityData = changeSetEntity.getOdataEntity(); Map<String, String> headers = buildDefaultEntityHeaders(oDataRequestContext, changeSetEntity); ODataRequest oDataRequest = oDataRequestContext.getRequest(); validateEntityData(oDataRequest, oDataUri, entityData); DataSource dataSource = getTransactionalDataSource(oDataRequestContext, getRequestType(oDataRequest, oDataUri)); headers.putAll(oDataRequest.getHeaders()); headers.put("changeSetId", changeSetEntity.getChangeSetId()); Object createdEntity = dataSource.create(oDataUri, entityData, entityDataModel); if (WriteMethodUtil.isMinimalReturnPreferred(oDataRequest)) { return new ProcessorResult(ODataResponse.Status.NO_CONTENT, headers); } return new ProcessorResult(ODataResponse.Status.CREATED, from(createdEntity), headers, oDataRequestContext); }
private ProcessorResult handlePOST(ODataRequestContext oDataRequestContext, ODataUri oDataUri, ChangeSetEntity changeSetEntity) throws ODataException { LOG.debug("Handling POST operation"); Object entityData = changeSetEntity.getOdataEntity(); Map<String, String> headers = buildDefaultEntityHeaders(oDataRequestContext, changeSetEntity); ODataRequest oDataRequest = oDataRequestContext.getRequest(); validateEntityData(oDataRequest, oDataUri, entityData); DataSource dataSource = getTransactionalDataSource(oDataRequestContext, getRequestType(oDataRequest, oDataUri)); headers.putAll(oDataRequest.getHeaders()); headers.put("changeSetId", changeSetEntity.getChangeSetId()); Object createdEntity = dataSource.create(oDataUri, entityData, entityDataModel); if (WriteMethodUtil.isMinimalReturnPreferred(oDataRequest)) { return new ProcessorResult(ODataResponse.Status.NO_CONTENT, headers); } return new ProcessorResult(ODataResponse.Status.CREATED, from(createdEntity), headers, oDataRequestContext); }
private ProcessorResult handlePutAndPatch(ODataRequestContext odataRequestContext, ODataUri requestUri, ChangeSetEntity changeSetEntity) throws ODataException { LOG.debug("Handling PUT or PATCH operation"); Object entityData = changeSetEntity.getOdataEntity(); ODataRequest oDataRequest = odataRequestContext.getRequest(); Map<String, String> headers = new HashMap<>(); headers.put("changeSetId", changeSetEntity.getChangeSetId()); validateEntityData(oDataRequest, requestUri, entityData); TargetType targetType = WriteMethodUtil.getTargetType(oDataRequest, entityDataModel, requestUri); if (targetType.isCollection()) { throw new ODataBadRequestException("The URI for a PATCH request should refer to the single entity " + "to be updated, not to a collection of entities."); } // Get the location header before trying to create the entity headers.putAll(WriteMethodUtil.getResponseHeaders(entityData, requestUri, entityDataModel)); WriteMethodUtil.validateTargetType(entityData, oDataRequest, entityDataModel, requestUri); Type type = entityDataModel.getType(targetType.typeName()); WriteMethodUtil.validateKeys(entityData, (EntityType) type, requestUri, entityDataModel); DataSource dataSource = getTransactionalDataSource(odataRequestContext, type); Object updatedEntity = dataSource.update(requestUri, entityData, entityDataModel); // add additional headers headers.putAll(oDataRequest.getHeaders()); if (WriteMethodUtil.isMinimalReturnPreferred(oDataRequest)) { return new ProcessorResult(ODataResponse.Status.NO_CONTENT, headers); } return new ProcessorResult(ODataResponse.Status.OK, from(updatedEntity), headers, odataRequestContext); }
private ProcessorResult handlePutAndPatch(ODataRequestContext odataRequestContext, ODataUri requestUri, ChangeSetEntity changeSetEntity) throws ODataException { LOG.debug("Handling PUT or PATCH operation"); Object entityData = changeSetEntity.getOdataEntity(); ODataRequest oDataRequest = odataRequestContext.getRequest(); Map<String, String> headers = new HashMap<>(); headers.put("changeSetId", changeSetEntity.getChangeSetId()); validateEntityData(oDataRequest, requestUri, entityData); TargetType targetType = WriteMethodUtil.getTargetType(oDataRequest, entityDataModel, requestUri); if (targetType.isCollection()) { throw new ODataBadRequestException("The URI for a PATCH request should refer to the single entity " + "to be updated, not to a collection of entities."); } // Get the location header before trying to create the entity headers.putAll(WriteMethodUtil.getResponseHeaders(entityData, requestUri, entityDataModel)); WriteMethodUtil.validateTargetType(entityData, oDataRequest, entityDataModel, requestUri); Type type = entityDataModel.getType(targetType.typeName()); WriteMethodUtil.validateKeys(entityData, (EntityType) type, requestUri, entityDataModel); DataSource dataSource = getTransactionalDataSource(odataRequestContext, type); Object updatedEntity = dataSource.update(requestUri, entityData, entityDataModel); // add additional headers headers.putAll(oDataRequest.getHeaders()); if (WriteMethodUtil.isMinimalReturnPreferred(oDataRequest)) { return new ProcessorResult(ODataResponse.Status.NO_CONTENT, headers); } return new ProcessorResult(ODataResponse.Status.OK, from(updatedEntity), headers, odataRequestContext); }