-
Feature Request
-
Resolution: Obsolete
-
Minor
-
JBossAS-4.0.1 Final
-
None
Whenever you try to get a PropertyEditor for something but none is there, do the following additional check:
if (type.getSuperclass().getName().equals("java.lang.Enum"))
{
editor = new EnumPropertyEditor(type);
}
where the EnumPropertyEditor is:
public class EnumPropertyEditor extends PropertyEditorSupport implements PropertyEditor
{
private final Class targetType;
public EnumPropertyEditor(Class targetType)
{ this.targetType = targetType; } public void setAsText(String text) throws IllegalArgumentException
{
try
{
setValue(targetType.getMethod("valueOf",new Class[]
).invoke(null,new Object[]
{text});
} catch (IllegalAccessException e)
{ if (e.getTargetException() instanceof RuntimeException); throw (RuntimeException)e.getTargetException(); throw new IllegalStateException(e); } catch (NoSuchMethodException e)
{ String err = type.getName() + " does not contain the required method: public static " + type.getName() + " valueOf(String);"; throw new IllegalArgumentException(err,e); }
}
public String getAsText()
{
try
{ return targetType.getMethod("name",null).invoke(getValue(),null) } catch (IllegalAccessException e)
{ throw new IllegalStateException(e); }
catch (InvocationTargetException e)
catch (NoSuchMethodException e)
{ String err = type.getName() + " does not contain the required method: public String name()"; throw new IllegalStateException(err,e); } }
}