Author: alexdma
Date: Thu Feb 16 17:52:55 2012
New Revision: 1245100

URL: http://svn.apache.org/viewvc?rev=1245100&view=rev
Log:
Registry model visitor now adds parents and children, if available, _before_ 
populating their relations. This should counter the infinite loop from 
STANBOL-495 .

Modified:
    
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/RegistryManagerImpl.java

Modified: 
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/RegistryManagerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/RegistryManagerImpl.java?rev=1245100&r1=1245099&r2=1245100&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/RegistryManagerImpl.java
 (original)
+++ 
incubator/stanbol/trunk/ontologymanager/registry/src/main/java/org/apache/stanbol/ontologymanager/registry/impl/RegistryManagerImpl.java
 Thu Feb 16 17:52:55 2012
@@ -554,12 +554,17 @@ public class RegistryManagerImpl impleme
             }
         }
         // EXIT nodes.
-        Set<OWLIndividual> ronts = new HashSet<OWLIndividual>();
+        Set<OWLIndividual> ironts = new HashSet<OWLIndividual>();
         for (OWLOntology o : registries)
-            ronts.addAll(ind.getObjectPropertyValues(hasOntology, o));
-        for (OWLIndividual iont : ronts) {
-            if (iont.isNamed()) 
lib.addChild(populateOntology(iont.asOWLNamedIndividual(), registries));
-        }
+            ironts.addAll(ind.getObjectPropertyValues(hasOntology, o));
+        for (OWLIndividual iront : ironts)
+            if (iront.isNamed()) {
+                IRI childId = iront.asOWLNamedIndividual().getIRI();
+                RegistryItem ront = population.get(childId);
+                if (ront != null) lib.addChild(ront);
+                else if (lib.getChild(childId) == null) 
lib.addChild(populateOntology(
+                    iront.asOWLNamedIndividual(), registries));
+            }
         return (Library) lib;
     }
 
@@ -585,9 +590,14 @@ public class RegistryManagerImpl impleme
         Set<OWLIndividual> libs = new HashSet<OWLIndividual>();
         for (OWLOntology o : registries)
             libs.addAll(ind.getObjectPropertyValues(isOntologyOf, o));
-        for (OWLIndividual ilib : libs) {
-            if (ilib.isNamed()) 
ront.addParent(populateLibrary(ilib.asOWLNamedIndividual(), registries));
-        }
+        for (OWLIndividual ilib : libs)
+            if (ilib.isNamed()) {
+                IRI parentId = ilib.asOWLNamedIndividual().getIRI();
+                RegistryItem rlib = population.get(parentId);
+                if (rlib != null) ront.addParent(rlib);
+                else if (ront.getParent(parentId) == null) 
ront.addParent(populateLibrary(
+                    ilib.asOWLNamedIndividual(), registries));
+            }
         return (RegistryOntology) ront;
     }
 


Reply via email to