Update of /var/cvs/src/org/mmbase/datatypes
In directory james.mmbase.org:/tmp/cvs-serv20157
Modified Files:
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.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- DataTypes.java 25 Nov 2007 18:26:23 -0000 1.26
+++ DataTypes.java 28 Jan 2008 16:31:29 -0000 1.27
@@ -39,7 +39,7 @@
*</p>
* @author Pierre van Rooden
* @since MMBase-1.8
- * @version $Id: DataTypes.java,v 1.26 2007/11/25 18:26:23 nklasens Exp $
+ * @version $Id: DataTypes.java,v 1.27 2008/01/28 16:31:29 michiel Exp $
*/
public class DataTypes {
@@ -78,6 +78,18 @@
}
+
+ private static void readFailedDependencies(List<DependencyException>
failed) {
+ ListIterator<DependencyException> i = failed.listIterator();
+ while(i.hasNext()) {
+ DependencyException de = 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.
*/
@@ -85,6 +97,7 @@
List<URL> resources = loader.getResourceList(resource);
if (log.isDebugEnabled()) log.debug("Using " + resources);
ListIterator<URL> i = resources.listIterator();
+ List<DependencyException> failed = new
ArrayList<DependencyException>();
while (i.hasNext()) i.next();
while (i.hasPrevious()) {
try {
@@ -96,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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs