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

Modified Files:
        DataTypeDefinition.java DataTypeReader.java 
Added Files:
        DependencyException.java 
Log Message:
  MMB-1586


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


DependencyException.java is new



Index: DataTypeDefinition.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/util/xml/DataTypeDefinition.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -b -r1.61 -r1.62
--- DataTypeDefinition.java     10 Aug 2007 13:05:19 -0000      1.61
+++ DataTypeDefinition.java     28 Jan 2008 16:27:38 -0000      1.62
@@ -30,7 +30,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: DataTypeDefinition.java,v 1.61 2007/08/10 13:05:19 michiel 
Exp $
+ * @version $Id: DataTypeDefinition.java,v 1.62 2008/01/28 16:27:38 michiel 
Exp $
  * @since MMBase-1.8
  **/
 public class DataTypeDefinition {
@@ -119,7 +119,7 @@
     /**
      * Configures the data type definition, using data from a DOM element
      */
-    DataTypeDefinition configure(Element dataTypeElement, BasicDataType<?> 
requestBaseDataType) {
+    DataTypeDefinition configure(Element dataTypeElement, BasicDataType<?> 
requestBaseDataType) throws DependencyException {
 
         String id = DataTypeXml.getAttribute(dataTypeElement, "id");
 
@@ -145,7 +145,8 @@
             }
 
             if (definedBaseDataType == null) {
-                log.warn("Attribute 'base' ('" + base + "') of datatype '" + 
id + "' is an unknown datatype.");
+                log.debug("Attribute 'base' ('" + base + "') of datatype '" + 
id + "' is an unknown datatype (in " + 
dataTypeElement.getOwnerDocument().getDocumentURI() + ").");
+                throw new DependencyException(dataTypeElement, 
requestBaseDataType, this);
             } else {
                 requestBaseDataType = definedBaseDataType;
             }


Index: DataTypeReader.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/util/xml/DataTypeReader.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- DataTypeReader.java 14 Oct 2006 14:35:39 -0000      1.21
+++ DataTypeReader.java 28 Jan 2008 16:27:38 -0000      1.22
@@ -9,6 +9,7 @@
 */
 package org.mmbase.datatypes.util.xml;
 
+import java.util.*;
 import org.w3c.dom.*;
 import org.w3c.dom.NodeList;
 
@@ -20,7 +21,7 @@
  * This class contains static methods used for reading a 'datatypes' XML into 
a DataTypeCollector.
  *
  * @author Pierre van Rooden
- * @version $Id: DataTypeReader.java,v 1.21 2006/10/14 14:35:39 nklasens Exp $
+ * @version $Id: DataTypeReader.java,v 1.22 2008/01/28 16:27:38 michiel Exp $
  * @since MMBase-1.8
  **/
 public class DataTypeReader {
@@ -50,15 +51,17 @@
     /**
      * Initialize the data types default supported by the system.
      */
-    public static void readDataTypes(Element dataTypesElement, 
DataTypeCollector collector) {
-        readDataTypes(dataTypesElement, collector, null);
+    public static List<DependencyException> readDataTypes(Element 
dataTypesElement, DataTypeCollector collector) {
+        return readDataTypes(dataTypesElement, collector, null);
     }
 
     /**
      * Initialize the data types default supported by the system.
+     * @return a list of failures.
      */
-    public static void readDataTypes(Element dataTypesElement, 
DataTypeCollector collector, BasicDataType baseDataType) {
+    public static List<DependencyException> readDataTypes(Element 
dataTypesElement, DataTypeCollector collector, BasicDataType baseDataType) {
         NodeList childNodes = dataTypesElement.getChildNodes();
+        List<DependencyException> failed = new 
ArrayList<DependencyException>();
         for (int k = 0; k < childNodes.getLength(); k++) {
             if (childNodes.item(k) instanceof Element) {
                 Element childElement = (Element) childNodes.item(k);
@@ -79,17 +82,21 @@
                         }
                         readDataTypes(childElement, collector, dataType);
                     }
+                } catch (DependencyException de) {
+                    de.setCollector(collector);
+                    failed.add(de);
                 } catch (Exception e) {
                     log.error("Error while parsing element  '" + 
org.mmbase.util.xml.XMLWriter.write(childElement, true, true) + "': " + 
e.getMessage(), e);
                 }
             }
         }
+        return failed;
     }
 
     /**
      * Reads a datatype.
      */
-    public static DataTypeDefinition readDataType(Element typeElement, 
BasicDataType baseDataType, DataTypeCollector collector) {
+    public static DataTypeDefinition readDataType(Element typeElement, 
BasicDataType baseDataType, DataTypeCollector collector) throws 
DependencyException {
         DataTypeDefinition definition = collector.getDataTypeDefinition();
         definition.configure(typeElement, baseDataType);
         definition.dataType.setXml(typeElement);
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to