2 |
|
|
3 |
|
|
4 |
import java.lang.reflect.Field; |
import java.lang.reflect.Field; |
5 |
|
import java.lang.reflect.Method; |
6 |
|
|
7 |
|
|
8 |
|
|
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 |
} |
} |