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