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());
}