package org.argeo.cms.i18n; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Enumeration; import java.util.ResourceBundle; import java.util.Vector; import org.argeo.cms.CmsException; /** Expose the default values as a {@link ResourceBundle} */ public class DefaultsResourceBundle extends ResourceBundle { @Override protected Object handleGetObject(String key) { Object obj; try { Field field = getClass().getField(key); obj = field.getType().getMethod("getDefault") .invoke(field.get(null)); } catch (Exception e) { throw new CmsException("Cannot get default for " + key, e); } return obj; } @Override public Enumeration getKeys() { Vector res = new Vector(); final Field[] fieldArray = getClass().getDeclaredFields(); for (Field field : fieldArray) { if (Modifier.isStatic(field.getModifiers()) && field.getType().isAssignableFrom(Msg.class)) { res.add(field.getName()); } } return res.elements(); } }