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
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs