1 package jp.sourceforge.stigmata.birthmarks.is;
3 import jp.sourceforge.stigmata.Birthmark;
4 import jp.sourceforge.stigmata.BirthmarkContext;
5 import jp.sourceforge.stigmata.BirthmarkElement;
6 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
7 import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement;
8 import jp.sourceforge.stigmata.utils.WellknownClassManager;
10 import org.objectweb.asm.ClassVisitor;
16 * @author Haruaki TAMADA
18 public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
19 public InheritanceStructureBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
20 super(visitor, birthmark, context);
24 public void visit(int version, int access, String name, String signature,
25 String superName, String[] interfaces){
27 Class<?> c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.'));
28 if(c != null && !c.isInterface()){
31 } catch (ClassNotFoundException ex){
36 private void addISBirthmark(Class<?> c){
37 WellknownClassManager wcm = getEnvironment().getWellknownClassManager();
39 String className = c.getName();
40 BirthmarkElement element = null;
41 if(wcm.isWellKnownClass(className)){
42 element = new BirthmarkElement(className);
45 element = NullBirthmarkElement.getInstance();
49 c = c.getSuperclass();
50 } while(!c.getName().equals("java.lang.Object"));
51 addElement(new BirthmarkElement("java.lang.Object"));