[OLINGO-506] Fixed complex property FQN generation

Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/5b309790
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/5b309790
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/5b309790

Branch: refs/heads/Olingo-129_PocJpaDataStore
Commit: 5b309790493e9b65abd8c8ecbcbc98e844e27b2f
Parents: 2ffedec
Author: Michael Bolz <[email protected]>
Authored: Fri Dec 5 08:19:39 2014 +0100
Committer: Michael Bolz <[email protected]>
Committed: Fri Dec 5 08:19:39 2014 +0100

----------------------------------------------------------------------
 .../core/edm/AnnotationEdmProvider.java         |  3 ++-
 .../core/edm/AnnotationEdmProviderTest.java     | 23 ++++++++++++++++++--
 2 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5b309790/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
----------------------------------------------------------------------
diff --git 
a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
 
b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
index c152a00..48140a7 100644
--- 
a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
+++ 
b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProvider.java
@@ -497,7 +497,8 @@ public class AnnotationEdmProvider extends EdmProvider {
       if (complexEntityNamespace.isEmpty()) {
         complexEntityNamespace = defaultNamespace;
       }
-      cp.setType(new FullQualifiedName(complexEntityNamespace, ece.name()));
+      String name = ANNOTATION_HELPER.extractComplexTypeName(field.getType());
+      cp.setType(new FullQualifiedName(complexEntityNamespace, name));
 
       return cp;
     }

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5b309790/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
----------------------------------------------------------------------
diff --git 
a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
 
b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
index bc78f6f..44187d4 100644
--- 
a/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
+++ 
b/odata2-annotation-processor/annotation-processor-core/src/test/java/org/apache/olingo/odata2/annotation/processor/core/edm/AnnotationEdmProviderTest.java
@@ -40,12 +40,14 @@ import 
org.apache.olingo.odata2.annotation.processor.core.model.Team;
 import org.apache.olingo.odata2.api.annotation.edm.EdmComplexType;
 import org.apache.olingo.odata2.api.annotation.edm.EdmEntitySet;
 import org.apache.olingo.odata2.api.annotation.edm.EdmEntityType;
+import org.apache.olingo.odata2.api.annotation.edm.EdmProperty;
 import org.apache.olingo.odata2.api.edm.EdmConcurrencyMode;
 import org.apache.olingo.odata2.api.edm.EdmMultiplicity;
 import org.apache.olingo.odata2.api.edm.FullQualifiedName;
 import org.apache.olingo.odata2.api.edm.provider.Association;
 import org.apache.olingo.odata2.api.edm.provider.AssociationEnd;
 import org.apache.olingo.odata2.api.edm.provider.AssociationSet;
+import org.apache.olingo.odata2.api.edm.provider.ComplexProperty;
 import org.apache.olingo.odata2.api.edm.provider.ComplexType;
 import org.apache.olingo.odata2.api.edm.provider.EntityContainer;
 import org.apache.olingo.odata2.api.edm.provider.EntityContainerInfo;
@@ -69,7 +71,9 @@ public class AnnotationEdmProviderTest {
 
   @EdmEntityType
   @EdmEntitySet
-  private static final class GeneratedNamesTestClass {}
+  private static final class GeneratedNamesTestClass {
+    @EdmProperty GeneratedNamesComplexTestClass myComplexProperty;
+  }
 
   @EdmComplexType
   private static final class GeneratedNamesComplexTestClass {}
@@ -96,9 +100,10 @@ public class AnnotationEdmProviderTest {
   }
 
   @Test
-  public void defaultNamespaceGeneration() throws ODataException {
+  public void defaultNameAndNamespaceGeneration() throws ODataException {
     Collection<Class<?>> localAnnotatedClasses = new ArrayList<Class<?>>();
     localAnnotatedClasses.add(GeneratedNamesTestClass.class);
+    localAnnotatedClasses.add(GeneratedNamesComplexTestClass.class);
     AnnotationEdmProvider localAep = new 
AnnotationEdmProvider(localAnnotatedClasses);
     // validate
     EntityType testType = localAep.getEntityType(new FullQualifiedName(
@@ -107,6 +112,20 @@ public class AnnotationEdmProviderTest {
     assertNotNull("Requested entity not found.", testType);
     assertEquals("GeneratedNamesTestClass", testType.getName());
     assertNull("This should not have a base type", testType.getBaseType());
+    List<Property> properties = testType.getProperties();
+    assertEquals(1, properties.size());
+    ComplexProperty propComplex = (ComplexProperty) properties.get(0);
+    assertEquals("MyComplexProperty", propComplex.getName());
+    assertEquals(GeneratedNamesComplexTestClass.class.getPackage().getName(), 
propComplex.getType().getNamespace());
+    assertEquals(GeneratedNamesComplexTestClass.class.getSimpleName(), 
propComplex.getType().getName());
+
+
+    ComplexType testComplexType = localAep.getComplexType(
+        new 
FullQualifiedName(GeneratedNamesComplexTestClass.class.getPackage().getName(),
+            GeneratedNamesComplexTestClass.class.getSimpleName()));
+    assertNotNull("Requested entity not found.", testComplexType);
+    assertEquals("GeneratedNamesComplexTestClass", testComplexType.getName());
+    assertNull("This should not have a base type", 
testComplexType.getBaseType());
   }
 
   @Test

Reply via email to