Refine search
public static Class<?> toClass(ClassFile ct, ClassLoader loader, ProtectionDomain domain) { if (MAGIC_IN_PROGRESS.get()) { try { final Class<?> originalProxyClass = loader.loadClass(ct.getName()); try { ByteArrayDataOutputStream out = new ByteArrayDataOutputStream(); ct.write(out); Map<Class<?>, byte[]> reloadMap = new HashMap<Class<?>, byte[]>(); reloadMap.put(originalProxyClass, out.getBytes()); // TODO : is this standard way how to reload class? PluginManager.getInstance().hotswap(reloadMap); return originalProxyClass; } catch (Exception e) { throw new RuntimeException(e); } } catch (ClassNotFoundException e) { //it has not actually been loaded yet return ClassFileUtils.toClass(ct, loader, domain); } } return ClassFileUtils.toClass(ct, loader, domain); }
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); proxyClass = cast(ClassFileUtils.toClass(proxyClassType, originalClass, proxyServices, domain)); } else { proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain));
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[] { ct.getName(), b, 0, b.length }; } else { method = defineClass2; args = new Object[] { ct.getName(), b, 0, b.length, domain }; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;
ClassFileUtils.makeClassLoaderMethodsAccessible();
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); proxyClass = cast(ClassFileUtils.toClass(proxyClassType, originalClass, proxyServices, domain)); } else { proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain));
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[] { ct.getName(), b, 0, b.length }; } else { method = defineClass2; args = new Object[] { ct.getName(), b, 0, b.length, domain }; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;
ClassFileUtils.makeClassLoaderMethodsAccessible();
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); domain = cache.getProtectionDomainForProxy(domain); Class<T> proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain)); BeanLogger.LOG.createdProxyClass(proxyClass, Arrays.toString(proxyClass.getInterfaces())); return proxyClass;
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[] { ct.getName(), b, 0, b.length }; } else { method = defineClass2; args = new Object[] { ct.getName(), b, 0, b.length, domain }; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;
public static Class toClass(ClassFile ct, ClassLoader loader, ProtectionDomain domain) { if (MAGIC_IN_PROGRESS.get()) { try { final Class<?> originalProxyClass = loader.loadClass(ct.getName()); try { ByteArrayDataOutputStream bs = new ByteArrayDataOutputStream(); ct.write(bs); Fakereplace.redefine(new ClassDefinition[]{new ClassDefinition(originalProxyClass, bs.getBytes())}, new AddedClass[0], false); return originalProxyClass; } catch (Exception e) { throw new RuntimeException("Failed " + ct.getName(), e); } } catch (ClassNotFoundException e) { //it has not actually been loaded yet return ClassFileUtils.toClass(ct, loader, domain); } } return ClassFileUtils.toClass(ct, loader, domain); }
ClassFileUtils.makeClassLoaderMethodsAccessible();
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); proxyClass = cast(ClassFileUtils.toClass(proxyClassType, originalClass, proxyServices, domain)); } else { proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain));
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[] { ct.getName(), b, 0, b.length }; } else { method = defineClass2; args = new Object[] { ct.getName(), b, 0, b.length, domain }; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;
ClassFileUtils.makeClassLoaderMethodsAccessible();
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); proxyClass = cast(ClassFileUtils.toClass(proxyClassType, originalClass, proxyServices, domain)); } else { proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain));
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[] { ct.getName(), b, 0, b.length }; } else { method = defineClass2; args = new Object[] { ct.getName(), b, 0, b.length, domain }; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;
ClassFileUtils.makeClassLoaderMethodsAccessible();
if (getBeanType().isInterface()) { proxyClassType = newClassFile(proxyClassName, accessFlags, Object.class.getName()); proxyClassType.addInterface(getBeanType().getName()); } else { proxyClassType = newClassFile(proxyClassName, accessFlags, getBeanType().getName()); proxyClassType.addInterface(clazz.getName()); ClassMethod staticConstructor = proxyClassType.addMethod(AccessFlag.of(AccessFlag.PUBLIC, AccessFlag.STATIC), "<clinit>", "V"); proxyClass = cast(ClassFileUtils.toClass(proxyClassType, originalClass, proxyServices, domain)); } else { proxyClass = cast(ClassFileUtils.toClass(proxyClassType, classLoader, domain));
byte[] b = ct.toBytecode(); java.lang.reflect.Method method; Object[] args; if (domain == null) { method = defineClass1; args = new Object[]{ct.getName(), b, 0, b.length}; } else { method = defineClass2; args = new Object[]{ct.getName(), b, 0, b.length, domain}; return toClass2(method, loader, args); } catch (RuntimeException e) { throw e;