public static ClassReader readClass(Class<?> theClass) throws IOException, BenignClassReadException { if (theClass.isArray()) { throw new BenignClassReadException(theClass.getName() + " is an array"); } if (Proxy.isProxyClass(theClass)) { throw new BenignClassReadException(theClass.getName() + " is a Proxy class"); } if (isRMIStubOrProxy(theClass)) { throw new BenignClassReadException(theClass.getName() + " is an RMI Stub or Proxy class"); } if (theClass.getName().startsWith("sun.reflect.")) { throw new BenignClassReadException(theClass.getName() + " is a reflection class"); } if (isJAXBClass(theClass)) { throw new BenignClassReadException(theClass.getName() + " is a JAXB accessor class"); } if ((theClass.getProtectionDomain().getCodeSource() != null) && (theClass.getProtectionDomain().getCodeSource().getLocation() == null)) { throw new BenignClassReadException(theClass.getName() + " is a generated class"); } URL resource = getClassResource(theClass.getClassLoader(), Type.getInternalName(theClass)); if (resource == null) { ClassReader reader = ServiceFactory.getClassTransformerService() .getContextManager() .getClassWeaverService() .getClassReader(theClass); if (reader != null) { return reader; } } return getClassReaderFromResource(theClass.getName(), resource); }
public static URL getClassResource(ClassLoader loader, Type type) { return getClassResource(loader, type.getInternalName()); }
public static String getClassResourceName(Class<?> clazz) { return getClassResourceName(Type.getInternalName(clazz)); }