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 2017/01/26 10:16:45 UTC

olingo-odata2 git commit: [OLINGO-1035] Accept inline URI to create a reference to an existing entity.

Repository: olingo-odata2
Updated Branches:
  refs/heads/master f24fc8bf4 -> d6f9ddeed


[OLINGO-1035] Accept inline URI to create a reference to an existing entity.

Signed-off-by: Christian Amend <ch...@sap.com>


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

Branch: refs/heads/master
Commit: d6f9ddeedb928b32c0ef2f3ea0dbf0ea056b9d3a
Parents: f24fc8b
Author: Michael Strasser <ap...@michaelstrasser.com>
Authored: Tue Oct 18 11:42:47 2016 +1100
Committer: Christian Amend <ch...@sap.com>
Committed: Thu Jan 26 11:11:31 2017 +0100

----------------------------------------------------------------------
 .../processor/core/ListsProcessor.java          | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/d6f9ddee/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
index df23b31..a896c80 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
@@ -1153,12 +1153,20 @@ public class ListsProcessor extends DataSourceProcessor {
           }
         } else if (relatedValue instanceof ODataEntry) {
           final ODataEntry relatedValueEntry = (ODataEntry) relatedValue;
-          Object relatedData = dataSource.newDataObject(relatedEntitySet);
-          setStructuralTypeValuesFromMap(relatedData, relatedEntityType, relatedValueEntry.getProperties(), false);
-          dataSource.createData(relatedEntitySet, relatedData);
-          dataSource.writeRelation(entitySet, data, relatedEntitySet, getStructuralTypeValueMap(relatedData,
-              relatedEntityType));
-          createInlinedEntities(relatedEntitySet, relatedData, relatedValueEntry);
+          final Map<String, Object> relatedProperties = relatedValueEntry.getProperties();
+          if (relatedProperties.isEmpty()) {
+            final Map<String, Object> key = parseLinkUri(relatedEntitySet, relatedValueEntry.getMetadata().getUri());
+            if (key != null) {
+              dataSource.writeRelation(entitySet, data, relatedEntitySet, key);
+            }
+          } else {
+            Object relatedData = dataSource.newDataObject(relatedEntitySet);
+            setStructuralTypeValuesFromMap(relatedData, relatedEntityType, relatedProperties, false);
+            dataSource.createData(relatedEntitySet, relatedData);
+            dataSource.writeRelation(entitySet, data, relatedEntitySet, getStructuralTypeValueMap(relatedData,
+                    relatedEntityType));
+            createInlinedEntities(relatedEntitySet, relatedData, relatedValueEntry);
+          }
         } else {
           throw new ODataException("Unexpected class for a related value: " + relatedValue.getClass().getSimpleName());
         }