summaryrefslogtreecommitdiffstats
path: root/das-java
diff options
context:
space:
mode:
authorbolbic <bolbic@13f79535-47bb-0310-9956-ffa450edef68>2011-03-22 20:11:56 +0000
committerbolbic <bolbic@13f79535-47bb-0310-9956-ffa450edef68>2011-03-22 20:11:56 +0000
commit9bd093414773e16d7b6da16f463267ff4d865bf2 (patch)
tree9594cf42e39d9fb025c85a400035e0dca7be13bc /das-java
parenta3d512e5d30a8057b8bb61280c2447a5938de0df (diff)
fixing bug in cyclic relationship handling
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1084337 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'das-java')
-rw-r--r--das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java10
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