<dependencies>\r
<dependency>\r
<groupId>asm</groupId>\r
- <artifactId>asm</artifactId>\r
+ <artifactId>asm-all</artifactId>\r
<version>3.3</version>\r
<scope>compile</scope>\r
</dependency>\r
import java.util.Set;
import java.util.Stack;
-import jp.sourceforge.stigmata.birthmarks.extractors.BirthmarkExtractorFactory;
import jp.sourceforge.stigmata.digger.ClassFileArchive;
import jp.sourceforge.stigmata.digger.ClassFileEntry;
import jp.sourceforge.stigmata.digger.ClasspathContext;
private WarningMessages warnings;
private OperationType latestOperationType;
private OperationType targetType;
- private BirthmarkExtractorFactory factory;
/**
* constructor.
*/
public BirthmarkEngine(BirthmarkEnvironment env){
this.environment = env;
- factory = new BirthmarkExtractorFactory(env);
}
/**
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){
- Birthmark b = bs.getBirthmark(extractor.getProvider().getType());
- if(b == null){
- b = extractor.createBirthmark();
- bs.addBirthmark(b);
- }
- extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){
+ Birthmark b = bs.getBirthmark(extractor.getProvider().getType());
+ if(b == null){
+ b = extractor.createBirthmark();
+ bs.addBirthmark(b);
}
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
+ extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
}
}
} catch(IOException e){
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.CLASS)){
- Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext());
- birthmarkset.addBirthmark(b);
- }
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.CLASS)){
+ Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext());
+ birthmarkset.addBirthmark(b);
}
}
er.addBirthmarkSet(et, birthmarkset);
try{
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){
- Birthmark b = birthmarkset.getBirthmark(birthmarkType);
- if(b == null){
- b = extractor.createBirthmark();
- birthmarkset.addBirthmark(b);
- }
- extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){
+ Birthmark b = birthmarkset.getBirthmark(birthmarkType);
+ if(b == null){
+ b = extractor.createBirthmark();
+ birthmarkset.addBirthmark(b);
}
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
- }
+ extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ }
}
} catch(IOException e){
warnings.addMessage(e, entry.getClassName());
public BirthmarkElement buildElement(String value);
/**
+ * extract birthmark from given stream with default environment.
+ */
+ public Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException;
+
+ /**
* extract birthmark from given stream with given environment.
*/
public Birthmark extract(InputStream in, BirthmarkContext context) throws BirthmarkExtractionFailedException;
package jp.sourceforge.stigmata;
import jp.sourceforge.stigmata.filter.Criterion;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
* Filtering results by some criteria.
public Criterion getCriterion();
- public ComparisonPairFilterSpi getService();
+ public ComparisonPairFilterService getService();
}
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
import jp.sourceforge.stigmata.BirthmarkExtractor;
import jp.sourceforge.stigmata.ExtractionUnit;
return spi;
}
+ public final Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException{
+ return extract(createBirthmark(), in, new BirthmarkContext(BirthmarkEnvironment.getDefaultEnvironment()));
+ }
+
/**
* extract birthmark given stream with given environment.
*/
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.comparators;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Abstract service provider interface for comparing birthmarks.
- *
- * @author Haruaki TAMADA
- */
-abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public abstract String getType();
-
- /**
- * returns a localized description of the birthmark this service provides.
- */
- @Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getType(), LocalizedDescriptionManager.ServiceCategory.comparator
- );
- }
-
- /**
- * returns a localized description of the birthmark in default locale.
- */
- @Override
- public String getDescription(){
- return getDescription(Locale.getDefault());
- }
-
- @Override
- public abstract String getComparatorClassName();
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkComparator getComparator(BirthmarkService service){
- try{
- Class<?> c = Class.forName(getComparatorClassName());
- Class<? extends BirthmarkComparator> clazz = c.asSubclass(BirthmarkComparator.class);
- Constructor<? extends BirthmarkComparator> constructor = clazz.getConstructor(BirthmarkService.class);
- return constructor.newInstance(service);
- } catch(NoSuchMethodException e){
- } catch(InstantiationException e){
- } catch(InvocationTargetException e){
- } catch(ClassNotFoundException e){
- } catch(IllegalAccessException e){
- }
- return null;
- }
-}
-
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class CosineSimilarityBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "cosine";
}
- @Override
- public String getComparatorClassName(){
- return CosineSimilarityBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new CosineSimilarityBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Cosine Similarity";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class DPMatchingBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "dpmatching";
}
- @Override
- public String getComparatorClassName(){
- return DPMatchingBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new DPMatchingBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "DP Matching";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class EditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "editdistancee";
}
- @Override
- public String getComparatorClassName(){
- return EditDistanceBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new EditDistanceBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Edit Distance";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class ExtendedEditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "editdistanceext";
}
- @Override
- public String getComparatorClassName(){
- return ExtendedEditDistanceBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new ExtendedEditDistanceBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Extended Edit Distance";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class LogicalAndBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "and";
}
- @Override
- public String getComparatorClassName(){
- return LogicalAndBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new LogicalAndBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Logical And Comparator";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class PlainBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "plain";
}
- @Override
- public String getComparatorClassName(){
- return PlainBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkComparator getComparator(BirthmarkService service){
return new PlainBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Plain Comparator";
+ }
}
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.cvfv;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class ConstantValueOfFieldVariableBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "cvfv";
}
- @Override
- public String getExtractorClassName(){
- return ConstantValueOfFieldVariableBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new ConstantValueOfFieldVariableBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Constant Value and Field Variable birthmark";
+ }
}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- */
-public abstract class AbstractBirthmarkExtractorService extends AbstractServiceProvider implements BirthmarkExtractorSpi{
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public abstract String getType();
-
- /**
- * returns a localized description of the birthmark this service provides.
- */
- @Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getType(), LocalizedDescriptionManager.ServiceCategory.extractor
- );
- }
-
- /**
- * returns a localized description of the birthmark in default locale.
- */
- @Override
- public String getDescription(){
- return getDescription(Locale.getDefault());
- }
-
- @Override
- public abstract String getExtractorClassName();
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkService service){
- try{
- Class<?> c = Class.forName(getExtractorClassName());
- Class<? extends BirthmarkExtractor> clazz = c.asSubclass(BirthmarkExtractor.class);
- Constructor<? extends BirthmarkExtractor> constructor = clazz.getConstructor(BirthmarkService.class);
- return constructor.newInstance(service);
- } catch(NoSuchMethodException e){
- } catch(InstantiationException e){
- } catch(InvocationTargetException e){
- } catch(ClassNotFoundException e){
- } catch(IllegalAccessException e){
- }
- return null;
- }
-}
-
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-import java.lang.reflect.InvocationTargetException;
-import java.util.HashMap;
-import java.util.Map;
-
-import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.ExtractorNotFoundException;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-
-import org.apache.commons.beanutils.BeanUtils;
-
-/**
- *
- * @author Haruaki Tamada
- */
-public class BirthmarkExtractorFactory{
- private BirthmarkEnvironment environment;
- private Map<String, BirthmarkExtractor> extractors = new HashMap<String, BirthmarkExtractor>();
-
- public BirthmarkExtractorFactory(BirthmarkEnvironment env){
- this.environment = env;
- }
-
- public BirthmarkExtractor getExtractor(String name) throws ExtractorNotFoundException{
- BirthmarkExtractor extractor = extractors.get(name);
- if(extractor == null){
- extractor = buildExtractor(name);
- extractors.put(name, extractor);
- }
- return extractor;
- }
-
- @SuppressWarnings("rawtypes")
- private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{
- BirthmarkService spi = environment.getService(birthmarkType);
- BirthmarkExtractor extractor = null;
- if(spi != null){
- extractor = spi.getExtractor();
- try{
- if(extractor != null){
- Map props = BeanUtils.describe(extractor);
- props.remove("class");
- props.remove("provider");
- for(Object keyObject: props.keySet()){
- String key = "extractor." + spi.getType() + "." + String.valueOf(keyObject);
- if(environment.getProperty(key) != null){
- BeanUtils.setProperty(
- extractor, (String)keyObject, environment.getProperty(key)
- );
- }
- }
- }
- } catch(InvocationTargetException e){
- throw new InternalError(e.getMessage());
- } catch(NoSuchMethodException e){
- throw new InternalError(e.getMessage());
- } catch(IllegalAccessException e){
- throw new InternalError(e.getMessage());
- }
- }
- if(extractor == null){
- throw new ExtractorNotFoundException("extractor not found: " + birthmarkType);
- }
-
- return extractor;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- */
-public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "kgram";
- }
-
- @Override
- public String getExtractorClassName(){
- return KGramBasedBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkService service){
- return new KGramBasedBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.fmc;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class FrequencyMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "fmc";
}
- @Override
- public String getExtractorClassName(){
- return FrequencyMethodCallBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new FrequencyMethodCallBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Frequency of Method Calls birthmark";
+ }
}
\ No newline at end of file
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.fuc;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class FrequencyUsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "fuc";
}
- @Override
- public String getExtractorClassName(){
- return FrequencyUsedClassesBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new FrequencyUsedClassesBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Frequency of Used Classes birthmark";
+ }
}
\ No newline at end of file
import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement;
+import jp.sourceforge.stigmata.digger.ClassFileEntry;
+import jp.sourceforge.stigmata.digger.ClasspathContext;
import jp.sourceforge.stigmata.utils.WellknownClassManager;
import org.objectweb.asm.ClassVisitor;
+import com.sun.xml.internal.ws.org.objectweb.asm.Opcodes;
+
/**
*
*
@Override
public void visit(int version, int access, String name, String signature,
String superName, String[] interfaces){
- try {
- Class<?> c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.'));
- if(c != null && !c.isInterface()){
- addISBirthmark(c);
+ if((access & Opcodes.ACC_INTERFACE) != Opcodes.ACC_INTERFACE){
+ ClasspathContext context = getEnvironment().getClasspathContext();
+ name = name.replace('/', '.');
+ ClassFileEntry entry = context.findEntry(name);
+ if(entry == null){
+ superName = superName.replace('/', '.');
+ ClassFileEntry parent = context.findEntry(superName);
+ if(parent != null){
+ addIsBirthmark(name);
+ addIsBirthmark(superName);
+ }
+ else{
+ addFailur(new ClassNotFoundException(superName));
+ }
+ }
+ else{
+ try{
+ Class<?> clazz = context.findClass(name);
+ addISBirthmark(clazz);
+ } catch(ClassNotFoundException e){
+ addFailur(e);
+ }
}
- } catch (ClassNotFoundException ex){
- addFailur(ex);
}
}
+ private void addIsBirthmark(String className){
+ WellknownClassManager wcm = getEnvironment().getWellknownClassManager();
+ BirthmarkElement element;
+ if(wcm.isWellKnownClass(className)){
+ element = new BirthmarkElement(className);
+ }
+ else{
+ element = NullBirthmarkElement.getInstance();
+ }
+ addElement(element);
+ }
+
private void addISBirthmark(Class<?> c){
WellknownClassManager wcm = getEnvironment().getWellknownClassManager();
do{
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.is;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class InheritanceStructureBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "is";
}
- @Override
- public String getExtractorClassName(){
- return InheritanceStructureBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new InheritanceStructureBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Inheritance Structure birthmark";
+ }
}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import java.io.Serializable;
-import java.lang.reflect.Array;
-import java.util.Arrays;
-
-/**
- * This class represents k-gram of the some sequence.
- *
- * @author Haruaki TAMADA
- */
-public class KGram<T> implements Serializable{
- private static final long serialVersionUID = 273465874532523L;
- // private List<T> list = new ArrayList<T>();
- private int maxLength = 4;
- private T[] values;
-
- /**
- * constructor.
- * @param kvalue the number of elements of this object.
- */
- public KGram(int kvalue){
- setKValue(kvalue);
- }
-
- /**
- * sets k-value.
- * @param kvalue the number of elements of this object.
- */
- public void setKValue(int kvalue){
- this.maxLength = kvalue;
- }
-
- /**
- * returns k-value which is the number of elements.
- * @return the number of elements.
- */
- public int getKValue(){
- return maxLength;
- }
-
- /**
- * returns string representation of this object.
- */
- @Override
- public String toString(){
- StringBuffer buffer = new StringBuffer("{ ");
- for(int i = 0; i < maxLength; i++){
- if(i != 0) buffer.append(", ");
- buffer.append(get(i));
- }
- buffer.append(" }");
- return new String(buffer);
- }
-
- /**
- * sets the given value to kgram element at given index.
- * @param index index.
- * @param value value.
- */
- @SuppressWarnings("unchecked")
- public void set(int index, T value){
- if(index < 0 || index >= maxLength){
- throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index);
- }
- if(value == null){
- throw new NullPointerException("null value");
- }
- if(values == null){
- values = (T[])Array.newInstance(value.getClass(), getKValue());
- }
- values[index] = value;
- }
-
- /**
- * returns an object of given index.
- */
- public T get(int index){
- T returnValue = null;
- if(index < 0 || index >= maxLength){
- throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index);
- }
- if(values != null){
- returnValue = values[index];
- }
-
- return returnValue;
- }
-
- /**
- * adds value at last index.
- *
- * this object is called with given 2 when following situation,
- * <ul>
- * <li>``{ 1, 3, null, null }'' -> ``{ 1, 2, 3, null }'' and return 2<li>
- * <li>``{ 1, null, 3, null }'' -> ``{ 1, 2, 3, null }'' and return 1<li>
- * <li>``{ 1, 2, 3, 4 }'' -> ``{ 1, 2, 3, 4 }'' and return -1<li>
- * </ul>
- *
- * @param value value for addition.
- * @return added index.
- */
- public int add(T value){
- int index = -1;
- for(int i = 0; i < values.length; i++){
- if(values[i] == null){
- index = i;
- values[i] = value;
- break;
- }
- }
- return index;
- }
-
- /**
- * returns an array of elements this object has.
- * @return
- */
- @SuppressWarnings("unchecked")
- public T[] toArray(){
- if(values == null){
- throw new IllegalStateException("this object has no elements.");
- }
- T[] newarray = (T[])Array.newInstance(values[0].getClass(), getKValue());
- System.arraycopy(values, 0, newarray, 0, getKValue());
- return newarray;
- }
-
- @Override
- public boolean equals(Object o){
- if(o instanceof KGram){
- KGram<?> kgram = (KGram<?>)o;
- boolean flag = getKValue() == kgram.getKValue();
- for(int i = 0; !flag && i < maxLength; i++){
- if(!get(i).equals(kgram.get(i))){
- flag = false;
- break;
- }
- }
- return flag;
- }
- return false;
- }
-
- @Override
- public int hashCode(){
- return Arrays.hashCode(values);
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import jp.sourceforge.stigmata.BirthmarkElement;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class KGramBasedBirthmarkElement<T> extends BirthmarkElement{
- private static final long serialVersionUID = 28546543857543634L;
-
- private KGram<T> kgram;
-
- public KGramBasedBirthmarkElement(KGram<T> kgram){
- super(kgram.toString());
- this.kgram = kgram;
- }
-
- @Override
- @SuppressWarnings("rawtypes")
- public boolean equals(Object o){
- return o instanceof KGramBasedBirthmarkElement &&
- kgram.equals(((KGramBasedBirthmarkElement)o).kgram);
- }
-
- @Override
- public int hashCode(){
- int v = kgram.hashCode();
-
- return (v & 0xff << 24) | (v >> 8);
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.MethodVisitor;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
- private int kvalue;
- private List<Integer> opcodes = new ArrayList<Integer>();
-
- public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
- super(visitor, birthmark, context);
- }
-
- public int getKValue(){
- return kvalue;
- }
-
- public void setKValue(int kvalue){
- this.kvalue = kvalue;
- }
-
- @Override
- public void visitEnd(){
- KGramBuilder builder = KGramBuilder.getInstance();
- KGram<Integer>[] kgrams = builder.<Integer>buildKGram(opcodes, getKValue());
-
- for(KGram<Integer> kgram: kgrams){
- addElement(new KGramBasedBirthmarkElement<Integer>(kgram));
- }
- }
-
- @Override
- public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){
- MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4);
- MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes);
-
- return opcodeVisitor;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.ExtractionUnit;
-import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-
-import org.objectweb.asm.ClassWriter;
-
-/**
- * @author Haruaki TAMADA
- */
-public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
- private int kvalue = 4;
-
- public KGramBasedBirthmarkExtractor(BirthmarkService spi){
- super(spi);
- }
-
- public KGramBasedBirthmarkExtractor(){
- super();
- }
-
- public void setKValue(int kvalue){
- this.kvalue = kvalue;
- }
-
- public int getKValue(){
- return kvalue;
- }
-
- @Override
- public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){
- KGramBasedBirthmarkExtractVisitor extractor = new KGramBasedBirthmarkExtractVisitor(writer, birthmark, context);
- extractor.setKValue(getKValue());
- return extractor;
- }
-
- @Override
- public ExtractionUnit[] getAcceptableUnits(){
- return new ExtractionUnit[] {
- ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, ExtractionUnit.ARCHIVE,
- };
- }
-
-
- @Override
- public BirthmarkElement buildElement(String value) {
- value = value.trim();
- if(value.startsWith("{") && value.endsWith("}")){
- String[] param = value.substring(1, value.length() - 1).split(", *");
- KGram<Integer> kgram = new KGram<Integer>(param.length);
- for(int i = 0; i < param.length; i++){
- kgram.set(i, new Integer(param[i].trim()));
- }
- return new KGramBasedBirthmarkElement<Integer>(kgram);
- }
- return null;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.BirthmarkPreprocessor;
-import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkService;
-
-/**
- *
- *
- *
- * @author Haruaki TAMADA
- */
-public class KGramBasedBirthmarkService implements BirthmarkService{
- private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
- private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this);
-
- @Override
- public String getType(){
- return "kgram";
- }
-
- @Override
- public String getDescription(){
- return "k-gram based birthmark.";
- }
-
- @Override
- public BirthmarkExtractor getExtractor(){
- return extractor;
- }
-
- @Override
- public BirthmarkComparator getComparator(){
- return comparator;
- }
-
- @Override
- public boolean isExperimental(){
- return false;
- }
-
- @Override
- public boolean isUserDefined(){
- return false;
- }
-
- @Override
- public BirthmarkPreprocessor getPreprocessor(){
- return null;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author Haruaki Tamada
- */
-public class KGramBuilder{
- private static final KGramBuilder builder = new KGramBuilder();
-
- /**
- * private constructor for singleton pattern.
- */
- private KGramBuilder(){
- }
-
- public static KGramBuilder getInstance(){
- return builder;
- }
-
- @SuppressWarnings("unchecked")
- public <T> KGram<T>[] buildKGram(T[] values, int kvalue){
- Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();
-
- if(values.length >= kvalue){
- int max = values.length - (kvalue - 1);
- for(int i = 0; i < max; i++){
- KGram<T> kgram = new KGram<T>(kvalue);
- for(int j = 0; j < kvalue; j++){
- kgram.set(j, values[i + j]);
- }
- kgrams.add(kgram);
- }
- }
- return kgrams.toArray(new KGram[kgrams.size()]);
- }
-
- @SuppressWarnings("unchecked")
- public <T> KGram<T>[] buildKGram(List<T> values, int kvalue){
- Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();
-
- if(values.size() >= kvalue){
- int max = values.size() - (kvalue - 1);
- for(int i = 0; i < max; i++){
- KGram<T> kgram = new KGram<T>(kvalue);
- for(int j = 0; j < kvalue; j++){
- kgram.set(j, values.get(i + j));
- }
- kgrams.add(kgram);
- }
- }
- return kgrams.toArray(new KGram[kgrams.size()]);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import java.util.List;
-
-import org.objectweb.asm.Label;
-import org.objectweb.asm.MethodAdapter;
-import org.objectweb.asm.MethodVisitor;
-import org.objectweb.asm.Opcodes;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class OpcodeExtractionMethodVisitor extends MethodAdapter{
- private List<Integer> opcodes;
-
- public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List<Integer> opcodes){
- super(visitor);
- this.opcodes = opcodes;
- }
-
- @Override
- public void visitFieldInsn(int opcode, String owner, String name, String desc){
- opcodes.add(opcode);
- super.visitFieldInsn(opcode, owner, name, desc);
- }
-
- @Override
- public void visitIincInsn(int var, int increment){
- opcodes.add(Opcodes.IINC);
- super.visitIincInsn(var, increment);
- }
-
- @Override
- public void visitInsn(int opcode){
- opcodes.add(opcode);
- super.visitInsn(opcode);
- }
-
- @Override
- public void visitIntInsn(int opcode, int operand){
- opcodes.add(opcode);
- super.visitIntInsn(opcode, operand);
- }
-
- @Override
- public void visitJumpInsn(int opcode, Label label){
- opcodes.add(opcode);
- super.visitJumpInsn(opcode, label);
- }
-
- @Override
- public void visitLdcInsn(Object value){
- opcodes.add(Opcodes.LDC);
- super.visitLdcInsn(value);
- }
-
- @Override
- public void visitLookupSwitchInsn(Label defaultHandle, int[] keys, Label[] labels){
- opcodes.add(Opcodes.LOOKUPSWITCH);
- super.visitLookupSwitchInsn(defaultHandle, keys, labels);
- }
-
- @Override
- public void visitMethodInsn(int opcode, String owner, String name, String desc){
- opcodes.add(opcode);
- super.visitMethodInsn(opcode, owner, name, desc);
- }
-
- @Override
- public void visitMultiANewArrayInsn(String desc, int dims){
- opcodes.add(Opcodes.MULTIANEWARRAY);
- super.visitMultiANewArrayInsn(desc, dims);
- }
-
- @Override
- public void visitTableSwitchInsn(int min, int max, Label defaultLabel, Label[] labels){
- opcodes.add(Opcodes.TABLESWITCH);
- super.visitTableSwitchInsn(min, max, defaultLabel, labels);
- }
-
- @Override
- public void visitTypeInsn(int opcode, String desc){
- opcodes.add(opcode);
- super.visitTypeInsn(opcode, desc);
- }
-
- @Override
- public void visitVarInsn(int opcode, int var){
- opcodes.add(opcode);
- super.visitVarInsn(opcode, var);
- }
-}
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.smc;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class SequentialMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "smc";
}
- @Override
- public String getExtractorClassName(){
- return SequentialMethodCallBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new SequentialMethodCallBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Sequence of Method Calls birthmark";
+ }
}
\ No newline at end of file
String superName, String[] interfaces){
addSignatureClass(signature);
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(superName)){
- add(superName);
- }
+ addUCElement(superName);
for(String i: interfaces){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(i)){
- add(i);
- }
+ addUCElement(i);
}
}
String signature, String[] exceptions){
if(exceptions != null){
for(String exception: exceptions){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){
- add(exception);
- }
+ addUCElement(exception);
}
}
addMethodDescriptor(desc);
public void visitTypeInsn(int opcode, String desc){
Type type = Type.getType("L" + desc + ";");
if(checkType(type)){
- add(desc);
+ addUCElement(desc);
}
super.visitTypeInsn(opcode, desc);
}
public void visitTryCatchBlock(Label start, Label end, Label handle, String desc){
Type type = Type.getType("L" + desc + ";");
if(checkType(type)){
- add(getType(type));
+ addUCElement(getType(type));
}
super.visitTryCatchBlock(start, end, handle, desc);
}
public void visitMultiANewArrayInsn(String desc, int dims){
Type type = Type.getType(desc);
if(checkType(type)){
- add(getType(type));
+ addUCElement(getType(type));
}
super.visitMultiANewArrayInsn(desc, dims);
}
public void visitLocalVariable(String name, String desc, String signature,
Label start, Label end, int index){
if(checkType(Type.getType(desc))){
- add(desc);
+ addUCElement(desc);
}
addSignatureClass(signature);
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(owner)){
- add(owner);
- }
+ addUCElement(owner);
addDescriptor(desc);
super.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc){
String className = normalize(owner);
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){
- add(className);
- }
+ addUCElement(className);
addMethodDescriptor(desc);
super.visitMethodInsn(opcode, owner, name, desc);
}
SignatureWriter writer = new SignatureWriter(){
@Override
public void visitClassType(String classType){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){
- add(classType);
- }
+ addUCElement(classType);
}
};
in.accept(writer);
Type returnType = Type.getReturnType(desc);
Type[] args = Type.getArgumentTypes(desc);
if(checkType(returnType)){
- add(getType(returnType));
+ addUCElement(getType(returnType));
}
for(Type arg: args){
if(checkType(arg)){
- add(getType(arg));
+ addUCElement(getType(arg));
}
}
}
private void addDescriptor(String desc){
Type type = Type.getType(desc);
if(checkType(type)){
- add(desc);
+ addUCElement(desc);
}
}
return name;
}
- private void add(String name){
- addElement(new BirthmarkElement(normalize(name)));
+ private void addUCElement(String name){
+ if(getEnvironment().getWellknownClassManager().isWellKnownClass(name)){
+ addElement(new BirthmarkElement(normalize(name)));
+ }
}
}
-package jp.sourceforge.stigmata.birthmarks.extractors;
+package jp.sourceforge.stigmata.birthmarks.uc;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
*/
-public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class UsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "uc";
}
- @Override
- public String getExtractorClassName(){
- return UsedClassesBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
public BirthmarkExtractor getExtractor(BirthmarkService service){
return new UsedClassesBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Used classes birthmark";
+ }
}
\ No newline at end of file
@Override
public String getDescription(){
- return "Set of used classes in target class.";
+ return "Used classes birthmark";
}
@Override
import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
import jp.sourceforge.stigmata.event.WarningMessages;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
resultset = engine.filter(resultset);
}
- ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
+ ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat());
ComparisonResultSetPrinter formatter = spi.getComparisonResultSetPrinter();
formatter.printResult(new PrintWriter(System.out), resultset);
}catch(Exception e){
import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
import jp.sourceforge.stigmata.event.WarningMessages;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
});
ExtractionResultSet ers = engine.extract(args, context);
- ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
+ ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat());
ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter();
formatter.printResult(new PrintWriter(System.out), ers);
}catch(Exception ex){
import jp.sourceforge.stigmata.Stigmata;
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.spi.BirthmarkService;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
@Override
public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
BirthmarkService[] spis = context.getEnvironment().findServices();
- ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
+ ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat());
BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter();
try{
package jp.sourceforge.stigmata.filter;
import jp.sourceforge.stigmata.ComparisonPairFilter;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
*/
public abstract class AbstractComparisonPairFilter implements ComparisonPairFilter{
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private Criterion criterion = Criterion.EQUALS_AS;
- public AbstractComparisonPairFilter(ComparisonPairFilterSpi service){
+ public AbstractComparisonPairFilter(ComparisonPairFilterService service){
this.service = service;
}
@Override
- public ComparisonPairFilterSpi getService(){
+ public ComparisonPairFilterService getService(){
return service;
}
+++ /dev/null
-package jp.sourceforge.stigmata.filter;
-
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-abstract class AbstractComparisonPairFilterService extends AbstractServiceProvider implements ComparisonPairFilterSpi{
- @Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter
- );
- }
-
- @Override
- public String getDisplayFilterName(){
- return getDisplayFilterName(Locale.getDefault());
- }
-
- @Override
- public String getDisplayFilterName(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDisplayType(
- locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter
- );
- }
-}
import java.util.List;
import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
CRITERIA.add(Criterion.NOT_EQUALS_AS);
}
- public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+ public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
*/
-public class BirthmarkElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class BirthmarkElementCountComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return BirthmarkElementCountComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "elementcount";
}
@Override
- public String getFilterName(){
- return "elementcount";
+ public String getDescription(){
+ return "Element count Filter";
}
}
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import org.apache.commons.beanutils.BeanUtils;
* @author Haruaki TAMADA
*/
public class ComparisonPairFilterManager{
- private Map<String, ComparisonPairFilterSpi> services = new HashMap<String, ComparisonPairFilterSpi>();
+ private Map<String, ComparisonPairFilterService> services = new HashMap<String, ComparisonPairFilterService>();
private Map<String, ComparisonPairFilterSet> filters = new HashMap<String, ComparisonPairFilterSet>();
private ComparisonPairFilterManager parent;
public ComparisonPairFilterManager(BirthmarkEnvironment env, ComparisonPairFilterManager parent){
this.parent = parent;
- for(Iterator<ComparisonPairFilterSpi> i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){
- ComparisonPairFilterSpi service = i.next();
+ for(Iterator<ComparisonPairFilterService> i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){
+ ComparisonPairFilterService service = i.next();
if(getService(service.getFilterName()) != null){
services.put(service.getFilterName(), service);
}
}
public ComparisonPairFilterManager(BirthmarkEnvironment env){
- for(Iterator<ComparisonPairFilterSpi> i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){
- ComparisonPairFilterSpi service = i.next();
+ for(Iterator<ComparisonPairFilterService> i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){
+ ComparisonPairFilterService service = i.next();
services.put(service.getFilterName(), service);
}
}
return null;
}
- public ComparisonPairFilterSpi removeService(String name){
+ public ComparisonPairFilterService removeService(String name){
if(parent != null && parent.hasService(name)){
parent.removeService(name);
}
return services.remove(name);
}
- public void addService(ComparisonPairFilterSpi service){
+ public void addService(ComparisonPairFilterService service){
if(parent == null || parent.getService(service.getFilterName()) == null){
services.put(service.getFilterName(), service);
}
return (parent != null && parent.hasService(name)) || services.get(name) != null;
}
- public ComparisonPairFilterSpi getService(String name){
- ComparisonPairFilterSpi service = null;
+ public ComparisonPairFilterService getService(String name){
+ ComparisonPairFilterService service = null;
if(parent != null){
service = parent.getService(name);
}
import java.util.List;
import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
private double threshold;
- public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){
+ public SimilarityComparisonPairFilter(ComparisonPairFilterService service){
super(service);
setThreshold(0.8d);
}
package jp.sourceforge.stigmata.filter;
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
*/
-public class SimilarityComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class SimilarityComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
return new SimilarityComparisonPairFilter(this);
}
@Override
- public String getFilterClassName(){
- return SimilarityComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "similarity";
}
@Override
- public String getFilterName(){
- return "similarity";
+ public String getDescription(){
+ return "Filtering all comparison pair by its similarity";
}
}
import java.util.List;
import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
private FilterTarget target = FilterTarget.BOTH_TARGETS;
private String value;
- public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){
+ public TargetNameComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
*/
-public class TargetNameComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class TargetNameComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return TargetNameComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "name";
}
@Override
- public String getFilterName(){
- return "name";
+ public String getDescription(){
+ return "Filtering by Target Name";
}
}
import java.util.List;
import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
private int threshold = 0;
private FilterTarget target;
- public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+ public TotalElementCountComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
*/
-public class TotalElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class TotalElementCountComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return TotalElementCountComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "totalelementcount";
}
@Override
- public String getFilterName(){
- return "totalelementcount";
+ public String getDescription(){
+ return "Filtering Element Count";
}
}
package jp.sourceforge.stigmata.hook;
-import jp.sourceforge.stigmata.spi.StigmataHookSpi;
+import jp.sourceforge.stigmata.spi.StigmataHookService;
/**
*
*
* @author Haruaki Tamada
*/
-public abstract class AbstractStigmataHookService implements StigmataHookSpi{
+public abstract class AbstractStigmataHookService implements StigmataHookService{
@Override
public StigmataRuntimeHook afterComparison(){
return null;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.spi.StigmataHookSpi;
+import jp.sourceforge.stigmata.spi.StigmataHookService;
/**
*
private MultipleStigmataHook buildHook(Phase phase, BirthmarkEnvironment env){
MultipleStigmataHook hooks = new MultipleStigmataHook();
- for(Iterator<StigmataHookSpi> i = env.lookupProviders(StigmataHookSpi.class); i.hasNext(); ){
- StigmataHookSpi service = i.next();
+ for(Iterator<StigmataHookService> i = env.lookupProviders(StigmataHookService.class); i.hasNext(); ){
+ StigmataHookService service = i.next();
switch(phase){
case SETUP:
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
*/
public class PrinterManager{
private static final PrinterManager manager = new PrinterManager();
- private ServiceLoader<ResultPrinterSpi> serviceLoader;
+ private ServiceLoader<ResultPrinterService> serviceLoader;
- private Map<String, ResultPrinterSpi> formats = new HashMap<String, ResultPrinterSpi>();
+ private Map<String, ResultPrinterService> formats = new HashMap<String, ResultPrinterService>();
private PrinterManager(){
- serviceLoader = ServiceLoader.load(ResultPrinterSpi.class);
+ serviceLoader = ServiceLoader.load(ResultPrinterService.class);
load();
}
public static void refresh(BirthmarkEnvironment env){
PrinterManager instance = getInstance();
instance.formats.clear();
- for(Iterator<ResultPrinterSpi> i = env.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){
+ for(Iterator<ResultPrinterService> i = env.lookupProviders(ResultPrinterService.class); i.hasNext(); ){
instance.addService(i.next());
}
}
- public static ResultPrinterSpi getDefaultFormatService(){
+ public static ResultPrinterService getDefaultFormatService(){
return new CsvResultPrinterService();
}
return manager;
}
- public ResultPrinterSpi getService(String format){
+ public ResultPrinterService getService(String format){
return formats.get(format);
}
private void load(){
formats.clear();
- for(Iterator<ResultPrinterSpi> i = serviceLoader.iterator(); i.hasNext(); ){
- ResultPrinterSpi spi = i.next();
+ for(Iterator<ResultPrinterService> i = serviceLoader.iterator(); i.hasNext(); ){
+ ResultPrinterService spi = i.next();
addService(spi);
}
}
- private void addService(ResultPrinterSpi service){
+ private void addService(ResultPrinterService service){
formats.put(service.getFormat(), service);
}
}
package jp.sourceforge.stigmata.printer.csv;
-import java.util.Locale;
-
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.printer.ComparisonPairPrinter;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
*
* @author Haruaki TAMADA
*/
-public class CsvResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{
+public class CsvResultPrinterService implements ResultPrinterService{
private BirthmarkServiceCsvPrinter serviceList = new BirthmarkServiceCsvPrinter();
private ExtractionResultSetCsvPrinter list = new ExtractionResultSetCsvPrinter();
private ComparisonPairCsvPrinter pairPrinter = new ComparisonPairCsvPrinter(list);
* returns a localized description of the birthmark this service provides.
*/
@Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter
- );
+ public String getDescription(){
+ return "Print Birthmarks in Csv Format";
}
@Override
package jp.sourceforge.stigmata.printer.xml;
-import java.util.Locale;
-
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.printer.ComparisonPairPrinter;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
*
* @author Haruaki TAMADA
*/
-public class XmlResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{
+public class XmlResultPrinterService implements ResultPrinterService{
private BirthmarkServiceXmlPrinter serviceList = new BirthmarkServiceXmlPrinter();
private ExtractionResultSetXmlPrinter list = new ExtractionResultSetXmlPrinter();
private ComparisonPairXmlPrinter pairPrinter = new ComparisonPairXmlPrinter(list);
* returns a localized description of the birthmark this service provides.
*/
@Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter
- );
+ public String getDescription(){
+ return "Print Birthmarks in Xml Format";
}
@Override
import jp.sourceforge.stigmata.ExtractionResultSet;
import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory;
import jp.sourceforge.stigmata.result.history.MemoryExtractedBirthmarkHistory;
-import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi;
+import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService;
/**
*
* @author Haruaki Tamada
*/
-public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkService{
private MemoryExtractedBirthmarkHistory history = new MemoryExtractedBirthmarkHistory();
@Override
return BirthmarkStoreTarget.MEMORY;
}
+ @Override
+ public String getType(){
+ return "memory";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks in memory";
+ }
+
}
import jp.sourceforge.stigmata.ExtractionResultSet;
import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory;
import jp.sourceforge.stigmata.result.history.RDBExtractedBirthmarkHistory;
-import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi;
+import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService;
/**
*
* @author Haruaki Tamada
*/
-public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class RDBExtractedBirthmarkService implements ExtractedBirthmarkService{
private DataSource source;
public RDBExtractedBirthmarkService(){
public BirthmarkStoreTarget getTarget(){
return BirthmarkStoreTarget.RDB;
}
+
+ @Override
+ public String getType(){
+ return "rdb";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks to Relational Database.";
+ }
}
import jp.sourceforge.stigmata.ExtractionResultSet;
import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory;
import jp.sourceforge.stigmata.result.history.XmlFileExtractedBirthmarkHistory;
-import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi;
+import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService;
/**
*
* @author Haruaki Tamada
*/
-public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkService{
private File defaultBaseDirectory;
public XmlFileExtractedBirthmarkService(){
public BirthmarkStoreTarget getTarget(){
return BirthmarkStoreTarget.XMLFILE;
}
+
+ @Override
+ public String getType(){
+ return "xmlfile";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks into Xml File";
+ }
}
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.BirthmarkStoreTarget;
import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi;
+import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService;
/**
*
*/
public class ExtractedBirthmarkServiceManager{
private ExtractedBirthmarkServiceManager parent;
- private Map<BirthmarkStoreTarget, ExtractedBirthmarkSpi> targets = new HashMap<BirthmarkStoreTarget, ExtractedBirthmarkSpi>();
+ private Map<BirthmarkStoreTarget, ExtractedBirthmarkService> targets = new HashMap<BirthmarkStoreTarget, ExtractedBirthmarkService>();
private BirthmarkEnvironment env;
public ExtractedBirthmarkServiceManager(BirthmarkEnvironment env){
bst = BirthmarkStoreTarget.XMLFILE;
}
- ExtractedBirthmarkSpi service = findService(bst);
+ ExtractedBirthmarkService service = findService(bst);
return service.createResultSet(context);
}
BirthmarkStoreTarget bst = BirthmarkStoreTarget.valueOf(type);
String path = id.substring(index + 1);
- ExtractedBirthmarkSpi service = findService(bst);
+ ExtractedBirthmarkService service = findService(bst);
if(service != null){
history = service.getHistory(path);
}
return values.toArray(new String[values.size()]);
}
- private synchronized ExtractedBirthmarkSpi findService(BirthmarkStoreTarget bst){
- ExtractedBirthmarkSpi spi = targets.get(bst);
+ private synchronized ExtractedBirthmarkService findService(BirthmarkStoreTarget bst){
+ ExtractedBirthmarkService spi = targets.get(bst);
if(spi == null){
refreshService();
}
}
private synchronized void refreshService(){
- for(Iterator<ExtractedBirthmarkSpi> i = env.lookupProviders(ExtractedBirthmarkSpi.class); i.hasNext(); ){
- ExtractedBirthmarkSpi service = i.next();
+ for(Iterator<ExtractedBirthmarkService> i = env.lookupProviders(ExtractedBirthmarkService.class); i.hasNext(); ){
+ ExtractedBirthmarkService service = i.next();
targets.put(service.getTarget(), service);
}
}
+++ /dev/null
-package jp.sourceforge.stigmata.spi;
-
-import java.util.Locale;
-
-/**
- * Base abstract class for birthmark SPI.
- *
- * @author Haruaki TAMADA
- */
-public abstract class AbstractServiceProvider implements ServiceProvider{
-
- /**
- * returning implementation vendor name of this SPI.
- */
- @Override
- public String getDescription(){
- return getDescription(Locale.getDefault());
- }
-
- /**
- * returning implementation vendor name of this SPI.
- */
- @Override
- public String getVendorName(){
- return getClass().getPackage().getImplementationVendor();
- }
-
- /**
- * returning version of this SPI.
- */
- @Override
- public String getVersion(){
- return getClass().getPackage().getImplementationVersion();
- }
-
-}
package jp.sourceforge.stigmata.spi;
-import java.util.Locale;
-
import jp.sourceforge.stigmata.BirthmarkComparator;
/**
*
* @author Haruaki TAMADA
*/
-public interface BirthmarkComparatorSpi extends ServiceProvider{
+public interface BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
public String getType();
/**
- * returns a localized description of the birthmark this service provides.
- */
- @Override
- public String getDescription(Locale locale);
-
- /**
* returns a localized description of the birthmark in default locale.
*/
- @Override
public String getDescription();
- public String getComparatorClassName();
-
/**
* returns a extractor for the birthmark of this service.
*/
package jp.sourceforge.stigmata.spi;
-import java.util.Locale;
-
import jp.sourceforge.stigmata.BirthmarkExtractor;
/**
*
* @author Haruaki TAMADA
*/
-public interface BirthmarkExtractorSpi extends ServiceProvider{
+public interface BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
*/
public String getType();
/**
- * returns a localized description of the birthmark this service provides.
- */
- @Override
- public String getDescription(Locale locale);
-
- /**
* returns a localized description of the birthmark in default locale.
*/
- @Override
public String getDescription();
- public String getExtractorClassName();
-
/**
* returns a extractor for the birthmark of this service.
*/
package jp.sourceforge.stigmata.spi;
-import java.util.Locale;
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
/**
*
* @author Haruaki TAMADA
*/
-public interface ComparisonPairFilterSpi extends ServiceProvider{
- public String getDisplayFilterName(Locale locale);
-
- public String getDisplayFilterName();
-
+public interface ComparisonPairFilterService{
public String getFilterName();
- public String getFilterClassName();
+ public String getDescription();
public ComparisonPairFilter getFilter();
}
*
* @author Haruaki Tamada
*/
-public interface ExtractedBirthmarkSpi{
+public interface ExtractedBirthmarkService{
/**
* finds and returns history from given parameter.
* @param parameter search base.
public ExtractionResultSet createResultSet(BirthmarkContext context);
public BirthmarkStoreTarget getTarget();
+
+ public String getType();
+
+ public String getDescription();
}
*
* @author Haruaki TAMADA
*/
-public interface ResultPrinterSpi extends ServiceProvider{
+public interface ResultPrinterService{
/**
* return a format.
*/
public String getFormat();
+ public String getDescription();
+
public BirthmarkServicePrinter getBirthmarkServicePrinter();
public ComparisonResultSetPrinter getComparisonResultSetPrinter();
+++ /dev/null
-package jp.sourceforge.stigmata.spi;
-
-import java.util.Locale;
-
-/**
- * Base interface for birthmark SPI.
- *
- * @author Haruaki TAMADA
- */
-public interface ServiceProvider{
- public String getDescription(Locale locale);
-
- public String getDescription();
-
- public String getVendorName();
-
- public String getVersion();
-}
*
* @author Haruaki Tamada
*/
-public interface StigmataHookSpi{
+public interface StigmataHookService{
+ public String getType();
+
+ public String getDescription();
+
public StigmataHook onSetup();
public StigmataHook onTearDown();
import javax.swing.event.ListSelectionListener;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
import jp.sourceforge.talisman.i18n.Messages;
public void initData(){
comparator.addItem("");
- for(Iterator<BirthmarkComparatorSpi> i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorSpi.class); i.hasNext();){
- BirthmarkComparatorSpi service = i.next();
- comparator.addItem(service.getComparatorClassName());
+ for(Iterator<BirthmarkComparatorService> i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorService.class); i.hasNext();){
+ BirthmarkComparatorService service = i.next();
+ comparator.addItem(service.getType());
+ // TODO: 比較器の名前を引っ張る方法を考える.
}
extractor.addItem("");
- for(Iterator<BirthmarkExtractorSpi> i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorSpi.class); i.hasNext();){
- BirthmarkExtractorSpi service = i.next();
- extractor.addItem(service.getExtractorClassName());
+ for(Iterator<BirthmarkExtractorService> i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorService.class); i.hasNext();){
+ BirthmarkExtractorService service = i.next();
+ extractor.addItem(service.getType());
+ // TODO: 考える.
}
}
import jp.sourceforge.stigmata.ExtractionTarget;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
import jp.sourceforge.stigmata.printer.PrinterManager;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction;
import jp.sourceforge.stigmata.ui.swing.actions.SaveAction;
import jp.sourceforge.stigmata.utils.AsciiDataWritable;
Action saveAction = new SaveAction(frame, new AsciiDataWritable(){
@Override
public void writeAsciiData(PrintWriter out, String format){
- ResultPrinterSpi service = PrinterManager.getInstance().getService(format);
+ ResultPrinterService service = PrinterManager.getInstance().getService(format);
if(service == null){
service = PrinterManager.getDefaultFormatService();
}
import jp.sourceforge.stigmata.ComparisonPair;
import jp.sourceforge.stigmata.ComparisonPairElement;
import jp.sourceforge.stigmata.printer.PrinterManager;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
import jp.sourceforge.stigmata.ui.swing.actions.SaveAction;
import jp.sourceforge.stigmata.utils.AsciiDataWritable;
frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){
@Override
public void writeAsciiData(PrintWriter out, String format) throws IOException{
- ResultPrinterSpi service = PrinterManager.getInstance().getService(format);
+ ResultPrinterService service = PrinterManager.getInstance().getService(format);
if(service == null){
service = PrinterManager.getDefaultFormatService();
}
import jp.sourceforge.stigmata.ComparisonResultSet;
import jp.sourceforge.stigmata.printer.PrinterManager;
import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
import jp.sourceforge.stigmata.ui.swing.actions.SaveAction;
import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction;
import jp.sourceforge.stigmata.utils.AsciiDataWritable;
frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){
@Override
public void writeAsciiData(PrintWriter out, String format) throws IOException{
- ResultPrinterSpi service = PrinterManager.getInstance().getService(format);
+ ResultPrinterService service = PrinterManager.getInstance().getService(format);
if(service == null){
service = PrinterManager.getDefaultFormatService();
}
import jp.sourceforge.stigmata.printer.PrinterManager;
import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
import jp.sourceforge.stigmata.ui.swing.actions.SaveAction;
import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction;
import jp.sourceforge.stigmata.utils.AsciiDataWritable;
messages, "savecomparison", new SaveAction(stigmata, new AsciiDataWritable(){
@Override
public void writeAsciiData(PrintWriter out, String format){
- ResultPrinterSpi service = PrinterManager.getInstance().getService(format);
+ ResultPrinterService service = PrinterManager.getInstance().getService(format);
if(service == null){
service = PrinterManager.getDefaultFormatService();
}
import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService;
import jp.sourceforge.stigmata.filter.FilterTarget;
import jp.sourceforge.stigmata.spi.BirthmarkService;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListCellRenderer;
import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
private Pane pane;
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
pane = new Pane(frame, service);
return pane;
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new BirthmarkElementCountComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane implements BirthmarkServiceListener{
private static final long serialVersionUID = -6398073942592186671L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField threshold;
private JComboBox targetType;
private JComboBox birthmarks;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
import java.util.Locale;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
public String getFilterName();
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service);
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service);
- public ComparisonPairFilterSpi getComparisonPairFilterService();
+ public ComparisonPairFilterService getComparisonPairFilterService();
}
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.spi.BirthmarkService;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener;
import jp.sourceforge.stigmata.ui.swing.GUIUtility;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
resetOldComponent();
this.filter = filter;
if(filter != null && filter.getService() != null){
- ComparisonPairFilterSpi service = filter.getService();
- String name = service.getDisplayFilterName();
+ ComparisonPairFilterService service = filter.getService();
+ String name = service.getFilterName();
combo.setSelectedItem(name);
card.show(cardComponent, name);
private void resetOldComponent(){
if(filter != null){
- paneMap.get(filter.getService().getDisplayFilterName()).resetComponents();
+ paneMap.get(filter.getService().getFilterName()).resetComponents();
}
}
card.show(cardComponent, item);
if(paneMap.get(item) != null){
if(filter != null){
- String oldType = filter.getService().getDisplayFilterName();
+ String oldType = filter.getService().getFilterName();
if(item.equals(oldType)){
paneMap.get(item).setFilter(filter);
}
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilter;
import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilterService;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
public class SimilarityComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new SimilarityComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField threshold;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
import jp.sourceforge.stigmata.filter.FilterTarget;
import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilter;
import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilterService;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
public class TargetNameComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new TargetNameComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField value;
private JComboBox targetType;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
import jp.sourceforge.stigmata.filter.FilterTarget;
import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilter;
import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilterService;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new TotalElementCountComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField threshold;
private JComboBox targetType;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkService
jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkService
jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkService
-jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkService
jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkService
jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkService
assertNotNull(env.getService("fmc"));
assertNotNull(env.getService("fuc"));
assertNotNull(env.getService("is"));
- assertNotNull(env.getService("kgram"));
assertNotNull(env.getService("smc"));
assertNotNull(env.getService("uc"));
assertNotNull(env.getService("cvfv_dp"));
Assert.assertNotNull(environment.getService("cvfv"));
Assert.assertNotNull(environment.getService("is"));
Assert.assertNotNull(environment.getService("uc"));
- Assert.assertNotNull(environment.getService("kgram"));
}
@Test
service.getExtractor().getClass().getName()
);
}
-
- @Test
- public void checkKgramBirthmarkService() throws Exception{
- BirthmarkService service = environment.getService("kgram");
-
- Assert.assertNotNull(service.getComparator());
- Assert.assertNotNull(service.getExtractor());
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator",
- service.getComparator().getClass().getName()
- );
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor",
- service.getExtractor().getClass().getName()
- );
- }
}
@Before
public void readBirthmarks() throws Exception{
context = Stigmata.getInstance().createContext();
- context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", "kgram", });
+ context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", });
engine = new BirthmarkEngine(context.getEnvironment());
ExtractionResultSet ers = engine.extract(
package jp.sourceforge.stigmata.birthmarks.cvfv;
+import java.io.FileInputStream;
+
import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkSet;
-import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.Stigmata;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
import org.junit.Assert;
import org.junit.Before;
* @author Haruaki TAMADA
*/
public class CVFVBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
+ private BirthmarkExtractor extractor;
@Before
public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("cvfv");
+ extractor = new ConstantValueOfFieldVariableBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
}
- @Test
- public void checkCVFVBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("cvfv"));
-
- Birthmark birthmark = array[0].getBirthmark("cvfv");
- Assert.assertEquals("cvfv", birthmark.getType());
- Assert.assertEquals(4, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[0].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[1].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[2].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[3].getClass().getName());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/Stigmata;",
- ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[0]).getValue());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/printer/PrinterManager;",
- ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[1]).getValue());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/BirthmarkEnvironment;",
- ((TypeAndValueBirthmarkElement)elements[2]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[2]).getValue());
-
- Assert.assertEquals("Ljava/util/List;",
- ((TypeAndValueBirthmarkElement)elements[3]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[3]).getValue());
- }
@Test
- public void checkCVFVBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
-
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(array.length, 1);
- Assert.assertNotNull(array[0].getBirthmark("cvfv"));
-
- Birthmark birthmark = array[0].getBirthmark("cvfv");
- Assert.assertEquals(birthmark.getType(), "cvfv");
- Assert.assertEquals(3, birthmark.getElementCount());
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("cvfv", birthmark.getType());
BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[0].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[1].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[2].getClass().getName());
+ Assert.assertEquals(2, elements.length);
- Assert.assertEquals("I", ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
- Assert.assertEquals(-1, ((TypeAndValueBirthmarkElement)elements[0]).getValue());
+ Assert.assertTrue(elements[0] instanceof TypeAndValueBirthmarkElement);
+ Assert.assertTrue(elements[1] instanceof TypeAndValueBirthmarkElement);
- Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue());
+ Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
+ Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature());
- Assert.assertEquals(0, ((TypeAndValueBirthmarkElement)elements[2]).getValue());
+ Assert.assertEquals("Hello World", elements[0].getValue());
+ Assert.assertEquals("Lucida Regular", elements[1].getValue());
}
}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.is;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkEngine;
-import jp.sourceforge.stigmata.BirthmarkSet;
-import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.Stigmata;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class ISBirthmarkExtractorTest{
- private BirthmarkEngine engine;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- engine = Stigmata.getInstance().createEngine();
- context = Stigmata.getInstance().createContext();
- context.addBirthmarkType("is");
- }
-
- @Test
- public void checkISBirthmark() throws Exception{
- ExtractionResultSet ers = engine.extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
-
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("is"));
-
- Birthmark birthmark = array[0].getBirthmark("is");
- Assert.assertEquals("is", birthmark.getType());
- Assert.assertEquals(2, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertNull(elements[0].getValue());
- Assert.assertEquals("java.lang.Object", elements[1].getValue());
- }
-
- @Test
- public void checkISBirthmark2() throws Exception{
- ExtractionResultSet ers = engine.extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("is"));
-
- Birthmark birthmark = array[0].getBirthmark("is");
- Assert.assertEquals("is", birthmark.getType());
- Assert.assertEquals(3, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertNull(elements[0].getValue());
- Assert.assertNull(elements[1].getValue());
- Assert.assertEquals("java.lang.Object", elements[2].getValue());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.is;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class InheritanceStructureBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new InheritanceStructureBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("is", birthmark.getType());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals(2, elements.length);
+
+ Assert.assertTrue(elements[0] instanceof NullBirthmarkElement);
+ Assert.assertEquals("java.lang.Object", elements[1].getValue());
+ }
+}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- * @author Haruaki Tamada
- */
-public class KGramTest{
- private String[] plainValues;
- private String[] complexValues;
-
- @Before
- public void buildKGrams(){
- plainValues = new String[] { "a", "b", "c", "d", "e", "f", "g", };
- complexValues = new String[] { "a", "b", "r", "a", "c", "a", "d", "a", "b", "r", "a", };
- }
-
- @Test
- public void checkPlainKGram(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 4);
- Assert.assertEquals(4, kgrams.length);
-
- Assert.assertEquals(4, kgrams[0].getKValue());
- Assert.assertEquals(4, kgrams[1].getKValue());
- Assert.assertEquals(4, kgrams[2].getKValue());
- Assert.assertEquals(4, kgrams[3].getKValue());
-
- Assert.assertArrayEquals(new String[] { "a", "b", "c", "d", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "c", "d", "e", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "c", "d", "e", "f", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "d", "e", "f", "g", }, kgrams[3].toArray());
- }
-
- @Test
- public void checkPlainKGram2(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 3);
- Assert.assertEquals(5, kgrams.length);
-
- Assert.assertEquals(3, kgrams[0].getKValue());
- Assert.assertEquals(3, kgrams[1].getKValue());
- Assert.assertEquals(3, kgrams[2].getKValue());
- Assert.assertEquals(3, kgrams[3].getKValue());
- Assert.assertEquals(3, kgrams[4].getKValue());
-
- Assert.assertArrayEquals(new String[] { "a", "b", "c", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "c", "d", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "c", "d", "e", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "d", "e", "f", }, kgrams[3].toArray());
- Assert.assertArrayEquals(new String[] { "e", "f", "g", }, kgrams[4].toArray());
- }
-
- @Test
- public void checkComplexKGram(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(complexValues, 3);
-
- Assert.assertEquals(7, kgrams.length);
-
- Assert.assertArrayEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "r", "a", "c", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "a", "c", "a", }, kgrams[3].toArray());
- Assert.assertArrayEquals(new String[] { "c", "a", "d", }, kgrams[4].toArray());
- Assert.assertArrayEquals(new String[] { "a", "d", "a", }, kgrams[5].toArray());
- Assert.assertArrayEquals(new String[] { "d", "a", "b", }, kgrams[6].toArray());
- // following kgram is appeared in above.
- // assertEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray());
- // assertEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.smc;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class SequentialMethodCallBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new SequentialMethodCallBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("smc", birthmark.getType());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals(10, elements.length);
+
+ Assert.assertEquals("java.lang.Object#<init>!()V", elements[0].getValue());
+ Assert.assertEquals("javax.swing.JFrame#<init>!()V", elements[1].getValue());
+ Assert.assertEquals("javax.swing.JLabel#<init>!(Ljava/lang/String;)V", elements[2].getValue());
+ Assert.assertEquals("java.awt.Font#<init>!(Ljava/lang/String;II)V", elements[3].getValue());
+ Assert.assertEquals("javax.swing.JLabel#setFont!(Ljava/awt/Font;)V", elements[4].getValue());
+ Assert.assertEquals("javax.swing.JFrame#setDefaultCloseOperation!(I)V", elements[5].getValue());
+ Assert.assertEquals("javax.swing.JFrame#getContentPane!()Ljava/awt/Container;",
+ elements[6].getValue());
+ Assert.assertEquals("java.awt.Container#add!(Ljava/awt/Component;Ljava/lang/Object;)V",
+ elements[7].getValue());
+ Assert.assertEquals("javax.swing.JFrame#pack!()V", elements[8].getValue());
+ Assert.assertEquals("javax.swing.JFrame#setVisible!(Z)V", elements[9].getValue());
+ }
+}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.smc;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkSet;
-import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.Stigmata;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class SmcBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("smc");
- }
-
- @Test
- public void checkSmcBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("smc"));
-
- Birthmark birthmark = array[0].getBirthmark("smc");
- Assert.assertEquals("smc", birthmark.getType());
-
- BirthmarkElement[] elements = birthmark.getElements();
- for(int i = 0; i < elements.length; i++){
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement",
- elements[i].getClass().getName()
- );
- }
- /*
- Assert.assertEquals(76, birthmark.getElementCount());
- int index = 0;
- Assert.assertEquals("java.io.FileInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#exists", elements[index++].getValue());
- Assert.assertEquals("java.lang.System#getProperty", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#exists", elements[index++].getValue());
- Assert.assertEquals("java.io.FileInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class#getResourceAsStream", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#toURI", elements[index++].getValue());
- Assert.assertEquals("java.net.URI#toURL", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.net.URL#openStream", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#size", elements[index++].getValue());
- Assert.assertEquals("java.util.List#toArray", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class#getName", elements[index++].getValue());
- Assert.assertEquals("java.util.logging.Logger#getLogger", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue());
- Assert.assertEquals("java.util.logging.Logger#warning", elements[index++].getValue());
- Assert.assertEquals("java.util.List#size", elements[index++].getValue());
- Assert.assertEquals("java.util.List#toArray", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#valueOf", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue());
- Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#describe",
- elements[index++].getValue());
- Assert.assertEquals("java.util.Map#remove", elements[index++].getValue());
- Assert.assertEquals("java.util.Map#remove", elements[index++].getValue());
- Assert.assertEquals("java.util.Map#keySet", elements[index++].getValue());
- Assert.assertEquals("java.util.Set#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#valueOf", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue());
- Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#setProperty",
- elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.InputStream#read", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#write", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#toByteArray",
- elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#close", elements[index++].getValue());
- Assert.assertEquals("javax.imageio.spi.ServiceRegistry#lookupProviders",
- elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- */
- }
-
- @Test
- public void checkSmcBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(array.length, 1);
- Assert.assertNotNull(array[0].getBirthmark("smc"));
-
- Birthmark birthmark = array[0].getBirthmark("smc");
- Assert.assertEquals("smc", birthmark.getType());
- Assert.assertEquals(18, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- for(int i = 0; i < elements.length; i++){
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement",
- elements[i].getClass().getName()
- );
- }
- /*
- int index = 0;
- // <init>(ExtractionResult, BirthmarkEnvironment, boolean)
- Assert.assertEquals("java.lang.Object#<init>", elements[index++].toString());
-
- // getComparisonSources
- Assert.assertEquals("java.util.ArrayArrays#<init>", elements[index++].toString());
- Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());
-
- // setCompareSamePair
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
-
- // getComparisonSources
- Assert.assertEquals("java.util.HashMap#<init>", elements[index++].toString());
- Assert.assertEquals("java.util.List#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map#put", elements[index++].toString());
- Assert.assertEquals("java.util.List#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map#put", elements[index++].toString());
- Assert.assertEquals("java.util.Map#size", elements[index++].toString());
- Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString());
- Assert.assertEquals("java.util.Set#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString());
- */
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.uc;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkSet;
-import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.Stigmata;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- * @author Haruaki TAMADA
- */
-public class UCBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("uc");
- }
-
- @Test
- public void checkUCBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("uc"));
-
- Birthmark birthmark = array[0].getBirthmark("uc");
- Assert.assertEquals("uc", birthmark.getType());
- Assert.assertEquals(18, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- int index = 0;
- Assert.assertEquals("java.io.File", elements[index++].getValue());
- Assert.assertEquals("java.io.FileFilter", elements[index++].getValue());
- Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue());
- Assert.assertEquals("java.io.FileWriter", elements[index++].getValue());
- Assert.assertEquals("java.io.InputStream", elements[index++].getValue());
- Assert.assertEquals("java.io.PrintWriter", elements[index++].getValue());
- Assert.assertEquals("java.io.Writer", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class", elements[index++].getValue());
- Assert.assertEquals("java.lang.ClassLoader", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object", elements[index++].getValue());
- Assert.assertEquals("java.lang.String", elements[index++].getValue());
- Assert.assertEquals("java.lang.System", elements[index++].getValue());
- Assert.assertEquals("java.net.URI", elements[index++].getValue());
- Assert.assertEquals("java.net.URL", elements[index++].getValue());
- Assert.assertEquals("java.net.URLClassLoader", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.List", elements[index++].getValue());
- }
-
- @Test
- public void checkUCBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("uc"));
-
- Birthmark birthmark = array[0].getBirthmark("uc");
- Assert.assertEquals("uc", birthmark.getType());
- Assert.assertEquals(9, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- int index = 0;
- Assert.assertEquals("java.lang.Object", elements[index++].getValue());
- Assert.assertEquals("java.lang.String", elements[index++].getValue());
- Assert.assertEquals("java.net.URL", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList", elements[index++].getValue());
- Assert.assertEquals("java.util.Collection", elements[index++].getValue());
- Assert.assertEquals("java.util.HashMap", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.List", elements[index++].getValue());
- Assert.assertEquals("java.util.Map", elements[index++].getValue());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.uc;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class UsedClassesBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new UsedClassesBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+
+ Assert.assertEquals("uc", birthmark.getType());
+ Assert.assertEquals(7, birthmark.getElementCount());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals("java.awt.Component", elements[0].getValue());
+ Assert.assertEquals("java.awt.Container", elements[1].getValue());
+ Assert.assertEquals("java.awt.Font", elements[2].getValue());
+ Assert.assertEquals("java.lang.Object", elements[3].getValue());
+ Assert.assertEquals("java.lang.String", elements[4].getValue());
+ Assert.assertEquals("javax.swing.JFrame", elements[5].getValue());
+ Assert.assertEquals("javax.swing.JLabel", elements[6].getValue());
+ }
+}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.uc;\r
+\r
+import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;\r
+import junit.framework.Assert;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+\r
+public class UsedClassesBirthmarkServiceTest{\r
+ private UsedClassesBirthmarkService service;\r
+\r
+ @Before\r
+ public void setUp(){\r
+ service = new UsedClassesBirthmarkService();\r
+ }\r
+\r
+ @Test\r
+ public void testBasic(){\r
+ Assert.assertEquals("uc", service.getType());\r
+ Assert.assertEquals("Used classes birthmark", service.getDescription());\r
+ Assert.assertFalse(service.isExperimental());\r
+ Assert.assertFalse(service.isUserDefined());\r
+ Assert.assertEquals(UsedClassesBirthmarkExtractor.class, service.getExtractor().getClass());\r
+ Assert.assertEquals(LogicalAndBirthmarkComparator.class, service.getComparator().getClass());\r
+ Assert.assertNull(service.getPreprocessor());\r
+ }\r
+}\r
--- /dev/null
+import java.awt.BorderLayout;\r
+import java.awt.Font;\r
+\r
+import javax.swing.JFrame;\r
+import javax.swing.JLabel;\r
+\r
+\r
+public class HelloWorldFrame{\r
+ private String message = "Hello World";\r
+ private String fontName = "Lucida Regular";\r
+\r
+ public HelloWorldFrame(){\r
+ JFrame frame = new JFrame();\r
+ JLabel label = new JLabel(message);\r
+ label.setFont(new Font(fontName, Font.BOLD, 72));\r
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
+ frame.getContentPane().add(label, BorderLayout.CENTER);\r
+ frame.pack();\r
+ frame.setVisible(true);\r
+ }\r
+\r
+ public static void main(String[] args){\r
+ new HelloWorldFrame();\r
+ }\r
+}
\ No newline at end of file