public Object readPropertyValue(final EdmProperty edmProperty, final InputStream content, final Class<?> typeMapping) throws EntityProviderException { try { final Map<String, Object> result; EntityProviderReadPropertiesBuilder propertiesBuilder = EntityProviderReadProperties.init().mergeSemantic(false); if (typeMapping == null) { result = readProperty(edmProperty, content, propertiesBuilder.build()); } else { Map<String, Object> typeMappings = new HashMap<String, Object>(); typeMappings.put(edmProperty.getName(), typeMapping); result = readProperty(edmProperty, content, propertiesBuilder.addTypeMappings(typeMappings).build()); } return result.get(edmProperty.getName()); } catch (EdmException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
public Object readPropertyValue(final EdmProperty edmProperty, final InputStream content, final Class<?> typeMapping) throws EntityProviderException { try { final Map<String, Object> result; EntityProviderReadPropertiesBuilder propertiesBuilder = EntityProviderReadProperties.init().mergeSemantic(false); if (typeMapping == null) { result = readProperty(edmProperty, content, propertiesBuilder.build()); } else { Map<String, Object> typeMappings = new HashMap<String, Object>(); typeMappings.put(edmProperty.getName(), typeMapping); result = readProperty(edmProperty, content, propertiesBuilder.addTypeMappings(typeMappings).build()); } return result.get(edmProperty.getName()); } catch (EdmException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
instream = stringToInputStream(); ODataFeed feed = EntityProvider.readFeed(APPLICATION_JSON, entitySet, instream, EntityProviderReadProperties.init().build()); List<ODataEntry> entries = feed.getEntries(); inlineCount = feed.getFeedMetadata().getInlineCount();
values = EntityProvider.readProperty(requestContentType, property, content, EntityProviderReadProperties.init() .mergeSemantic(merge).build()); } catch (final EntityProviderException e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e);
values = EntityProvider.readProperty(requestContentType, property, content, EntityProviderReadProperties.init() .mergeSemantic(merge).build()); } catch (final EntityProviderException e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e);
/** * * @param reader * @param eia * @param readProperties * @return {@link ODataFeed} object * @throws EntityProviderException */ public ODataFeed readFeed(final XMLStreamReader reader, final EntityInfoAggregator eia, final EntityProviderReadProperties readProperties) throws EntityProviderException { try { // read xml tag reader.require(XMLStreamConstants.START_DOCUMENT, null, null); reader.nextTag(); // read feed tag reader.require(XMLStreamConstants.START_ELEMENT, Edm.NAMESPACE_ATOM_2005, FormatXml.ATOM_FEED); Map<String, String> foundPrefix2NamespaceUri = extractNamespacesFromTag(reader); foundPrefix2NamespaceUri.putAll(readProperties.getValidatedPrefixNamespaceUris()); checkAllMandatoryNamespacesAvailable(foundPrefix2NamespaceUri); EntityProviderReadProperties entryReadProperties = EntityProviderReadProperties.initFrom(readProperties).addValidatedPrefixes(foundPrefix2NamespaceUri).build(); // read feed data (metadata and entries) return readFeedData(reader, eia, entryReadProperties); } catch (XMLStreamException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
/** * * @param reader * @param eia * @param readProperties * @return {@link ODataDeltaFeed} object * @throws EntityProviderException */ public ODataDeltaFeed readFeed(final XMLStreamReader reader, final EntityInfoAggregator eia, final EntityProviderReadProperties readProperties) throws EntityProviderException { try { // read xml tag reader.require(XMLStreamConstants.START_DOCUMENT, null, null); reader.nextTag(); // read feed tag reader.require(XMLStreamConstants.START_ELEMENT, Edm.NAMESPACE_ATOM_2005, FormatXml.ATOM_FEED); Map<String, String> foundPrefix2NamespaceUri = extractNamespacesFromTag(reader); foundPrefix2NamespaceUri.putAll(readProperties.getValidatedPrefixNamespaceUris()); checkAllMandatoryNamespacesAvailable(foundPrefix2NamespaceUri); EntityProviderReadProperties entryReadProperties = EntityProviderReadProperties.initFrom(readProperties).addValidatedPrefixes(foundPrefix2NamespaceUri).build(); // read feed data (metadata and entries) return readFeedData(reader, eia, entryReadProperties); } catch (XMLStreamException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
/** * * @param reader * @param eia * @param readProperties * @return {@link ODataDeltaFeed} object * @throws EntityProviderException */ public ODataDeltaFeed readFeed(final XMLStreamReader reader, final EntityInfoAggregator eia, final EntityProviderReadProperties readProperties) throws EntityProviderException { try { // read xml tag reader.require(XMLStreamConstants.START_DOCUMENT, null, null); reader.nextTag(); // read feed tag reader.require(XMLStreamConstants.START_ELEMENT, Edm.NAMESPACE_ATOM_2005, FormatXml.ATOM_FEED); Map<String, String> foundPrefix2NamespaceUri = extractNamespacesFromTag(reader); foundPrefix2NamespaceUri.putAll(readProperties.getValidatedPrefixNamespaceUris()); checkAllMandatoryNamespacesAvailable(foundPrefix2NamespaceUri); EntityProviderReadProperties entryReadProperties = EntityProviderReadProperties.initFrom(readProperties).addValidatedPrefixes(foundPrefix2NamespaceUri).build(); // read feed data (metadata and entries) return readFeedData(reader, eia, entryReadProperties); } catch (XMLStreamException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
/** * 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; } /**
/** * Create {@link EntityProviderReadProperties} which can be used for reading of inline properties/entrys of navigation * links within * this current read entry. * * @param readProperties * @param navigationProperty * @return * @throws EntityProviderException */ private EntityProviderReadProperties createInlineProperties(final EntityProviderReadProperties readProperties, final EdmNavigationProperty navigationProperty) throws EntityProviderException { final OnReadInlineContent callback = readProperties.getCallback(); EntityProviderReadProperties currentReadProperties = EntityProviderReadProperties.initFrom(readProperties).build(); if (callback == null) { return currentReadProperties; } else { try { return callback.receiveReadProperties(currentReadProperties, navigationProperty); } catch (ODataApplicationException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } } }
/** * Create {@link EntityProviderReadProperties} which can be used for reading of inline properties/entrys of navigation * links within * this current read entry. * * @param readProperties * @param navigationProperty * @return * @throws EntityProviderException */ private EntityProviderReadProperties createInlineProperties(final EntityProviderReadProperties readProperties, final EdmNavigationProperty navigationProperty) throws EntityProviderException { final OnReadInlineContent callback = readProperties.getCallback(); EntityProviderReadProperties currentReadProperties = EntityProviderReadProperties.initFrom(readProperties).build(); if (callback == null) { return currentReadProperties; } else { try { return callback.receiveReadProperties(currentReadProperties, navigationProperty); } catch (ODataApplicationException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } } }
/** * Create {@link EntityProviderReadProperties} which can be used for reading of inline properties/entrys of navigation * links within * this current read entry. * * @param readProperties * @param navigationProperty * @return * @throws EntityProviderException */ private EntityProviderReadProperties createInlineProperties(final EntityProviderReadProperties readProperties, final EdmNavigationProperty navigationProperty) throws EntityProviderException { final OnReadInlineContent callback = readProperties.getCallback(); EntityProviderReadProperties currentReadProperties = EntityProviderReadProperties.initFrom(readProperties).build(); if (callback == null) { return currentReadProperties; } else { try { return callback.receiveReadProperties(currentReadProperties, navigationProperty); } catch (ODataApplicationException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } } }
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; }
@Override public ODataResponse updateEntity(final PutMergePatchUriInfo uriInfo, final InputStream content, final String requestContentType, final boolean merge, 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 EdmEntitySet entitySet = uriInfo.getTargetEntitySet(); final EdmEntityType entityType = entitySet.getEntityType(); final EntityProviderReadProperties properties = EntityProviderReadProperties.init() .mergeSemantic(merge) .addTypeMappings(getStructuralTypeTypeMap(data, entityType)) .build(); final ODataEntry entryValues = parseEntry(entitySet, content, requestContentType, properties); setStructuralTypeValuesFromMap(data, entityType, entryValues.getProperties(), merge); return ODataResponse.newBuilder().eTag(constructETag(entitySet, data)).build(); }
@Override public ODataResponse updateEntity(final PutMergePatchUriInfo uriInfo, final InputStream content, final String requestContentType, final boolean merge, 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 EdmEntitySet entitySet = uriInfo.getTargetEntitySet(); final EdmEntityType entityType = entitySet.getEntityType(); final EntityProviderReadProperties properties = EntityProviderReadProperties.init() .mergeSemantic(merge) .addTypeMappings(getStructuralTypeTypeMap(data, entityType)) .build(); final ODataEntry entryValues = parseEntry(entitySet, content, requestContentType, properties); setStructuralTypeValuesFromMap(data, entityType, entryValues.getProperties(), merge); return ODataResponse.newBuilder().eTag(constructETag(entitySet, data)).build(); }
@Override public ODataResponse updateEntity(final PutMergePatchUriInfo uriInfo, final InputStream content, final String requestContentType, final boolean merge, 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 EdmEntitySet entitySet = uriInfo.getTargetEntitySet(); final EdmEntityType entityType = entitySet.getEntityType(); final EntityProviderReadProperties properties = EntityProviderReadProperties.init() .mergeSemantic(merge) .addTypeMappings(getStructuralTypeTypeMap(data, entityType)) .build(); final ODataEntry entryValues = parseEntry(entitySet, content, requestContentType, properties); setStructuralTypeValuesFromMap(data, entityType, entryValues.getProperties(), merge); return ODataResponse.newBuilder().eTag(constructETag(entitySet, data)).build(); }
public Object readPropertyValue(final EdmProperty edmProperty, final InputStream content, final Class<?> typeMapping) throws EntityProviderException { try { final Map<String, Object> result; EntityProviderReadPropertiesBuilder propertiesBuilder = EntityProviderReadProperties.init().mergeSemantic(false); if (typeMapping == null) { result = readProperty(edmProperty, content, propertiesBuilder.build()); } else { Map<String, Object> typeMappings = new HashMap<String, Object>(); typeMappings.put(edmProperty.getName(), typeMapping); result = readProperty(edmProperty, content, propertiesBuilder.addTypeMappings(typeMappings).build()); } return result.get(edmProperty.getName()); } catch (EdmException e) { throw new EntityProviderException(EntityProviderException.EXCEPTION_OCCURRED.addContent(e.getClass() .getSimpleName()), e); } }
public ODataEntry readEntry(String serviceUri, String contentType, String entitySetName, String keyValue, SystemQueryOptions options) throws IllegalStateException, IOException, EdmException, EntityProviderException { EdmEntityContainer entityContainer = readEdm() .getDefaultEntityContainer(); logger.info("Entity container is => " + entityContainer.getName()); String absolutUri = createUri(serviceUri, entitySetName, keyValue, options); InputStream content = executeGet(absolutUri, contentType); return EntityProvider.readEntry(contentType, entityContainer.getEntitySet(entitySetName), content, EntityProviderReadProperties.init().build()); }
public final ODataEntry parseEntry(final EdmEntitySet entitySet, final InputStream content, final String requestContentType, final boolean merge) throws ODataBadRequestException { ODataEntry entryValues; try { EntityProviderReadProperties entityProviderProperties = EntityProviderReadProperties.init().mergeSemantic(merge).build(); entryValues = EntityProvider.readEntry(requestContentType, entitySet, content, entityProviderProperties); } catch (EntityProviderException e) { throw new ODataBadRequestException(ODataBadRequestException.BODY, e); } return entryValues; }
public ODataFeed readFeed(String serviceUri, String contentType, String entitySetName, SystemQueryOptions options) throws IllegalStateException, IOException, EntityProviderException, EdmException { Edm edm = readEdm(); EdmEntityContainer entityContainer = edm.getDefaultEntityContainer(); String absolutUri = createUri(serviceUri, entitySetName, null, options); InputStream content = executeGet(absolutUri, contentType); return EntityProvider.readFeed(contentType, entityContainer.getEntitySet(entitySetName), content, EntityProviderReadProperties.init().build()); }