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

Reply via email to