]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/DefaultsResourceBundle.java
2d787585908dabb3baf5c1af947d47cc493d6f0a
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / DefaultsResourceBundle.java
1 package org.argeo.cms;
2
3 import java.lang.reflect.Field;
4 import java.lang.reflect.Modifier;
5 import java.util.Enumeration;
6 import java.util.ResourceBundle;
7 import java.util.Vector;
8
9 /** Expose the default values as a {@link ResourceBundle} */
10 public class DefaultsResourceBundle extends ResourceBundle {
11
12 @Override
13 protected Object handleGetObject(String key) {
14 Object obj;
15 try {
16 Field field = getClass().getField(key);
17 obj = field.getType().getMethod("getDefault")
18 .invoke(field.get(null));
19 } catch (Exception e) {
20 throw new CmsException("Cannot get default for " + key, e);
21 }
22 return obj;
23 }
24
25 @Override
26 public Enumeration<String> getKeys() {
27 Vector<String> res = new Vector<String>();
28 final Field[] fieldArray = getClass().getDeclaredFields();
29
30 for (Field field : fieldArray) {
31 if (Modifier.isStatic(field.getModifiers())
32 && field.getType().isAssignableFrom(Msg.class)) {
33 res.add(field.getName());
34 }
35 }
36 return res.elements();
37 }
38
39 }