You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2014/02/07 16:14:49 UTC
git commit: [OLINGO-62] Referntial Constraint support at edm
Updated Branches:
refs/heads/master b14e278ab -> 3e0798675
[OLINGO-62] Referntial Constraint support at edm
Project: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/commit/3e079867
Tree: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/tree/3e079867
Diff: http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/diff/3e079867
Branch: refs/heads/master
Commit: 3e0798675ae572869fcaab50b357258bc2894fb5
Parents: b14e278
Author: Christian Amend <ch...@apache.org>
Authored: Fri Feb 7 16:14:03 2014 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Feb 7 16:14:36 2014 +0100
----------------------------------------------------------------------
.../odata4/commons/api/edm/EdmException.java | 2 +-
.../odata4/commons/api/edm/EdmMappable.java | 1 -
.../commons/api/edm/EdmNavigationProperty.java | 7 ++
.../odata4/commons/api/edm/EdmParameter.java | 1 -
.../odata4/commons/api/edm/EdmProperty.java | 1 -
.../commons/api/edm/EdmServiceMetadata.java | 1 -
.../commons/api/edm/EdmStructuralType.java | 2 +-
.../olingo/odata4/commons/api/edm/EdmType.java | 2 -
.../commons/api/edm/provider/ActionImport.java | 1 -
.../commons/api/edm/provider/Annotation.java | 1 -
.../commons/api/edm/provider/BindingTarget.java | 1 -
.../commons/api/edm/provider/ComplexType.java | 1 -
.../api/edm/provider/EntityContainer.java | 1 -
.../api/edm/provider/EntityContainerInfo.java | 1 -
.../commons/api/edm/provider/EntitySet.java | 1 -
.../commons/api/edm/provider/EntityType.java | 1 -
.../commons/api/edm/provider/EnumMember.java | 4 +-
.../commons/api/edm/provider/EnumType.java | 1 -
.../api/edm/provider/FunctionImport.java | 1 -
.../commons/api/edm/provider/Parameter.java | 1 -
.../commons/api/edm/provider/Property.java | 3 +-
.../commons/api/edm/provider/ReturnType.java | 1 -
.../commons/api/edm/provider/Singleton.java | 1 -
.../api/edm/provider/StructuralType.java | 1 -
.../odata4/commons/api/edm/provider/Target.java | 1 -
.../odata4/commons/api/edm/provider/Term.java | 3 +-
.../api/edm/provider/TypeDefinition.java | 1 -
.../edm/provider/EdmNavigationPropertyImpl.java | 40 +++++++++++
.../provider/EdmNavigationPropertyImplTest.java | 71 ++++++++++++++++++++
29 files changed, 125 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmException.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmException.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmException.java
index 05350b8..ec756f9 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmException.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmException.java
@@ -33,7 +33,7 @@ public class EdmException extends RuntimeException {
super(msg);
}
- public EdmException(String string, Exception e) {
+ public EdmException(final String string, final Exception e) {
super(string, e);
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmMappable.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmMappable.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmMappable.java
index 28fa16a..b698a0b 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmMappable.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmMappable.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm;
-
/**
* EdmMappable can be applied to CSDL elements to associate additional information.
*/
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmNavigationProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmNavigationProperty.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmNavigationProperty.java
index cb87300..aa317e4 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmNavigationProperty.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmNavigationProperty.java
@@ -29,4 +29,11 @@ public interface EdmNavigationProperty extends EdmElement {
*/
Boolean isNullable();
+ /**
+ * @return the partner navigation property
+ */
+ EdmNavigationProperty getPartner();
+
+ String getReferencingPropertyName(String referencedPropertyName);
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmParameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmParameter.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmParameter.java
index c89f917..5ee9b7e 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmParameter.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmParameter.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm;
-
/**
* A CSDL parameter element
*/
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmProperty.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmProperty.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmProperty.java
index 89ee766..9856c32 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmProperty.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmProperty.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm;
-
/**
* A CSDL Property element
* <p>EdmProperty defines a simple type or a complex type.
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
index d7b49b2..a41c8bd 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmServiceMetadata.java
@@ -21,7 +21,6 @@ package org.apache.olingo.odata4.commons.api.edm;
import java.io.InputStream;
import java.util.List;
-
/**
* This interface gives access to the metadata of a service,
* the calculated Data Service Version and an info list of all entity sets, singletons, and function imports
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
index 440c3e7..ceb63cb 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmStructuralType.java
@@ -51,7 +51,7 @@ public interface EdmStructuralType extends EdmType {
* @return {@link EdmStructuralType}
*/
EdmStructuralType getBaseType();
-
+
/**
* Checks if this type is convertable to parameter {@link targetType}
*
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmType.java
index 0248a19..9ca54f5 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/EdmType.java
@@ -36,6 +36,4 @@ public interface EdmType extends EdmNamed {
*/
EdmTypeKind getKind();
-
-
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ActionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ActionImport.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ActionImport.java
index 6023fd4..bca2e9f 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ActionImport.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ActionImport.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class ActionImport extends OperationImport {
private FullQualifiedName action;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Annotation.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Annotation.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Annotation.java
index c2a71f6..b54f767 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Annotation.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Annotation.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class Annotation {
private FullQualifiedName term;
// Target should be a target path
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/BindingTarget.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/BindingTarget.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/BindingTarget.java
index 0ce5dcb..412eeed 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/BindingTarget.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/BindingTarget.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public abstract class BindingTarget {
protected String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ComplexType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ComplexType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ComplexType.java
index acbcade..cd51413 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ComplexType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ComplexType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class ComplexType extends StructuralType {
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainer.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainer.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainer.java
index bf4626d..9334292 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainer.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainer.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class EntityContainer {
private String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainerInfo.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainerInfo.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainerInfo.java
index 61f4907..e7de3a9 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainerInfo.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityContainerInfo.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class EntityContainerInfo {
private FullQualifiedName containerName;
private FullQualifiedName extendsContainer;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntitySet.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntitySet.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntitySet.java
index f21cb06..26969e5 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntitySet.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntitySet.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class EntitySet extends BindingTarget {
private boolean includeInServiceDocument;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityType.java
index 0eaaad1..d1d07d8 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EntityType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class EntityType extends StructuralType {
private List<PropertyRef> key;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumMember.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumMember.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumMember.java
index 0857418..bfc6467 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumMember.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumMember.java
@@ -20,13 +20,14 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import org.apache.olingo.odata4.commons.api.edm.EdmMember;
-public class EnumMember implements EdmMember{
+public class EnumMember implements EdmMember {
private String name;
private String value;
// Annotations?
+ @Override
public String getName() {
return name;
}
@@ -36,6 +37,7 @@ public class EnumMember implements EdmMember{
return this;
}
+ @Override
public String getValue() {
return value;
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumType.java
index 6252e67..0103827 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/EnumType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class EnumType {
private String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/FunctionImport.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/FunctionImport.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/FunctionImport.java
index 79e5b78..503f776 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/FunctionImport.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/FunctionImport.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class FunctionImport extends OperationImport {
private FullQualifiedName function;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Parameter.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Parameter.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Parameter.java
index cd95487..4b195e4 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Parameter.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Parameter.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class Parameter {
private String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Property.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Property.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Property.java
index 6eba8d1..a053b1d 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Property.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Property.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class Property {
private String name;
@@ -26,7 +25,7 @@ public class Property {
private FullQualifiedName type;
private boolean collection;
- //TODO: Mimetype and mapping what here
+ // TODO: Mimetype and mapping what here
private String mimeType;
private Mapping mapping;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ReturnType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ReturnType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ReturnType.java
index f76d68b..4b4b388 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ReturnType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/ReturnType.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class ReturnType {
private FullQualifiedName type;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Singleton.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Singleton.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Singleton.java
index 18ec7d5..3dd1044 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Singleton.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Singleton.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class Singleton extends BindingTarget {
@Override
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/StructuralType.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/StructuralType.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/StructuralType.java
index ba41508..ad67a7d 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/StructuralType.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/StructuralType.java
@@ -20,7 +20,6 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public abstract class StructuralType {
protected String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Target.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Target.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Target.java
index 33ec922..ced9497 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Target.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Target.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class Target {
private String targetName;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Term.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Term.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Term.java
index dbf8c63..452c79a 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Term.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/Term.java
@@ -20,12 +20,11 @@ package org.apache.olingo.odata4.commons.api.edm.provider;
import java.util.List;
-
public class Term {
private String name;
private FullQualifiedName type;
private FullQualifiedName baseTerm;
- //TODO: AppliesTo is a list of csdl elements => should we put this list inside an enum?
+ // TODO: AppliesTo is a list of csdl elements => should we put this list inside an enum?
private String appliesTo;
private boolean isCollection;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/TypeDefinition.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/TypeDefinition.java b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/TypeDefinition.java
index dfd1a1e..5c3670a 100644
--- a/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/TypeDefinition.java
+++ b/odata4-lib/odata4-commons-api/src/main/java/org/apache/olingo/odata4/commons/api/edm/provider/TypeDefinition.java
@@ -18,7 +18,6 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.api.edm.provider;
-
public class TypeDefinition {
private String name;
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImpl.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImpl.java b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImpl.java
index 86a6e39..e11738b 100644
--- a/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImpl.java
+++ b/odata4-lib/odata4-commons-core/src/main/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImpl.java
@@ -18,16 +18,22 @@
******************************************************************************/
package org.apache.olingo.odata4.commons.core.edm.provider;
+import java.util.List;
+
+import org.apache.olingo.odata4.commons.api.edm.EdmElement;
import org.apache.olingo.odata4.commons.api.edm.EdmEntityType;
import org.apache.olingo.odata4.commons.api.edm.EdmException;
import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.EdmStructuralType;
import org.apache.olingo.odata4.commons.api.edm.EdmType;
import org.apache.olingo.odata4.commons.api.edm.provider.NavigationProperty;
+import org.apache.olingo.odata4.commons.api.edm.provider.ReferentialConstraint;
public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavigationProperty {
private final NavigationProperty navigationProperty;
private EdmEntityType typeImpl;
+ private EdmNavigationProperty partnerNavigationProperty;
public EdmNavigationPropertyImpl(final EdmProviderImpl edm, final NavigationProperty navigationProperty) {
super(edm, navigationProperty.getName());
@@ -55,4 +61,38 @@ public class EdmNavigationPropertyImpl extends EdmElementImpl implements EdmNavi
return navigationProperty.getNullable();
}
+ @Override
+ public EdmNavigationProperty getPartner() {
+ if (partnerNavigationProperty == null) {
+ String partner = navigationProperty.getPartner();
+ if (partner != null) {
+ EdmStructuralType type = (EdmStructuralType) getType();
+ EdmElement property = null;
+ String[] split = partner.split("/");
+ for (String element : split) {
+ property = type.getProperty(element);
+ if (property == null) {
+ throw new EdmException("Cannot find property with name: " + element + " at type " + type.getName());
+ }
+ type = (EdmStructuralType) property.getType();
+ }
+ partnerNavigationProperty = (EdmNavigationProperty) property;
+ }
+ }
+ return partnerNavigationProperty;
+ }
+
+ @Override
+ public String getReferencingPropertyName(final String referencedPropertyName) {
+ List<ReferentialConstraint> referentialConstraints = navigationProperty.getReferentialConstraints();
+ if (referentialConstraints != null) {
+ for (ReferentialConstraint constraint : referentialConstraints) {
+ if (constraint.getReferencedProperty().equals(referencedPropertyName)) {
+ return constraint.getProperty();
+ }
+ }
+ }
+ return null;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-olingo-odata4/blob/3e079867/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImplTest.java
----------------------------------------------------------------------
diff --git a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImplTest.java b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImplTest.java
index 8ef61e2..d1bc879 100644
--- a/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImplTest.java
+++ b/odata4-lib/odata4-commons-core/src/test/java/org/apache/olingo/odata4/commons/core/edm/provider/EdmNavigationPropertyImplTest.java
@@ -20,11 +20,15 @@ package org.apache.olingo.odata4.commons.core.edm.provider;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import org.apache.olingo.odata4.commons.api.edm.EdmException;
import org.apache.olingo.odata4.commons.api.edm.EdmNavigationProperty;
@@ -35,6 +39,7 @@ import org.apache.olingo.odata4.commons.api.edm.provider.EntityType;
import org.apache.olingo.odata4.commons.api.edm.provider.FullQualifiedName;
import org.apache.olingo.odata4.commons.api.edm.provider.NavigationProperty;
import org.apache.olingo.odata4.commons.api.edm.provider.PropertyRef;
+import org.apache.olingo.odata4.commons.api.edm.provider.ReferentialConstraint;
import org.junit.Test;
public class EdmNavigationPropertyImplTest {
@@ -57,12 +62,78 @@ public class EdmNavigationPropertyImplTest {
assertEquals(EdmTypeKind.ENTITY, type.getKind());
assertEquals("ns", type.getNamespace());
assertEquals("entity", type.getName());
+ assertNull(property.getReferencingPropertyName("referencedPropertyName"));
+ assertNull(property.getPartner());
// Test caching
EdmType cachedType = property.getType();
assertTrue(type == cachedType);
}
+ @Test
+ public void navigationPropertyWithReferntialConstraint() throws Exception {
+ EdmProvider provider = mock(EdmProvider.class);
+ EdmProviderImpl edm = new EdmProviderImpl(provider);
+ final FullQualifiedName entityTypeName = new FullQualifiedName("ns", "entity");
+ EntityType entityTypeProvider = new EntityType();
+ entityTypeProvider.setKey(Collections.<PropertyRef> emptyList());
+ when(provider.getEntityType(entityTypeName)).thenReturn(entityTypeProvider);
+ NavigationProperty propertyProvider = new NavigationProperty();
+ propertyProvider.setType(entityTypeName);
+ propertyProvider.setNullable(false);
+ List<ReferentialConstraint> referentialConstraints = new ArrayList<ReferentialConstraint>();
+ referentialConstraints.add(new ReferentialConstraint().setProperty("property").setReferencedProperty(
+ "referencedProperty"));
+ propertyProvider.setReferentialConstraints(referentialConstraints);
+ EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider);
+ assertEquals("property", property.getReferencingPropertyName("referencedProperty"));
+ assertNull(property.getReferencingPropertyName("wrong"));
+ }
+
+ @Test
+ public void navigationPropertyWithPartner() throws Exception {
+ EdmProvider provider = mock(EdmProvider.class);
+ EdmProviderImpl edm = new EdmProviderImpl(provider);
+ final FullQualifiedName entityTypeName = new FullQualifiedName("ns", "entity");
+ EntityType entityTypeProvider = new EntityType();
+ entityTypeProvider.setKey(Collections.<PropertyRef> emptyList());
+
+ List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
+ navigationProperties.add(new NavigationProperty().setName("partnerName").setType(entityTypeName));
+ entityTypeProvider.setNavigationProperties(navigationProperties);
+ when(provider.getEntityType(entityTypeName)).thenReturn(entityTypeProvider);
+ NavigationProperty propertyProvider = new NavigationProperty();
+ propertyProvider.setType(entityTypeName);
+ propertyProvider.setNullable(false);
+ propertyProvider.setPartner("partnerName");
+ EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider);
+ EdmNavigationProperty partner = property.getPartner();
+ assertNotNull(partner);
+
+ // Caching
+ assertTrue(partner == property.getPartner());
+ }
+
+ @Test(expected = EdmException.class)
+ public void navigationPropertyWithNonexistentPartner() throws Exception {
+ EdmProvider provider = mock(EdmProvider.class);
+ EdmProviderImpl edm = new EdmProviderImpl(provider);
+ final FullQualifiedName entityTypeName = new FullQualifiedName("ns", "entity");
+ EntityType entityTypeProvider = new EntityType();
+ entityTypeProvider.setKey(Collections.<PropertyRef> emptyList());
+
+ List<NavigationProperty> navigationProperties = new ArrayList<NavigationProperty>();
+ navigationProperties.add(new NavigationProperty().setName("partnerName").setType(entityTypeName));
+ entityTypeProvider.setNavigationProperties(navigationProperties);
+ when(provider.getEntityType(entityTypeName)).thenReturn(entityTypeProvider);
+ NavigationProperty propertyProvider = new NavigationProperty();
+ propertyProvider.setType(entityTypeName);
+ propertyProvider.setNullable(false);
+ propertyProvider.setPartner("wrong");
+ EdmNavigationProperty property = new EdmNavigationPropertyImpl(edm, propertyProvider);
+ property.getPartner();
+ }
+
@Test(expected = EdmException.class)
public void navigationPropertyWithNonExistentType() throws Exception {
EdmProviderImpl edm = mock(EdmProviderImpl.class);