[OLINGO-826] Added Annotations to all EntitySets
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/be3b10a2 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/be3b10a2 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/be3b10a2 Branch: refs/heads/master Commit: be3b10a2454f791840ecc8aba261759a5504e335 Parents: a11cb6d Author: Christian Amend <[email protected]> Authored: Tue Nov 17 13:08:06 2015 +0100 Committer: Christian Amend <[email protected]> Committed: Tue Nov 17 13:08:06 2015 +0100 ---------------------------------------------------------------------- .../tecsvc/provider/ContainerProvider.java | 356 +++++++++++-------- .../server/tecsvc/provider/TermProvider.java | 20 +- .../serializer/xml/MetadataDocumentTest.java | 2 +- 3 files changed, 207 insertions(+), 171 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be3b10a2/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java index c9db21e..a5d9b40 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/ContainerProvider.java @@ -33,6 +33,7 @@ import org.apache.olingo.commons.api.edm.provider.CsdlFunctionImport; import org.apache.olingo.commons.api.edm.provider.CsdlNavigationPropertyBinding; import org.apache.olingo.commons.api.edm.provider.CsdlSingleton; import org.apache.olingo.commons.api.edm.provider.annotation.CsdlConstantExpression; +import org.apache.olingo.commons.api.edm.provider.annotation.CsdlConstantExpression.ConstantExpressionType; import org.apache.olingo.commons.api.ex.ODataException; public class ContainerProvider { @@ -152,6 +153,13 @@ public class ContainerProvider { functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FICRTCollESKeyNavContParam")); functionImports.add(prov.getFunctionImport(ContainerProvider.nameContainer, "FINRTByteNineParam")); + List<CsdlAnnotation> annotations = new ArrayList<CsdlAnnotation>(); + annotations.add(new CsdlAnnotation().setTerm(TermProvider.TERM_DESCRIPTION.getFullQualifiedNameAsString()) + .setExpression( + new CsdlConstantExpression(ConstantExpressionType.String, + "If an entity set contains data all operations are supported."))); + container.setAnnotations(annotations); + return container; } @@ -168,44 +176,21 @@ public class ContainerProvider { .setAnnotations(Arrays.asList(new CsdlAnnotation().setTerm("Core.Description").setExpression( new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, "Contains entities with all primitive types")), - new CsdlAnnotation().setTerm("Core.LongDescription").setQualifier("EnabledForEntitySet").setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, - "System Query Options: $filter, $count, $orderby, $skip, $top, $expand, $select, $format; " - + "Operations: Create, Create with Deep Insert, Create with Bind Operation, Read")), - new CsdlAnnotation().setTerm("Core.LongDescription").setQualifier("EnabledForEntity").setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, - "System Query Options: $expand, $select, $format; Operations: " - + "Read, Update, Update with Bind Operation, Delete")), - new CsdlAnnotation().setTerm("Core.LongDescription").setQualifier("EnabledNavigationProperties") - .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, - "NavPropertyETTwoPrimOne, NavPropertyETTwoPrimMany")))); + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")) + )); } else if (name.equals("ESCollAllPrim")) { return new CsdlEntitySet() .setName("ESCollAllPrim") .setType(EntityTypeProvider.nameETCollAllPrim) .setAnnotations( - Arrays - .asList( - new CsdlAnnotation() - .setTerm("Org.OData.Core.V1.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with collection of each primitive type")), - new CsdlAnnotation() - .setTerm("Org.OData.Core.V1.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, " - + "$skip, $top, $expand, $select, $format; Operations: Create, Read")), - new CsdlAnnotation() - .setTerm("Org.OData.Core.V1.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, " - + "$format; Operations: Read, Update, Delete")))); + Arrays.asList( + new CsdlAnnotation().setTerm("Org.OData.Core.V1.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with collection of each primitive type")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESTwoPrim")) { return new CsdlEntitySet() @@ -219,194 +204,189 @@ public class ContainerProvider { .setPath("NavPropertyETAllPrimMany") .setTarget("ESAllPrim"))) .setAnnotations(Arrays.asList( - new CsdlAnnotation() - .setTerm("Core.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with two primitve types")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, $skip, $top, $expand, " - + "$select, $format; Operations: Create, Create with Deep Insert, " - + "Create with Bind Operation, Read")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, $format; Operations: Read, Update, " - + "Update with Bind Operation, Delete")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledNavigationProperties") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("NavPropertyETAllPrimOne, NavPropertyETAllPrimMany")))); + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with two primitve types")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESMixPrimCollComp")) { return new CsdlEntitySet() .setName("ESMixPrimCollComp") .setType(EntityTypeProvider.nameETMixPrimCollComp) .setAnnotations(Arrays.asList( - new CsdlAnnotation() - .setTerm("Core.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with various properties of type primitive, collection " - + "of primitve, complex and collection of complex")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, $skip, $top, $expand, " - + "$select, $format; Operations: Create, Read")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, $format; Operations: Read, " - + "Update, Delete")))); + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with various properties of type primitive, collection " + + "of primitve, complex and collection of complex")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESBase")) { return new CsdlEntitySet() .setName("ESBase") .setType(EntityTypeProvider.nameETBase) .setAnnotations(Arrays.asList( - new CsdlAnnotation() - .setTerm("Core.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with single inheritance")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, $skip, $top, $expand, " - + "$select, $format; Operations: Create, Read")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, $format; Operations: Read, " - + "Update, Delete")))); + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with single inheritance")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESTwoBase")) { return new CsdlEntitySet() .setName("ESTwoBase") .setType(EntityTypeProvider.nameETTwoBase) .setAnnotations(Arrays.asList( - new CsdlAnnotation() - .setTerm("Core.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with double inheritance")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, $skip, $top, $expand, " - + "$select, $format; Operations: Create, Read")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, $format; Operations: Read, " - + "Update, Delete")))); + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with double inheritance")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESTwoKeyTwoPrim")) { return new CsdlEntitySet() .setName("ESTwoKeyTwoPrim") .setType(EntityTypeProvider.nameETTwoKeyTwoPrim) .setAnnotations(Arrays.asList( - new CsdlAnnotation() - .setTerm("Core.Description") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("Contains entities with two primitive types with two keys")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntitySet") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $filter, $count, $orderby, $skip, $top, $expand, $select," - + " $format; Operations: Create, Read")), - new CsdlAnnotation() - .setTerm("Core.LongDescription") - .setQualifier("EnabledForEntity") - .setExpression( - new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) - .setValue("System Query Options: $expand, $select, $format; Operations: Read, Update, " - + "Delete")))); + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with two primitive types with two keys")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESBaseTwoKeyTwoPrim")) { return new CsdlEntitySet() .setName("ESBaseTwoKeyTwoPrim") - .setType(EntityTypeProvider.nameETBaseTwoKeyTwoPrim); + .setType(EntityTypeProvider.nameETBaseTwoKeyTwoPrim) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with two primitive types with two keys")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESTwoBaseTwoKeyTwoPrim")) { return new CsdlEntitySet() .setName("ESTwoBaseTwoKeyTwoPrim") - .setType(EntityTypeProvider.nameETTwoBaseTwoKeyTwoPrim); + .setType(EntityTypeProvider.nameETTwoBaseTwoKeyTwoPrim) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with two primitive types with two keys")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESAllKey")) { return new CsdlEntitySet() .setName("ESAllKey") - .setType(EntityTypeProvider.nameETAllKey); + .setType(EntityTypeProvider.nameETAllKey) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities all primitive keys")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESCompAllPrim")) { return new CsdlEntitySet() .setName("ESCompAllPrim") - .setType(EntityTypeProvider.nameETCompAllPrim); + .setType(EntityTypeProvider.nameETCompAllPrim) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with a complext type containing all primitive types")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESCompCollAllPrim")) { return new CsdlEntitySet() .setName("ESCompCollAllPrim") - .setType(EntityTypeProvider.nameETCompCollAllPrim); + .setType(EntityTypeProvider.nameETCompCollAllPrim) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with a complext type containing all collection primitive types")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESCompComp")) { return new CsdlEntitySet() .setName("ESCompComp") - .setType(EntityTypeProvider.nameETCompComp); + .setType(EntityTypeProvider.nameETCompComp) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with complex type nested in complex type")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESCompCollComp")) { return new CsdlEntitySet() .setName("ESCompCollComp") - .setType(EntityTypeProvider.nameETCompCollComp); + .setType(EntityTypeProvider.nameETCompCollComp) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with collection of complex type nested in complex type")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESMedia")) { return new CsdlEntitySet() .setName("ESMedia") .setType(EntityTypeProvider.nameETMedia) - .setIncludeInServiceDocument(true); + .setIncludeInServiceDocument(true) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains media entities")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESKeyTwoKeyComp")) { return new CsdlEntitySet() .setName("ESKeyTwoKeyComp") - .setType(EntityTypeProvider.nameETKeyTwoKeyComp); + .setType(EntityTypeProvider.nameETKeyTwoKeyComp) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains Keys with alias")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESInvisible")) { return new CsdlEntitySet() .setName("ESInvisible") .setIncludeInServiceDocument(false) - .setType(EntityTypeProvider.nameETAllPrim); + .setType(EntityTypeProvider.nameETAllPrim) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("To test the invisibility within the service document")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESServerSidePaging")) { return new CsdlEntitySet() .setName("ESServerSidePaging") - .setType(EntityTypeProvider.nameETServerSidePaging); + .setType(EntityTypeProvider.nameETServerSidePaging) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Divides the response to several pages using $skiptoken and providing a nextLink")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESAllNullable")) { return new CsdlEntitySet() .setName("ESAllNullable") - .setType(EntityTypeProvider.nameETAllNullable); + .setType(EntityTypeProvider.nameETAllNullable) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with initial values")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESKeyNav")) { return new CsdlEntitySet() @@ -463,7 +443,16 @@ public class ContainerProvider { .setTarget("ESTwoKeyNav"), new CsdlNavigationPropertyBinding() .setPath("PropertyCompNav/com.corp.odata.test1.CTNavFiveProp/NavPropertyETTwoKeyNavMany") - .setTarget("ESTwoKeyNav"))); + .setTarget("ESTwoKeyNav"))) + .setAnnotations( + Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with various navigation " + + "properties including cyclic navigations")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()) + .setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESTwoKeyNav")) { return new CsdlEntitySet() @@ -517,7 +506,14 @@ public class ContainerProvider { .setTarget("ESBaseTwoKeyNav"), new CsdlNavigationPropertyBinding() .setPath("NavPropertySINav") - .setTarget("SINav"))); + .setTarget("SINav"))) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with various navigation properties " + + "including cyclic and nested navigations")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESKeyNavCont")) { return new CsdlEntitySet() @@ -547,8 +543,14 @@ public class ContainerProvider { .setTarget("ESKeyNav"), new CsdlNavigationPropertyBinding() .setPath("PropertyCompNavCont/NavPropertyETTwoKeyNavMany/NavPropertyETKeyNavOne") - .setTarget("ESKeyNav"))); - + .setTarget("ESKeyNav"))) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with containment navigation properties")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); + } else if (name.equals("ESTwoKeyNavCont")) { return new CsdlEntitySet() .setName("ESTwoKeyNavCont") @@ -565,8 +567,14 @@ public class ContainerProvider { .setTarget("ESKeyNav"), new CsdlNavigationPropertyBinding() .setPath("NavPropertyETKeyNavContMany/NavPropertyETTwoKeyNavMany/NavPropertyETKeyNavOne") - .setTarget("ESKeyNav"))); - + .setTarget("ESKeyNav"))) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with containment navigation properties")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); + } else if (name.equals("ESBaseTwoKeyNav")) { return new CsdlEntitySet() .setName("ESBaseTwoKeyNav") @@ -574,26 +582,58 @@ public class ContainerProvider { .setNavigationPropertyBindings(Arrays.asList( new CsdlNavigationPropertyBinding() .setPath("NavPropertyETKeyNavMany") - .setTarget("ESKeyNav"))); + .setTarget("ESKeyNav"))) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with single inheritance and navigation properties")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESTwoBaseTwoKeyNav")) { return new CsdlEntitySet() .setName("ESTwoBaseTwoKeyNav") - .setType(EntityTypeProvider.nameETTwoBaseTwoKeyNav); + .setType(EntityTypeProvider.nameETTwoBaseTwoKeyNav) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with double inheritance and navigation properties")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "false")))); } else if (name.equals("ESCompMixPrimCollComp")) { return new CsdlEntitySet() .setName("ESCompMixPrimCollComp") - .setType(EntityTypeProvider.nameETCompMixPrimCollComp); + .setType(EntityTypeProvider.nameETCompMixPrimCollComp) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with a complex type, " + + "various nested primitve types and collections")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESFourKeyAlias")) { return new CsdlEntitySet() .setName("ESFourKeyAlias") - .setType(EntityTypeProvider.nameETFourKeyAlias); + .setType(EntityTypeProvider.nameETFourKeyAlias) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with compound key (four properties with key aliases")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } else if (name.equals("ESMixEnumDefCollComp")) { return new CsdlEntitySet().setName("ESMixEnumDefCollComp") - .setType(EntityTypeProvider.nameETMixEnumDefCollComp); + .setType(EntityTypeProvider.nameETMixEnumDefCollComp) + .setAnnotations(Arrays.asList( + new CsdlAnnotation().setTerm("Core.Description") + .setExpression(new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String) + .setValue("Contains entities with properties of enum type, collection of enum type, type " + + "definition, collection of type definition, complex and collection of complex")), + new CsdlAnnotation().setTerm(TermProvider.TERM_DATA.getFullQualifiedNameAsString()).setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.Bool, "true")))); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be3b10a2/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TermProvider.java ---------------------------------------------------------------------- diff --git a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TermProvider.java b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TermProvider.java index 288577a..da9c3d0 100644 --- a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TermProvider.java +++ b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/TermProvider.java @@ -29,19 +29,10 @@ import org.apache.olingo.commons.api.edm.provider.annotation.CsdlConstantExpress */ public class TermProvider { -// <Term Name="Description" Type="Edm.String"> -// <Annotation Term="Core.Description" String="A brief description of a model element" /> -// <Annotation Term="Core.IsLanguageDependent" /> -// </Term> -// -// <Term Name="LongDescription" Type="Edm.String"> -// <Annotation Term="Core.Description" String="A lengthy description of a model element" /> -// <Annotation Term="Core.IsLanguageDependent" /> -// </Term> - - private static FullQualifiedName TERM_DESCRIPTION = new FullQualifiedName("Org.OData.Core.V1", "Description"); - private static FullQualifiedName TERM_LONG_DESCRIPTION = + public static FullQualifiedName TERM_DESCRIPTION = new FullQualifiedName("Org.OData.Core.V1", "Description"); + public static FullQualifiedName TERM_LONG_DESCRIPTION = new FullQualifiedName("Org.OData.Core.V1", "LongDescription"); + public static FullQualifiedName TERM_DATA = new FullQualifiedName(SchemaProvider.NAMESPACE, "Data"); public CsdlTerm getTerm(FullQualifiedName termName) { if (TERM_DESCRIPTION.equals(termName)) { @@ -56,6 +47,11 @@ public class TermProvider { new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, "A lengthy description of a model element")), new CsdlAnnotation().setTerm("Core.IsLanguageDependent"))); + } else if (TERM_DATA.equals(termName)) { + return new CsdlTerm().setName("Data").setType("Edm.Boolean") + .setAnnotations(Arrays.asList(new CsdlAnnotation().setTerm("Core.Description").setExpression( + new CsdlConstantExpression(CsdlConstantExpression.ConstantExpressionType.String, + "Indicates if data in the TechSvc is available for the given object")))); } return null; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/be3b10a2/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java index b8e8a07..5f83e8b 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/xml/MetadataDocumentTest.java @@ -131,7 +131,7 @@ public class MetadataDocumentTest { assertThat( metadata, containsString("<EntitySet Name=\"ESInvisible\" EntityType=\"Namespace1_Alias.ETAllPrim\" " - + "IncludeInServiceDocument=\"false\"/>")); + + "IncludeInServiceDocument=\"false\">")); assertThat(metadata, containsString("</EntityContainer></Schema></edmx:DataServices></edmx:Edmx>"));
