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