Coverage Report - org.apache.commons.javaflow.bytecode.BytecodeClassLoader
 
Classes in this File Line Coverage Branch Coverage Complexity
BytecodeClassLoader
100%
7/7
N/A
1
BytecodeClassLoader$NameClassAdapter
100%
6/6
N/A
1
 
 1  
 package org.apache.commons.javaflow.bytecode;
 2  
 
 3  
 import org.objectweb.asm.ClassAdapter;
 4  
 import org.objectweb.asm.ClassReader;
 5  
 import org.objectweb.asm.commons.EmptyVisitor;
 6  
 
 7  
 
 8  44
 public class BytecodeClassLoader extends ClassLoader {
 9  
 
 10  44
     class NameClassAdapter extends ClassAdapter {
 11  
         private String className;
 12  
 
 13  44
         public NameClassAdapter() {
 14  44
             super(new EmptyVisitor());
 15  44
         }
 16  
         
 17  
         public void visit( int version, int access, String name, String signature, String superName, String[] interfaces ) {
 18  44
             className = name;
 19  44
         }
 20  
         
 21  
         public String getName() {
 22  44
             return className;
 23  
         }
 24  
     }
 25  
     
 26  
     public Class loadClass( final byte[] bytecode ) {
 27  44
         final NameClassAdapter nameClassAdapter = new NameClassAdapter();
 28  
         
 29  44
         new ClassReader(bytecode).accept(nameClassAdapter, false);
 30  
         
 31  44
         final String name = nameClassAdapter.getName().replace('/', '.');
 32  
         
 33  
 //        System.out.println("loading class " + name);
 34  
         
 35  44
         final Class clazz = defineClass(name, bytecode, 0, bytecode.length);
 36  
         
 37  44
         return clazz;
 38  
     }
 39  
 }