You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by il...@apache.org on 2014/05/05 17:17:18 UTC
[07/15] [OLINGO-263][OLINGO-264] First draft Edm annotation
interfaces + client-side implementation (server components have TODO)
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
index 8e0f9d6..17d6824 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSchemaImpl.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-
import org.apache.olingo.client.api.edm.xml.ComplexType;
import org.apache.olingo.client.api.edm.xml.EntityContainer;
import org.apache.olingo.client.api.edm.xml.EntityType;
@@ -30,16 +29,22 @@ import org.apache.olingo.client.api.edm.xml.EnumType;
import org.apache.olingo.client.api.edm.xml.Schema;
import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
import org.apache.olingo.client.api.edm.xml.v4.Action;
+import org.apache.olingo.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.client.api.edm.xml.v4.Annotations;
import org.apache.olingo.client.api.edm.xml.v4.Function;
+import org.apache.olingo.client.api.edm.xml.v4.Term;
import org.apache.olingo.client.api.edm.xml.v4.TypeDefinition;
import org.apache.olingo.client.core.edm.v3.EdmFunctionProxy;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmAnnotations;
import org.apache.olingo.commons.api.edm.EdmComplexType;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntityType;
import org.apache.olingo.commons.api.edm.EdmEnumType;
import org.apache.olingo.commons.api.edm.EdmFunction;
+import org.apache.olingo.commons.api.edm.EdmTerm;
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
@@ -92,6 +97,7 @@ public class EdmSchemaImpl extends AbstractEdmSchema {
@Override
public EdmEntityContainer getEntityContainer(final FullQualifiedName name) {
+ getEntityContainers();
return entityContainerByName.get(name);
}
@@ -210,4 +216,48 @@ public class EdmSchemaImpl extends AbstractEdmSchema {
}
return functions;
}
+
+ @Override
+ protected List<EdmTerm> createTerms() {
+ final List<EdmTerm> terms = new ArrayList<EdmTerm>();
+ if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
+ final List<Term> providerTerms = ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).getTerms();
+ if (providerTerms != null) {
+ for (Term term : providerTerms) {
+ terms.add(new EdmTermImpl(edm, term));
+ }
+ }
+ }
+ return terms;
+ }
+
+ @Override
+ protected List<EdmAnnotations> createAnnotationGroups() {
+ final List<EdmAnnotations> annotationGroups = new ArrayList<EdmAnnotations>();
+ if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
+ final List<Annotations> providerAnnotations =
+ ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).getAnnotationGroups();
+ if (providerAnnotations != null) {
+ for (Annotations annotationGroup : providerAnnotations) {
+ annotationGroups.add(new EdmAnnotationsImpl(edm, this, annotationGroup));
+ }
+ }
+ }
+ return annotationGroups;
+ }
+
+ @Override
+ protected List<EdmAnnotation> createAnnotations() {
+ final List<EdmAnnotation> annotations = new ArrayList<EdmAnnotation>();
+ if (schema instanceof org.apache.olingo.client.api.edm.xml.v4.Schema) {
+ final List<Annotation> providerAnnotations =
+ ((org.apache.olingo.client.api.edm.xml.v4.Schema) schema).getAnnotations();
+ if (providerAnnotations != null) {
+ for (Annotation annotation : providerAnnotations) {
+ annotations.add(new EdmAnnotationImpl(edm, annotation));
+ }
+ }
+ }
+ return annotations;
+ }
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSingletonImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSingletonImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSingletonImpl.java
index b91340e..403c28f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSingletonImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmSingletonImpl.java
@@ -32,4 +32,9 @@ public class EdmSingletonImpl extends EdmBindingTargetImpl implements EdmSinglet
super(edm, container, name, type, singleton);
}
+ @Override
+ public TargetType getAnnotationsTargetType() {
+ return TargetType.Singleton;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmStructuredTypeHelperImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmStructuredTypeHelperImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmStructuredTypeHelperImpl.java
index 77d92df..c0b0cab 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmStructuredTypeHelperImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmStructuredTypeHelperImpl.java
@@ -31,12 +31,15 @@ import org.apache.olingo.client.core.edm.v3.EdmNavigationPropertyProxy;
import org.apache.olingo.commons.api.edm.Edm;
import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmProperty;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.core.edm.EdmStructuredTypeHelper;
public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
private final Edm edm;
+ private final FullQualifiedName structuredTypeName;
+
private final ComplexType complexType;
private final List<? extends Schema> xmlSchemas;
@@ -45,10 +48,11 @@ public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
private Map<String, EdmNavigationProperty> navigationProperties;
- public EdmStructuredTypeHelperImpl(
- final Edm edm, final List<? extends Schema> xmlSchemas, final ComplexType complexType) {
+ public EdmStructuredTypeHelperImpl(final Edm edm, final FullQualifiedName structuredTypeName,
+ final List<? extends Schema> xmlSchemas, final ComplexType complexType) {
this.edm = edm;
+ this.structuredTypeName = structuredTypeName;
this.complexType = complexType;
this.xmlSchemas = xmlSchemas;
}
@@ -58,7 +62,7 @@ public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
if (properties == null) {
properties = new LinkedHashMap<String, EdmProperty>();
for (CommonProperty property : complexType.getProperties()) {
- properties.put(property.getName(), new EdmPropertyImpl(edm, property));
+ properties.put(property.getName(), new EdmPropertyImpl(edm, structuredTypeName, property));
}
}
return properties;
@@ -71,10 +75,12 @@ public class EdmStructuredTypeHelperImpl implements EdmStructuredTypeHelper {
for (CommonNavigationProperty navigationProperty : complexType.getNavigationProperties()) {
if (navigationProperty instanceof org.apache.olingo.client.api.edm.xml.v4.NavigationProperty) {
navigationProperties.put(navigationProperty.getName(), new EdmNavigationPropertyImpl(
- edm, (org.apache.olingo.client.api.edm.xml.v4.NavigationProperty) navigationProperty));
+ edm, structuredTypeName,
+ (org.apache.olingo.client.api.edm.xml.v4.NavigationProperty) navigationProperty));
} else if (navigationProperty instanceof org.apache.olingo.client.api.edm.xml.v3.NavigationProperty) {
navigationProperties.put(navigationProperty.getName(), new EdmNavigationPropertyProxy(
- edm, xmlSchemas, (org.apache.olingo.client.api.edm.xml.v3.NavigationProperty) navigationProperty));
+ edm, xmlSchemas,
+ (org.apache.olingo.client.api.edm.xml.v3.NavigationProperty) navigationProperty));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTermImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTermImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTermImpl.java
new file mode 100644
index 0000000..a779369
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTermImpl.java
@@ -0,0 +1,161 @@
+/*
+ * 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.client.core.edm;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.ClassUtils;
+import org.apache.olingo.client.api.edm.xml.v4.Term;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAnnotation;
+import org.apache.olingo.commons.api.edm.EdmException;
+import org.apache.olingo.commons.api.edm.EdmTerm;
+import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.FullQualifiedName;
+import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
+import org.apache.olingo.commons.core.edm.EdmNamedImpl;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class EdmTermImpl extends EdmNamedImpl implements EdmTerm {
+
+ private static final Logger LOG = LoggerFactory.getLogger(EdmTermImpl.class);
+
+ private final Term term;
+
+ private final EdmTypeInfo typeInfo;
+
+ private final EdmAnnotationHelper helper;
+
+ private EdmType termType;
+
+ private EdmTerm baseTerm;
+
+ private List<Class<?>> appliesTo;
+
+ public EdmTermImpl(final Edm edm, final Term term) {
+ super(edm, term.getName());
+
+ this.term = term;
+ this.typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(term.getType()).build();
+ this.helper = new EdmAnnotationHelperImpl(edm, term);
+ }
+
+ @Override
+ public FullQualifiedName getFullQualifiedName() {
+ return typeInfo.getFullQualifiedName();
+ }
+
+ @Override
+ public EdmType getType() {
+ if (termType == null) {
+ termType = typeInfo.isPrimitiveType()
+ ? EdmPrimitiveTypeFactory.getInstance(typeInfo.getPrimitiveTypeKind())
+ : typeInfo.isTypeDefinition()
+ ? typeInfo.getTypeDefinition()
+ : typeInfo.isEnumType()
+ ? typeInfo.getEnumType()
+ : typeInfo.isComplexType()
+ ? typeInfo.getComplexType()
+ : null;
+ if (termType == null) {
+ throw new EdmException("Cannot find type with name: " + typeInfo.getFullQualifiedName());
+ }
+ }
+
+ return termType;
+ }
+
+ @Override
+ public EdmTerm getBaseTerm() {
+ if (baseTerm == null && term.getBaseTerm() != null) {
+ baseTerm = edm.getTerm(new FullQualifiedName(term.getBaseTerm()));
+ }
+ return baseTerm;
+ }
+
+ @Override
+ public List<Class<?>> getAppliesTo() {
+ if (appliesTo == null) {
+ appliesTo = new ArrayList<Class<?>>();
+ for (String element : term.getAppliesTo()) {
+ try {
+ appliesTo.add(ClassUtils.getClass(EdmTerm.class.getPackage().getName() + ".Edm" + element));
+ } catch (ClassNotFoundException e) {
+ LOG.error("Could not load Edm class for {}", element, e);
+ }
+ }
+ }
+ return appliesTo;
+ }
+
+ @Override
+ public Boolean isNullable() {
+ return term.isNullable();
+ }
+
+ @Override
+ public Integer getMaxLength() {
+ return term.getMaxLength();
+ }
+
+ @Override
+ public Integer getPrecision() {
+ return term.getPrecision();
+ }
+
+ @Override
+ public Integer getScale() {
+ return term.getScale();
+ }
+
+ @Override
+ public SRID getSrid() {
+ return term.getSrid();
+ }
+
+ @Override
+ public String getDefaultValue() {
+ return term.getDefaultValue();
+ }
+
+ @Override
+ public TargetType getAnnotationsTargetType() {
+ return TargetType.Term;
+ }
+
+ @Override
+ public FullQualifiedName getAnnotationsTargetFQN() {
+ return typeInfo.getFullQualifiedName();
+ }
+
+ @Override
+ public String getAnnotationsTargetPath() {
+ return null;
+ }
+
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ return helper.getAnnotations();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
index 3c146ec..1292151 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/EdmTypeDefinitionImpl.java
@@ -18,22 +18,28 @@
*/
package org.apache.olingo.client.core.edm;
+import java.util.List;
import org.apache.olingo.client.api.edm.xml.v4.TypeDefinition;
import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmException;
import org.apache.olingo.commons.api.edm.EdmPrimitiveType;
import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.edm.geo.SRID;
import org.apache.olingo.commons.core.edm.AbstractEdmTypeDefinition;
+import org.apache.olingo.commons.core.edm.EdmAnnotationHelper;
import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory;
public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition implements EdmTypeDefinition {
- private TypeDefinition typeDefinition;
+ private final TypeDefinition typeDefinition;
- private EdmPrimitiveType edmPrimitiveTypeInstance;
+ private final EdmPrimitiveType edmPrimitiveTypeInstance;
+
+ private final EdmAnnotationHelper helper;
public EdmTypeDefinitionImpl(final ODataServiceVersion version, final Edm edm,
final FullQualifiedName typeDefinitionName, final TypeDefinition typeDefinition) {
@@ -46,6 +52,7 @@ public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition implements
} catch (IllegalArgumentException e) {
throw new EdmException("Invalid underlying type: " + typeDefinition.getUnderlyingType(), e);
}
+ this.helper = new EdmAnnotationHelperImpl(edm, typeDefinition);
}
@Override
@@ -69,7 +76,18 @@ public class EdmTypeDefinitionImpl extends AbstractEdmTypeDefinition implements
}
@Override
+ public SRID getSrid() {
+ return typeDefinition.getSrid();
+ }
+
+ @Override
public Boolean isUnicode() {
return typeDefinition.isUnicode();
}
+
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ return helper.getAnnotations();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
index cb9ae27..cb22d11 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmActionImportProxy.java
@@ -53,4 +53,9 @@ public class EdmActionImportProxy extends EdmOperationImportImpl implements EdmA
return edm.getUnboundAction(getActionFQN());
}
+ @Override
+ public TargetType getAnnotationsTargetType() {
+ return TargetType.ActionImport;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
index 1af4889..079828f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmEntitySetProxy.java
@@ -29,6 +29,7 @@ import org.apache.olingo.client.api.edm.xml.v3.AssociationSet;
import org.apache.olingo.client.core.edm.xml.v3.EntityContainerImpl;
import org.apache.olingo.client.core.edm.xml.v3.SchemaImpl;
import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmAnnotation;
import org.apache.olingo.commons.api.edm.EdmBindingTarget;
import org.apache.olingo.commons.api.edm.EdmEntityContainer;
import org.apache.olingo.commons.api.edm.EdmEntitySet;
@@ -113,4 +114,14 @@ public class EdmEntitySetProxy extends AbstractEdmBindingTarget implements EdmEn
return Collections.emptyList();
}
+ @Override
+ public TargetType getAnnotationsTargetType() {
+ return TargetType.EntitySet;
+ }
+
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ return Collections.<EdmAnnotation>emptyList();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
index b64c9bb..da6605d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionImportProxy.java
@@ -65,4 +65,9 @@ public class EdmFunctionImportProxy extends EdmOperationImportImpl implements Ed
return true;
}
+ @Override
+ public TargetType getAnnotationsTargetType() {
+ return TargetType.FunctionImport;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionProxy.java
index d883f1d..1d184a0 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmFunctionProxy.java
@@ -40,4 +40,5 @@ public class EdmFunctionProxy extends EdmOperationProxy implements EdmFunction {
public boolean isComposable() {
return functionImport.isComposable();
}
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmNavigationPropertyProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmNavigationPropertyProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmNavigationPropertyProxy.java
index cadb3ae..77e2f59 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmNavigationPropertyProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmNavigationPropertyProxy.java
@@ -19,20 +19,23 @@
package org.apache.olingo.client.core.edm.v3;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.olingo.client.api.edm.xml.Schema;
import org.apache.olingo.client.api.edm.xml.v3.Association;
import org.apache.olingo.client.api.edm.xml.v3.AssociationEnd;
import org.apache.olingo.client.api.edm.xml.v3.NavigationProperty;
import org.apache.olingo.client.api.edm.xml.v3.ReferentialConstraint;
+import org.apache.olingo.client.core.edm.EdmReferentialConstraintImpl;
import org.apache.olingo.client.core.edm.xml.v3.SchemaImpl;
+import org.apache.olingo.client.core.edm.xml.v4.ReferentialConstraintImpl;
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.EdmNavigationProperty;
import org.apache.olingo.commons.api.edm.EdmReferentialConstraint;
import org.apache.olingo.commons.api.edm.FullQualifiedName;
import org.apache.olingo.commons.core.edm.AbstractEdmNavigationProperty;
-import org.apache.olingo.commons.core.edm.EdmReferentialConstraintImpl;
public class EdmNavigationPropertyProxy extends AbstractEdmNavigationProperty {
@@ -120,7 +123,7 @@ public class EdmNavigationPropertyProxy extends AbstractEdmNavigationProperty {
@Override
public EdmNavigationProperty getPartner() {
- return partner == null ? this: partner;
+ return partner == null ? this : partner;
}
@Override
@@ -156,13 +159,24 @@ public class EdmNavigationPropertyProxy extends AbstractEdmNavigationProperty {
referentialConstraints = new ArrayList<EdmReferentialConstraint>();
if (constraint != null) {
for (int i = 0; i < constraint.getPrincipal().getPropertyRefs().size(); i++) {
- referentialConstraints.add(new EdmReferentialConstraintImpl(
- constraint.getPrincipal().getPropertyRefs().get(i).getName(),
- constraint.getDependent().getPropertyRefs().get(i).getName()));
+ final ReferentialConstraintImpl referentialConstraint = new ReferentialConstraintImpl();
+ referentialConstraint.setProperty(constraint.getPrincipal().getPropertyRefs().get(i).getName());
+ referentialConstraint.setReferencedProperty(constraint.getDependent().getPropertyRefs().get(i).getName());
+ referentialConstraints.add(new EdmReferentialConstraintImpl(edm, referentialConstraint));
}
}
}
return referentialConstraints;
}
+ @Override
+ public FullQualifiedName getAnnotationsTargetFQN() {
+ return null;
+ }
+
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ return Collections.<EdmAnnotation>emptyList();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmOperationProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmOperationProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmOperationProxy.java
index 353e916..b2dfa4b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmOperationProxy.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmOperationProxy.java
@@ -18,7 +18,9 @@
*/
package org.apache.olingo.client.core.edm.v3;
+import org.apache.olingo.client.core.edm.xml.v3.ReturnTypeProxy;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import org.apache.olingo.client.api.edm.xml.CommonParameter;
@@ -27,6 +29,7 @@ import org.apache.olingo.client.api.edm.xml.v3.Parameter;
import org.apache.olingo.client.core.edm.EdmParameterImpl;
import org.apache.olingo.client.core.edm.EdmReturnTypeImpl;
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.FullQualifiedName;
import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
@@ -40,7 +43,7 @@ public class EdmOperationProxy extends AbstractEdmOperation {
final List<Parameter> parameters = instance.functionImport.getParameters();
final List<EdmParameter> _parameters = new ArrayList<EdmParameter>(parameters.size());
for (CommonParameter parameter : parameters) {
- _parameters.add(EdmParameterImpl.getInstance(instance.edm, parameter));
+ _parameters.add(new EdmParameterImpl(instance.edm, parameter));
}
instance.setParameters(_parameters);
@@ -74,4 +77,9 @@ public class EdmOperationProxy extends AbstractEdmOperation {
return null;
}
+ @Override
+ public List<EdmAnnotation> getAnnotations() {
+ return Collections.<EdmAnnotation>emptyList();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmServiceMetadataImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmServiceMetadataImpl.java
index 9b7157b..01b4a87 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmServiceMetadataImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/EdmServiceMetadataImpl.java
@@ -43,8 +43,8 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
}
@Override
- public String getDataServiceVersion() {
- return SERVICE_VERSION.toString();
+ public ODataServiceVersion getDataServiceVersion() {
+ return SERVICE_VERSION;
}
@Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/ReturnTypeProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/ReturnTypeProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/ReturnTypeProxy.java
deleted file mode 100644
index 79baae3..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v3/ReturnTypeProxy.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.client.core.edm.v3;
-
-import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
-import org.apache.olingo.client.api.edm.xml.v4.ReturnType;
-
-public class ReturnTypeProxy implements ReturnType {
-
- private final FunctionImport functionImport;
-
- public ReturnTypeProxy(final FunctionImport functionImport) {
- this.functionImport = functionImport;
- }
-
- @Override
- public Integer getMaxLength() {
- return null;
- }
-
- @Override
- public Integer getPrecision() {
- return null;
- }
-
- @Override
- public Integer getScale() {
- return null;
- }
-
- @Override
- public String getSrid() {
- return null;
- }
-
- @Override
- public String getType() {
- return functionImport.getReturnType();
- }
-
- @Override
- public boolean isNullable() {
- return false;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/EdmServiceMetadataImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/EdmServiceMetadataImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/EdmServiceMetadataImpl.java
index 25236be..d01b991 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/EdmServiceMetadataImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/EdmServiceMetadataImpl.java
@@ -48,8 +48,8 @@ public class EdmServiceMetadataImpl extends AbstractEdmServiceMetadataImpl {
}
@Override
- public String getDataServiceVersion() {
- return SERVICE_VERSION.toString();
+ public ODataServiceVersion getDataServiceVersion() {
+ return SERVICE_VERSION;
}
@Override
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmCastImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmCastImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmCastImpl.java
new file mode 100644
index 0000000..0c05155
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmCastImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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.client.core.edm.v4.annotation;
+
+import org.apache.olingo.client.api.edm.xml.v4.annotation.Cast;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.annotation.EdmCast;
+import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression;
+import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.annotation.AbstractEdmAnnotatableDynamicAnnotationExpression;
+
+public class EdmCastImpl extends AbstractEdmAnnotatableDynamicAnnotationExpression implements EdmCast {
+
+ private final Edm edm;
+
+ private final Cast cast;
+
+ private final EdmDynamicAnnotationExpression value;
+
+ private EdmType type;
+
+ public EdmCastImpl(final Edm edm, final Cast cast, final EdmDynamicAnnotationExpression value) {
+ this.edm = edm;
+ this.cast = cast;
+ this.value = value;
+ }
+
+ @Override
+ public Integer getMaxLength() {
+ return cast.getMaxLength();
+ }
+
+ @Override
+ public Integer getPrecision() {
+ return cast.getPrecision();
+ }
+
+ @Override
+ public Integer getScale() {
+ return cast.getScale();
+ }
+
+ @Override
+ public SRID getSrid() {
+ return cast.getSrid();
+ }
+
+ @Override
+ public EdmType getType() {
+ if (type == null) {
+ final EdmTypeInfo typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(cast.getType()).build();
+ type = typeInfo.getType();
+ }
+ return type;
+ }
+
+ @Override
+ public EdmDynamicAnnotationExpression getValue() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmConstantAnnotationExpressionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmConstantAnnotationExpressionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmConstantAnnotationExpressionImpl.java
new file mode 100644
index 0000000..c53d0e8
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmConstantAnnotationExpressionImpl.java
@@ -0,0 +1,137 @@
+/*
+ * 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.client.core.edm.v4.annotation;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.olingo.client.api.edm.xml.v4.annotation.ConstantAnnotationExpression;
+import org.apache.olingo.commons.api.domain.v4.ODataEnumValue;
+import org.apache.olingo.commons.api.domain.v4.ODataValue;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
+import org.apache.olingo.commons.api.edm.annotation.EdmConstantAnnotationExpression;
+import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression;
+import org.apache.olingo.commons.core.domain.v4.ODataCollectionValueImpl;
+import org.apache.olingo.commons.core.domain.v4.ODataEnumValueImpl;
+import org.apache.olingo.commons.core.domain.v4.ODataPrimitiveValueImpl;
+
+public class EdmConstantAnnotationExpressionImpl implements EdmConstantAnnotationExpression {
+
+ private final ODataValue value;
+
+ public EdmConstantAnnotationExpressionImpl(final Edm edm, final ConstantAnnotationExpression constExprConstruct) {
+ if (constExprConstruct.getType() == ConstantAnnotationExpression.Type.EnumMember) {
+ final List<ODataEnumValue> enumValues = new ArrayList<ODataEnumValue>();
+ String enumTypeName = null;
+ for (String split : StringUtils.split(constExprConstruct.getValue(), ' ')) {
+ final String[] enumSplit = StringUtils.split(split, '/');
+ enumTypeName = enumSplit[0];
+ enumValues.add(new ODataEnumValueImpl(enumSplit[0], enumSplit[1]));
+ }
+ if (enumValues.size() == 1) {
+ value = enumValues.get(0);
+ } else {
+ final ODataCollectionValueImpl collValue = new ODataCollectionValueImpl(enumTypeName);
+ for (ODataValue enumValue : enumValues) {
+ collValue.add(enumValue);
+ }
+ value = collValue;
+ }
+ } else {
+ final ODataPrimitiveValueImpl.BuilderImpl primitiveValueBuilder =
+ new ODataPrimitiveValueImpl.BuilderImpl(edm.getServiceMetadata().getDataServiceVersion());
+ primitiveValueBuilder.setText(constExprConstruct.getValue());
+
+ switch (constExprConstruct.getType()) {
+ case Binary:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Binary);
+ break;
+
+ case Bool:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Boolean);
+ break;
+
+ case Date:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Date);
+ break;
+
+ case DateTimeOffset:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.DateTimeOffset);
+ break;
+
+ case Decimal:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Decimal);
+ break;
+
+ case Duration:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Duration);
+ break;
+
+ case Float:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Single);
+ break;
+
+ case Guid:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Guid);
+ break;
+
+ case Int:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.Int32);
+ break;
+
+ case TimeOfDay:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.TimeOfDay);
+ break;
+
+ case String:
+ default:
+ primitiveValueBuilder.setType(EdmPrimitiveTypeKind.String);
+ }
+
+ value = primitiveValueBuilder.build();
+ }
+ }
+
+ @Override
+ public boolean isConstant() {
+ return true;
+ }
+
+ @Override
+ public EdmConstantAnnotationExpression asConstant() {
+ return this;
+ }
+
+ @Override
+ public boolean isDynamic() {
+ return false;
+ }
+
+ @Override
+ public EdmDynamicAnnotationExpression asDynamic() {
+ return null;
+ }
+
+ @Override
+ public ODataValue getValue() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmIsOfImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmIsOfImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmIsOfImpl.java
new file mode 100644
index 0000000..2d00e79
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmIsOfImpl.java
@@ -0,0 +1,80 @@
+/*
+ * 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.client.core.edm.v4.annotation;
+
+import org.apache.olingo.client.api.edm.xml.v4.annotation.IsOf;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmType;
+import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression;
+import org.apache.olingo.commons.api.edm.annotation.EdmIsOf;
+import org.apache.olingo.commons.api.edm.geo.SRID;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.annotation.AbstractEdmAnnotatableDynamicAnnotationExpression;
+
+public class EdmIsOfImpl extends AbstractEdmAnnotatableDynamicAnnotationExpression implements EdmIsOf {
+
+ private final Edm edm;
+
+ private final IsOf isOf;
+
+ private final EdmDynamicAnnotationExpression value;
+
+ private EdmType type;
+
+ public EdmIsOfImpl(final Edm edm, final IsOf isOf, final EdmDynamicAnnotationExpression value) {
+ this.edm = edm;
+ this.isOf = isOf;
+ this.value = value;
+ }
+
+ @Override
+ public Integer getMaxLength() {
+ return isOf.getMaxLength();
+ }
+
+ @Override
+ public Integer getPrecision() {
+ return isOf.getPrecision();
+ }
+
+ @Override
+ public Integer getScale() {
+ return isOf.getScale();
+ }
+
+ @Override
+ public SRID getSrid() {
+ return isOf.getSrid();
+ }
+
+ @Override
+ public EdmType getType() {
+ if (type == null) {
+ final EdmTypeInfo typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(isOf.getType()).build();
+ type = typeInfo.getType();
+ }
+ return type;
+ }
+
+ @Override
+ public EdmDynamicAnnotationExpression getValue() {
+ return value;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmRecordImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmRecordImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmRecordImpl.java
new file mode 100644
index 0000000..270cf87
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/v4/annotation/EdmRecordImpl.java
@@ -0,0 +1,55 @@
+/*
+ * 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.client.core.edm.v4.annotation;
+
+import java.util.List;
+import org.apache.olingo.commons.api.edm.Edm;
+import org.apache.olingo.commons.api.edm.EdmStructuredType;
+import org.apache.olingo.commons.api.edm.annotation.EdmPropertyValue;
+import org.apache.olingo.commons.api.edm.annotation.EdmRecord;
+import org.apache.olingo.commons.core.edm.EdmTypeInfo;
+import org.apache.olingo.commons.core.edm.annotation.AbstractEdmAnnotatableDynamicAnnotationExpression;
+
+public class EdmRecordImpl extends AbstractEdmAnnotatableDynamicAnnotationExpression implements EdmRecord {
+
+ private final Edm edm;
+
+ private final List<EdmPropertyValue> propertyValues;
+
+ private final EdmStructuredType type;
+
+ public EdmRecordImpl(final Edm edm, final String type, final List<EdmPropertyValue> propertyValues) {
+ this.edm = edm;
+ this.propertyValues = propertyValues;
+
+ final EdmTypeInfo typeInfo = new EdmTypeInfo.Builder().setEdm(edm).setTypeExpression(type).build();
+ this.type = typeInfo.getEntityType() == null ? typeInfo.getComplexType() : typeInfo.getEntityType();
+ }
+
+ @Override
+ public List<EdmPropertyValue> getPropertyValues() {
+ return propertyValues;
+ }
+
+ @Override
+ public EdmStructuredType getType() {
+ return type;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
index e21436f..edfda03 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractEdmDeserializer.java
@@ -27,7 +27,7 @@ import com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser;
import java.io.IOException;
import org.apache.olingo.client.core.edm.xml.v4.ReturnTypeImpl;
-import org.apache.olingo.client.core.edm.xml.v4.annotation.ConstExprConstructImpl;
+import org.apache.olingo.client.core.edm.xml.v4.annotation.ConstantAnnotationExpressionImpl;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
@@ -35,12 +35,12 @@ public abstract class AbstractEdmDeserializer<T> extends JsonDeserializer<T> {
protected ODataServiceVersion version;
protected boolean isAnnotationConstExprConstruct(final JsonParser jp) throws IOException {
- return ConstExprConstructImpl.Type.fromString(jp.getCurrentName()) != null;
+ return ConstantAnnotationExpressionImpl.Type.fromString(jp.getCurrentName()) != null;
}
- protected ConstExprConstructImpl parseAnnotationConstExprConstruct(final JsonParser jp) throws IOException {
- final ConstExprConstructImpl constExpr = new ConstExprConstructImpl();
- constExpr.setType(ConstExprConstructImpl.Type.fromString(jp.getCurrentName()));
+ protected ConstantAnnotationExpressionImpl parseAnnotationConstExprConstruct(final JsonParser jp) throws IOException {
+ final ConstantAnnotationExpressionImpl constExpr = new ConstantAnnotationExpressionImpl();
+ constExpr.setType(ConstantAnnotationExpressionImpl.Type.fromString(jp.getCurrentName()));
constExpr.setValue(jp.nextTextValue());
return constExpr;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractProperty.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractProperty.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractProperty.java
index 8d4da80..b4e88eb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractProperty.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/AbstractProperty.java
@@ -21,6 +21,7 @@ package org.apache.olingo.client.core.edm.xml;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.apache.olingo.client.api.edm.xml.CommonProperty;
+import org.apache.olingo.commons.api.edm.geo.SRID;
@JsonDeserialize(using = PropertyDeserializer.class)
public abstract class AbstractProperty extends AbstractEdmItem implements CommonProperty {
@@ -43,7 +44,7 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
private boolean unicode = true;
- private String srid;
+ private SRID srid;
@Override
public String getName() {
@@ -118,11 +119,11 @@ public abstract class AbstractProperty extends AbstractEdmItem implements Common
}
@Override
- public String getSrid() {
+ public SRID getSrid() {
return srid;
}
- public void setSrid(final String srid) {
+ public void setSrid(final SRID srid) {
this.srid = srid;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
index ea62ba4..97d7d0b 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ComplexTypeDeserializer.java
@@ -71,8 +71,8 @@ public class ComplexTypeDeserializer extends AbstractEdmDeserializer<AbstractCom
org.apache.olingo.client.core.edm.xml.v4.NavigationPropertyImpl.class));
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- ((org.apache.olingo.client.core.edm.xml.v4.ComplexTypeImpl) complexType).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.ComplexTypeImpl) complexType).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
index f626365..5914060 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityContainerDeserializer.java
@@ -90,8 +90,8 @@ public class EntityContainerDeserializer extends AbstractEdmDeserializer<Abstrac
}
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- ((org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl) entityContainer).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
index c71f4de..5f913d4 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntitySetDeserializer.java
@@ -57,8 +57,8 @@ public class EntitySetDeserializer extends AbstractEdmDeserializer<AbstractEntit
jp.readValueAs(NavigationPropertyBindingImpl.class));
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- ((org.apache.olingo.client.core.edm.xml.v4.EntitySetImpl) entitySet).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.EntitySetImpl) entitySet).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
index a55a9e0..3b9b28d 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EntityTypeDeserializer.java
@@ -59,12 +59,10 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEnti
jp.nextToken();
if (entityType instanceof org.apache.olingo.client.core.edm.xml.v3.EntityTypeImpl) {
((org.apache.olingo.client.core.edm.xml.v3.EntityTypeImpl) entityType).
- getProperties().add(jp.readValueAs(
- org.apache.olingo.client.core.edm.xml.v3.PropertyImpl.class));
+ getProperties().add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.v3.PropertyImpl.class));
} else {
((org.apache.olingo.client.core.edm.xml.v4.EntityTypeImpl) entityType).
- getProperties().add(jp.readValueAs(
- org.apache.olingo.client.core.edm.xml.v4.PropertyImpl.class));
+ getProperties().add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.v4.PropertyImpl.class));
}
} else if ("NavigationProperty".equals(jp.getCurrentName())) {
jp.nextToken();
@@ -79,8 +77,8 @@ public class EntityTypeDeserializer extends AbstractEdmDeserializer<AbstractEnti
}
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- ((org.apache.olingo.client.core.edm.xml.v4.EntityTypeImpl) entityType).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.EntityTypeImpl) entityType).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
index 7a8f888..954533f 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/EnumTypeDeserializer.java
@@ -61,8 +61,8 @@ public class EnumTypeDeserializer extends AbstractEdmDeserializer<AbstractEnumTy
}
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- ((org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl) enumType).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.EnumTypeImpl) enumType).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
index 68baf15..4980def 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/ParameterDeserializer.java
@@ -27,7 +27,9 @@ import java.io.IOException;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.olingo.client.api.edm.xml.v3.ParameterMode;
+import org.apache.olingo.client.core.edm.xml.v4.AnnotationImpl;
import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.api.edm.geo.SRID;
public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParameter> {
@@ -60,7 +62,14 @@ public class ParameterDeserializer extends AbstractEdmDeserializer<AbstractParam
((org.apache.olingo.client.core.edm.xml.v3.ParameterImpl) parameter).
setMode(ParameterMode.valueOf(jp.nextTextValue()));
} else if ("SRID".equals(jp.getCurrentName())) {
- ((org.apache.olingo.client.core.edm.xml.v4.ParameterImpl) parameter).setSrid(jp.nextTextValue());
+ final String srid = jp.nextTextValue();
+ if (srid != null) {
+ ((org.apache.olingo.client.core.edm.xml.v4.ParameterImpl) parameter).setSrid(SRID.valueOf(srid));
+ }
+ } else if ("Annotation".equals(jp.getCurrentName())) {
+ jp.nextToken();
+ ((org.apache.olingo.client.core.edm.xml.v4.ParameterImpl) parameter).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
index 4b6c2bd..7a40fad 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/PropertyDeserializer.java
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.DeserializationContext;
+import org.apache.olingo.commons.api.edm.geo.SRID;
public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProperty> {
@@ -74,7 +75,10 @@ public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProper
setCollation(jp.nextTextValue());
}
} else if ("SRID".equals(jp.getCurrentName())) {
- property.setSrid(jp.nextTextValue());
+ final String srid = jp.nextTextValue();
+ if (srid != null) {
+ property.setSrid(SRID.valueOf(srid));
+ }
} else if ("ConcurrencyMode".equals(jp.getCurrentName())) {
if (property instanceof org.apache.olingo.client.core.edm.xml.v3.PropertyImpl) {
((org.apache.olingo.client.core.edm.xml.v3.PropertyImpl) property).
@@ -116,8 +120,9 @@ public class PropertyDeserializer extends AbstractEdmDeserializer<AbstractProper
setFcKeepInContent(BooleanUtils.toBoolean(jp.nextTextValue()));
}
} else if ("Annotation".equals(jp.getCurrentName())) {
- ((org.apache.olingo.client.core.edm.xml.v4.PropertyImpl) property).
- setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ jp.nextToken();
+ ((org.apache.olingo.client.core.edm.xml.v4.PropertyImpl) property).getAnnotations().
+ add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
index abdfa33..683e3ca 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/SchemaDeserializer.java
@@ -106,7 +106,7 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
org.apache.olingo.client.core.edm.xml.v3.EntityContainerImpl.class));
} else {
org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl entityContainer =
- jp.readValueAs(
+ jp.readValueAs(
org.apache.olingo.client.core.edm.xml.v4.EntityContainerImpl.class);
entityContainer.setDefaultEntityContainer(true);
((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).
@@ -115,13 +115,11 @@ public class SchemaDeserializer extends AbstractEdmDeserializer<AbstractSchema>
} else if ("Annotations".equals(jp.getCurrentName())) {
jp.nextToken();
if (schema instanceof org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) {
- ((org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) schema).getAnnotationsList().
- add(jp.readValueAs(
- org.apache.olingo.client.core.edm.xml.v3.AnnotationsImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v3.SchemaImpl) schema).getAnnotationGroups().
+ add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.v3.AnnotationsImpl.class));
} else {
- ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotationsList().
- add(jp.readValueAs(
- org.apache.olingo.client.core.edm.xml.v4.AnnotationsImpl.class));
+ ((org.apache.olingo.client.core.edm.xml.v4.SchemaImpl) schema).getAnnotationGroups().
+ add(jp.readValueAs(org.apache.olingo.client.core.edm.xml.v4.AnnotationsImpl.class));
}
} else if ("Action".equals(jp.getCurrentName())) {
jp.nextToken();
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/ReturnTypeProxy.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/ReturnTypeProxy.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/ReturnTypeProxy.java
new file mode 100644
index 0000000..c10abb1
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/ReturnTypeProxy.java
@@ -0,0 +1,63 @@
+/*
+ * 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.client.core.edm.xml.v3;
+
+import org.apache.olingo.client.api.edm.xml.v3.FunctionImport;
+import org.apache.olingo.client.api.edm.xml.v4.ReturnType;
+import org.apache.olingo.commons.api.edm.geo.SRID;
+
+public class ReturnTypeProxy implements ReturnType {
+
+ private final FunctionImport functionImport;
+
+ public ReturnTypeProxy(final FunctionImport functionImport) {
+ this.functionImport = functionImport;
+ }
+
+ @Override
+ public Integer getMaxLength() {
+ return null;
+ }
+
+ @Override
+ public Integer getPrecision() {
+ return null;
+ }
+
+ @Override
+ public Integer getScale() {
+ return null;
+ }
+
+ @Override
+ public SRID getSrid() {
+ return null;
+ }
+
+ @Override
+ public String getType() {
+ return functionImport.getReturnType();
+ }
+
+ @Override
+ public boolean isNullable() {
+ return false;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/SchemaImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/SchemaImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/SchemaImpl.java
index 9f6bba4..e8a5650 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/SchemaImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v3/SchemaImpl.java
@@ -57,14 +57,14 @@ public class SchemaImpl extends AbstractSchema implements Schema {
}
@Override
- public List<Annotations> getAnnotationsList() {
+ public List<Annotations> getAnnotationGroups() {
return annotationList;
}
@Override
- public Annotations getAnnotationsList(final String target) {
+ public Annotations getAnnotationGroup(final String target) {
Annotations result = null;
- for (Annotations annots : getAnnotationsList()) {
+ for (Annotations annots : getAnnotationGroups()) {
if (target.equals(annots.getTarget())) {
result = annots;
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatable.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatable.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatable.java
new file mode 100644
index 0000000..ea6d837
--- /dev/null
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatable.java
@@ -0,0 +1,39 @@
+/*
+ * 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.client.core.edm.xml.v4;
+
+import org.apache.olingo.client.api.edm.xml.v4.Annotatable;
+import org.apache.olingo.client.api.edm.xml.v4.Annotation;
+import org.apache.olingo.client.core.edm.xml.AbstractEdmItem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public abstract class AbstractAnnotatable extends AbstractEdmItem implements Annotatable {
+
+ private static final long serialVersionUID = -8859729466090997718L;
+
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
+
+ @Override
+ public List<Annotation> getAnnotations() {
+ return annotations;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
deleted file mode 100644
index 18b01be..0000000
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AbstractAnnotatedEdmItem.java
+++ /dev/null
@@ -1,45 +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.client.core.edm.xml.v4;
-
-import org.apache.olingo.client.api.edm.xml.v4.AnnotatedEdmItem;
-import org.apache.olingo.client.api.edm.xml.v4.Annotation;
-import org.apache.olingo.client.core.edm.xml.AbstractEdmItem;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public abstract class AbstractAnnotatedEdmItem extends AbstractEdmItem implements AnnotatedEdmItem {
-
- private static final long serialVersionUID = -8859729466090997718L;
-
- @JsonProperty("Annotation")
- private AnnotationImpl annotation;
-
- @Override
- public AnnotationImpl getAnnotation() {
- return annotation;
- }
-
- @JsonIgnore
- public void setAnnotation(final Annotation annotation) {
- this.annotation = (AnnotationImpl) annotation;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionDeserializer.java
index fd0c214..41399a9 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionDeserializer.java
@@ -52,7 +52,7 @@ public class ActionDeserializer extends AbstractEdmDeserializer<ActionImpl> {
action.setReturnType(parseReturnType(jp, "Action"));
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- action.setAnnotation(jp.readValueAs(AnnotationImpl.class));
+ action.getAnnotations().add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImpl.java
index 9ad13c8..a09eea6 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImpl.java
@@ -28,7 +28,7 @@ import org.apache.olingo.client.api.edm.xml.v4.Parameter;
import org.apache.olingo.client.api.edm.xml.v4.ReturnType;
@JsonDeserialize(using = ActionDeserializer.class)
-public class ActionImpl extends AbstractAnnotatedEdmItem implements Action {
+public class ActionImpl extends AbstractAnnotatable implements Action {
private static final long serialVersionUID = -99977447455438193L;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImportImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImportImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImportImpl.java
index d543998..5a06389 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImportImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ActionImportImpl.java
@@ -22,7 +22,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.olingo.client.api.edm.xml.v4.ActionImport;
-public class ActionImportImpl extends AbstractAnnotatedEdmItem implements ActionImport {
+public class ActionImportImpl extends AbstractAnnotatable implements ActionImport {
private static final long serialVersionUID = -866422101558426421L;
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
index 129926d..d9d9e0c 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationDeserializer.java
@@ -25,7 +25,7 @@ import com.fasterxml.jackson.databind.DeserializationContext;
import java.io.IOException;
-import org.apache.olingo.client.core.edm.xml.v4.annotation.DynExprConstructImpl;
+import org.apache.olingo.client.core.edm.xml.v4.annotation.AbstractDynamicAnnotationExpression;
import org.apache.olingo.client.core.edm.xml.AbstractEdmDeserializer;
public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationImpl> {
@@ -43,12 +43,15 @@ public class AnnotationDeserializer extends AbstractEdmDeserializer<AnnotationIm
annotation.setTerm(jp.nextTextValue());
} else if ("Qualifier".equals(jp.getCurrentName())) {
annotation.setQualifier(jp.nextTextValue());
+ } else if ("Annotation".equals(jp.getCurrentName())) {
+ jp.nextToken();
+ annotation.getAnnotations().add(jp.readValueAs(AnnotationImpl.class));
} else if (isAnnotationConstExprConstruct(jp)) {
// Constant Expressions
- annotation.setConstExpr(parseAnnotationConstExprConstruct(jp));
+ annotation.setAnnotationExpression(parseAnnotationConstExprConstruct(jp));
} else {
// Dynamic Expressions
- annotation.setDynExpr(jp.readValueAs(DynExprConstructImpl.class));
+ annotation.setAnnotationExpression(jp.readValueAs(AbstractDynamicAnnotationExpression.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationImpl.java
index d495b8c..c75aa7a 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationImpl.java
@@ -21,12 +21,10 @@ package org.apache.olingo.client.core.edm.xml.v4;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import org.apache.olingo.client.api.edm.xml.v4.Annotation;
-import org.apache.olingo.client.api.edm.xml.v4.annotation.ConstExprConstruct;
-import org.apache.olingo.client.api.edm.xml.v4.annotation.DynExprConstruct;
-import org.apache.olingo.client.core.edm.xml.AbstractEdmItem;
+import org.apache.olingo.client.api.edm.xml.v4.annotation.AnnotationExpression;
@JsonDeserialize(using = AnnotationDeserializer.class)
-public class AnnotationImpl extends AbstractEdmItem implements Annotation {
+public class AnnotationImpl extends AbstractAnnotatable implements Annotation {
private static final long serialVersionUID = -5600031479702563436L;
@@ -34,9 +32,7 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
private String qualifier;
- private ConstExprConstruct constExpr;
-
- private DynExprConstruct dynExpr;
+ private AnnotationExpression annotationExpression;
@Override
public String getTerm() {
@@ -57,21 +53,12 @@ public class AnnotationImpl extends AbstractEdmItem implements Annotation {
}
@Override
- public ConstExprConstruct getConstExpr() {
- return constExpr;
- }
-
- public void setConstExpr(final ConstExprConstruct constExpr) {
- this.constExpr = constExpr;
- }
-
- @Override
- public DynExprConstruct getDynExpr() {
- return dynExpr;
+ public AnnotationExpression getExpression() {
+ return annotationExpression;
}
- public void setDynExpr(final DynExprConstruct dynExpr) {
- this.dynExpr = dynExpr;
+ public void setAnnotationExpression(final AnnotationExpression annotationExpression) {
+ this.annotationExpression = annotationExpression;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationsDeserializer.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationsDeserializer.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationsDeserializer.java
index 6c8a4f6..5ab7afb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationsDeserializer.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/AnnotationsDeserializer.java
@@ -35,7 +35,7 @@ public class AnnotationsDeserializer extends AbstractEdmDeserializer<Annotations
final AnnotationsImpl annotations = new AnnotationsImpl();
- for (; jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
+ for (; jp.getCurrentToken() != null && jp.getCurrentToken() != JsonToken.END_OBJECT; jp.nextToken()) {
final JsonToken token = jp.getCurrentToken();
if (token == JsonToken.FIELD_NAME) {
if ("Target".equals(jp.getCurrentName())) {
@@ -44,7 +44,7 @@ public class AnnotationsDeserializer extends AbstractEdmDeserializer<Annotations
annotations.setQualifier(jp.nextTextValue());
} else if ("Annotation".equals(jp.getCurrentName())) {
jp.nextToken();
- annotations.getAnnotations().add(jp.readValueAs( AnnotationImpl.class));
+ annotations.getAnnotations().add(jp.readValueAs(AnnotationImpl.class));
}
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ComplexTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ComplexTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ComplexTypeImpl.java
index b91259a..8a16584 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ComplexTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/ComplexTypeImpl.java
@@ -41,7 +41,7 @@ public class ComplexTypeImpl extends AbstractComplexType implements ComplexType
private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
- private Annotation annotation;
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
@Override
public boolean isAbstractEntityType() {
@@ -91,12 +91,8 @@ public class ComplexTypeImpl extends AbstractComplexType implements ComplexType
}
@Override
- public Annotation getAnnotation() {
- return annotation;
- }
-
- public void setAnnotation(final Annotation annotation) {
- this.annotation = annotation;
+ public List<Annotation> getAnnotations() {
+ return annotations;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityContainerImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityContainerImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityContainerImpl.java
index c67e17d..41640eb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityContainerImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityContainerImpl.java
@@ -19,7 +19,7 @@
package org.apache.olingo.client.core.edm.xml.v4;
import org.apache.olingo.client.api.edm.xml.v4.ActionImport;
-import org.apache.olingo.client.api.edm.xml.v4.AnnotatedEdmItem;
+import org.apache.olingo.client.api.edm.xml.v4.Annotatable;
import org.apache.olingo.client.api.edm.xml.v4.Annotation;
import org.apache.olingo.client.api.edm.xml.v4.EntityContainer;
import org.apache.olingo.client.api.edm.xml.v4.EntitySet;
@@ -30,7 +30,7 @@ import org.apache.olingo.client.core.edm.xml.AbstractEntityContainer;
import java.util.ArrayList;
import java.util.List;
-public class EntityContainerImpl extends AbstractEntityContainer implements AnnotatedEdmItem, EntityContainer {
+public class EntityContainerImpl extends AbstractEntityContainer implements Annotatable, EntityContainer {
private static final long serialVersionUID = 2526002525927260320L;
@@ -42,7 +42,7 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
private final List<FunctionImport> functionImports = new ArrayList<FunctionImport>();
- private Annotation annotation;
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
@Override
public void setDefaultEntityContainer(final boolean defaultEntityContainer) {
@@ -118,12 +118,8 @@ public class EntityContainerImpl extends AbstractEntityContainer implements Anno
}
@Override
- public Annotation getAnnotation() {
- return annotation;
- }
-
- public void setAnnotation(final Annotation annotation) {
- this.annotation = annotation;
+ public List<Annotation> getAnnotations() {
+ return annotations;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntitySetImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntitySetImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntitySetImpl.java
index 9ef33c7..b79e0eb 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntitySetImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntitySetImpl.java
@@ -32,7 +32,7 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
private boolean includeInServiceDocument = true;
- private Annotation annotation;
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
private final List<NavigationPropertyBinding> navigationPropertyBindings = new ArrayList<NavigationPropertyBinding>();
@@ -51,12 +51,8 @@ public class EntitySetImpl extends AbstractEntitySet implements EntitySet {
}
@Override
- public Annotation getAnnotation() {
- return annotation;
- }
-
- public void setAnnotation(final Annotation annotation) {
- this.annotation = annotation;
+ public List<Annotation> getAnnotations() {
+ return annotations;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityTypeImpl.java
index 4de9101..cbe2eea 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EntityTypeImpl.java
@@ -35,7 +35,7 @@ public class EntityTypeImpl extends AbstractEntityType implements EntityType {
private final List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
- private Annotation annotation;
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
@Override
public Property getProperty(final String name) {
@@ -58,12 +58,8 @@ public class EntityTypeImpl extends AbstractEntityType implements EntityType {
}
@Override
- public Annotation getAnnotation() {
- return annotation;
- }
-
- public void setAnnotation(final Annotation annotation) {
- this.annotation = annotation;
+ public List<Annotation> getAnnotations() {
+ return annotations;
}
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/726fbe52/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EnumTypeImpl.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EnumTypeImpl.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EnumTypeImpl.java
index 9c9b84d..44a3b89 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EnumTypeImpl.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/edm/xml/v4/EnumTypeImpl.java
@@ -18,23 +18,21 @@
*/
package org.apache.olingo.client.core.edm.xml.v4;
-import org.apache.olingo.client.api.edm.xml.v4.AnnotatedEdmItem;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.olingo.client.api.edm.xml.v4.Annotatable;
import org.apache.olingo.client.api.edm.xml.v4.Annotation;
import org.apache.olingo.client.core.edm.xml.AbstractEnumType;
-public class EnumTypeImpl extends AbstractEnumType implements AnnotatedEdmItem {
+public class EnumTypeImpl extends AbstractEnumType implements Annotatable {
private static final long serialVersionUID = -3329664331877556957L;
- private Annotation annotation;
+ private final List<Annotation> annotations = new ArrayList<Annotation>();
@Override
- public Annotation getAnnotation() {
- return annotation;
- }
-
- public void setAnnotation(final Annotation annotation) {
- this.annotation = annotation;
+ public List<Annotation> getAnnotations() {
+ return annotations;
}
}