@Override public void unloadClass() { if (clazz != null) { clazz.detach(); } }
public void release() { if (mCtc != null) { mCtc.detach(); } if (mInterfaces != null) { mInterfaces.clear(); } if (mFields != null) { mFields.clear(); } if (mMethods != null) { mMethods.clear(); } if (mConstructors != null) { mConstructors.clear(); } if (mCopyMethods != null) { mCopyMethods.clear(); } if (mCopyConstructors != null) { mCopyConstructors.clear(); } }
public void release() { if (mCtc != null) { mCtc.detach(); } if (mInterfaces != null) { mInterfaces.clear(); } if (mFields != null) { mFields.clear(); } if (mMethods != null) { mMethods.clear(); } if (mConstructors != null) { mConstructors.clear(); } if (mCopyMethods != null) { mCopyMethods.clear(); } if (mCopyConstructors != null) { mCopyConstructors.clear(); } }
public void release() { if (mCtc != null) mCtc.detach(); if (mInterfaces != null) mInterfaces.clear(); if (mFields != null) mFields.clear(); if (mMethods != null) mMethods.clear(); if (mConstructors != null) mConstructors.clear(); if (mCopyMethods != null) mCopyMethods.clear(); if (mCopyConstructors != null) mCopyConstructors.clear(); }
public Class<?> toClass(ClassLoader loader, ProtectionDomain pd) { if (mCtc != null) { mCtc.detach();
public Class<?> toClass(ClassLoader loader, ProtectionDomain pd) { if (mCtc != null) { mCtc.detach();
/** * Performs the enhancement. * * @param className The name of the class whose bytecode is being enhanced. * @param originalBytes The class's original (pre-enhancement) byte code * * @return The enhanced bytecode. Could be the same as the original bytecode if the original was * already enhanced or we could not enhance it for some reason. * * @throws EnhancementException Indicates a problem performing the enhancement */ @Override public synchronized byte[] enhance(String className, byte[] originalBytes) throws EnhancementException { CtClass managedCtClass = null; try { managedCtClass = classPool.makeClassIfNew( new ByteArrayInputStream( originalBytes ) ); return enhance( managedCtClass ) ? getByteCode( managedCtClass ) : null; } catch (IOException e) { log.unableToBuildEnhancementMetamodel( className ); return null; } finally { if ( managedCtClass != null ) { managedCtClass.detach(); } } }
} finally { if (clazz != null) { clazz.detach();
if (clazz != null) { try { clazz.detach(); } catch (Exception e) {
public Class<?> toClass() { if (mCtc != null) mCtc.detach(); long id = CLASS_NAME_COUNTER.getAndIncrement(); try {
@Override public void scan(Object cls) { try { CtClass ctClass = getClassPool().get(getMetadataAdapter().getClassName(cls)); for (CtBehavior member : ctClass.getDeclaredConstructors()) { scanMember(member); } for (CtBehavior member : ctClass.getDeclaredMethods()) { scanMember(member); } ctClass.detach(); } catch (Exception e) { throw new ReflectionsException("Could not scan method usage for " + getMetadataAdapter().getClassName(cls), e); } }
@Override public void scan(Object cls) { try { CtClass ctClass = getClassPool().get(getMetadataAdapter().getClassName(cls)); for (CtBehavior member : ctClass.getDeclaredConstructors()) { scanMember(member); } for (CtBehavior member : ctClass.getDeclaredMethods()) { scanMember(member); } ctClass.detach(); } catch (Exception e) { throw new ReflectionsException("Could not scan method usage for " + getMetadataAdapter().getClassName(cls), e); } }
if (clazz != null) { try { clazz.detach(); } catch (Exception e) {
ctClass.detach();
if (clazz != null) { try { clazz.detach(); } catch (Exception e) {
public byte[] instrument(CtClass target) throws InstrumentationException { try { doInstrument(target); target.detach(); return target.toBytecode(); } catch (Exception e) { throw new InstrumentationException(e); } }
public class FindUsageTransformer implements ClassFileTransformer{ Class clazz = null; public byte[] transform(ClassLoader loader,String className,Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException { if(className.equals("A")){ doClass(className, classBeingRedefined, classfileBuffer); } return classfileBuffer; } private byte[] doClass(String name, Class clazz, byte[] b) { ClassPool pool = ClassPool.getDefault(); CtClass cl = null; try { cl = pool.makeClass(new java.io.ByteArrayInputStream(b)); CtMethod method = cl.getDeclaredMethod("getA2"); // here you have lot of options to explore method.insertBefore("System.out.println(Thread.currentThread().getStackTrace()[0].getClassName()+ Thread.currentThread().getStackTrace()[0].getMethodName());"); b = cl.toBytecode(); } catch (Exception e) { System.err.println("Could not instrument " + name + ", exception : " + e.getMessage()); } finally { if (cl != null) { cl.detach(); } } return b; }
/** * <code>CtClass</code>を<code>Class</code>に変換します。 * * @param classLoader * @return */ public Class toClass(final ClassLoader classLoader) { final Class clazz = toClass(classLoader, methodInvocationClass); methodInvocationClass.detach(); methodInvocationClass = null; return clazz; }
private void loadClass(ClassPool classPool, ClassLoader targetClassLoader, String className) { try { CtClass loadedClass = classPool.get(className); loadedClass.toClass(targetClassLoader, GitPushOperation.class.getProtectionDomain()); loadedClass.detach(); } catch (CannotCompileException e) { log.error("Failed to load class required for Gerrit push UI injections.", e); } catch (NotFoundException e) { log.error("Failed to load class required for Gerrit push UI injections.", e); } }
public void mark(CtClass type) { CtClass powerMockInterface = classPool.makeInterface("org.powermock.core.classloader.PowerMockModified"); type.addInterface(powerMockInterface); powerMockInterface.detach(); } }