Author: michiel
Date: 2009-11-23 11:41:32 +0100 (Mon, 23 Nov 2009)
New Revision: 39842
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/util/LocalizedEntryListFactory.java
mmbase/trunk/core/src/test/java/org/mmbase/util/LocalizedEntryListFactoryTest.java
Log:
MMB-1898
Modified:
mmbase/trunk/core/src/main/java/org/mmbase/util/LocalizedEntryListFactory.java
===================================================================
---
mmbase/trunk/core/src/main/java/org/mmbase/util/LocalizedEntryListFactory.java
2009-11-23 10:37:23 UTC (rev 39841)
+++
mmbase/trunk/core/src/main/java/org/mmbase/util/LocalizedEntryListFactory.java
2009-11-23 10:41:32 UTC (rev 39842)
@@ -662,7 +662,20 @@
log.error(mre);
}
} else {
- throw new IllegalArgumentException("no 'value' or
'basename' attribute on enumeration entry element");
+ String javaConstants =
entryElement.getAttribute("javaconstants");
+ if (! javaConstants.equals("")) {
+ try {
+ Class constantsClass =
Class.forName(javaConstants);
+ for (Map.Entry<String, Object> entry :
SortedBundle.getConstantsProvider(constantsClass).entrySet()) {
+ add(null, entry.getKey(), (Serializable)
entry.getValue());
+ }
+ } catch (Exception e) {
+ log.error(e);
+ }
+
+ } else {
+ throw new IllegalArgumentException("no 'value',
'basename' or 'javaconstants' attribute on enumeration entry element " +
org.mmbase.util.xml.XMLWriter.write(entryElement));
+ }
}
}
if (log.isDebugEnabled()) {
Modified:
mmbase/trunk/core/src/test/java/org/mmbase/util/LocalizedEntryListFactoryTest.java
===================================================================
---
mmbase/trunk/core/src/test/java/org/mmbase/util/LocalizedEntryListFactoryTest.java
2009-11-23 10:37:23 UTC (rev 39841)
+++
mmbase/trunk/core/src/test/java/org/mmbase/util/LocalizedEntryListFactoryTest.java
2009-11-23 10:41:32 UTC (rev 39842)
@@ -165,7 +165,23 @@
}
+ @Test
+ public void readEnum() throws org.xml.sax.SAXException,
java.io.IOException {
+ LocalizedEntryListFactory fact = new LocalizedEntryListFactory();
+ String config =
+ "<enumeration>" +
+ "<entry " +
+ " javaconstants='org.mmbase.framework.WindowState'" +
+ " />" +
+ "</enumeration>";
+ Document doc = DocumentReader.getDocumentBuilder(false).parse(new
InputSource(new StringReader(config)));
+ fact.fillFromXml(doc.getDocumentElement(), Integer.class);
+ assertEquals(3, fact.size());
+ }
+
+
+
public static void main(String argv[]) {
LocalizedEntryListFactory fact = new LocalizedEntryListFactory();
String resource1 = "org.mmbase.datatypes.resources.boolean.onoff";
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs