private void createReferenceProperties()

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