From 9bd093414773e16d7b6da16f463267ff4d865bf2 Mon Sep 17 00:00:00 2001 From: bolbic Date: Tue, 22 Mar 2011 20:11:56 +0000 Subject: fixing bug in cyclic relationship handling git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1084337 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'das-java') 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 -- cgit v1.2.3