Java5 Enum for mbean and configurations
---------------------------------------

         Key: JBAS-1288
         URL: http://jira.jboss.com/jira/browse/JBAS-1288
     Project: JBoss Application Server
        Type: Feature Request
  Components: JMX  
    Versions: JBossAS-4.0.1 Final    
    Reporter: Michael Kopp
 Assigned to: Scott M Stark 


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[]{String.class}).invoke(null,new Object[]{text});
        } catch (IllegalAccessException e)
        {
            throw new IllegalStateException(e);
        } catch (InvocationTargetException 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)
        {
            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 String name()";
            throw new IllegalStateException(err,e);
        }
    }
}


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://jira.jboss.com/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira



-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
JBoss-Development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to