Repository: olingo-odata4
Updated Branches:
  refs/heads/master 36e6dc929 -> 27e17aba9


[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/master
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

Reply via email to