Example usage for org.objectweb.asm.commons SimpleRemapper SimpleRemapper

List of usage examples for org.objectweb.asm.commons SimpleRemapper SimpleRemapper

Introduction

In this page you can find the example usage for org.objectweb.asm.commons SimpleRemapper SimpleRemapper.

Prototype

public SimpleRemapper(final String oldName, final String newName) 

Source Link

Document

Constructs a new SimpleRemapper with the given mapping.

Usage

From source file:com.navercorp.pinpoint.profiler.instrument.lambda.LambdaFactoryTest.java

License:Apache License

private void renameClass(ClassReader reader, ClassVisitor classVisitor) {
    String className = "com/navercorp/pinpoint/profiler/instrument/lambda/mock/UnsafeClassMock";
    Remapper remapper = new SimpleRemapper(className, className + "2");
    ClassRemapper classRemapper = new ClassRemapper(classVisitor, remapper);
    reader.accept(classRemapper, 0);//from  w w  w .  ja  va  2 s.  c om
}

From source file:org.anon.smart.base.stt.asm.ASMSTTWriter.java

License:Open Source License

public Object createMethod(STTVisitor sttvisit, STTDescriptor stt, Object mthd) {
    ASMClazzContext cctx = (ASMClazzContext) sttvisit.clazzContext();
    ClassVisitor visit = cctx.visitor();
    MethodNode nde = (MethodNode) mthd;/*ww  w. java  2s  .  com*/
    if (!nde.name.equals(CONSTRUCTOR_NAME)) //ignore constructor
    {
        String[] exceptions = new String[nde.exceptions.size()];
        nde.exceptions.toArray(exceptions); //TODO check the reference for this
        MethodVisitor mv = visit.visitMethod(nde.access, nde.name, nde.desc, nde.signature, exceptions);
        nde.instructions.resetLabels();
        nde.accept(new RemappingMethodAdapter(nde.access, nde.desc, mv,
                new SimpleRemapper(stt.reader().sttname(), cctx.name())));
        return nde;
    }
    return null;
}

From source file:org.apache.drill.exec.compile.MergeAdapter.java

License:Apache License

@Override
@SuppressWarnings("unchecked")
public void visitEnd() {

    // add all the fields of the class we're going to merge.
    for (Iterator<?> it = classToMerge.fields.iterator(); it.hasNext();) {
        ((FieldNode) it.next()).accept(this);
    }//from   w w w  . j  a v a 2 s  . co  m

    // add all the methods that we to include.
    for (Iterator<?> it = classToMerge.methods.iterator(); it.hasNext();) {
        MethodNode mn = (MethodNode) it.next();

        if (mn.name.equals("<init>")) {
            continue;
        }

        String[] exceptions = new String[mn.exceptions.size()];
        mn.exceptions.toArray(exceptions);
        MethodVisitor mv = cv.visitMethod(mn.access | Modifier.FINAL, mn.name, mn.desc, mn.signature,
                exceptions);

        mn.instructions.resetLabels();

        // mn.accept(new RemappingMethodAdapter(mn.access, mn.desc, mv, new
        // SimpleRemapper("org.apache.drill.exec.compile.ExampleTemplate", "Bunky")));
        ClassSet top = set;
        while (top.parent != null) {
            top = top.parent;
        }
        mn.accept(new RemappingMethodAdapter(mn.access, mn.desc, mv,
                new SimpleRemapper(top.precompiled.slash, top.generated.slash)));

    }
    super.visitEnd();
}

From source file:org.glowroot.agent.weaving.WeavingClassVisitor.java

License:Apache License

@RequiresNonNull("type")
private void addMixin(MixinType mixinType) {
    ClassReader cr = new ClassReader(mixinType.implementationBytes());
    ClassNode cn = new ClassNode();
    cr.accept(cn, ClassReader.EXPAND_FRAMES);
    // SuppressWarnings because generics are explicitly removed from asm binaries
    // see http://forge.ow2.org/tracker/?group_id=23&atid=100023&func=detail&aid=316377
    @SuppressWarnings("unchecked")
    List<FieldNode> fieldNodes = cn.fields;
    for (FieldNode fieldNode : fieldNodes) {
        fieldNode.accept(this);
    }// w  w  w.j  ava 2s.co  m
    // SuppressWarnings because generics are explicitly removed from asm binaries
    @SuppressWarnings("unchecked")
    List<MethodNode> methodNodes = cn.methods;
    for (MethodNode mn : methodNodes) {
        if (mn.name.equals("<init>")) {
            continue;
        }
        // SuppressWarnings because generics are explicitly removed from asm binaries
        @SuppressWarnings("unchecked")
        String[] exceptions = Iterables.toArray(mn.exceptions, String.class);
        MethodVisitor mv = cw.visitMethod(mn.access, mn.name, mn.desc, mn.signature, exceptions);
        mn.accept(new RemappingMethodAdapter(mn.access, mn.desc, mv,
                new SimpleRemapper(cn.name, type.getInternalName())));
    }
}

From source file:org.glowroot.weaving.WeavingClassVisitor.java

License:Apache License

@RequiresNonNull("type")
private void addMixin(MixinType mixinType) {
    ClassReader cr = new ClassReader(mixinType.implementationBytes());
    ClassNode cn = new ClassNode();
    cr.accept(cn, ClassReader.EXPAND_FRAMES);
    // SuppressWarnings because generics are explicitly removed from asm binaries
    // see http://forge.ow2.org/tracker/?group_id=23&atid=100023&func=detail&aid=316377
    @SuppressWarnings("unchecked")
    List<FieldNode> fieldNodes = cn.fields;
    for (FieldNode fieldNode : fieldNodes) {
        fieldNode.accept(this);
    }// w  ww  .j av  a2s  .  c  om
    // SuppressWarnings because generics are explicitly removed from asm binaries
    @SuppressWarnings("unchecked")
    List<MethodNode> methodNodes = cn.methods;
    for (MethodNode mn : methodNodes) {
        if (mn.name.equals("<init>")) {
            continue;
        }
        // SuppressWarnings because generics are explicitly removed from asm binaries
        @SuppressWarnings("unchecked")
        String[] exceptions = Iterables.toArray(mn.exceptions, String.class);
        MethodVisitor mv = cv.visitMethod(mn.access, mn.name, mn.desc, mn.signature, exceptions);
        checkNotNull(mv);
        mn.accept(new RemappingMethodAdapter(mn.access, mn.desc, mv,
                new SimpleRemapper(cn.name, type.getInternalName())));
    }
}