vhardy      2003/07/04 08:57:36

  Modified:    test-sources/org/apache/batik/test/xml XMLReflect.java
  Log:
  Improved XML reflection
  
  Revision  Changes    Path
  1.7       +36 -6     xml-batik/test-sources/org/apache/batik/test/xml/XMLReflect.java
  
  Index: XMLReflect.java
  ===================================================================
  RCS file: 
/home/cvs/xml-batik/test-sources/org/apache/batik/test/xml/XMLReflect.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- XMLReflect.java   18 Mar 2003 13:25:54 -0000      1.6
  +++ XMLReflect.java   4 Jul 2003 15:57:36 -0000       1.7
  @@ -126,13 +126,43 @@
        * Sets the property with given name on object to the input value
        */
       public static void setObjectProperty(Object obj,
  -                                          String propertyName,
  -                                          Object propertyValue)
  +                                         String propertyName,
  +                                         Object propertyValue)
           throws Exception {
           Class cl = obj.getClass();
  -        Method m = cl.getMethod("set" + propertyName,
  -                                new Class[]{propertyValue.getClass()});
  -
  +        Method m = null;
  +        try {
  +            m = cl.getMethod("set" + propertyName,
  +                             new Class[]{propertyValue.getClass()});
  +            
  +        } catch (NoSuchMethodException e) {
  +            //
  +            // Check if the type was one of the primitive types, Double,
  +            // Float, Boolean or Integer
  +            //
  +            Class propertyClass = propertyValue.getClass();
  +            try {
  +                if (propertyClass == java.lang.Double.class) {
  +                    m = cl.getMethod("set" + propertyName,
  +                                     new Class[] {java.lang.Double.TYPE});
  +                } else if (propertyClass == java.lang.Float.class) {
  +                    m = cl.getMethod("set" + propertyName,
  +                                     new Class[] {java.lang.Float.TYPE});
  +                } else if (propertyClass == java.lang.Integer.class) {
  +                    m = cl.getMethod("set" + propertyName,
  +                                     new Class[] {java.lang.Integer.TYPE});
  +                } else if (propertyClass == java.lang.Boolean.class) {
  +                    m = cl.getMethod("set" + propertyName,
  +                                     new Class[] {java.lang.Boolean.TYPE});
  +                } else {
  +                    System.err.println("Could not find a set method for property : 
" + propertyName 
  +                                       + " with value " + propertyValue + " and 
class " + propertyValue.getClass().getName());
  +                    throw e;
  +                }
  +            } catch (NoSuchMethodException nsme) {
  +                throw nsme;
  +            }
  +        }
           if(m != null){
               m.invoke(obj, new Object[]{propertyValue});
           }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to