private void handleMimeType(final Object data, final EdmMapping mapping, final Map<String, Object> valueMap) throws ODataException { final String mimeTypeName = mapping.getMediaResourceMimeTypeKey(); if (mimeTypeName != null) { Object value = valueAccess.getMappingValue(data, mapping); valueMap.put(mimeTypeName, value); } }
final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (type instanceof EdmEntityType && ((EdmEntityType) type).getKeyProperties().contains(property)) { Object v = valueAccess.getPropertyValue(data, property); if (v != null) { continue; final Object value = valueMap == null ? null : valueMap.get(propertyName); if (property.isSimple()) { valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> values = (Map<String, Object>) value; Object complexData = valueAccess.getPropertyValue(data, property); if (complexData == null) { Class<?> complexClass = valueAccess.getPropertyType(data, property); complexData = createInstance(complexClass); valueAccess.setPropertyValue(data, property, complexData);
private <T> Map<String, Object> getStructuralTypeTypeMap(final T data, final EdmStructuralType type) throws ODataException { ODataContext context = getContext(); final int timingHandle = context.startRuntimeMeasurement(getClass().getSimpleName(), "getStructuralTypeTypeMap"); Map<String, Object> typeMap = new HashMap<String, Object>(); for (final String propertyName : type.getPropertyNames()) { final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (property.isSimple()) { typeMap.put(propertyName, valueAccess.getPropertyType(data, property)); } else { typeMap.put(propertyName, getStructuralTypeTypeMap(valueAccess.getPropertyValue(data, property), (EdmStructuralType) property.getType())); } } context.stopRuntimeMeasurement(timingHandle); return typeMap; }
private <T> Object getPropertyValue(final T data, final List<EdmProperty> propertyPath) throws ODataException { Object dataObject = data; for (final EdmProperty property : propertyPath) { if (dataObject != null) { dataObject = valueAccess.getPropertyValue(dataObject, property); } } return dataObject; }
@Override public ODataResponse deleteEntitySimplePropertyValue(final DeleteUriInfo uriInfo, final String contentType) throws ODataException { Object data = retrieveData( uriInfo.getStartEntitySet(), uriInfo.getKeyPredicates(), uriInfo.getFunctionImport(), mapFunctionParameters(uriInfo.getFunctionImportParameters()), uriInfo.getNavigationSegments()); if (data == null) { 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)); valueAccess.setPropertyValue(data, property, null); valueAccess.setMappingValue(data, property.getMapping(), null); return ODataResponse.newBuilder().build(); }
private <T> void setStructuralTypeValuesFromMap(final T data, final EdmStructuralType type, final Map<String, Object> valueMap, final boolean merge) throws ODataException { ODataContext context = getContext(); final int timingHandle = context.startRuntimeMeasurement(getClass().getSimpleName(), "setStructuralTypeValuesFromMap"); for (final String propertyName : type.getPropertyNames()) { final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (type instanceof EdmEntityType && ((EdmEntityType) type).getKeyProperties().contains(property)) { Object v = valueAccess.getPropertyValue(data, property); if (v != null) { continue; } } if (!merge || valueMap != null && valueMap.containsKey(propertyName)) { final Object value = valueMap == null ? null : valueMap.get(propertyName); if (property.isSimple()) { valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> values = (Map<String, Object>) value; setStructuralTypeValuesFromMap(valueAccess.getPropertyValue(data, property), (EdmStructuralType) property.getType(), values, merge); } } } context.stopRuntimeMeasurement(timingHandle); }
private <T> Object getPropertyValue(final T data, final List<EdmProperty> propertyPath) throws ODataException { Object dataObject = data; for (final EdmProperty property : propertyPath) { if (dataObject != null) { dataObject = valueAccess.getPropertyValue(dataObject, property); } } return dataObject; }
@Override public ODataResponse deleteEntitySimplePropertyValue(final DeleteUriInfo uriInfo, final String contentType) throws ODataException { Object data = retrieveData( uriInfo.getStartEntitySet(), uriInfo.getKeyPredicates(), uriInfo.getFunctionImport(), mapFunctionParameters(uriInfo.getFunctionImportParameters()), uriInfo.getNavigationSegments()); if (data == null) { 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)); valueAccess.setPropertyValue(data, property, null); valueAccess.setMappingValue(data, property.getMapping(), null); return ODataResponse.newBuilder().build(); }
valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> propertyValue = (Map<String, Object>) value; setStructuralTypeValuesFromMap(valueAccess.getPropertyValue(data, property), (EdmStructuralType) property.getType(), propertyValue, merge);
private <T> Map<String, Object> getStructuralTypeTypeMap(final T data, final EdmStructuralType type) throws ODataException { ODataContext context = getContext(); final int timingHandle = context.startRuntimeMeasurement(getClass().getSimpleName(), "getStructuralTypeTypeMap"); Map<String, Object> typeMap = new HashMap<String, Object>(); for (final String propertyName : type.getPropertyNames()) { final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (property.isSimple()) { Object value = valueAccess.getPropertyType(data, property); if (value != null) { typeMap.put(propertyName, value); } } else { Object value = valueAccess.getPropertyValue(data, property); if (value == null) { Class<?> complexClass = valueAccess.getPropertyType(data, property); value = createInstance(complexClass); } typeMap.put(propertyName, getStructuralTypeTypeMap(value, (EdmStructuralType) property.getType())); } } context.stopRuntimeMeasurement(timingHandle); return typeMap; }
private <T> Object getPropertyValue(final T data, final List<EdmProperty> propertyPath) throws ODataException { Object dataObject = data; for (final EdmProperty property : propertyPath) { if (dataObject != null) { dataObject = valueAccess.getPropertyValue(dataObject, property); } } return dataObject; }
@Override public ODataResponse deleteEntitySimplePropertyValue(final DeleteUriInfo uriInfo, final String contentType) throws ODataException { Object data = retrieveData( uriInfo.getStartEntitySet(), uriInfo.getKeyPredicates(), uriInfo.getFunctionImport(), mapFunctionParameters(uriInfo.getFunctionImportParameters()), uriInfo.getNavigationSegments()); if (data == null) { 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)); valueAccess.setPropertyValue(data, property, null); valueAccess.setMappingValue(data, property.getMapping(), null); return ODataResponse.newBuilder().build(); }
final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (type instanceof EdmEntityType && ((EdmEntityType) type).getKeyProperties().contains(property)) { Object v = valueAccess.getPropertyValue(data, property); if (v != null) { continue; final Object value = valueMap == null ? null : valueMap.get(propertyName); if (property.isSimple()) { valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> values = (Map<String, Object>) value; Object complexData = valueAccess.getPropertyValue(data, property); if (complexData == null) { Class<?> complexClass = valueAccess.getPropertyType(data, property); complexData = createInstance(complexClass); valueAccess.setPropertyValue(data, property, complexData);
valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> propertyValue = (Map<String, Object>) value; setStructuralTypeValuesFromMap(valueAccess.getPropertyValue(data, property), (EdmStructuralType) property.getType(), propertyValue, merge);
private <T> Map<String, Object> getStructuralTypeTypeMap(final T data, final EdmStructuralType type) throws ODataException { ODataContext context = getContext(); final int timingHandle = context.startRuntimeMeasurement(getClass().getSimpleName(), "getStructuralTypeTypeMap"); Map<String, Object> typeMap = new HashMap<String, Object>(); for (final String propertyName : type.getPropertyNames()) { final EdmProperty property = (EdmProperty) type.getProperty(propertyName); if (property.isSimple()) { Object value = valueAccess.getPropertyType(data, property); if (value != null) { typeMap.put(propertyName, value); } } else { Object value = valueAccess.getPropertyValue(data, property); if (value == null) { Class<?> complexClass = valueAccess.getPropertyType(data, property); value = createInstance(complexClass); } typeMap.put(propertyName, getStructuralTypeTypeMap(value, (EdmStructuralType) property.getType())); } } context.stopRuntimeMeasurement(timingHandle); return typeMap; }
private void handleMimeType(final Object data, final EdmMapping mapping, final Map<String, Object> valueMap) throws ODataException { final String mimeTypeName = mapping.getMediaResourceMimeTypeKey(); if (mimeTypeName != null) { Object value = valueAccess.getMappingValue(data, mapping); valueMap.put(mimeTypeName, value); } }
private <T> T readEntryData(final List<T> data, final EdmEntityType entityType, final Map<String, Object> key) throws ODataException { for (final T entryData : data) { boolean found = true; for (final EdmProperty keyProperty : entityType.getKeyProperties()) { if (!valueAccess.getPropertyValue(entryData, keyProperty).equals(key.get(keyProperty.getName()))) { found = false; break; } } if (found) { return entryData; } } return null; } }
@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(); }
valueAccess.setPropertyValue(data, property, value); } else { @SuppressWarnings("unchecked") final Map<String, Object> propertyValue = (Map<String, Object>) value; setStructuralTypeValuesFromMap(valueAccess.getPropertyValue(data, property), (EdmStructuralType) property.getType(), propertyValue, merge);
private void handleMimeType(final Object data, final EdmMapping mapping, final Map<String, Object> valueMap) throws ODataException { final String mimeTypeName = mapping.getMimeType(); if (mimeTypeName != null) { Object value = valueAccess.getMappingValue(data, mapping); valueMap.put(mimeTypeName, value); if (mapping.getMediaResourceMimeTypeKey() != null) { valueMap.put(mapping.getMediaResourceMimeTypeKey(), value); } } }