1 package jp.sourceforge.stigmata.birthmarks.smc;
3 import jp.sourceforge.stigmata.Birthmark;
4 import jp.sourceforge.stigmata.BirthmarkContext;
5 import jp.sourceforge.stigmata.BirthmarkElement;
6 import jp.sourceforge.stigmata.ExtractionUnit;
7 import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
8 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
9 import jp.sourceforge.stigmata.spi.BirthmarkService;
11 import org.objectweb.asm.ClassWriter;
14 * @author Haruaki TAMADA
16 public class SequentialMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
17 public SequentialMethodCallBirthmarkExtractor(BirthmarkService spi){
21 public SequentialMethodCallBirthmarkExtractor(){
26 public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){
27 return new SequentialMethodCallBirthmarkExtractVisitor(writer, birthmark, context);
31 public ExtractionUnit[] getAcceptableUnits(){
32 return new ExtractionUnit[] { ExtractionUnit.CLASS, ExtractionUnit.ARCHIVE, ExtractionUnit.PACKAGE, };
36 public BirthmarkElement buildElement(String value) {
37 String className = value.substring(0, value.indexOf('#'));
38 String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!'));
39 String signature = value.substring(value.lastIndexOf('!') + 1);
41 return new MethodCallBirthmarkElement(className, methodName, signature);