[OLINGO-786] Add qualifier to key
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/a88800c4 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/a88800c4 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/a88800c4 Branch: refs/heads/master Commit: a88800c47a91d1ba878a9d2f0816f4570d748c09 Parents: addfe51 Author: Christian Amend <[email protected]> Authored: Tue Sep 29 15:06:30 2015 +0200 Committer: Christian Amend <[email protected]> Committed: Tue Sep 29 15:06:30 2015 +0200 ---------------------------------------------------------------------- .../olingo/fit/base/MetadataTestITCase.java | 6 +- .../org/apache/olingo/commons/api/edm/Edm.java | 3 +- .../olingo/commons/api/edm/EdmAnnotatable.java | 3 +- .../olingo/commons/api/edm/EdmAnnotation.java | 9 +++ .../olingo/commons/core/edm/AbstractEdm.java | 17 +++-- .../core/edm/AbstractEdmAnnotatable.java | 13 ++-- .../commons/core/edm/EdmProviderImpl.java | 6 +- .../olingo/commons/core/edm/EdmSchemaImpl.java | 23 ++----- .../commons/core/edm/TargetQualifierMapKey.java | 72 ++++++++++++++++++++ ...mAnnotatableDynamicAnnotationExpression.java | 10 ++- .../AbstractEdmAnnotationEspression.java | 46 ------------- .../AbstractEdmAnnotationExpression.java | 46 +++++++++++++ .../AbstractEdmDynamicAnnotationExpression.java | 2 +- .../commons/core/edm/EdmImplCachingTest.java | 1 - .../commons/core/edm/EdmImplCallCreateTest.java | 1 - 15 files changed, 167 insertions(+), 91 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/fit/src/test/java/org/apache/olingo/fit/base/MetadataTestITCase.java ---------------------------------------------------------------------- diff --git a/fit/src/test/java/org/apache/olingo/fit/base/MetadataTestITCase.java b/fit/src/test/java/org/apache/olingo/fit/base/MetadataTestITCase.java index 3f970dd..17ac626 100644 --- a/fit/src/test/java/org/apache/olingo/fit/base/MetadataTestITCase.java +++ b/fit/src/test/java/org/apache/olingo/fit/base/MetadataTestITCase.java @@ -106,7 +106,7 @@ public class MetadataTestITCase extends AbstractTestITCase { assertEquals(descriptionTerm.getFullQualifiedName(), edm.getTerm(new FullQualifiedName("Org.OData.Core.V1.Description")).getFullQualifiedName()); - final EdmAnnotation description = core.getAnnotation(descriptionTerm); + final EdmAnnotation description = core.getAnnotation(descriptionTerm, null); assertNotNull(description); // assertEquals("Core terms needed to write vocabularies", // description.getExpression().asConstant().getValue().asPrimitive().getName()); @@ -119,7 +119,7 @@ public class MetadataTestITCase extends AbstractTestITCase { assertTrue(isLanguageDependent.getAppliesTo().contains(EdmTerm.class)); assertEquals(edm.getTypeDefinition(new FullQualifiedName("Core.Tag")), isLanguageDependent.getType()); assertEquals(EdmBoolean.getInstance(), ((EdmTypeDefinition) isLanguageDependent.getType()).getUnderlyingType()); - assertNotNull(isLanguageDependent.getAnnotation(descriptionTerm)); + assertNotNull(isLanguageDependent.getAnnotation(descriptionTerm, null)); final EdmTerm permissions = edm.getTerm(new FullQualifiedName("Core.Permissions")); assertNotNull(permissions); @@ -133,7 +133,7 @@ public class MetadataTestITCase extends AbstractTestITCase { assertNotNull(scale); final EdmAnnotation requiresTypeInScale = - scale.getAnnotation(edm.getTerm(new FullQualifiedName("Core.RequiresType"))); + scale.getAnnotation(edm.getTerm(new FullQualifiedName("Core.RequiresType")), null); assertNotNull(requiresTypeInScale); assertEquals("Edm.Decimal", requiresTypeInScale.getExpression().asConstant().getValueAsString()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java index f40de28..19ae049 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/Edm.java @@ -161,7 +161,8 @@ public interface Edm { * Get {@link EdmAnnotations} by target. * * @param targetName <tt>edm:Annotations</tt> target + * @param qualifier for the target. Can be <code>NULL</code> * @return {@link EdmAnnotations} */ - EdmAnnotations getAnnotationGroup(FullQualifiedName targetName); + EdmAnnotations getAnnotationGroup(FullQualifiedName targetName, String qualifier); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotatable.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotatable.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotatable.java index 194b309..5cbbc58 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotatable.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotatable.java @@ -27,9 +27,10 @@ public interface EdmAnnotatable { /** * @param term term for annotation + * @param qualifier for the term. Can be <code>NULL</code> * @return annotation according to term */ - EdmAnnotation getAnnotation(EdmTerm term); + EdmAnnotation getAnnotation(EdmTerm term, String qualifier); /** * Get list of all annotations. http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotation.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotation.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotation.java index ef0e352..c9556ec 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotation.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmAnnotation.java @@ -20,10 +20,19 @@ package org.apache.olingo.commons.api.edm; import org.apache.olingo.commons.api.edm.annotation.EdmAnnotationExpression; +/** + * This class models an OData Annotation which can be applied to a target. + */ public interface EdmAnnotation extends EdmAnnotatable { + /** + * @return the term of this annotation + */ EdmTerm getTerm(); + /** + * @return the qualifier for this annotation. Might be <code>NULL</code> + */ String getQualifier(); EdmAnnotationExpression getExpression(); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java index d3b287e..f2f3c18 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdm.java @@ -76,8 +76,8 @@ public abstract class AbstractEdm implements Edm { private final Map<FullQualifiedName, EdmTerm> terms = Collections.synchronizedMap(new HashMap<FullQualifiedName, EdmTerm>()); - private final Map<FullQualifiedName, EdmAnnotations> annotationGroups = - Collections.synchronizedMap(new HashMap<FullQualifiedName, EdmAnnotations>()); + private final Map<TargetQualifierMapKey, EdmAnnotations> annotationGroups = + Collections.synchronizedMap(new HashMap<TargetQualifierMapKey, EdmAnnotations>()); private Map<String, String> aliasToNamespaceInfo = Collections.synchronizedMap(new HashMap<String, String>()); private boolean aliasToNamespaceInfoCreated = false; @@ -296,12 +296,14 @@ public abstract class AbstractEdm implements Edm { } @Override - public EdmAnnotations getAnnotationGroup(final FullQualifiedName targetName) { - EdmAnnotations _annotations = annotationGroups.get(targetName); + public EdmAnnotations getAnnotationGroup(final FullQualifiedName targetName, String qualifier) { + final FullQualifiedName fqn = resolvePossibleAlias(targetName); + TargetQualifierMapKey key = new TargetQualifierMapKey(fqn, qualifier); + EdmAnnotations _annotations = annotationGroups.get(key); if (_annotations == null) { _annotations = createAnnotationGroup(targetName); if (_annotations != null) { - annotationGroups.put(targetName, _annotations); + annotationGroups.put(key, _annotations); } } return _annotations; @@ -411,8 +413,9 @@ public abstract class AbstractEdm implements Edm { protected abstract EdmAnnotations createAnnotationGroup(FullQualifiedName targetName); - public void cacheAnnotationGroup(final FullQualifiedName annotationsGroupName, + public void cacheAnnotationGroup(final FullQualifiedName targetName, final EdmAnnotations annotationsGroup) { - annotationGroups.put(annotationsGroupName, annotationsGroup); + TargetQualifierMapKey key = new TargetQualifierMapKey(targetName, annotationsGroup.getQualifier()); + annotationGroups.put(key, annotationsGroup); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmAnnotatable.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmAnnotatable.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmAnnotatable.java index ef649df..223ceb1 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmAnnotatable.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmAnnotatable.java @@ -6,9 +6,9 @@ * 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 @@ -41,14 +41,17 @@ public abstract class AbstractEdmAnnotatable implements EdmAnnotatable { } @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { + public EdmAnnotation getAnnotation(final EdmTerm term, String qualifier) { EdmAnnotation result = null; for (EdmAnnotation annotation : getAnnotations()) { if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) { - result = annotation; + if (qualifier == annotation.getQualifier() + || (qualifier != null && qualifier.equals(annotation.getQualifier()))) { + result = annotation; + break; + } } } - return result; } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmProviderImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmProviderImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmProviderImpl.java index c4ab927..a9e466a 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmProviderImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmProviderImpl.java @@ -25,9 +25,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.apache.olingo.commons.api.ex.ODataException; 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; @@ -41,8 +39,6 @@ import org.apache.olingo.commons.api.edm.EdmTypeDefinition; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.provider.CsdlAction; import org.apache.olingo.commons.api.edm.provider.CsdlAliasInfo; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotatable; -import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation; import org.apache.olingo.commons.api.edm.provider.CsdlAnnotations; import org.apache.olingo.commons.api.edm.provider.CsdlComplexType; import org.apache.olingo.commons.api.edm.provider.CsdlEdmProvider; @@ -54,6 +50,7 @@ import org.apache.olingo.commons.api.edm.provider.CsdlParameter; import org.apache.olingo.commons.api.edm.provider.CsdlSchema; import org.apache.olingo.commons.api.edm.provider.CsdlTerm; import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition; +import org.apache.olingo.commons.api.ex.ODataException; public class EdmProviderImpl extends AbstractEdm { @@ -344,7 +341,6 @@ public class EdmProviderImpl extends AbstractEdm { } } - // TODO: Check Provider annotations implementation @Override protected EdmAnnotations createAnnotationGroup(final FullQualifiedName targetName) { try { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmSchemaImpl.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmSchemaImpl.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmSchemaImpl.java index 4d00a1c..1c8ecf1 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmSchemaImpl.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/EdmSchemaImpl.java @@ -46,7 +46,7 @@ import org.apache.olingo.commons.api.edm.provider.CsdlSchema; import org.apache.olingo.commons.api.edm.provider.CsdlTerm; import org.apache.olingo.commons.api.edm.provider.CsdlTypeDefinition; -public class EdmSchemaImpl implements EdmSchema { +public class EdmSchemaImpl extends AbstractEdmAnnotatable implements EdmSchema { private final CsdlSchema schema; private final EdmProviderImpl edm; @@ -66,6 +66,7 @@ public class EdmSchemaImpl implements EdmSchema { private EdmEntityContainer entityContainer; public EdmSchemaImpl(final EdmProviderImpl edm, final CsdlEdmProvider provider, final CsdlSchema schema) { + super(edm, schema); this.edm = edm; this.provider = provider; this.schema = schema; @@ -263,15 +264,15 @@ public class EdmSchemaImpl implements EdmSchema { schema.getAnnotationGroups(); if (providerAnnotations != null) { for (CsdlAnnotations annotationGroup : providerAnnotations) { - FullQualifiedName annotationsGroupName; + FullQualifiedName targetName; if (annotationGroup.getTarget().contains(".")) { - annotationsGroupName = new FullQualifiedName(annotationGroup.getTarget()); + targetName = new FullQualifiedName(annotationGroup.getTarget()); } else { - annotationsGroupName = new FullQualifiedName(namespace, annotationGroup.getTarget()); + targetName = new FullQualifiedName(namespace, annotationGroup.getTarget()); } EdmAnnotationsImpl annotationsImpl = new EdmAnnotationsImpl(edm, this, annotationGroup); annotationGroups.add(annotationsImpl); - edm.cacheAnnotationGroup(annotationsGroupName, annotationsImpl); + edm.cacheAnnotationGroup(targetName, annotationsImpl); } } return annotationGroups; @@ -289,16 +290,4 @@ public class EdmSchemaImpl implements EdmSchema { } return annotations; } - - @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { - EdmAnnotation result = null; - for (EdmAnnotation annotation : getAnnotations()) { - if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) { - result = annotation; - } - } - - return result; - } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/TargetQualifierMapKey.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/TargetQualifierMapKey.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/TargetQualifierMapKey.java new file mode 100644 index 0000000..3236cd1 --- /dev/null +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/TargetQualifierMapKey.java @@ -0,0 +1,72 @@ +/* + * 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.commons.core.edm; + +import org.apache.olingo.commons.api.edm.FullQualifiedName; + +public class TargetQualifierMapKey { + + private final FullQualifiedName targetName; + private final String qualifier; + + public TargetQualifierMapKey(FullQualifiedName targetName, String qualifier) { + this.targetName = targetName; + this.qualifier = qualifier; +} + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((qualifier == null) ? 0 : qualifier.hashCode()); + result = prime * result + ((targetName == null) ? 0 : targetName.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (!(obj instanceof TargetQualifierMapKey)) { + return false; + } + TargetQualifierMapKey other = (TargetQualifierMapKey) obj; + if (qualifier == null) { + if (other.qualifier != null) { + return false; + } + } else if (!qualifier.equals(other.qualifier)) { + return false; + } + if (targetName == null) { + if (other.targetName != null) { + return false; + } + } else if (!targetName.equals(other.targetName)) { + return false; + } + return true; + } + + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotatableDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotatableDynamicAnnotationExpression.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotatableDynamicAnnotationExpression.java index 86fd669..4011fa2 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotatableDynamicAnnotationExpression.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotatableDynamicAnnotationExpression.java @@ -30,15 +30,19 @@ extends AbstractEdmDynamicAnnotationExpression implements EdmAnnotatable { private final List<EdmAnnotation> annotations = new ArrayList<EdmAnnotation>(); + //TODO: Can we derive this method from AbstractEdmAnnotatable? @Override - public EdmAnnotation getAnnotation(final EdmTerm term) { + public EdmAnnotation getAnnotation(final EdmTerm term, String qualifier) { EdmAnnotation result = null; for (EdmAnnotation annotation : getAnnotations()) { if (term.getFullQualifiedName().equals(annotation.getTerm().getFullQualifiedName())) { - result = annotation; + if (qualifier == annotation.getQualifier() + || (qualifier != null && qualifier.equals(annotation.getQualifier()))) { + result = annotation; + break; + } } } - return result; } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationEspression.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationEspression.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationEspression.java deleted file mode 100644 index bb2c918..0000000 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationEspression.java +++ /dev/null @@ -1,46 +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.commons.core.edm.annotation; - -import org.apache.olingo.commons.api.edm.annotation.EdmAnnotationExpression; -import org.apache.olingo.commons.api.edm.annotation.EdmConstantAnnotationExpression; -import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression; - -public abstract class AbstractEdmAnnotationEspression implements EdmAnnotationExpression { - - @Override - public boolean isConstant() { - return this instanceof EdmConstantAnnotationExpression; - } - - @Override - public EdmConstantAnnotationExpression asConstant() { - return isConstant() ? (EdmConstantAnnotationExpression) this : null; - } - - @Override - public boolean isDynamic() { - return this instanceof EdmDynamicAnnotationExpression; - } - - @Override - public EdmDynamicAnnotationExpression asDynamic() { - return isDynamic() ? (EdmDynamicAnnotationExpression) this : null; - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationExpression.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationExpression.java new file mode 100644 index 0000000..26757c1 --- /dev/null +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmAnnotationExpression.java @@ -0,0 +1,46 @@ +/* + * 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.commons.core.edm.annotation; + +import org.apache.olingo.commons.api.edm.annotation.EdmAnnotationExpression; +import org.apache.olingo.commons.api.edm.annotation.EdmConstantAnnotationExpression; +import org.apache.olingo.commons.api.edm.annotation.EdmDynamicAnnotationExpression; + +public abstract class AbstractEdmAnnotationExpression implements EdmAnnotationExpression { + + @Override + public boolean isConstant() { + return this instanceof EdmConstantAnnotationExpression; + } + + @Override + public EdmConstantAnnotationExpression asConstant() { + return isConstant() ? (EdmConstantAnnotationExpression) this : null; + } + + @Override + public boolean isDynamic() { + return this instanceof EdmDynamicAnnotationExpression; + } + + @Override + public EdmDynamicAnnotationExpression asDynamic() { + return isDynamic() ? (EdmDynamicAnnotationExpression) this : null; + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmDynamicAnnotationExpression.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmDynamicAnnotationExpression.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmDynamicAnnotationExpression.java index ed11b88..3115491 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmDynamicAnnotationExpression.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/annotation/AbstractEdmDynamicAnnotationExpression.java @@ -45,7 +45,7 @@ import org.apache.olingo.commons.api.edm.annotation.EdmRecord; import org.apache.olingo.commons.api.edm.annotation.EdmUrlRef; public abstract class AbstractEdmDynamicAnnotationExpression -extends AbstractEdmAnnotationEspression implements EdmDynamicAnnotationExpression { +extends AbstractEdmAnnotationExpression implements EdmDynamicAnnotationExpression { @Override public boolean isNot() { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java index 2efe38a..bfd38e3 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCachingTest.java @@ -34,7 +34,6 @@ import java.util.Map; import org.apache.commons.lang3.StringUtils; 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; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a88800c4/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java index 23f2235..9aad3fa 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/EdmImplCallCreateTest.java @@ -33,7 +33,6 @@ import java.util.Map; 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;
