final MethodComparator comp = new MethodComparator(); boolean result = comp.equivalent( "evaluate", new ClassReader( getClassData( MethodCompareA.class ) ), "evaluate", new ClassReader( getClassData( MethodCompareB.class ) ) ); assertEquals( true, result ); new ClassReader( getClassData( MethodCompareA.class ) ), "evaluate2", new ClassReader( getClassData( MethodCompareA.class ) ) ); assertEquals( false, result ); new ClassReader( getClassData( MethodCompareB.class ) ), "evaluate2", new ClassReader( getClassData( MethodCompareA.class ) ) ); assertEquals( false, result ); new ClassReader( getClassData( MethodCompareB.class ) ), "evaluate", new ClassReader( getClassData( MethodCompareA.class ) ) ); assertEquals( true, result ); new ClassReader( getClassData( MethodCompareA.class ) ), "evaluate", new ClassReader( getClassData( MethodCompareA.class ) ) );
/** * Checks a given class. * <p> * Usage: CheckClassAdapter <binary class name or class file name> * * @param args * the command line arguments. * * @throws Exception * if the class cannot be found, or if an IO exception occurs. */ public static void main(final String[] args) throws Exception { if (args.length != 1) { System.err.println("Verifies the given class."); System.err.println("Usage: CheckClassAdapter " + "<fully qualified class name or class file name>"); return; } ClassReader cr; if (args[0].endsWith(".class")) { cr = new ClassReader(new FileInputStream(args[0])); } else { cr = new ClassReader(args[0]); } verify(cr, false, new PrintWriter(System.err)); }
if (args[i].endsWith(".class") || args[i].indexOf('\\') > -1 || args[i].indexOf('/') > -1) { cr = new ClassReader(new FileInputStream(args[i])); } else { cr = new ClassReader(args[i]);
|| args[i].indexOf('/') > -1) cr = new ClassReader(new FileInputStream(args[i])); } else { cr = new ClassReader(args[i]);
if (args[i].endsWith(".class") || args[i].indexOf('\\') > -1 || args[i].indexOf('/') > -1) { cr = new ClassReader(new FileInputStream(args[i])); } else { cr = new ClassReader(args[i]);
public static java.util.List getMethodBytecode(Class cls, String ruleClassName, String packageName, String methodName, String resource) { org.drools.core.util.asm.MethodComparator.Tracer visit = new org.drools.core.util.asm.MethodComparator.Tracer(methodName); java.io.InputStream is = cls.getClassLoader().getResourceAsStream( resource ); java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); try { byte[] data = new byte[1024]; int byteCount; while ( (byteCount = is.read( data, 0, 1024 )) > -1 ) { bos.write(data, 0, byteCount); } } catch ( java.io.IOException e ) { throw new org.drools.RuntimeDroolsException("Unable getResourceAsStream for Class '" + ruleClassName+ "' "); } org.mvel2.asm.ClassReader classReader = new org.mvel2.asm.ClassReader( bos.toByteArray() ); classReader.accept( visit, org.mvel2.asm.ClassReader.SKIP_DEBUG ); org.mvel2.asm.util.TraceMethodVisitor trace = visit.getTrace(); return trace.getText(); }
private void processEntry(final ZipInputStream zis, final ZipEntry ze, final ContentHandlerFactory handlerFactory) { ContentHandler handler = handlerFactory.createContentHandler(); try { // if (CODE2ASM.equals(command)) { // read bytecode and process it // // with TraceClassVisitor // ClassReader cr = new ClassReader(readEntry(zis, ze)); // cr.accept(new TraceClassVisitor(null, new PrintWriter(os)), // false); // } boolean singleInputDocument = inRepresentation == SINGLE_XML; if (inRepresentation == BYTECODE) { // read bytecode and process it // with handler ClassReader cr = new ClassReader(readEntry(zis, ze)); cr.accept(new SAXClassAdapter(handler, singleInputDocument), 0); } else { // read XML and process it with handler XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(handler); reader.parse(new InputSource( singleInputDocument ? (InputStream) new ProtectedInputStream( zis) : new ByteArrayInputStream(readEntry(zis, ze)))); } } catch (Exception ex) { update(ze.getName(), 0); update(ex, 0); } }
final boolean includeFinalMethods ) throws IOException { final ClassReader reader = new ClassReader( stream ); final ClassFieldVisitor visitor = new ClassFieldVisitor( clazz, includeFinalMethods,
/** * This will return a series of bytecode instructions which can be used to compare one method with another. * debug info like local var declarations and line numbers are ignored, so the focus is on the content. */ public static List getMethodBytecode(final String methodName, final byte[] bytes) { final Tracer visit = new Tracer( methodName ); final ClassReader classReader = new ClassReader( bytes ); classReader.accept( visit, ClassReader.SKIP_DEBUG ); final TraceMethodVisitor trace = visit.getTrace(); return trace.getText(); }
firstAttribute = null; compute = hasFrames ? MethodWriter.COMPUTE_INSERTED_FRAMES : MethodWriter.COMPUTE_NOTHING; new ClassReader(classFile, 0, /* checkClassVersion = */ false) .accept( this,
assertNotNull("Resource not found: " + classLoc, in); ClassReader classReader = new ClassReader(in); classReader.accept(visitor, 0);
hasFrames ? MethodWriter.INSERTED_FRAMES : MethodWriter.NOTHING; hasAsmInsns = false; new ClassReader(out.data).accept(this, (hasFrames ? ClassReader.EXPAND_FRAMES : 0) | ClassReader.EXPAND_ASM_INSNS);
new ClassReader(out.data).accept(cw, ClassReader.SKIP_FRAMES); return cw.toByteArray();