You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by bo...@apache.org on 2011/03/22 21:11:56 UTC

svn commit: r1084337 - /tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java

Author: bolbic
Date: Tue Mar 22 20:11:56 2011
New Revision: 1084337

URL: http://svn.apache.org/viewvc?rev=1084337&view=rev
Log:
fixing bug in cyclic relationship handling

Modified:
    tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java

Modified: tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java
URL: http://svn.apache.org/viewvc/tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java?rev=1084337&r1=1084336&r2=1084337&view=diff
==============================================================================
--- tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java (original)
+++ tuscany/das-java/trunk/rdb/src/main/java/org/apache/tuscany/das/rdb/config/wrapper/MappingWrapper.java Tue Mar 22 20:11:56 2011
@@ -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