in rdb/src/main/java/org/apache/tuscany/das/rdb/merge/impl/GraphMerger.java [301:326]
private void createReferenceProperties(DataObject root, DataObject newObject, DataObject object) {
Iterator refs = object.getType().getProperties().iterator();
while (refs.hasNext()) {
Property ref = (Property) refs.next();
if (!ref.getType().isDataType()) {
List refObjects;
if (!ref.isMany()) {
refObjects = Collections.singletonList(object.get(ref));
} else {
refObjects = (List) object.get(ref);
}
Iterator iter = refObjects.iterator();
while (iter.hasNext()) {
DataObject refObject = (DataObject) iter.next();
createObjectWithSubtree(root, refObject.getContainmentProperty(), refObject);
refObject = registry.get(refObject.getType().getName(),
Collections.singletonList(getPrimaryKey(refObject)));
if (ref.isMany()) {
newObject.getList(newObject.getType().getProperty(ref.getName())).add(refObject);
} else {
newObject.set(newObject.getType().getProperty(ref.getName()), refObject);
}
}
}
}
}