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

Modified Files:
      Tag: MMBase-1_8
        DataTypeDefinition.java DataTypeReader.java 
Added Files:
      Tag: MMBase-1_8
        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.55.2.2
retrieving revision 1.55.2.3
diff -u -b -r1.55.2.2 -r1.55.2.3
--- DataTypeDefinition.java     9 Oct 2007 07:16:21 -0000       1.55.2.2
+++ DataTypeDefinition.java     28 Jan 2008 18:43:28 -0000      1.55.2.3
@@ -34,7 +34,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: DataTypeDefinition.java,v 1.55.2.2 2007/10/09 07:16:21 
michiel Exp $
+ * @version $Id: DataTypeDefinition.java,v 1.55.2.3 2008/01/28 18:43:28 
michiel Exp $
  * @since MMBase-1.8
  **/
 public class DataTypeDefinition {
@@ -123,7 +123,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");
 
@@ -149,7 +149,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.20
retrieving revision 1.20.2.1
diff -u -b -r1.20 -r1.20.2.1
--- DataTypeReader.java 10 Apr 2006 15:21:37 -0000      1.20
+++ DataTypeReader.java 28 Jan 2008 18:43:28 -0000      1.20.2.1
@@ -22,7 +22,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.20 2006/04/10 15:21:37 michiel Exp $
+ * @version $Id: DataTypeReader.java,v 1.20.2.1 2008/01/28 18:43:28 michiel 
Exp $
  * @since MMBase-1.8
  **/
 public class DataTypeReader {
@@ -61,15 +61,16 @@
     /**
      * Initialize the data types default supported by the system.
      */
-    public static void readDataTypes(Element dataTypesElement, 
DataTypeCollector collector) {
-        readDataTypes(dataTypesElement, collector, null);
+    public static List readDataTypes(Element dataTypesElement, 
DataTypeCollector collector) {
+        return readDataTypes(dataTypesElement, collector, null);
     }
 
     /**
      * Initialize the data types default supported by the system.
      */
-    public static void readDataTypes(Element dataTypesElement, 
DataTypeCollector collector, BasicDataType baseDataType) {
+    public static List readDataTypes(Element dataTypesElement, 
DataTypeCollector collector, BasicDataType baseDataType) {
         NodeList childNodes = dataTypesElement.getChildNodes();
+        List failed = new ArrayList();
         for (int k = 0; k < childNodes.getLength(); k++) {
             if (childNodes.item(k) instanceof Element) {
                 Element childElement = (Element) childNodes.item(k);
@@ -90,17 +91,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