response = (T) EntityProvider.readServiceDocument(content, SERVICE_DOCUMENT_CONTENT_TYPE.toString()); break; response = (T) EntityProvider.readMetadata(content, false); break; response = (T) EntityProvider.readLink(getContentType(), uriInfo.getTargetEntitySet(), content); break; response = (T) EntityProvider.readLinks(getContentType(), uriInfo.getTargetEntitySet(), content); break; response = (T) EntityProvider.readProperty(getContentType(), complexProperty, content, EntityProviderReadProperties.init().build()); break; final EdmProperty simpleProperty = simplePropertyPath.get(simplePropertyPath.size() - 1); if (uriInfo.isValue()) { response = (T) EntityProvider.readPropertyValue(simpleProperty, content); } else { response = (T) EntityProvider.readProperty(getContentType(), simpleProperty, content, EntityProviderReadProperties.init().build()); final String stringCount = new String(EntityProvider.readBinary(content), Consts.UTF_8); response = (T) Long.valueOf(stringCount); break; response = (T) EntityProvider.readDeltaFeed( getContentType(),
responseContentType = simpleProperty.getMimeType(); if (uriInfo.isValue()) { response = EntityProvider.writePropertyValue(simpleProperty, content); responseContentType = TEXT_PLAIN_WITH_CS_UTF_8.toString(); } else { response = EntityProvider.writeProperty(getContentType(), simpleProperty, content); response = EntityProvider.writeProperty(responseContentType, complexProperty, content); break; @SuppressWarnings("unchecked") final Map<String, Object> linkMap = (Map<String, Object>) content; response = EntityProvider.writeLink(responseContentType, targetLinkEntitySet, linkMap, linkProperties); break; @SuppressWarnings("unchecked") final List<Map<String, Object>> linksMap = (List<Map<String, Object>>) content; response = EntityProvider.writeLinks(responseContentType, targetLinksEntitySet, linksMap, linksProperties); break; @SuppressWarnings("unchecked") final Map<String, Object> objectMap = (Map<String, Object>) content; response = EntityProvider.writeEntry(responseContentType, targetEntitySet, objectMap, properties); break;
@Override public ODataResponse handleError(final ODataErrorContext context) throws ODataApplicationException { final String SEPARATOR = " : "; Throwable t = context.getException(); if (t instanceof ODataJPAException) { StringBuilder errorBuilder = new StringBuilder(); errorBuilder.append(t.getCause().getClass().toString()); errorBuilder.append(SEPARATOR); errorBuilder.append(t.getCause().getMessage()); context.setInnerError(errorBuilder.toString()); } return EntityProvider.writeErrorDocument(context); }
@Override public ODataResponse executeBatch(final BatchHandler handler, final String contentType, final InputStream content) throws ODataException { ODataResponse batchResponse; List<BatchResponsePart> batchResponseParts = new ArrayList<BatchResponsePart>(); PathInfo pathInfo = getContext().getPathInfo(); EntityProviderBatchProperties batchProperties = EntityProviderBatchProperties.init().pathInfo(pathInfo).build(); List<BatchRequestPart> batchParts = EntityProvider.parseBatchRequest(contentType, content, batchProperties); for (BatchRequestPart batchPart : batchParts) { batchResponseParts.add(handler.handleBatchPart(batchPart)); } batchResponse = EntityProvider.writeBatchResponse(batchResponseParts); return batchResponse; }
public final ODataEntry parseEntry(final UriInfo info, final EdmEntitySet entitySet, final InputStream content, final String requestContentType, final boolean merge) throws ODataBadRequestException { ODataEntry entryValues; try { EntityProviderReadProperties entityProviderProperties = EntityProviderReadProperties.init().mergeSemantic(merge).build(); if (info.isValue()) { EdmProperty property = info.getPropertyPath().get(0); Object value = EntityProvider.readPropertyValue(property, content); HashMap<String, Object> properties = new HashMap<String, Object>(); MediaMetadataImpl mediaMetadata = new MediaMetadataImpl(); EntryMetadataImpl entryMetadata = new EntryMetadataImpl(); ExpandSelectTreeNodeImpl expandSelectTree = new ExpandSelectTreeNodeImpl(); properties.put(property.getName(), value); entryValues = new ODataEntryImpl(properties,mediaMetadata,entryMetadata,expandSelectTree); } else { entryValues = EntityProvider.readEntry(requestContentType, entitySet, content, entityProviderProperties); } } catch (Exception e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e); } return entryValues; }
final List<BatchSingleResponse> singleResponses = EntityProvider.parseBatchResponse( result.getEntity().getContent(), type); if (uriInfo.isValue()) { responseHandler.onResponse( (T) EntityProvider.readPropertyValue(simpleProperty, result.getEntity().getContent()), headersToMap(result.getAllHeaders())); } else { responseHandler.onResponse( (T) EntityProvider.readProperty(getContentType(), simpleProperty, result.getEntity().getContent(), EntityProviderReadProperties.init().build()), responseHandler.onResponse((T) EntityProvider.readProperty(getContentType(), complexProperty, result .getEntity() responseHandler.onResponse((T) EntityProvider.readLink(getContentType(), targetLinkEntitySet, result .getEntity() responseHandler.onResponse((T) EntityProvider.readLinks(getContentType(), targetLinksEntitySet, result.getEntity() responseHandler.onResponse((T) EntityProvider.readEntry(response.getContentHeader(), uriInfo.getTargetEntitySet(), result.getEntity().getContent(),
EntityProvider.writeEntry(contentType, resultsView.getTargetEntitySet(), edmPropertyValueMap, feedProperties); } else { EdmProperty property = ((UriInfoImpl) resultsView).getPropertyPath().get(0); if (((UriInfoImpl) resultsView).isValue()) { odataResponse = EntityProvider.writePropertyValue(property, edmPropertyValueMap.get(property.getName())); } else { odataResponse = EntityProvider.writeProperty(contentType, property, edmPropertyValueMap.get(property.getName()));
/** * Converts ODataQueryResult into Map<String, Object> * It should be used for single entry data * @return Map<String, Object> */ public Map<String, Object> asMap() { Map<String, Object> jsonMap = null; ODataEntry entry; InputStream instream = null; try { if(!this.hasResultElement){ instream = stringToInputStream(); entry = EntityProvider.readEntry(APPLICATION_JSON, entitySet, instream, EntityProviderReadProperties.init().build()); jsonMap = getFlattenMapData(entry); } else{ logger.info("asMap API will not work as deprecated ODataQueryResult constructor is used"); } } catch (EntityProviderException | UnsupportedEncodingException e) { logger.error("Failed to convert response into ODataFeed: " + e.getMessage()); } finally { closeInputStream(instream); } return jsonMap; } /**
private void updateEtagResponseHeader(PutMergePatchUriInfo uriInfo, IDataProviderResponse dataProviderResponse, String contentType) { try { ODataResponse writeEntry = EntityProvider.writeEntry(contentType, uriInfo.getTargetEntitySet(), dataProviderResponse.getResultEntity(), getEntityProviderWriteProperties((UriInfo) uriInfo, dataProviderResponse)); if(writeEntry.getHeader(ETAG)!=null){ etagHeader = writeEntry.getHeader(ETAG); String etagKey = getEtagKey((UriInfo)uriInfo, null); EtagUtils.setEtagMap(etagKey, etagHeader); } } catch (ODataException e) { etagHeader=null; } }
ODataEntry values = null; if (uriInfo.getFunctionImport() == null) { values = EntityProvider.readEntry(requestContentType, entitySet, content, getODataEntityProviderReadProperties((UriInfo) uriInfo, requestContentType)); virusScanUtil.scanODataEntry(values); dataProviderResponse); ODataResponse response = EntityProvider.writeFeed(contentType, uriInfo.getTargetEntitySet(), dataProviderResponse.getResultEntities(), writeProperties); ODataResponseBuilder responseBuilder = ODataResponse.fromResponse(response);
public final UriInfo parseLink(final EdmEntitySet entitySet, final InputStream content, final String contentType) throws ODataJPARuntimeException { String uriString = null; UriInfo uri = null; try { uriString = EntityProvider.readLink(contentType, entitySet, content); ODataContext odataContext = context.getODataContext(); final String svcRoot = odataContext.getPathInfo().getServiceRoot().toString(); final String path = uriString.startsWith(svcRoot.toString()) ? uriString.substring(svcRoot.length()) : uriString; final List<PathSegment> pathSegment = getPathSegment(path); edm = getEdm(); uri = UriParser.parse(edm, pathSegment, Collections.<String, String> emptyMap()); } catch (ODataException e) { throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e); } return uri; }
private ODataResponse getReadEntitySimplePropertyResponse(GetSimplePropertyUriInfo uriInfo, IDataProviderResponse dataProviderResponse, String contentType) throws ODataException, EntityProviderException { Map<String, Object> sapStatMap = null; List<EdmProperty> propertyPath = uriInfo.getPropertyPath(); Object resultProperty = dataProviderResponse.getResultProperty(propertyPath); ODataResponseBuilder responseBuilder = ODataResponse.fromResponse(EntityProvider.writeProperty(contentType, propertyPath.get(propertyPath.size() - 1), resultProperty)); setCacheControlHeader(responseBuilder, dataProviderResponse); responseBuilder.status(HttpStatusCodes.OK); setSapStatistics(getContext(), sapStatMap, null); setHeaders(responseBuilder, dataProviderResponse, contentType); return responseBuilder.build(); }
@Override public ODataResponse readEntityLink(final GetEntityLinkUriInfo uriInfo, final String contentType) throws ODataException { final Object data = retrieveData( uriInfo.getStartEntitySet(), uriInfo.getKeyPredicates(), uriInfo.getFunctionImport(), mapFunctionParameters(uriInfo.getFunctionImportParameters()), uriInfo.getNavigationSegments()); if (data == null) { throw new ODataNotFoundException(ODataNotFoundException.ENTITY); } final EdmEntitySet entitySet = uriInfo.getTargetEntitySet(); Map<String, Object> values = new HashMap<String, Object>(); for (final EdmProperty property : entitySet.getEntityType().getKeyProperties()) { values.put(property.getName(), valueAccess.getPropertyValue(data, property)); } ODataContext context = getContext(); final EntityProviderWriteProperties entryProperties = EntityProviderWriteProperties .serviceRoot(context.getPathInfo().getServiceRoot()) .build(); final int timingHandle = context.startRuntimeMeasurement("EntityProvider", "writeLink"); final ODataResponse response = EntityProvider.writeLink(contentType, entitySet, values, entryProperties); context.stopRuntimeMeasurement(timingHandle); return ODataResponse.fromResponse(response).build(); }
final ODataResponse response = EntityProvider.writeLinks(contentType, entitySet, values, entryProperties);
private ODataResponse getReadEntitySimplePropertyValueResponse(GetSimplePropertyUriInfo uriInfo, IDataProviderResponse dataProviderResponse) throws ODataException, EntityProviderException { Map<String, Object> sapStatMap = null; List<EdmProperty> propertyPath = uriInfo.getPropertyPath(); Object resultProperty = dataProviderResponse.getResultProperty(propertyPath); ODataResponseBuilder responseBuilder = ODataResponse.fromResponse(EntityProvider.writePropertyValue( propertyPath.get(propertyPath.size() - 1), resultProperty)); responseBuilder.status(HttpStatusCodes.OK); setCacheControlHeader(responseBuilder, dataProviderResponse); ODataResponse response = responseBuilder.build(); setSapStatistics(getContext(), sapStatMap, response); return response; }
@Override public ODataResponse updateEntitySimplePropertyValue(final PutMergePatchUriInfo uriInfo, final InputStream content, final String requestContentType, final String contentType) throws ODataException { Object data = retrieveData( uriInfo.getStartEntitySet(), uriInfo.getKeyPredicates(), uriInfo.getFunctionImport(), mapFunctionParameters(uriInfo.getFunctionImportParameters()), uriInfo.getNavigationSegments()); if (!appliesFilter(data, uriInfo.getFilter())) { throw new ODataNotFoundException(ODataNotFoundException.ENTITY); } final List<EdmProperty> propertyPath = uriInfo.getPropertyPath(); final EdmProperty property = propertyPath.get(propertyPath.size() - 1); data = getPropertyValue(data, propertyPath.subList(0, propertyPath.size() - 1)); ODataContext context = getContext(); int timingHandle = context.startRuntimeMeasurement("EntityConsumer", "readPropertyValue"); Object value; try { value = EntityProvider.readPropertyValue(property, content); } catch (final EntityProviderException e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e); } context.stopRuntimeMeasurement(timingHandle); valueAccess.setPropertyValue(data, property, value); valueAccess.setMappingValue(data, property.getMapping(), requestContentType); return ODataResponse.newBuilder().eTag(constructETag(uriInfo.getTargetEntitySet(), data)).build(); }
final List<BatchSingleResponse> singleResponses = EntityProvider.parseBatchResponse( result.getEntity().getContent(), result.getFirstHeader(HttpHeaders.CONTENT_TYPE).getValue()); if (uriInfo.isValue()) { responseHandler.onResponse( (T) EntityProvider.readPropertyValue(simpleProperty, result.getEntity().getContent())); } else { responseHandler.onResponse( (T) EntityProvider.readProperty(getContentType(), simpleProperty, result.getEntity().getContent(), EntityProviderReadProperties.init().build())); responseHandler.onResponse((T) EntityProvider.readProperty(getContentType(), complexProperty, result .getEntity() responseHandler.onResponse((T) EntityProvider.readLink(getContentType(), targetLinkEntitySet, result .getEntity() responseHandler.onResponse((T) EntityProvider.readLinks(getContentType(), targetLinksEntitySet, result.getEntity() responseHandler.onResponse((T) EntityProvider.readEntry(response.getContentHeader(), uriInfo.getTargetEntitySet(), result.getEntity().getContent(),
EntityProvider.writeEntry(contentType, uriInfo.getTargetEntitySet(), edmPropertyValueMap, feedProperties); } else { EdmProperty property = ((UriInfoImpl) uriInfo).getPropertyPath().get(0); if (((UriInfo) uriInfo).isValue()) { odataResponse = EntityProvider.writePropertyValue(property, edmPropertyValueMap.get(property.getName())); } else { odataResponse = EntityProvider.writeProperty(contentType, property, edmPropertyValueMap.get(property.getName()));
@Override public ODataResponse executeBatch(final BatchHandler handler, final String contentType, final InputStream content) throws ODataException { ODataResponse batchResponse; List<BatchResponsePart> batchResponseParts = new ArrayList<BatchResponsePart>(); PathInfo pathInfo = getContext().getPathInfo(); EntityProviderBatchProperties batchProperties = EntityProviderBatchProperties.init().pathInfo(pathInfo).build(); List<BatchRequestPart> batchParts = EntityProvider.parseBatchRequest(contentType, content, batchProperties); for (BatchRequestPart batchPart : batchParts) { batchResponseParts.add(handler.handleBatchPart(batchPart)); } batchResponse = EntityProvider.writeBatchResponse(batchResponseParts); return batchResponse; }
private ODataEntry parseEntry(final EdmEntitySet entitySet, final InputStream content, final String requestContentType, final EntityProviderReadProperties properties) throws ODataBadRequestException { ODataContext context = getContext(); final int timingHandle = context.startRuntimeMeasurement("EntityConsumer", "readEntry"); ODataEntry entryValues; try { entryValues = EntityProvider.readEntry(requestContentType, entitySet, content, properties); } catch (final EntityProviderException e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e); } context.stopRuntimeMeasurement(timingHandle); return entryValues; }