/[projects]/WebConfig/src/dk/thoerup/webconfig/ConfigLoader.java
ViewVC logotype

Diff of /WebConfig/src/dk/thoerup/webconfig/ConfigLoader.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1368 by torben, Wed Apr 20 17:16:28 2011 UTC revision 1369 by torben, Wed Apr 20 21:20:58 2011 UTC
# Line 2  package dk.thoerup.webconfig; Line 2  package dk.thoerup.webconfig;
2    
3    
4  import java.lang.reflect.Field;  import java.lang.reflect.Field;
5    import java.lang.reflect.Method;
6    
7    
8    
# Line 59  abstract public class ConfigLoader { Line 60  abstract public class ConfigLoader {
60                                  field.setFloat(configObject, Float.parseFloat(value) );                                  field.setFloat(configObject, Float.parseFloat(value) );
61                          } else if (field.getType().getName().equals("char") ) {                          } else if (field.getType().getName().equals("char") ) {
62                                  field.setFloat(configObject, value.charAt(0) );                                  field.setFloat(configObject, value.charAt(0) );
63                            } else if (field.getType().isEnum() ) {
64                                    //throw new RuntimeException("Enums are not supported (yet)");
65                                    Object enumval = parseEnumValue(field.getType(), configObject,value);
66                                    field.set(configObject, enumval );
67                          } else {                          } else {
68                                  field.set(configObject, value );                                  System.out.print(" >" + field.getType().getName() );
69                                    field.set(configObject, value );                                
70                          }                          }
71                  } catch (IllegalAccessException e) {                  } catch (IllegalAccessException e) {
72                          //this should never happen since we already have called setAccessible(true)                          //this should never happen since we already have called setAccessible(true)
73                          throw new RuntimeException("How did we get here?", e);                          throw new RuntimeException("How did we get here?", e);
74                  }                  }
75          }          }
76            
77            protected static Object parseEnumValue(Class<?> cls, Object configObject, String value) {              
78                    try {
79                            Class<?> argTypes[] = {String.class};
80                            Object args[] = {value};
81                            
82                            Method valueOf = cls.getMethod("valueOf", argTypes);
83                            return valueOf.invoke(configObject, args);
84                            
85                    } catch (Exception e) {
86                            throw new RuntimeException(e);
87                    }
88            }
89    
90  }  }

Legend:
Removed from v.1368  
changed lines
  Added in v.1369

  ViewVC Help
Powered by ViewVC 1.1.20