Example usage for org.objectweb.asm.util ASMifier ASMifier

List of usage examples for org.objectweb.asm.util ASMifier ASMifier

Introduction

In this page you can find the example usage for org.objectweb.asm.util ASMifier ASMifier.

Prototype

public ASMifier() 

Source Link

Document

Constructs a new ASMifier .

Usage

From source file:ch.raffael.contracts.devtools.browser.BrowserPanel.java

License:Apache License

private void updateSource() {
    if (tree.getSelectionPath() == null) {
        asmSource.setText("");
        reloadClassAction.setEnabled(false);
        return;//from  w w  w  . j a  va 2s  .c  o m
    }
    BrowserTreeNode node = (BrowserTreeNode) tree.getSelectionPath().getLastPathComponent();
    if (node.getKind() != BrowserTreeNode.Kind.CLASS) {
        asmSource.setText("");
        reloadClassAction.setEnabled(false);
    } else {
        boolean indent = false;
        reloadClassAction.setEnabled(true);
        StringWriter string = new StringWriter();
        try (InputStream in = new BufferedInputStream(Files.newInputStream(node.getPath()));
                PrintWriter out = new PrintWriter(string)) {
            ASMifier printer = new ASMifier();
            ClassReader reader = new ClassReader(in);
            TraceClassVisitor tracer;
            if (sourceStyle.getSelectedItem() != null && sourceStyle.getSelectedItem().equals("Bytecode")) {
                tracer = new TraceClassVisitor(null, new Textifier(), out);
            } else {
                tracer = new TraceClassVisitor(null, new ASMifier(), out);
                indent = true;
            }
            reader.accept(tracer, 0);
        } catch (IOException e) {
            this.context.require(ErrorDisplayer.class).displayError(root, e);
        }
        if (indent) {
            StringBuilder buf = new StringBuilder();
            int d = 0;
            for (String line : string.toString().split("\\n\\r?|\\r")) {
                if (line.equals("}")) {
                    d--;
                }
                for (int i = 0; i < d; i++) {
                    buf.append("  ");
                }
                buf.append(line).append('\n');
                if (line.equals("{")) {
                    d++;
                }
            }
            asmSource.setText(buf.toString());
        } else {
            asmSource.setText(string.toString());
        }
        asmSource.setSelectionStart(0);
        asmSource.setSelectionEnd(0);
    }
}

From source file:ch.sourcepond.utils.podescoin.devel.PrintASMInstructions.java

License:Apache License

@Test
public void printInstructions() throws Exception {
    final ClassReader reader = new ClassReader(WriteInjectorMethodClass.class.getName());
    final ClassVisitor visitor = new PrintClassVisitor(
            new TraceClassVisitor(null, new ASMifier(), new PrintWriter(System.out)));
    reader.accept(visitor, ClassReader.SKIP_DEBUG);
}

From source file:com.android.build.gradle.tasks.fd.InjectBootstrapApplicationTaskTest.java

License:Apache License

private static String asmify(File expected) throws IOException {
    ClassReader reader = new ClassReader(new FileInputStream(expected));
    StringWriter writer = new StringWriter();
    try (PrintWriter printWriter = new PrintWriter(writer)) {
        reader.accept(new TraceClassVisitor(null, new ASMifier(), printWriter), 0);
    }//from   w  ww .  j a  v a 2 s .c om
    return writer.toString();
}

From source file:com.costlowcorp.eriktools.jardetails.JarNavigationController.java

private void readClass(String filename) {
    try (JarFile jar = new JarFile(this.file)) {
        final JarEntry entry = jar.getJarEntry(filename);
        final ClassNode node = new ClassNode(ASM5);
        final InputStream in = jar.getInputStream(entry);
        final ClassReader reader = new ClassReader(in);
        //reader.accept(node, ClassReader.EXPAND_FRAMES);

        final Printer asmifier = new ASMifier();
        //final InputStream in2 = jar.getInputStream(entry);
        final ByteArrayOutputStream bout = new ByteArrayOutputStream();

        final TraceClassVisitor tracer = new TraceClassVisitor(node, asmifier, new PrintWriter(bout));
        reader.accept(tracer, ClassReader.EXPAND_FRAMES);
        final String className = filename.replace('/', '.').substring(0, filename.length() - ".class".length());
        final String javap = JavaPGrabber.INSTANCE.run(file.toPath(), className);
        Platform.runLater(() -> {//from  ww w . j  a  v  a2 s  .c o m
            classDetails.populateClassSummary(node.name, filename, node.sourceFile, node.version,
                    node.superName, node.interfaces);
            classDetails.populateAsmifierTab(bout.toString());
            classDetails.populateJavaPTab(javap);
        });
    } catch (IOException ex) {
        Logger.getLogger(JarNavigationController.class.getName()).log(Level.SEVERE, null, ex);
    }

}

From source file:no.kantega.helloworld.HelloWorldAsmified.java

License:Apache License

public static void main(String[] args) throws IOException {
    Class clazz = HelloWorld.class;
    InputStream inputStream = clazz.getResourceAsStream(clazz.getSimpleName() + ".class");

    ClassReader reader = new ClassReader(inputStream);

    ClassVisitor visitor = new TraceClassVisitor(null, new ASMifier(), new PrintWriter(System.out));
    reader.accept(visitor, ClassReader.EXPAND_FRAMES);
}

From source file:no.kantega.linecount.RegistryTest.java

License:Apache License

public static void main(String[] args) throws IOException {
    Class clazz = RegistryTest.class;
    InputStream inputStream = clazz.getResourceAsStream(clazz.getSimpleName() + ".class");

    ClassReader reader = new ClassReader(inputStream);

    ClassVisitor visitor = new TraceClassVisitor(null, new ASMifier(), new PrintWriter(System.out));
    reader.accept(visitor, ClassReader.EXPAND_FRAMES);
}

From source file:org.apache.commons.javaflow.helper.ClassTransformerClassLoader.java

License:Apache License

protected byte[] transform(final String pName, final InputStream pClassStream) throws IOException {
    final byte[] oldClass = IOUtils.toByteArray(pClassStream);
    final byte[] newClass = transformer.transform(oldClass);

    // CheckClassAdapter.verify(new ClassReader(newClass), true);

    // Test case output has been moved to target/test-instrumentation to reduce clutter in main directory
    new File("target/test-instrumentation").mkdirs();

    CheckClassAdapter.verify(new ClassReader(newClass), true,
            new PrintWriter(new FileOutputStream("target/test-instrumentation/"
                    + transformer.getClass().getSimpleName() + "_" + pName + ".new.check")));

    new ClassReader(oldClass).accept(new TraceClassVisitor(null, new ASMifier(),
            new PrintWriter(new FileOutputStream("target/test-instrumentation/"
                    + transformer.getClass().getSimpleName() + "_" + pName + ".old"))),
            0);//from ww w. j a  va  2  s  .co  m

    new ClassReader(newClass).accept(new TraceClassVisitor(null, new ASMifier(),
            new PrintWriter(new FileOutputStream("target/test-instrumentation/"
                    + transformer.getClass().getSimpleName() + "_" + pName + ".new"))),
            0);

    return newClass;
}

From source file:org.apache.drill.exec.compile.bytecode.ReplaceMethodInvoke.java

License:Apache License

private static ClassVisitor getTracer(boolean asm) {
    if (asm) {//from   w ww  . ja  v a2s  .co  m
        return new TraceClassVisitor(null, new ASMifier(), new PrintWriter(System.out));
    } else {
        return new TraceClassVisitor(null, new Textifier(), new PrintWriter(System.out));
    }
}

From source file:org.jooby.internal.apitool.BytecodeRouteParser.java

License:Apache License

private ClassNode loadClass(String name) {
    return Try.apply(() -> {
        String cname = name.replace("/", ".");
        ClassNode node = cache.get(cname);
        if (node == null) {
            String rname = cname.replace(".", "/") + ".class";
            try (InputStream in = loader.getResourceAsStream(rname)) {
                if (in == null) {
                    throw new FileNotFoundException(rname + " using " + loader);
                }/*from  w w w .j a  v a 2s .c  o m*/
                ClassReader reader = new ClassReader(ByteStreams.toByteArray(in));
                node = new ClassNode();
                reader.accept(node, 0);
                cache.put(cname, node);
                if (log.isDebugEnabled()) {
                    log.info("Source: {}; Class: {}", node.sourceFile, node.name);
                    reader.accept(
                            new TraceClassVisitor(null, new ASMifier(), new PrintWriter(writer(log, name))), 0);
                }
            }
        }
        return node;
    }).get();
}

From source file:org.jooby.internal.apitool.Insn.java

License:Apache License

@Override
public String toString() {
    Printer printer = new ASMifier();
    TraceMethodVisitor visitor = new TraceMethodVisitor(printer);
    node.accept(visitor);/*from w w  w. ja v  a 2 s. c  o m*/
    return printer.getText().toString();
}