private boolean hasState()

in rdb/src/main/java/org/apache/tuscany/das/rdb/impl/ChangeSummarizer.java [156:187]


    private boolean hasState(Property ref, DataObject changedObject) {
        if (ref.getOpposite().isMany()) {
            return true;
        } 

        MappingWrapper mw = this.mapping;
        if (mw.getConfig() == null) {
            mw = registry.getFactory(changedObject.getType()).getConfig();
        }
        if (mw.getConfig() == null) {
            return false;
        }

        Relationship rel = mw.getRelationshipByReference(ref);

        if (!rel.isMany()) {
            if (rel.isKeyRestricted()) {
                throw new RuntimeException("Can not modify a one to one relationship that is key restricted");
            }
            // This is a one-one relationship
            Table t = mapping.getTableByTypeName(changedObject.getType().getName());
            TableWrapper tw = new TableWrapper(t);
            RelationshipWrapper rw = new RelationshipWrapper(rel);
            if ((rel.getForeignKeyTable().equals(t.getTableName())) 
                    && (CollectionsUtil.disjoint(tw.getPrimaryKeyProperties(), rw.getForeignKeys()))) {
                return true;
            }

        }

        return false;
    }