in rdb/src/main/java/org/apache/tuscany/das/rdb/generator/impl/InsertGenerator.java [130:166]
private HashSet getAttributeProperties(DataObject obj, MappingWrapper config, TableWrapper tw) {
HashSet fields = new HashSet();
Iterator i = obj.getType().getProperties().iterator();
while (i.hasNext()) {
Property p = (Property) i.next();
if (p.getType().isDataType()) {
if (obj.isSet(p)) {
if (fields.add(p) == false) {
throw new RuntimeException("Foreign key properties should not be set when the corrsponding relationship has changed");
}
}
} else {
if (obj.isSet(p)) {
Relationship relationship = config.getRelationshipByReference(p);
if ((p.getOpposite() != null && p.getOpposite().isMany())
|| (hasState(tw, relationship, obj))) {
RelationshipWrapper r = new RelationshipWrapper(relationship);
Iterator keys = r.getForeignKeys().iterator();
while (keys.hasNext()) {
String key = (String) keys.next();
String keyProperty = config.getColumnPropertyName(tw.getTableName(), key);
Property keyProp = obj.getType().getProperty(keyProperty);
if ( keyProp == null )
throw new RuntimeException("Invalid foreign key column: " + key);
if (fields.add(keyProp) == false) {
throw new RuntimeException("Foreign key properties should not be set when the corresponding relationship has changed");
}
}
}
}
}
}
return fields;
}