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

Modified Files:
        DataTypeDefinition.java 
Log Message:
MMB-1560, made it possible to configure 'handlers' for datatypes


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


Index: DataTypeDefinition.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/datatypes/util/xml/DataTypeDefinition.java,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- DataTypeDefinition.java     15 Jul 2008 19:10:41 -0000      1.64
+++ DataTypeDefinition.java     15 Jul 2008 19:41:01 -0000      1.65
@@ -16,6 +16,7 @@
 
 import org.mmbase.bridge.Field;
 import org.mmbase.datatypes.processors.*;
+import org.mmbase.datatypes.handlers.Handler;
 import org.mmbase.datatypes.*;
 import org.mmbase.core.util.Fields;
 import org.mmbase.util.*;
@@ -31,7 +32,7 @@
  *
  * @author Pierre van Rooden
  * @author Michiel Meeuwissen
- * @version $Id: DataTypeDefinition.java,v 1.64 2008/07/15 19:10:41 michiel 
Exp $
+ * @version $Id: DataTypeDefinition.java,v 1.65 2008/07/15 19:41:01 michiel 
Exp $
  * @since MMBase-1.8
  **/
 public class DataTypeDefinition {
@@ -86,10 +87,7 @@
                         }
                     } else {
                         try {
-                            Class claz = Class.forName(className);
-                            log.debug("Instantiating " + claz + " for " + 
dataType);
-                            java.lang.reflect.Constructor constructor = 
claz.getConstructor(new Class[] { String.class});
-                            dt = (BasicDataType<?>) 
constructor.newInstance(new Object[] { id });
+                            dt = (BasicDataType<?>) 
Instantiator.getInstance(childElement, id);
                             if (baseDataType != null) {
                                 // should check class here, perhaps
                                 dt.inherit(baseDataType);
@@ -158,7 +156,7 @@
         LocalizedString description = dataType.getLocalizedDescription();
         DataTypeXml.getLocalizedDescription("description", dataTypeElement, 
description, dataType.getName());
         configureConditions(dataTypeElement);
-
+        configureHandlers(dataTypeElement);
         return this;
     }
 
@@ -187,6 +185,27 @@
             }
         }
     }
+    /**
+     * @since MMBase-1.9
+     */
+    protected void configureHandlers(Element dataTypeElement) {
+        log.debug("Now going to configure handlers for  " + dataType);
+        NodeList childNodes = dataTypeElement.getChildNodes();
+        for (int k = 0; k < childNodes.getLength(); k++) {
+            if (childNodes.item(k) instanceof Element) {
+                Element childElement = (Element) childNodes.item(k);
+                if (childElement.getLocalName().equals("handler")) {
+                    String mimeType = childElement.getAttribute("mimetype");
+                    try {
+                        Handler handler = (Handler) 
Instantiator.getInstance(childElement);
+                        dataType.getHandlers().put(mimeType, handler);
+                    } catch (Exception e) {
+                        log.error("For mimetype " + mimeType + " " + 
e.getMessage());
+                    }
+                }
+            }
+        }
+    }
 
     /**
      * Uses one subelement of a datatype xml configuration element and 
interpret it. Possibly this
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to