1 package jp.sourceforge.stigmata.birthmarks;
3 import java.util.ArrayList;
6 import jp.sourceforge.stigmata.Birthmark;
7 import jp.sourceforge.stigmata.BirthmarkContext;
8 import jp.sourceforge.stigmata.BirthmarkElement;
9 import jp.sourceforge.stigmata.BirthmarkEnvironment;
11 import org.objectweb.asm.ClassVisitor;
12 import org.objectweb.asm.Opcodes;
15 * Abstract visitor class of extracting birthmarks from class file.
17 * @author Haruaki TAMADA
19 public abstract class BirthmarkExtractVisitor extends ClassVisitor{
20 private Birthmark birthmark;
21 private BirthmarkContext context;
22 private List<Throwable> causes = new ArrayList<Throwable>();
24 public BirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
25 super(Opcodes.ASM4, visitor);
26 this.birthmark = birthmark;
27 this.context = context;
30 protected BirthmarkEnvironment getEnvironment(){
31 return context.getEnvironment();
34 protected BirthmarkContext getContext(){
38 protected void addElement(BirthmarkElement element){
39 birthmark.addElement(element);
42 public Birthmark getBirthmark(){
46 public synchronized void addFailur(Throwable e){
50 public boolean isSuccess(){
51 return causes.size() == 0;
54 public synchronized Throwable[] getCauses(){
55 return causes.toArray(new Throwable[causes.size()]);