diff options
Diffstat (limited to 'das-java/trunk/rdb/src/main/java/org/apache/tuscany/das')
-rw-r--r-- | das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java b/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java index 6c010b3ee8..1e04f111bc 100644 --- a/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java +++ b/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java @@ -683,9 +683,14 @@ public class MappingWrapper { String child = r.getForeignKeyTable(); if (parent.equals(child)) { // self-relationship - // do not add to parent to child map to avoid loops // do not add to all children list to allow root detection allParents.add(parent); + Set children = (Set) parentToChild.get(parent); + if (children == null) { + children = new HashSet(); + parentToChild.put(parent, children); + } + children.add(child); } else { allParents.add(parent); allChildren.add(child); @@ -734,8 +739,7 @@ public class MappingWrapper { String parent = (String) itParents.next(); if (branch.contains(parent)) { // we found a cycle - // we don't handle cycles - // stop traversing branch to avoid infinite loop + // stop traversing branch to avoid infinite loop if depth greater than threshold break; } // add parent to depth list |