[OLINGO-851] Added getInternalName to Mapping object I also added the mapping to the EdmBindingTarget.
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/27e17aba Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/27e17aba Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/27e17aba Branch: refs/heads/OLINGO-832_StreamSerializerPoC Commit: 27e17aba90b5e4449f36a1e4cf6fe779db7e8ee4 Parents: 36e6dc9 Author: Christian Amend <[email protected]> Authored: Wed Jan 20 14:25:38 2016 +0100 Committer: Christian Amend <[email protected]> Committed: Wed Jan 20 14:25:38 2016 +0100 ---------------------------------------------------------------------- .../commons/api/edm/EdmBindingTarget.java | 2 +- .../olingo/commons/api/edm/EdmMapping.java | 7 ++++ .../api/edm/provider/CsdlBindingTarget.java | 25 ++++++++++-- .../commons/api/edm/provider/CsdlEntitySet.java | 6 +++ .../commons/api/edm/provider/CsdlMapping.java | 21 ++++++++++ .../commons/api/edm/provider/CsdlSingleton.java | 14 +++++-- .../core/edm/AbstractEdmBindingTarget.java | 12 ++++-- .../core/edm/provider/EdmMappingTest.java | 42 +++++++++++++++++++- 8 files changed, 116 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java index e3fbc37..48c2078 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmBindingTarget.java @@ -24,7 +24,7 @@ import java.util.List; * Entity Sets or Singletons can be bound to each other using a navigation property binding so an * {@link EdmBindingTarget} can either be an {@link EdmEntitySet} or an {@link EdmSingleton}. */ -public interface EdmBindingTarget extends EdmNamed, EdmAnnotatable { +public interface EdmBindingTarget extends EdmNamed, EdmAnnotatable, EdmMappable { /** * Returns a human readable title or null if not set. http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmMapping.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmMapping.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmMapping.java index e223152..c51b1c5 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmMapping.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/EdmMapping.java @@ -24,6 +24,13 @@ package org.apache.olingo.commons.api.edm; public interface EdmMapping { /** + * Returns the internal name for this mapped object. This name won`t be used by the Olingo library but can be used by + * applications to access their database easier. + * @return the internal name of this mapped object + */ + String getInternalName(); + + /** * The class which is returned here will be used to during deserialization to replace the default java class for a * primitive type. * @return class used during deserialization http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java index 2a748f4..50e0dee 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlBindingTarget.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 @@ -32,7 +32,7 @@ public abstract class CsdlBindingTarget extends CsdlAbstractEdmItem implements C * The Name. */ protected String name; - + /** * The human readable title. */ @@ -49,6 +49,11 @@ public abstract class CsdlBindingTarget extends CsdlAbstractEdmItem implements C protected List<CsdlNavigationPropertyBinding> navigationPropertyBindings = new ArrayList<CsdlNavigationPropertyBinding>(); + /** + * Mapping for server use cases + */ + protected CsdlMapping mapping; + private List<CsdlAnnotation> annotations = new ArrayList<CsdlAnnotation>(); @Override @@ -156,4 +161,18 @@ public abstract class CsdlBindingTarget extends CsdlAbstractEdmItem implements C this.title = title; return this; } + + public CsdlMapping getMapping() { + return mapping; + } + + /** + * Sets the mapping object for this binding target. + * @param mapping + * @return this instance + */ + public CsdlBindingTarget setMapping(CsdlMapping mapping) { + this.mapping = mapping; + return this; + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java index 41380c5..4b035ee 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlEntitySet.java @@ -87,4 +87,10 @@ public class CsdlEntitySet extends CsdlBindingTarget { super.setTitle(title); return this; } + + @Override + public CsdlEntitySet setMapping(CsdlMapping mapping) { + this.mapping = mapping; + return this; + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlMapping.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlMapping.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlMapping.java index 779ab2e..625f78a 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlMapping.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlMapping.java @@ -26,8 +26,21 @@ import org.apache.olingo.commons.api.edm.EdmMapping; */ public class CsdlMapping implements EdmMapping { + private String internalName; private Class<?> mappedJavaClass; + + /** + * Sets the internal name for this mapped object. This name won`t be used by the Olingo library but can be used by + * applications to access their database easier. + * @param internalName + * @return this for method chaining + */ + public CsdlMapping setInternalName(String internalName){ + this.internalName = internalName; + return this; + } + /** * Sets the class to be used during deserialization to transform an EDM primitive type into this java class. To see * which classes work for which primitive type refer to {@link org.apache.olingo.commons.api.edm.EdmPrimitiveType}. @@ -49,4 +62,12 @@ public class CsdlMapping implements EdmMapping { return mappedJavaClass; } + /* (non-Javadoc) + * @see org.apache.olingo.commons.api.edm.EdmMapping#getInternalName() + */ + @Override + public String getInternalName() { + return internalName; + } + } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java ---------------------------------------------------------------------- diff --git a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java index 235b240..1e7a872 100644 --- a/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.java +++ b/lib/commons-api/src/main/java/org/apache/olingo/commons/api/edm/provider/CsdlSingleton.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 @@ -51,16 +51,22 @@ public class CsdlSingleton extends CsdlBindingTarget { this.navigationPropertyBindings = navigationPropertyBindings; return this; } - + @Override public CsdlSingleton setAnnotations(final List<CsdlAnnotation> annotations) { super.setAnnotations(annotations); return this; } - + @Override public CsdlSingleton setTitle(String title) { super.setTitle(title); return this; } + + @Override + public CsdlSingleton setMapping(CsdlMapping mapping) { + this.mapping = mapping; + return this; + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java index 90ac9f8..96b9f06 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/AbstractEdmBindingTarget.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 @@ -28,6 +28,7 @@ import org.apache.olingo.commons.api.edm.EdmBindingTarget; import org.apache.olingo.commons.api.edm.EdmEntityContainer; import org.apache.olingo.commons.api.edm.EdmEntityType; import org.apache.olingo.commons.api.edm.EdmException; +import org.apache.olingo.commons.api.edm.EdmMapping; import org.apache.olingo.commons.api.edm.EdmNavigationPropertyBinding; import org.apache.olingo.commons.api.edm.provider.CsdlBindingTarget; import org.apache.olingo.commons.api.edm.provider.CsdlNavigationPropertyBinding; @@ -119,9 +120,14 @@ public abstract class AbstractEdmBindingTarget extends AbstractEdmNamed implemen return bindingTarget; } - + @Override public String getTitle() { return target.getTitle(); } + + @Override + public EdmMapping getMapping() { + return target.getMapping(); + } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/27e17aba/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMappingTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMappingTest.java b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMappingTest.java index 455dd15..2e5ae40 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMappingTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/server/core/edm/provider/EdmMappingTest.java @@ -24,14 +24,20 @@ import static org.junit.Assert.assertNull; import java.util.Date; +import org.apache.olingo.commons.api.edm.EdmEntitySet; import org.apache.olingo.commons.api.edm.EdmParameter; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind; import org.apache.olingo.commons.api.edm.EdmProperty; +import org.apache.olingo.commons.api.edm.EdmSingleton; +import org.apache.olingo.commons.api.edm.provider.CsdlEntitySet; import org.apache.olingo.commons.api.edm.provider.CsdlMapping; import org.apache.olingo.commons.api.edm.provider.CsdlParameter; import org.apache.olingo.commons.api.edm.provider.CsdlProperty; +import org.apache.olingo.commons.api.edm.provider.CsdlSingleton; +import org.apache.olingo.commons.core.edm.EdmEntitySetImpl; import org.apache.olingo.commons.core.edm.EdmParameterImpl; import org.apache.olingo.commons.core.edm.EdmPropertyImpl; +import org.apache.olingo.commons.core.edm.EdmSingletonImpl; import org.junit.Test; public class EdmMappingTest { @@ -40,13 +46,45 @@ public class EdmMappingTest { public void initialMappingMustBeNull() { CsdlProperty property = new CsdlProperty().setType(EdmPrimitiveTypeKind.DateTimeOffset.getFullQualifiedName()); EdmProperty edmProperty = new EdmPropertyImpl(null, property); - assertNull(edmProperty.getMapping()); CsdlParameter parameter = new CsdlParameter().setType(EdmPrimitiveTypeKind.DateTimeOffset.getFullQualifiedName()); EdmParameter edmParameter = new EdmParameterImpl(null, parameter); - assertNull(edmParameter.getMapping()); + + CsdlEntitySet es = new CsdlEntitySet().setName("test"); + EdmEntitySet edmES = new EdmEntitySetImpl(null, null, es); + assertNull(edmES.getMapping()); + + CsdlSingleton si = new CsdlSingleton().setName("test"); + EdmSingleton edmSi = new EdmSingletonImpl(null, null, si); + assertNull(edmSi.getMapping()); + } + + public void getInternalNameViaMapping() { + CsdlMapping mapping = new CsdlMapping().setInternalName("internalName"); + + CsdlProperty property = + new CsdlProperty().setType(EdmPrimitiveTypeKind.DateTimeOffset.getFullQualifiedName()).setMapping(mapping); + EdmProperty edmProperty = new EdmPropertyImpl(null, property); + assertNotNull(edmProperty.getMapping()); + assertEquals("internalName", edmProperty.getMapping().getInternalName()); + + CsdlParameter parameter = + new CsdlParameter().setType(EdmPrimitiveTypeKind.DateTimeOffset.getFullQualifiedName()).setMapping(mapping); + EdmParameter edmParameter = new EdmParameterImpl(null, parameter); + assertNotNull(edmParameter.getMapping()); + assertEquals("internalName", edmParameter.getMapping().getInternalName()); + + CsdlEntitySet es = new CsdlEntitySet().setName("test").setMapping(mapping); + EdmEntitySet edmES = new EdmEntitySetImpl(null, null, es); + assertNotNull(edmES.getMapping()); + assertEquals("internalName", edmES.getMapping().getInternalName()); + + CsdlSingleton si = new CsdlSingleton().setName("test").setMapping(mapping); + EdmSingleton edmSi = new EdmSingletonImpl(null, null, si); + assertNotNull(edmSi.getMapping()); + assertEquals("internalName", edmSi.getMapping().getInternalName()); } @Test
