1 package jp.sourceforge.stigmata.birthmarks.fmc;
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.birthmarks.FrequencyBirthmark;
10 import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
11 import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor;
12 import jp.sourceforge.stigmata.spi.BirthmarkService;
14 import org.objectweb.asm.ClassWriter;
17 * @author Haruaki TAMADA
19 public class FrequencyMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
20 public FrequencyMethodCallBirthmarkExtractor(BirthmarkService spi){
24 public FrequencyMethodCallBirthmarkExtractor(){
29 public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){
30 return new SequentialMethodCallBirthmarkExtractVisitor(writer, birthmark, context){
32 protected void addElement(String className, String methodName, String description){
33 addElement(new FrequencyBirthmarkElement(className + "#" + methodName + description));
39 public ExtractionUnit[] getAcceptableUnits(){
40 return new ExtractionUnit[] {
41 ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, ExtractionUnit.ARCHIVE,
46 public Birthmark createBirthmark(){
47 return new FrequencyBirthmark(getProvider().getType());
52 public BirthmarkElement buildElement(String value) {
53 return new FrequencyBirthmarkElement(value);