Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv22620

Modified Files:
      Tag: MMBase-1_8
        DataTypes.java 
Log Message:
  MMB-1586


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/datatypes
See also: http://www.mmbase.org/jira/browse/MMB-1586


Index: DataTypes.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/DataTypes.java,v
retrieving revision 1.21.2.1
retrieving revision 1.21.2.2
diff -u -b -r1.21.2.1 -r1.21.2.2
--- DataTypes.java      10 Aug 2007 14:40:49 -0000      1.21.2.1
+++ DataTypes.java      28 Jan 2008 18:43:54 -0000      1.21.2.2
@@ -40,7 +40,7 @@
  *</p>
  * @author Pierre van Rooden
  * @since  MMBase-1.8
- * @version $Id: DataTypes.java,v 1.21.2.1 2007/08/10 14:40:49 michiel Exp $
+ * @version $Id: DataTypes.java,v 1.21.2.2 2008/01/28 18:43:54 michiel Exp $
  */
 
 public class DataTypes {
@@ -79,6 +79,17 @@
 
     }
 
+    private static void readFailedDependencies(List failed) {
+        ListIterator i = failed.listIterator();
+        while(i.hasNext()) {
+            DependencyException de = (DependencyException) i.next();
+            if (de.retry()) {
+                log.debug("Resolved " + de.getId() + " after all");
+                i.remove();
+            }
+        }
+    }
+
     /**
      * Initialize the type handlers defaultly supported by the system, plus 
those configured in WEB-INF/config.
      */
@@ -86,6 +97,7 @@
         List resources = loader.getResourceList(resource);
         if (log.isDebugEnabled()) log.debug("Using " + resources);
         ListIterator i = resources.listIterator();
+        List failed = new ArrayList();
         while (i.hasNext()) i.next();
         while (i.hasPrevious()) {
             try {
@@ -97,12 +109,21 @@
                     DocumentBuilder db = 
DocumentReader.getDocumentBuilder(true, true, new XMLErrorHandler(), new 
XMLEntityResolver(true, DataTypeReader.class));
                     Document doc = db.parse(dataTypesSource);
                     Element dataTypesElement = doc.getDocumentElement(); // 
fieldtypedefinitons or datatypes element
-                    DataTypeReader.readDataTypes(dataTypesElement, 
dataTypeCollector);
+                    
failed.addAll(DataTypeReader.readDataTypes(dataTypesElement, 
dataTypeCollector));
                 }
             } catch (Exception e) {
                 log.error(e.getMessage(), e);
             }
         }
+        int previousFailedSize = -1;
+        while (failed.size() > 0 && failed.size() > previousFailedSize) {
+            previousFailedSize = failed.size();
+            log.debug(failed);
+            readFailedDependencies(failed);
+        }
+        if (failed.size() > 0) {
+            log.error("Failed " + failed);
+        }
         if (log.isDebugEnabled()) log.debug(dataTypeCollector.toString());
     }
 
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to