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