http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java deleted file mode 100644 index 6d03215..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java +++ /dev/null @@ -1,616 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.deserializer.json; - -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.apache.olingo.commons.api.Constants; -import org.apache.olingo.commons.api.data.Entity; -import org.apache.olingo.commons.api.data.EntitySet; -import org.apache.olingo.commons.api.data.Link; -import org.apache.olingo.commons.api.data.Property; -import org.apache.olingo.commons.api.data.ValueType; -import org.apache.olingo.commons.api.domain.ODataLinkType; -import org.apache.olingo.commons.api.edm.EdmComplexType; -import org.apache.olingo.commons.api.edm.EdmEntityType; -import org.apache.olingo.commons.api.edm.EdmEnumType; -import org.apache.olingo.commons.api.edm.EdmNavigationProperty; -import org.apache.olingo.commons.api.edm.EdmPrimitiveType; -import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; -import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; -import org.apache.olingo.commons.api.edm.EdmProperty; -import org.apache.olingo.commons.api.edm.EdmTypeDefinition; -import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; -import org.apache.olingo.commons.core.data.EntityImpl; -import org.apache.olingo.commons.core.data.EntitySetImpl; -import org.apache.olingo.commons.core.data.LinkImpl; -import org.apache.olingo.commons.core.data.PropertyImpl; -import org.apache.olingo.server.api.deserializer.DeserializerException; -import org.apache.olingo.server.api.deserializer.ODataDeserializer; - -import com.fasterxml.jackson.core.JsonFactory; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; - -public class ODataJsonDeserializer implements ODataDeserializer { - - private static final String ODATA_ANNOTATION_MARKER = "@"; - private static final String ODATA_CONTROL_INFORMATION_PREFIX = "@odata."; - - @Override - public EntitySet entityCollection(InputStream stream, EdmEntityType edmEntityType) throws DeserializerException { - try { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY, true); - JsonParser parser = new JsonFactory(objectMapper).createParser(stream); - final ObjectNode tree = parser.getCodec().readTree(parser); - - return consumeEntitySetNode(edmEntityType, tree); - } catch (JsonParseException e) { - throw new DeserializerException("An JsonParseException occurred", e, - DeserializerException.MessageKeys.JSON_SYNTAX_EXCEPTION); - } catch (JsonMappingException e) { - throw new DeserializerException("Duplicate json property detected", e, - DeserializerException.MessageKeys.DUPLICATE_JSON_PROPERTY); - } catch (IOException e) { - throw new DeserializerException("An IOException occurred", e, DeserializerException.MessageKeys.IO_EXCEPTION); - } - } - - private EntitySet consumeEntitySetNode(EdmEntityType edmEntityType, final ObjectNode tree) - throws DeserializerException { - EntitySetImpl entitySet = new EntitySetImpl(); - - // Consume entities - JsonNode jsonNode = tree.get(Constants.VALUE); - if (jsonNode != null) { - if (!jsonNode.isArray()) { - throw new DeserializerException("The content of the value tag must be an Array but is not. ", - DeserializerException.MessageKeys.VALUE_TAG_MUST_BE_AN_ARRAY); - } - - entitySet.getEntities().addAll(consumeEntitySetArray(edmEntityType, jsonNode)); - tree.remove(Constants.VALUE); - } else { - throw new DeserializerException("Could not find value array.", - DeserializerException.MessageKeys.VALUE_ARRAY_NOT_PRESENT); - } - - final List<String> toRemove = new ArrayList<String>(); - Iterator<Entry<String, JsonNode>> fieldsIterator = tree.fields(); - while (fieldsIterator.hasNext()) { - Map.Entry<String, JsonNode> field = fieldsIterator.next(); - - if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) { - // Control Information is ignored for requests as per specification chapter "4.5 Control Information" - toRemove.add(field.getKey()); - } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) { - throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported", - DeserializerException.MessageKeys.NOT_IMPLEMENTED); - } - } - // remove here to avoid iterator issues. - tree.remove(toRemove); - assertJsonNodeIsEmpty(tree); - - return entitySet; - } - - private List<Entity> consumeEntitySetArray(EdmEntityType edmEntityType, JsonNode jsonNode) - throws DeserializerException { - List<Entity> entities = new ArrayList<Entity>(); - for (JsonNode arrayElement : jsonNode) { - if (arrayElement.isArray() || arrayElement.isValueNode()) { - throw new DeserializerException("Nested Arrays and primitive values are not allowed for an entity value.", - DeserializerException.MessageKeys.INVALID_ENTITY); - } - - entities.add(consumeEntityNode(edmEntityType, (ObjectNode) arrayElement)); - } - return entities; - } - - @Override - public Entity entity(InputStream stream, EdmEntityType edmEntityType) throws DeserializerException { - try { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY, true); - JsonParser parser = new JsonFactory(objectMapper).createParser(stream); - final ObjectNode tree = parser.getCodec().readTree(parser); - - return consumeEntityNode(edmEntityType, tree); - - } catch (JsonParseException e) { - throw new DeserializerException("An JsonParseException occurred", e, - DeserializerException.MessageKeys.JSON_SYNTAX_EXCEPTION); - } catch (JsonMappingException e) { - throw new DeserializerException("Duplicate property detected", e, - DeserializerException.MessageKeys.DUPLICATE_PROPERTY); - } catch (IOException e) { - throw new DeserializerException("An IOException occurred", e, DeserializerException.MessageKeys.IO_EXCEPTION); - } - - } - - private Entity consumeEntityNode(EdmEntityType edmEntityType, final ObjectNode tree) throws DeserializerException { - EntityImpl entity = new EntityImpl(); - entity.setType(edmEntityType.getFullQualifiedName().getFullQualifiedNameAsString()); - - // Check and consume all Properties - consumeEntityProperties(edmEntityType, tree, entity); - - // Check and consume all expanded Navigation Properties - consumeExpandedNavigationProperties(edmEntityType, tree, entity); - - // consume remaining json node fields - consumeRemainingJsonNodeFields(edmEntityType, tree, entity); - - assertJsonNodeIsEmpty(tree); - - return entity; - } - - /** - * Consume all remaining fields of Json ObjectNode and try to map found values - * to according Entity fields and omit to be ignored OData fields (e.g. control information). - * - * @param edmEntityType edm entity type which for which the json node is consumed - * @param node json node which is consumed - * @param entity entity instance which is filled - * @throws DeserializerException if an exception during consummation occurs - */ - private void consumeRemainingJsonNodeFields(final EdmEntityType edmEntityType, final ObjectNode node, - final EntityImpl - entity) throws DeserializerException { - final List<String> toRemove = new ArrayList<String>(); - Iterator<Entry<String, JsonNode>> fieldsIterator = node.fields(); - while (fieldsIterator.hasNext()) { - Entry<String, JsonNode> field = fieldsIterator.next(); - - if (field.getKey().contains(Constants.JSON_BIND_LINK_SUFFIX)) { - Link bindingLink = consumeBindingLink(field.getKey(), field.getValue(), edmEntityType); - entity.getNavigationBindings().add(bindingLink); - toRemove.add(field.getKey()); - } else if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) { - // Control Information is ignored for requests as per specification chapter "4.5 Control Information" - toRemove.add(field.getKey()); - } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) { - throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported", - DeserializerException.MessageKeys.NOT_IMPLEMENTED); - } - } - // remove here to avoid iterator issues. - node.remove(toRemove); - } - - private void consumeEntityProperties(final EdmEntityType edmEntityType, final ObjectNode node, final EntityImpl - entity) throws DeserializerException { - List<String> propertyNames = edmEntityType.getPropertyNames(); - for (String propertyName : propertyNames) { - JsonNode jsonNode = node.get(propertyName); - if (jsonNode != null) { - EdmProperty edmProperty = (EdmProperty) edmEntityType.getProperty(propertyName); - if (jsonNode.isNull() && !isNullable(edmProperty)) { - throw new DeserializerException("Property: " + propertyName + " must not be null.", - DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName); - } - Property property = consumePropertyNode(edmProperty, jsonNode); - entity.addProperty(property); - node.remove(propertyName); - } - } - } - - private void consumeExpandedNavigationProperties(final EdmEntityType edmEntityType, final ObjectNode node, - final EntityImpl entity) throws DeserializerException { - List<String> navigationPropertyNames = edmEntityType.getNavigationPropertyNames(); - for (String navigationPropertyName : navigationPropertyNames) { - // read expanded navigation property - JsonNode jsonNode = node.get(navigationPropertyName); - if (jsonNode != null) { - EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); - boolean isNullable = edmNavigationProperty.isNullable() == null ? true : edmNavigationProperty.isNullable(); - if (jsonNode.isNull() && !isNullable) { - throw new DeserializerException("Property: " + navigationPropertyName + " must not be null.", - DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, navigationPropertyName); - } - - LinkImpl link = new LinkImpl(); - link.setTitle(navigationPropertyName); - if (jsonNode.isArray() && edmNavigationProperty.isCollection()) { - link.setType(ODataLinkType.ENTITY_SET_NAVIGATION.toString()); - EntitySetImpl inlineEntitySet = new EntitySetImpl(); - inlineEntitySet.getEntities().addAll(consumeEntitySetArray(edmNavigationProperty.getType(), jsonNode)); - link.setInlineEntitySet(inlineEntitySet); - } else if (!jsonNode.isArray() && !jsonNode.isValueNode() && !edmNavigationProperty.isCollection()) { - link.setType(ODataLinkType.ENTITY_NAVIGATION.toString()); - if (!jsonNode.isNull()) { - Entity inlineEntity = consumeEntityNode(edmNavigationProperty.getType(), (ObjectNode) jsonNode); - link.setInlineEntity(inlineEntity); - } - } else { - throw new DeserializerException("Invalid value: " + jsonNode.getNodeType() - + " for expanded navigation property: " + navigationPropertyName, - DeserializerException.MessageKeys.INVALID_VALUE_FOR_NAVIGATION_PROPERTY, navigationPropertyName); - } - entity.getNavigationLinks().add(link); - node.remove(navigationPropertyName); - } - } - } - - private Link consumeBindingLink(String key, JsonNode jsonNode, EdmEntityType edmEntityType) - throws DeserializerException { - String[] splitKey = key.split("@"); - String navigationPropertyName = splitKey[0]; - EdmNavigationProperty edmNavigationProperty = edmEntityType.getNavigationProperty(navigationPropertyName); - if (edmNavigationProperty == null) { - throw new DeserializerException("Invalid navigationPropertyName: " + navigationPropertyName, - DeserializerException.MessageKeys.NAVIGATION_PROPERTY_NOT_FOUND, navigationPropertyName); - } - LinkImpl bindingLink = new LinkImpl(); - bindingLink.setTitle(navigationPropertyName); - - if (edmNavigationProperty.isCollection()) { - assertIsNullNode(key, jsonNode); - if (!jsonNode.isArray()) { - throw new DeserializerException("Binding annotation: " + key + " must be an array.", - DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key); - } - List<String> bindingLinkStrings = new ArrayList<String>(); - for (JsonNode arrayValue : jsonNode) { - assertIsNullNode(key, arrayValue); - if (!arrayValue.isTextual()) { - throw new DeserializerException("Binding annotation: " + key + " must have string valued array.", - DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key); - } - bindingLinkStrings.add(arrayValue.asText()); - } - bindingLink.setType(ODataLinkType.ENTITY_COLLECTION_BINDING.toString()); - bindingLink.setBindingLinks(bindingLinkStrings); - } else { - assertIsNullNode(key, jsonNode); - if (!jsonNode.isValueNode()) { - throw new DeserializerException("Binding annotation: " + key + " must be a string value.", - DeserializerException.MessageKeys.INVALID_ANNOTATION_TYPE, key); - } - bindingLink.setBindingLink(jsonNode.asText()); - bindingLink.setType(ODataLinkType.ENTITY_BINDING.toString()); - } - return bindingLink; - } - - private void assertIsNullNode(String key, JsonNode jsonNode) throws DeserializerException { - if (jsonNode.isNull()) { - throw new DeserializerException("Annotation: " + key + "must not have a null value.", - DeserializerException.MessageKeys.INVALID_NULL_ANNOTATION, key); - } - } - - private Property consumePropertyNode(final EdmProperty edmProperty, final JsonNode jsonNode) - throws DeserializerException { - Property property = new PropertyImpl(); - property.setName(edmProperty.getName()); - property.setType(edmProperty.getType().getFullQualifiedName().getFullQualifiedNameAsString()); - if (edmProperty.isCollection()) { - consumePropertyCollectionNode(edmProperty, jsonNode, property); - } else { - consumePropertySingleNode(edmProperty, jsonNode, property); - } - return property; - } - - private void consumePropertySingleNode(final EdmProperty edmProperty, - final JsonNode jsonNode, final Property property) - throws DeserializerException { - switch (edmProperty.getType().getKind()) { - case PRIMITIVE: - Object value = readPrimitiveValue(edmProperty, jsonNode); - property.setValue(ValueType.PRIMITIVE, value); - break; - case DEFINITION: - value = readTypeDefinitionValue(edmProperty, jsonNode); - property.setValue(ValueType.PRIMITIVE, value); - break; - case ENUM: - value = readEnumValue(edmProperty, jsonNode); - property.setValue(ValueType.PRIMITIVE, value); - break; - case COMPLEX: - value = readComplexNode(edmProperty, jsonNode); - property.setValue(ValueType.COMPLEX, value); - - break; - default: - throw new DeserializerException("Invalid Type Kind for a property found: " + edmProperty.getType().getKind(), - DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName()); - } - } - - private Object readComplexNode(final EdmProperty edmProperty, final JsonNode jsonNode) - throws DeserializerException { - // read and add all complex properties - Object value = readComplexValue(edmProperty, jsonNode); - - final List<String> toRemove = new ArrayList<String>(); - Iterator<Entry<String, JsonNode>> fieldsIterator = jsonNode.fields(); - while (fieldsIterator.hasNext()) { - Entry<String, JsonNode> field = fieldsIterator.next(); - - if (field.getKey().contains(ODATA_CONTROL_INFORMATION_PREFIX)) { - // Control Information is ignored for requests as per specification chapter "4.5 Control Information" - toRemove.add(field.getKey()); - } else if (field.getKey().contains(ODATA_ANNOTATION_MARKER)) { - throw new DeserializerException("Custom annotation with field name: " + field.getKey() + " not supported", - DeserializerException.MessageKeys.NOT_IMPLEMENTED); - } - } - // remove here to avoid iterator issues. - if(!jsonNode.isNull()) { - ((ObjectNode) jsonNode).remove(toRemove); - } - // Afterwards the node must be empty - assertJsonNodeIsEmpty(jsonNode); - - return value; - } - - private void consumePropertyCollectionNode(final EdmProperty edmProperty, final JsonNode jsonNode, - final Property property) throws DeserializerException { - if (!jsonNode.isArray()) { - throw new DeserializerException("Value for property: " + edmProperty.getName() - + " must be an array but is not.", DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, - edmProperty.getName()); - } - List<Object> valueArray = new ArrayList<Object>(); - Iterator<JsonNode> iterator = jsonNode.iterator(); - switch (edmProperty.getType().getKind()) { - case PRIMITIVE: - while (iterator.hasNext()) { - JsonNode arrayElement = iterator.next(); - Object value = readPrimitiveValue(edmProperty, arrayElement); - valueArray.add(value); - } - property.setValue(ValueType.COLLECTION_PRIMITIVE, valueArray); - break; - case DEFINITION: - while (iterator.hasNext()) { - JsonNode arrayElement = iterator.next(); - Object value = readTypeDefinitionValue(edmProperty, arrayElement); - valueArray.add(value); - } - property.setValue(ValueType.COLLECTION_PRIMITIVE, valueArray); - break; - case ENUM: - while (iterator.hasNext()) { - JsonNode arrayElement = iterator.next(); - Object value = readEnumValue(edmProperty, arrayElement); - valueArray.add(value); - } - property.setValue(ValueType.COLLECTION_ENUM, valueArray); - break; - case COMPLEX: - while (iterator.hasNext()) { - // read and add all complex properties - Object value = readComplexNode(edmProperty, iterator.next()); - valueArray.add(value); - } - property.setValue(ValueType.COLLECTION_COMPLEX, valueArray); - break; - default: - throw new DeserializerException("Invalid Type Kind for a property found: " + edmProperty.getType().getKind(), - DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName()); - } - } - - private Object readComplexValue(EdmProperty edmComplexProperty, JsonNode jsonNode) throws DeserializerException { - if(isValidNull(edmComplexProperty, jsonNode)) { - return null; - } - if (jsonNode.isArray() || !jsonNode.isContainerNode()) { - throw new DeserializerException( - "Invalid value for property: " + edmComplexProperty.getName() + " must not be an array or primitive value.", - DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmComplexProperty.getName()); - } - // Even if there are no properties defined we have to give back an empty list - List<Property> propertyList = new ArrayList<Property>(); - EdmComplexType edmType = (EdmComplexType) edmComplexProperty.getType(); - // Check and consume all Properties - for (String propertyName : edmType.getPropertyNames()) { - JsonNode subNode = jsonNode.get(propertyName); - if (subNode != null) { - EdmProperty edmProperty = (EdmProperty) edmType.getProperty(propertyName); - if (subNode.isNull() && !isNullable(edmProperty)) { - throw new DeserializerException("Property: " + propertyName + " must not be null.", - DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, propertyName); - } - Property property = consumePropertyNode(edmProperty, subNode); - propertyList.add(property); - ((ObjectNode) jsonNode).remove(propertyName); - } - } - return propertyList; - } - - private boolean isNullable(EdmProperty edmProperty) { - return edmProperty.isNullable() == null ? true : edmProperty.isNullable(); - } - - private Object readTypeDefinitionValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException { - checkForValueNode(edmProperty, jsonNode); - if(isValidNull(edmProperty, jsonNode)) { - return null; - } - try { - EdmTypeDefinition edmTypeDefinition = (EdmTypeDefinition) edmProperty.getType(); - checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmTypeDefinition.getUnderlyingType().getName(), - jsonNode); - return edmTypeDefinition.valueOfString(jsonNode.asText(), edmProperty.isNullable(), - edmTypeDefinition.getMaxLength(), - edmTypeDefinition.getPrecision(), edmTypeDefinition.getScale(), edmTypeDefinition.isUnicode(), - edmTypeDefinition.getDefaultType()); - } catch (EdmPrimitiveTypeException e) { - throw new DeserializerException( - "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e, - DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName()); - } - } - - private boolean isValidNull(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException { - if (jsonNode.isNull()) { - if (isNullable(edmProperty)) { - return true; - } else { - throw new DeserializerException("Property: " + edmProperty.getName() + " must not be null.", - DeserializerException.MessageKeys.INVALID_NULL_PROPERTY, edmProperty.getName()); - } - - } - return false; - } - - private Object readEnumValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException { - checkForValueNode(edmProperty, jsonNode); - if(isValidNull(edmProperty, jsonNode)) { - return null; - } - try { - EdmEnumType edmEnumType = (EdmEnumType) edmProperty.getType(); - checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmEnumType.getUnderlyingType().getName(), jsonNode); - return edmEnumType - .valueOfString(jsonNode.asText(), edmProperty.isNullable(), edmProperty.getMaxLength(), edmProperty - .getPrecision(), edmProperty.getScale(), edmProperty.isUnicode(), edmEnumType.getDefaultType()); - } catch (EdmPrimitiveTypeException e) { - throw new DeserializerException( - "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e, - DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName()); - } - } - - private Object readPrimitiveValue(EdmProperty edmProperty, JsonNode jsonNode) throws DeserializerException { - checkForValueNode(edmProperty, jsonNode); - if(isValidNull(edmProperty, jsonNode)) { - return null; - } - try { - EdmPrimitiveType edmPrimitiveType = (EdmPrimitiveType) edmProperty.getType(); - checkJsonTypeBasedOnPrimitiveType(edmProperty.getName(), edmPrimitiveType.getName(), jsonNode); - return edmPrimitiveType.valueOfString(jsonNode.asText(), edmProperty.isNullable(), - edmProperty.getMaxLength(), edmProperty.getPrecision(), edmProperty.getScale(), - edmProperty.isUnicode(), edmPrimitiveType.getDefaultType()); - } catch (EdmPrimitiveTypeException e) { - throw new DeserializerException( - "Invalid value: " + jsonNode.asText() + " for property: " + edmProperty.getName(), e, - DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, edmProperty.getName()); - } - } - - /** - * Check if JsonNode is a value node (<code>jsonNode.isValueNode()</code>) and if not throw - * an DeserializerException. - * - * @param edmProperty property which is checked - * @param jsonNode node which is checked - * @throws DeserializerException is thrown if json node is not a value node - */ - private void checkForValueNode(final EdmProperty edmProperty, final JsonNode jsonNode) - throws DeserializerException { - if (!jsonNode.isValueNode()) { - throw new DeserializerException( - "Invalid value for property: " + edmProperty.getName() + " must not be an object or array.", - DeserializerException.MessageKeys.INVALID_JSON_TYPE_FOR_PROPERTY, edmProperty.getName()); - } - } - - /** - * Validate that node is empty (<code>node.size == 0</code>) and if not throw - * an <code>DeserializerException</code>. - * - * @param node node to be checked - * @throws DeserializerException if node is not empty - */ - private void assertJsonNodeIsEmpty(JsonNode node) throws DeserializerException { - if (node.size() != 0) { - final String unknownField = node.fieldNames().next(); - throw new DeserializerException("Tree should be empty but still has content left: " + unknownField, - DeserializerException.MessageKeys.UNKOWN_CONTENT, unknownField); - } - } - - private void checkJsonTypeBasedOnPrimitiveType(String propertyName, String edmPrimitiveTypeName, JsonNode jsonNode) - throws DeserializerException { - EdmPrimitiveTypeKind primKind; - try { - primKind = EdmPrimitiveTypeKind.valueOf(ODataServiceVersion.V40, edmPrimitiveTypeName); - } catch (IllegalArgumentException e) { - throw new DeserializerException("Unknown Primitive Type: " + edmPrimitiveTypeName, e, - DeserializerException.MessageKeys.UNKNOWN_PRIMITIVE_TYPE, edmPrimitiveTypeName, propertyName); - } - switch (primKind) { - // Booleans - case Boolean: - if (!jsonNode.isBoolean()) { - throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind - + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName); - } - break; - // Numbers - case Int16: - case Int32: - case Int64: - case Byte: - case SByte: - case Single: - case Double: - case Decimal: - if (!jsonNode.isNumber()) { - throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind - + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName); - } - break; - // Strings - case String: - case Binary: - case Date: - case DateTimeOffset: - case Duration: - case Guid: - case TimeOfDay: - if (!jsonNode.isTextual()) { - throw new DeserializerException("Invalid json type: " + jsonNode.getNodeType() + " for edm " + primKind - + " property: " + propertyName, DeserializerException.MessageKeys.INVALID_VALUE_FOR_PROPERTY, propertyName); - } - break; - default: - throw new DeserializerException("Unsupported Edm Primitive Type: " + primKind, - DeserializerException.MessageKeys.NOT_IMPLEMENTED); - } - } -}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java deleted file mode 100644 index e96e165..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAction; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; -import org.apache.olingo.server.api.edm.provider.Action; - -public class EdmActionImpl extends EdmOperationImpl implements EdmAction { - - public static EdmActionImpl getInstance(final Edm edm, final FullQualifiedName name, final Action action) { - return EdmOperationImpl.getInstance(new EdmActionImpl(edm, name, action)); - } - - private EdmActionImpl(final Edm edm, final FullQualifiedName name, final Action action) { - super(edm, name, action, EdmTypeKind.ACTION); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java deleted file mode 100644 index 0278f6b..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmActionImportImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAction; -import org.apache.olingo.commons.api.edm.EdmActionImport; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.server.api.edm.provider.ActionImport; - -public class EdmActionImportImpl extends EdmOperationImportImpl implements EdmActionImport { - - private final ActionImport actionImport; - - public EdmActionImportImpl(final Edm edm, final EdmEntityContainer container, final ActionImport actionImport) { - - super(edm, container, actionImport); - this.actionImport = actionImport; - } - - @Override - public EdmAction getUnboundAction() { - return edm.getUnboundAction(actionImport.getAction()); - } - - @Override - public TargetType getAnnotationsTargetType() { - return TargetType.ActionImport; - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java deleted file mode 100644 index bd3df0a..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmBindingTargetImpl.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding; -import org.apache.olingo.commons.api.edm.Target; -import org.apache.olingo.commons.core.edm.AbstractEdmBindingTarget; -import org.apache.olingo.commons.core.edm.EdmNavigationPropertyBindingImpl; -import org.apache.olingo.server.api.edm.provider.BindingTarget; -import org.apache.olingo.server.api.edm.provider.NavigationPropertyBinding; - -import java.util.ArrayList; -import java.util.List; - -public abstract class EdmBindingTargetImpl extends AbstractEdmBindingTarget { - - private final BindingTarget target; - private List<EdmNavigationPropertyBinding> navigationPropertyBindings; - - public EdmBindingTargetImpl(final Edm edm, final EdmEntityContainer container, final BindingTarget target) { - super(edm, container, target.getName(), target.getType()); - this.target = target; - } - - @Override - public List<EdmNavigationPropertyBinding> getNavigationPropertyBindings() { - if (navigationPropertyBindings == null) { - List<NavigationPropertyBinding> providerBindings = target.getNavigationPropertyBindings(); - navigationPropertyBindings = new ArrayList<EdmNavigationPropertyBinding>(); - if (providerBindings != null) { - for (NavigationPropertyBinding binding : providerBindings) { - Target providerTarget = binding.getTarget(); - String targetString = ""; - if (providerTarget.getEntityContainer() != null) { - targetString = targetString + providerTarget.getEntityContainer().getFullQualifiedNameAsString() + "/"; - } - targetString = targetString + providerTarget.getTargetName(); - navigationPropertyBindings.add(new EdmNavigationPropertyBindingImpl(binding.getPath(), targetString)); - } - } - } - return navigationPropertyBindings; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java deleted file mode 100644 index 36c5193..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmComplexTypeImpl.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmNavigationProperty; -import org.apache.olingo.commons.api.edm.EdmProperty; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmComplexType; -import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper; -import org.apache.olingo.server.api.edm.provider.ComplexType; - -import java.util.List; -import java.util.Map; - -public class EdmComplexTypeImpl extends AbstractEdmComplexType { - - private final EdmStructuredTypeHelper helper; - - public static EdmComplexTypeImpl getInstance( - final Edm edm, final FullQualifiedName name, final ComplexType complexType) { - - final EdmComplexTypeImpl instance = new EdmComplexTypeImpl(edm, name, complexType); - return instance; - } - - private EdmComplexTypeImpl(final Edm edm, final FullQualifiedName name, final ComplexType complexType) { - super(edm, name, complexType.getBaseType()); - helper = new EdmStructuredTypeHelperImpl(edm, name, complexType); - } - - @Override - protected Map<String, EdmProperty> getProperties() { - return helper.getProperties(); - } - - @Override - protected Map<String, EdmNavigationProperty> getNavigationProperties() { - return helper.getNavigationProperties(); - } - - @Override - public boolean isOpenType() { - return helper.isOpenType(); - } - - @Override - public boolean isAbstract() { - return helper.isAbstract(); - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java deleted file mode 100644 index 1ed8d56..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityContainerImpl.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.ODataException; -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmActionImport; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmEntitySet; -import org.apache.olingo.commons.api.edm.EdmException; -import org.apache.olingo.commons.api.edm.EdmFunctionImport; -import org.apache.olingo.commons.api.edm.EdmSingleton; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmEntityContainer; -import org.apache.olingo.server.api.edm.provider.ActionImport; -import org.apache.olingo.server.api.edm.provider.EdmProvider; -import org.apache.olingo.server.api.edm.provider.EntityContainer; -import org.apache.olingo.server.api.edm.provider.EntityContainerInfo; -import org.apache.olingo.server.api.edm.provider.EntitySet; -import org.apache.olingo.server.api.edm.provider.FunctionImport; -import org.apache.olingo.server.api.edm.provider.Singleton; - -import java.util.List; - -public class EdmEntityContainerImpl extends AbstractEdmEntityContainer { - - private final EdmProvider provider; - - private EntityContainer container; - - public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider, - final EntityContainerInfo entityContainerInfo) { - super(edm, entityContainerInfo.getContainerName(), entityContainerInfo.getExtendsContainer()); - this.provider = provider; - } - - public EdmEntityContainerImpl(final Edm edm, final EdmProvider provider, final FullQualifiedName containerFQN, - final EntityContainer entityContainer) { - super(edm, containerFQN, entityContainer.getExtendsContainer()); - this.provider = provider; - container = entityContainer; - } - - @Override - protected EdmSingleton createSingleton(final String singletonName) { - EdmSingleton singleton = null; - - try { - final Singleton providerSingleton = provider.getSingleton(entityContainerName, singletonName); - if (providerSingleton != null) { - singleton = new EdmSingletonImpl(edm, this, providerSingleton); - } - } catch (ODataException e) { - throw new EdmException(e); - } - - return singleton; - } - - @Override - protected EdmEntitySet createEntitySet(final String entitySetName) { - EdmEntitySet entitySet = null; - - try { - final EntitySet providerEntitySet = provider.getEntitySet(entityContainerName, entitySetName); - if (providerEntitySet != null) { - entitySet = new EdmEntitySetImpl(edm, this, providerEntitySet); - } - } catch (ODataException e) { - throw new EdmException(e); - } - - return entitySet; - } - - @Override - protected EdmActionImport createActionImport(final String actionImportName) { - EdmActionImport actionImport = null; - - try { - final ActionImport providerImport = provider.getActionImport(entityContainerName, actionImportName); - if (providerImport != null) { - actionImport = new EdmActionImportImpl(edm, this, providerImport); - } - } catch (ODataException e) { - throw new EdmException(e); - } - - return actionImport; - } - - @Override - protected EdmFunctionImport createFunctionImport(final String functionImportName) { - EdmFunctionImport functionImport = null; - - try { - final FunctionImport providerImport = provider.getFunctionImport(entityContainerName, functionImportName); - if (providerImport != null) { - functionImport = new EdmFunctionImportImpl(edm, this, providerImport); - } - } catch (ODataException e) { - throw new EdmException(e); - } - - return functionImport; - } - - @Override - protected void loadAllEntitySets() { - loadContainer(); - List<EntitySet> providerEntitySets = container.getEntitySets(); - if (providerEntitySets != null) { - for (EntitySet entitySet : providerEntitySets) { - if (!entitySets.containsKey(entitySet.getName())) { - EdmEntitySetImpl impl = new EdmEntitySetImpl(edm, this, entitySet); - entitySets.put(impl.getName(), impl); - } - } - } - } - - @Override - protected void loadAllFunctionImports() { - loadContainer(); - List<FunctionImport> providerFuctionImports = container.getFunctionImports(); - if (providerFuctionImports != null) { - for (FunctionImport functionImport : providerFuctionImports) { - String functionName = functionImport.getName(); - if (!functionImports.containsKey(functionName)) { - EdmFunctionImportImpl impl = new EdmFunctionImportImpl(edm, this, functionImport); - functionImports.put(functionName, impl); - } - } - } - - } - - @Override - protected void loadAllSingletons() { - loadContainer(); - List<Singleton> providerSingletons = container.getSingletons(); - if (providerSingletons != null) { - for (Singleton singleton : providerSingletons) { - if (!singletons.containsKey(singleton.getName())) { - EdmSingletonImpl impl = new EdmSingletonImpl(edm, this, singleton); - singletons.put(singleton.getName(), impl); - } - } - } - - } - - @Override - protected void loadAllActionImports() { - loadContainer(); - List<ActionImport> providerActionImports = container.getActionImports(); - if (providerActionImports != null) { - for (ActionImport actionImport : providerActionImports) { - if (!actionImports.containsKey(actionImport.getName())) { - EdmActionImportImpl impl = new EdmActionImportImpl(edm, this, actionImport); - actionImports.put(actionImport.getName(), impl); - } - } - } - - } - - private void loadContainer() { - if (container == null) { - try { - container = provider.getEntityContainer(); - if (container == null) { - // TODO: Should we throw an exception here? - container = new EntityContainer().setName(getName()); - } - } catch (ODataException e) { - throw new EdmException(e); - } - } - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java deleted file mode 100644 index a2926eb..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntitySetImpl.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.commons.api.edm.EdmEntitySet; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.server.api.edm.provider.EntitySet; - -import java.util.List; - -public class EdmEntitySetImpl extends EdmBindingTargetImpl implements EdmEntitySet { - - private EntitySet entitySet; - - public EdmEntitySetImpl(final Edm edm, final EdmEntityContainer container, final EntitySet entitySet) { - super(edm, container, entitySet); - this.entitySet = entitySet; - } - - @Override - public boolean isIncludeInServiceDocument() { - return entitySet.isIncludeInServiceDocument(); - } - - @Override - public TargetType getAnnotationsTargetType() { - return TargetType.EntitySet; - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java deleted file mode 100644 index 4dff2ba..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEntityTypeImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmEntityType; -import org.apache.olingo.commons.api.edm.EdmKeyPropertyRef; -import org.apache.olingo.commons.api.edm.EdmNavigationProperty; -import org.apache.olingo.commons.api.edm.EdmProperty; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmEntityType; -import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper; -import org.apache.olingo.server.api.edm.provider.EntityType; -import org.apache.olingo.server.api.edm.provider.PropertyRef; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -public class EdmEntityTypeImpl extends AbstractEdmEntityType { - - private final EdmStructuredTypeHelper helper; - - private EntityType entityType; - - private boolean baseTypeChecked = false; - - public static EdmEntityTypeImpl getInstance(final Edm edm, final FullQualifiedName name, - final EntityType entityType) { - - final EdmEntityTypeImpl instance = new EdmEntityTypeImpl(edm, name, entityType); - return instance; - } - - private EdmEntityTypeImpl(final Edm edm, final FullQualifiedName name, final EntityType entityType) { - super(edm, name, entityType.getBaseType(), entityType.hasStream()); - this.entityType = entityType; - helper = new EdmStructuredTypeHelperImpl(edm, name, entityType); - } - - @Override - protected Map<String, EdmProperty> getProperties() { - return helper.getProperties(); - } - - @Override - protected Map<String, EdmNavigationProperty> getNavigationProperties() { - return helper.getNavigationProperties(); - } - - @Override - protected void checkBaseType() { - if (!baseTypeChecked) { - if (baseTypeName != null) { - baseType = buildBaseType(baseTypeName); - entityBaseType = (EdmEntityType) baseType; - } - if (baseType == null - || (baseType.isAbstract() && ((AbstractEdmEntityType) baseType).getKeyPropertyRefs().size() == 0)) { - final List<PropertyRef> key = entityType.getKey(); - if (key != null) { - final List<EdmKeyPropertyRef> edmKey = new ArrayList<EdmKeyPropertyRef>(); - for (PropertyRef ref : key) { - edmKey.add(new EdmKeyPropertyRefImpl(this, ref)); - } - setEdmKeyPropertyRef(edmKey); - } - } - baseTypeChecked = true; - } - } - - @Override - public boolean isOpenType() { - return helper.isOpenType(); - } - - @Override - public boolean isAbstract() { - return helper.isAbstract(); - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java deleted file mode 100644 index ac1c83d..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmEnumTypeImpl.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import java.util.ArrayList; -import java.util.List; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmMember; -import org.apache.olingo.commons.api.edm.EdmPrimitiveType; -import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmEnumType; -import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; -import org.apache.olingo.server.api.edm.provider.EnumMember; -import org.apache.olingo.server.api.edm.provider.EnumType; - -public class EdmEnumTypeImpl extends AbstractEdmEnumType { - - private final EdmPrimitiveType underlyingType; - - private final EnumType enumType; - - private List<EdmMember> members; - - public EdmEnumTypeImpl(final Edm edm, final FullQualifiedName enumName, final EnumType enumType) { - super(edm, enumName, enumType.isFlags()); - - if (enumType.getUnderlyingType() == null) { - underlyingType = EdmPrimitiveTypeFactory.getInstance(EdmPrimitiveTypeKind.Int32); - } else { - underlyingType = EdmPrimitiveTypeFactory.getInstance( - EdmPrimitiveTypeKind.valueOf(enumType.getUnderlyingType().getName())); - // TODO: Should we validate that the underlying type is of byte, sbyte, in16, int32 or int64? - } - - this.enumType = enumType; - } - - @Override - public EdmPrimitiveType getUnderlyingType() { - return underlyingType; - } - - @Override - protected List<? extends EdmMember> getMembers() { - if (members == null) { - members = new ArrayList<EdmMember>(enumType.getMembers().size()); - for (EnumMember member : enumType.getMembers()) { - members.add(new EdmMemberImpl(edm, getFullQualifiedName(), member.getName(), member.getValue())); - } - } - return members; - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java deleted file mode 100644 index f23e0a8..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImpl.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmException; -import org.apache.olingo.commons.api.edm.EdmFunction; -import org.apache.olingo.commons.api.edm.EdmReturnType; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; -import org.apache.olingo.server.api.edm.provider.Function; - -public class EdmFunctionImpl extends EdmOperationImpl implements EdmFunction { - - private final Function function; - - public static EdmFunctionImpl getInstance(final Edm edm, final FullQualifiedName name, final Function function) { - return EdmOperationImpl.getInstance(new EdmFunctionImpl(edm, name, function)); - } - - private EdmFunctionImpl(final Edm edm, final FullQualifiedName name, final Function function) { - super(edm, name, function, EdmTypeKind.FUNCTION); - this.function = function; - } - - @Override - public boolean isComposable() { - return function.isComposable(); - } - - @Override - public EdmReturnType getReturnType() { - final EdmReturnType returnType = super.getReturnType(); - if (returnType == null) { - throw new EdmException("ReturnType for a function must not be null"); - } - return returnType; - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java deleted file mode 100644 index e07eb9f..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmFunctionImportImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.commons.api.edm.EdmFunction; -import org.apache.olingo.commons.api.edm.EdmFunctionImport; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.server.api.edm.provider.FunctionImport; - -import java.util.List; - -public class EdmFunctionImportImpl extends EdmOperationImportImpl implements EdmFunctionImport { - - private final FunctionImport functionImport; - - public EdmFunctionImportImpl(final Edm edm, final EdmEntityContainer container, final FunctionImport functionImport) { - - super(edm, container, functionImport); - this.functionImport = functionImport; - } - - @Override - public FullQualifiedName getFunctionFqn() { - return functionImport.getFunction(); - } - - @Override - public EdmFunction getUnboundFunction(final List<String> parameterNames) { - return edm.getUnboundFunction(getFunctionFqn(), parameterNames); - } - - @Override - public List<EdmFunction> getUnboundFunctions() { - return edm.getUnboundFunctions(getFunctionFqn()); - } - - @Override - public boolean isIncludeInServiceDocument() { - return functionImport.isIncludeInServiceDocument(); - } - - @Override - public TargetType getAnnotationsTargetType() { - return TargetType.FunctionImport; - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java deleted file mode 100644 index 0660ac0..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmKeyPropertyRefImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.EdmEntityType; -import org.apache.olingo.commons.core.edm.AbstractEdmKeyPropertyRef; -import org.apache.olingo.server.api.edm.provider.PropertyRef; - -public class EdmKeyPropertyRefImpl extends AbstractEdmKeyPropertyRef { - - private final PropertyRef ref; - - public EdmKeyPropertyRefImpl(final EdmEntityType edmEntityType, final PropertyRef ref) { - super(edmEntityType); - this.ref = ref; - } - - @Override - public String getKeyPropertyName() { - return ref.getPropertyName(); - } - - @Override - public String getAlias() { - return ref.getAlias(); - } - - @Override - public String getPath() { - return ref.getPath(); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java deleted file mode 100644 index 5ffe031..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmMemberImpl.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmMember; - -import java.util.List; - -public class EdmMemberImpl extends AbstractEdmMember { - - public EdmMemberImpl(final Edm edm, final FullQualifiedName enumFQN, final String name, final String value) { - super(edm, enumFQN, name, value); - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java deleted file mode 100644 index 7562360..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmNavigationPropertyImpl.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmReferentialConstraint; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.core.edm.AbstractEdmNavigationProperty; -import org.apache.olingo.server.api.edm.provider.NavigationProperty; -import org.apache.olingo.server.api.edm.provider.ReferentialConstraint; - -import java.util.ArrayList; -import java.util.List; - -public class EdmNavigationPropertyImpl extends AbstractEdmNavigationProperty { - - private final FullQualifiedName structuredTypeName; - - private final NavigationProperty navigationProperty; - - private List<EdmReferentialConstraint> referentialConstraints; - - public EdmNavigationPropertyImpl( - final Edm edm, final FullQualifiedName structuredTypeName, final NavigationProperty navigationProperty) { - - super(edm, navigationProperty.getName()); - - this.structuredTypeName = structuredTypeName; - this.navigationProperty = navigationProperty; - } - - @Override - protected FullQualifiedName getTypeFQN() { - return navigationProperty.getType(); - } - - @Override - public boolean isCollection() { - return navigationProperty.isCollection(); - } - - @Override - public Boolean isNullable() { - return navigationProperty.getNullable(); - } - - @Override - public Boolean containsTarget() { - return navigationProperty.isContainsTarget(); - } - - @Override - protected String internatGetPartner() { - return navigationProperty.getPartner(); - } - - @Override - public String getReferencingPropertyName(final String referencedPropertyName) { - final List<ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints(); - if (referentialConstraints != null) { - for (ReferentialConstraint constraint : referentialConstraints) { - if (constraint.getReferencedProperty().equals(referencedPropertyName)) { - return constraint.getProperty(); - } - } - } - return null; - } - - @Override - public List<EdmReferentialConstraint> getReferentialConstraints() { - if (referentialConstraints == null) { - final List<ReferentialConstraint> providerConstraints = navigationProperty.getReferentialConstraints(); - referentialConstraints = new ArrayList<EdmReferentialConstraint>(); - if (providerConstraints != null) { - for (ReferentialConstraint constraint : providerConstraints) { - referentialConstraints.add( - new EdmReferentialConstraintImpl(constraint.getProperty(), constraint.getReferencedProperty())); - } - } - } - return referentialConstraints; - } - - @Override - public FullQualifiedName getAnnotationsTargetFQN() { - return structuredTypeName; - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java deleted file mode 100644 index 0b5a8f2..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImpl.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmParameter; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; -import org.apache.olingo.commons.core.edm.AbstractEdmOperation; -import org.apache.olingo.server.api.edm.provider.EntitySetPath; -import org.apache.olingo.server.api.edm.provider.Operation; -import org.apache.olingo.server.api.edm.provider.Parameter; - -import java.util.ArrayList; -import java.util.List; - -public abstract class EdmOperationImpl extends AbstractEdmOperation { - - protected final Operation operation; - - protected static <T extends EdmOperationImpl> T getInstance(final T instance) { - final List<Parameter> providerParameters = instance.operation.getParameters(); - if (providerParameters != null) { - final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(providerParameters.size()); - for (Parameter parameter : providerParameters) { - _parameters.add(new EdmParameterImpl(instance.edm, parameter)); - } - instance.setParameters(_parameters); - } - - final EntitySetPath entitySetPath = instance.operation.getEntitySetPath(); - if (entitySetPath != null && entitySetPath.getPath() != null) { - instance.setEntitySetPath(entitySetPath.getPath()); - } - - instance.setIsBound(instance.operation.isBound()); - - if (instance.operation.getReturnType() != null) { - instance.setReturnType(new EdmReturnTypeImpl(instance.edm, instance.operation.getReturnType())); - } - - return instance; - } - - protected EdmOperationImpl(final Edm edm, final FullQualifiedName name, final Operation operation, - final EdmTypeKind kind) { - - super(edm, name, kind); - this.operation = operation; - } - - @Override - public FullQualifiedName getBindingParameterTypeFqn() { - if (isBound()) { - Parameter bindingParameter = operation.getParameters().get(0); - return bindingParameter.getType(); - } - return null; - } - - @Override - public Boolean isBindingParameterTypeCollection() { - if (isBound()) { - Parameter bindingParameter = operation.getParameters().get(0); - return bindingParameter.isCollection(); - } - return null; - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java deleted file mode 100644 index 2cc85d0..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmOperationImportImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmEntityContainer; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.core.edm.AbstractEdmOperationImport; -import org.apache.olingo.server.api.edm.provider.OperationImport; - -import java.util.List; - -public abstract class EdmOperationImportImpl extends AbstractEdmOperationImport { - - public EdmOperationImportImpl(final Edm edm, final EdmEntityContainer container, - final OperationImport operationImport) { - super(edm, container, operationImport.getName(), operationImport.getEntitySet()); - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java deleted file mode 100644 index 53b46d2..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmParameterImpl.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmMapping; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.geo.SRID; -import org.apache.olingo.commons.core.edm.AbstractEdmParameter; -import org.apache.olingo.server.api.edm.provider.Parameter; - -import java.util.List; - -public class EdmParameterImpl extends AbstractEdmParameter { - - private final Parameter parameter; - - public EdmParameterImpl(final Edm edm, final Parameter parameter) { - super(edm, parameter.getName(), parameter.getType()); - this.parameter = parameter; - } - - @Override - public boolean isCollection() { - return parameter.isCollection(); - } - - @Override - public EdmMapping getMapping() { - return parameter.getMapping(); - } - - @Override - public Boolean isNullable() { - return parameter.getNullable(); - } - - @Override - public Integer getMaxLength() { - return parameter.getMaxLength(); - } - - @Override - public Integer getPrecision() { - return parameter.getPrecision(); - } - - @Override - public Integer getScale() { - return parameter.getScale(); - } - - @Override - public SRID getSrid() { - return null; // TODO: provide implementation - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/f7a7b484/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java deleted file mode 100644 index 290a952..0000000 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/edm/provider/EdmPropertyImpl.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.core.edm.provider; - -import java.util.List; - -import org.apache.olingo.commons.api.edm.Edm; -import org.apache.olingo.commons.api.edm.EdmAnnotation; -import org.apache.olingo.commons.api.edm.EdmMapping; -import org.apache.olingo.commons.api.edm.EdmTerm; -import org.apache.olingo.commons.api.edm.FullQualifiedName; -import org.apache.olingo.commons.api.edm.geo.SRID; -import org.apache.olingo.commons.core.edm.AbstractEdmProperty; -import org.apache.olingo.commons.core.edm.EdmTypeInfo; -import org.apache.olingo.server.api.edm.provider.Property; - -public class EdmPropertyImpl extends AbstractEdmProperty { - - private final FullQualifiedName structuredTypeName; - - private final Property property; - - private final EdmTypeInfo typeInfo; - - public EdmPropertyImpl(final Edm edm, final FullQualifiedName structuredTypeName, final Property property) { - super(edm, property.getName()); - - this.structuredTypeName = structuredTypeName; - this.property = property; - typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(property.getType().toString()).build(); - } - - @Override - public EdmTypeInfo getTypeInfo() { - return typeInfo; - } - - @Override - public boolean isCollection() { - return property.isCollection(); - } - - @Override - public EdmMapping getMapping() { - return property.getMapping(); - } - - @Override - public String getMimeType() { - return property.getMimeType(); - } - - @Override - public Boolean isNullable() { - return property.getNullable(); - } - - @Override - public Integer getMaxLength() { - return property.getMaxLength(); - } - - @Override - public Integer getPrecision() { - return property.getPrecision(); - } - - @Override - public Integer getScale() { - return property.getScale(); - } - - @Override - public SRID getSrid() { - return null; // TODO: provide implementation - } - - @Override - public Boolean isUnicode() { - return property.isUnicode(); - } - - @Override - public String getDefaultValue() { - return property.getDefaultValue(); - } - - @Override - public FullQualifiedName getAnnotationsTargetFQN() { - return structuredTypeName; - } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public List<EdmAnnotation> getAnnotations() { - // TODO: implement - throw new UnsupportedOperationException("Not supported yet."); - } -}
