[Snmap-developer] SNMAP/src/net/sf/snmap/util ReflectHelper.java,1.1,1.2
Status: Planning
Brought to you by:
arden
|
From: arden l. <ar...@us...> - 2006-01-13 03:26:12
|
Update of /cvsroot/snmap/SNMAP/src/net/sf/snmap/util In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7995/src/net/sf/snmap/util Modified Files: ReflectHelper.java Log Message: Index: ReflectHelper.java =================================================================== RCS file: /cvsroot/snmap/SNMAP/src/net/sf/snmap/util/ReflectHelper.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** ReflectHelper.java 10 Dec 2005 06:12:15 -0000 1.1 --- ReflectHelper.java 13 Jan 2006 03:26:04 -0000 1.2 *************** *** 5,9 **** --- 5,11 ---- import java.lang.reflect.Modifier; + import net.sf.snmap.MappingException; import net.sf.snmap.PropertyNotFoundException; + import net.sf.snmap.property.Getter; public final class ReflectHelper { *************** *** 64,66 **** --- 66,100 ---- } + public static Class classForName(String name) throws ClassNotFoundException { + try { + ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader(); + if(contextClassLoader!=null) { + return contextClassLoader.loadClass(name); + } else { + return Class.forName(name); + } + } + catch (Exception e) { + return Class.forName(name); + } + } + + public static Class reflectedPropertyClass(String className, String name) throws MappingException { + try { + Class clazz = ReflectHelper.classForName(className); + return getter(clazz, name).getReturnType(); + } + catch (ClassNotFoundException cnfe) { + throw new MappingException("class " + className + " not found while looking for property: " + name, cnfe); + } + } + + private static Getter getter(Class clazz, String name) throws MappingException { + try { + return BASIC_PROPERTY_ACCESSOR.getGetter(clazz, name); + } + catch (PropertyNotFoundException pnfe) { + return DIRECT_PROPERTY_ACCESSOR.getGetter(clazz, name); + } + } } |