OSDN Git Service

Spiという名前をすべてServiceに変更した.
authorHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Wed, 13 Apr 2011 02:54:52 +0000 (11:54 +0900)
committerHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Wed, 13 Apr 2011 02:55:28 +0000 (11:55 +0900)
細かな変更をちょこちょこと.

94 files changed:
pom.xml
src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java
src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java with 67% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java with 62% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java with 62% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java with 62% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java with 62% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java with 63% similarity]
src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/command/CompareCommand.java
src/main/java/jp/sourceforge/stigmata/command/ExtractCommand.java
src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java
src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java
src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java
src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java
src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java
src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java
src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java
src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java
src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java
src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java
src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java
src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java
src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java
src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java [deleted file]
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java with 64% similarity]
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java with 65% similarity]
src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java with 54% similarity]
src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java with 87% similarity]
src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java with 91% similarity]
src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java [deleted file]
src/main/java/jp/sourceforge/stigmata/spi/StigmataHookService.java [moved from src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java with 84% similarity]
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi with 100% similarity]
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi with 100% similarity]
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi with 100% similarity]
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi with 100% similarity]
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi with 100% similarity]
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookSpi with 100% similarity]
src/test/java/jp/sourceforge/stigmata/ServiceListTest.java
src/test/java/jp/sourceforge/stigmata/StigmataTest.java
src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java
src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java
src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java [deleted file]
src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java [deleted file]
src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java [deleted file]
src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java [deleted file]
src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java [new file with mode: 0644]
src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java [new file with mode: 0644]
src/test/resources/resources/HelloWorldFrame.class [new file with mode: 0644]
src/test/resources/resources/HelloWorldFrame.java [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 6c234bd..656b628 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,7 @@
   <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
index 9f5ab1f..2e01d89 100644 (file)
@@ -14,7 +14,6 @@ import java.util.Map;
 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;
@@ -48,14 +47,12 @@ public class BirthmarkEngine{
     private WarningMessages warnings;
     private OperationType latestOperationType;
     private OperationType targetType;
-    private BirthmarkExtractorFactory factory;
 
     /**
      * constructor.
      */
     public BirthmarkEngine(BirthmarkEnvironment env){
         this.environment = env;
-        factory = new BirthmarkExtractorFactory(env);
     }
 
     /**
@@ -352,18 +349,15 @@ public class BirthmarkEngine{
 
                     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){
@@ -400,14 +394,11 @@ public class BirthmarkEngine{
                     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);
@@ -428,19 +419,16 @@ public class BirthmarkEngine{
                 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());
index e718d90..75e05a1 100644 (file)
@@ -36,6 +36,11 @@ public interface BirthmarkExtractor{
     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;
index 71fcdb4..2359d97 100644 (file)
@@ -1,7 +1,7 @@
 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.
@@ -24,5 +24,5 @@ public interface ComparisonPairFilter{
 
     public Criterion getCriterion();
 
-    public ComparisonPairFilterSpi getService();
+    public ComparisonPairFilterService getService();
 }
index dfe50d7..76b9a64 100644 (file)
@@ -5,6 +5,7 @@ import java.io.InputStream;
 
 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;
@@ -43,6 +44,10 @@ public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{
         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.
      */
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java
deleted file mode 100644 (file)
index 8f95511..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-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;
-    }
-}
-
index 1fbe975..9829c1f 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmar
         return "cosine";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return CosineSimilarityBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmar
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new CosineSimilarityBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Cosine Similarity";
+    }
 }
 
index c148662..b14b0c6 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkCompa
         return "dpmatching";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return DPMatchingBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkCompa
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new DPMatchingBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "DP Matching";
+    }
 }
 
index 9a2f4b0..020312b 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkCom
         return "editdistancee";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return EditDistanceBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkCom
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new EditDistanceBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Edit Distance";
+    }
 }
 
index 59e9384..99f8e04 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirt
         return "editdistanceext";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return ExtendedEditDistanceBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirt
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new ExtendedEditDistanceBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Extended Edit Distance";
+    }
 }
 
index 0e1dae4..17e9d71 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkCompa
         return "and";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return LogicalAndBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkCompa
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new LogicalAndBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Logical And Comparator";
+    }
 }
 
index 3ef93f5..67efdf4 100644 (file)
@@ -1,6 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
 import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
@@ -9,7 +10,7 @@ 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.
      */
@@ -18,11 +19,6 @@ public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparator
         return "plain";
     }
 
-    @Override
-    public String getComparatorClassName(){
-        return PlainBirthmarkComparator.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -30,5 +26,10 @@ public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparator
     public BirthmarkComparator getComparator(BirthmarkService service){
         return new PlainBirthmarkComparator(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Plain Comparator";
+    }
 }
 
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class ConstantValueOfFieldVariableBirthmarkExtractorService extends Abstr
         return "cvfv";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return ConstantValueOfFieldVariableBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class ConstantValueOfFieldVariableBirthmarkExtractorService extends Abstr
     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
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java
deleted file mode 100644 (file)
index 5f82501..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-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;
-    }
-}
-
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java
deleted file mode 100644 (file)
index 9b00dda..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-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;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java
deleted file mode 100644 (file)
index 7dc8e70..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-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
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthm
         return "fmc";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return FrequencyMethodCallBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthm
     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
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirth
         return "fuc";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return FrequencyUsedClassesBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirth
     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
index 3c73e18..347d191 100644 (file)
@@ -5,10 +5,14 @@ import jp.sourceforge.stigmata.BirthmarkContext;
 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;
+
 /**
  * 
  * 
@@ -23,16 +27,44 @@ public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtrac
     @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{
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class InheritanceStructureBirthmarkExtractorService extends AbstractBirth
         return "is";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return InheritanceStructureBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class InheritanceStructureBirthmarkExtractorService extends AbstractBirth
     public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new InheritanceStructureBirthmarkExtractor(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Inheritance Structure birthmark";
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java
deleted file mode 100644 (file)
index df01c2d..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-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 }'' -&gt; ``{ 1, 2, 3, null }'' and return 2<li>
-     *   <li>``{ 1, null, 3, null }'' -&gt; ``{ 1, 2, 3, null }'' and return 1<li>
-     *   <li>``{ 1, 2, 3, 4 }'' -&gt; ``{ 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);
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java
deleted file mode 100644 (file)
index f04dc7a..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-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); 
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java
deleted file mode 100644 (file)
index 0d5d916..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-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;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java
deleted file mode 100644 (file)
index 9c8e527..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-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;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java
deleted file mode 100644 (file)
index 571a1b6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-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;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java
deleted file mode 100644 (file)
index 6db7de2..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-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
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java
deleted file mode 100644 (file)
index 3120621..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-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);
-    }
-}
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirth
         return "smc";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return SequentialMethodCallBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirth
     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
index adbd9d1..0ff0b4e 100644 (file)
@@ -29,13 +29,9 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             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);
         }
     }
 
@@ -55,9 +51,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
                                      String signature, String[] exceptions){
         if(exceptions != null){
             for(String exception: exceptions){
-                if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){
-                    add(exception);
-                }
+                addUCElement(exception);
             }
         }
         addMethodDescriptor(desc);
@@ -70,7 +64,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             public void visitTypeInsn(int opcode, String desc){
                 Type type = Type.getType("L" + desc + ";");
                 if(checkType(type)){
-                    add(desc);
+                    addUCElement(desc);
                 }
                 super.visitTypeInsn(opcode, desc);
             }
@@ -79,7 +73,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             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);
             }
@@ -88,7 +82,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             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);
             }
@@ -97,7 +91,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             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);
 
@@ -106,18 +100,14 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
 
             @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);
             }
@@ -130,9 +120,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
             SignatureWriter writer = new SignatureWriter(){
                 @Override
                 public void visitClassType(String classType){
-                    if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){
-                        add(classType);
-                    }
+                    addUCElement(classType);
                 }
             };
             in.accept(writer);
@@ -143,11 +131,11 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
         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));
             }
         }
     }
@@ -155,7 +143,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
     private void addDescriptor(String desc){
         Type type = Type.getType(desc);
         if(checkType(type)){
-            add(desc);
+            addUCElement(desc);
         }
     }
 
@@ -198,7 +186,9 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
         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)));
+        }
     }
 }
@@ -1,7 +1,7 @@
-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;
 
 /**
@@ -9,7 +9,7 @@ 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.
@@ -19,11 +19,6 @@ public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtra
         return "uc";
     }
 
-    @Override
-    public String getExtractorClassName(){
-        return UsedClassesBirthmarkExtractor.class.getName();
-    }
-
     /**
      * returns a extractor for the birthmark of this service.
      */
@@ -31,4 +26,9 @@ public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtra
     public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new UsedClassesBirthmarkExtractor(service);
     }
+
+    @Override
+    public String getDescription(){
+        return "Used classes birthmark";
+    }
 }
\ No newline at end of file
index 473ced9..5b5da29 100644 (file)
@@ -23,7 +23,7 @@ public class UsedClassesBirthmarkService implements BirthmarkService{
 
     @Override
     public String getDescription(){
-        return "Set of used classes in target class.";
+        return "Used classes birthmark";
     }
 
     @Override
index 47a812f..1d2ef92 100644 (file)
@@ -13,7 +13,7 @@ import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter;
 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;
 
 /**
  * 
@@ -51,7 +51,7 @@ public class CompareCommand extends AbstractStigmataCommand{
                 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){
index 68eacee..ac72845 100644 (file)
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter;
 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;
 
 /**
  * 
@@ -46,7 +46,7 @@ public class ExtractCommand extends AbstractStigmataCommand{
             });
             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){
index ea2fc15..7a20fca 100644 (file)
@@ -8,7 +8,7 @@ import jp.sourceforge.stigmata.BirthmarkContext;
 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;
 
 /**
  * 
@@ -23,7 +23,7 @@ public class ListBirthmarksCommand extends AbstractStigmataCommand{
     @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{
index eeb6be7..ab6b045 100644 (file)
@@ -1,22 +1,22 @@
 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;
     }
 
diff --git a/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java
deleted file mode 100644 (file)
index 789dbf9..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-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
-            );
-    }
-}
index 084a141..c7a22f2 100644 (file)
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
 
 /**
  * 
@@ -26,7 +26,7 @@ public class BirthmarkElementCountComparisonPairFilter extends AbstractCompariso
         CRITERIA.add(Criterion.NOT_EQUALS_AS);
     }
 
-    public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+    public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterService service){
         super(service);
     }
 
index 0051fbc..7897f1c 100644 (file)
@@ -1,12 +1,13 @@
 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(){
@@ -14,12 +15,12 @@ public class BirthmarkElementCountComparisonPairFilterService extends AbstractCo
     }
 
     @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";
     }
 }
index d110f9d..263a0b9 100644 (file)
@@ -10,7 +10,7 @@ import java.util.Map;
 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;
 
@@ -19,14 +19,14 @@ 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);
             }
@@ -34,8 +34,8 @@ public class ComparisonPairFilterManager{
     }
 
     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);
         }
     }
@@ -122,14 +122,14 @@ public class ComparisonPairFilterManager{
         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);
         }
@@ -139,8 +139,8 @@ public class ComparisonPairFilterManager{
         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);
         }
index b6c2fd0..5729992 100644 (file)
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
 
 /**
  * 
@@ -25,7 +25,7 @@ public class SimilarityComparisonPairFilter extends AbstractComparisonPairFilter
 
     private double threshold;
 
-    public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){
+    public SimilarityComparisonPairFilter(ComparisonPairFilterService service){
         super(service);
         setThreshold(0.8d);
     }
index b35503e..8700d95 100644 (file)
@@ -1,24 +1,25 @@
 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";
     }
 }
index 28728e9..293c738 100644 (file)
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
 
 /**
  * 
@@ -26,7 +26,7 @@ public class TargetNameComparisonPairFilter extends AbstractComparisonPairFilter
     private FilterTarget target = FilterTarget.BOTH_TARGETS;
     private String value;
 
-    public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){
+    public TargetNameComparisonPairFilter(ComparisonPairFilterService service){
         super(service);
     }
 
index bc8d870..92442bf 100644 (file)
@@ -1,12 +1,13 @@
 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(){
@@ -14,12 +15,12 @@ public class TargetNameComparisonPairFilterService extends AbstractComparisonPai
     }
 
     @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";
     }
 }
index 5bd4227..a62a3d5 100644 (file)
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import jp.sourceforge.stigmata.ComparisonPair;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
 
 /**
  * 
@@ -26,7 +26,7 @@ public class TotalElementCountComparisonPairFilter extends AbstractComparisonPai
     private int threshold = 0;
     private FilterTarget target;
 
-    public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+    public TotalElementCountComparisonPairFilter(ComparisonPairFilterService service){
         super(service);
     }
 
index 87e6dab..59d79ba 100644 (file)
@@ -1,12 +1,13 @@
 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(){
@@ -14,12 +15,12 @@ public class TotalElementCountComparisonPairFilterService extends AbstractCompar
     }
 
     @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";
     }
 }
index 855b94f..4b4aa28 100644 (file)
@@ -1,13 +1,13 @@
 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;
index a4ff65c..63c90f0 100644 (file)
@@ -4,7 +4,7 @@ import java.util.Iterator;
 
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.spi.StigmataHookSpi;
+import jp.sourceforge.stigmata.spi.StigmataHookService;
 
 /**
  * 
@@ -36,8 +36,8 @@ public class StigmataHookManager{
     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:
index 384e9f1..fef34f1 100644 (file)
@@ -7,7 +7,7 @@ import java.util.ServiceLoader;
 
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
 
 /**
  *
@@ -15,12 +15,12 @@ import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
  */
 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();
     }
 
@@ -32,12 +32,12 @@ public class PrinterManager{
     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();
     }
 
@@ -45,19 +45,19 @@ public class PrinterManager{
         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);
     }
 }
index 6efe566..fd75d39 100644 (file)
@@ -1,14 +1,10 @@
 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;
 
 /**
  * 
@@ -16,7 +12,7 @@ import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
  *
  * @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);
@@ -26,10 +22,8 @@ public class CsvResultPrinterService extends AbstractServiceProvider implements
      * 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
index c9883f0..5e29082 100644 (file)
@@ -1,14 +1,10 @@
 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;
 
 /**
  * 
@@ -16,7 +12,7 @@ import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
  *
  * @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);
@@ -26,10 +22,8 @@ public class XmlResultPrinterService extends AbstractServiceProvider implements
      * 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
index 9284811..c6d819e 100644 (file)
@@ -5,13 +5,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget;
 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
@@ -36,4 +36,14 @@ public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{
         return BirthmarkStoreTarget.MEMORY;
     }
 
+    @Override
+    public String getType(){
+        return "memory";
+    }
+
+    @Override
+    public String getDescription(){
+        return "Store birthmarks in memory";
+    }
+
 }
index 2287573..2b16192 100644 (file)
@@ -7,13 +7,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget;
 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(){
@@ -38,4 +38,14 @@ public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{
     public BirthmarkStoreTarget getTarget(){
         return BirthmarkStoreTarget.RDB;
     }
+
+    @Override
+    public String getType(){
+        return "rdb";
+    }
+
+    @Override
+    public String getDescription(){
+        return "Store birthmarks to Relational Database.";
+    }
 }
index c9f3d4b..b01db0e 100644 (file)
@@ -8,13 +8,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget;
 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(){
@@ -56,4 +56,14 @@ public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{
     public BirthmarkStoreTarget getTarget(){
         return BirthmarkStoreTarget.XMLFILE;
     }
+
+    @Override
+    public String getType(){
+        return "xmlfile";
+    }
+
+    @Override
+    public String getDescription(){
+        return "Store birthmarks into Xml File";
+    }
 }
index f90ca11..694f1da 100644 (file)
@@ -14,7 +14,7 @@ import jp.sourceforge.stigmata.BirthmarkContext;
 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;
 
 /**
  * 
@@ -22,7 +22,7 @@ import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi;
  */
 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){
@@ -48,7 +48,7 @@ public class ExtractedBirthmarkServiceManager{
             bst = BirthmarkStoreTarget.XMLFILE;
         }
 
-        ExtractedBirthmarkSpi service = findService(bst);
+        ExtractedBirthmarkService service = findService(bst);
 
         return service.createResultSet(context);
     }
@@ -64,7 +64,7 @@ public class ExtractedBirthmarkServiceManager{
             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);
             }
@@ -90,8 +90,8 @@ public class ExtractedBirthmarkServiceManager{
         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();
         }
@@ -101,8 +101,8 @@ public class ExtractedBirthmarkServiceManager{
     }
 
     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);
         }
     }
diff --git a/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java
deleted file mode 100644 (file)
index 8ce6550..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-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();
-    }
-
-}
@@ -1,7 +1,5 @@
 package jp.sourceforge.stigmata.spi;
 
-import java.util.Locale;
-
 import jp.sourceforge.stigmata.BirthmarkComparator;
 
 /**
@@ -9,26 +7,17 @@ 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.
      */
@@ -1,7 +1,5 @@
 package jp.sourceforge.stigmata.spi;
 
-import java.util.Locale;
-
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 
 /**
@@ -9,26 +7,17 @@ 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.
      */
@@ -1,7 +1,5 @@
 package jp.sourceforge.stigmata.spi;
 
-import java.util.Locale;
-
 import jp.sourceforge.stigmata.ComparisonPairFilter;
 
 /**
@@ -9,14 +7,10 @@ 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();
 }
@@ -10,7 +10,7 @@ import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory;
  * 
  * @author Haruaki Tamada
  */
-public interface ExtractedBirthmarkSpi{
+public interface ExtractedBirthmarkService{
     /**
      * finds and returns history from given parameter.
      * @param parameter search base.
@@ -23,4 +23,8 @@ public interface ExtractedBirthmarkSpi{
     public ExtractionResultSet createResultSet(BirthmarkContext context);
 
     public BirthmarkStoreTarget getTarget();
+
+    public String getType();
+
+    public String getDescription();
 }
@@ -11,12 +11,14 @@ import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
  *
  * @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();
diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java
deleted file mode 100644 (file)
index 80e211d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-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();
-}
@@ -7,7 +7,11 @@ import jp.sourceforge.stigmata.hook.StigmataRuntimeHook;
  * 
  * @author Haruaki Tamada
  */
-public interface StigmataHookSpi{
+public interface StigmataHookService{
+    public String getType();
+
+    public String getDescription();
+
     public StigmataHook onSetup();
 
     public StigmataHook onTearDown();
index 9e371b2..16dc54d 100644 (file)
@@ -28,8 +28,8 @@ import javax.swing.event.ListSelectionEvent;
 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;
@@ -304,14 +304,16 @@ public class BirthmarkDefinitionPane extends JPanel{
 
         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: 考える.
             }
         }
 
index 67512dc..7302dcd 100644 (file)
@@ -17,7 +17,7 @@ import jp.sourceforge.stigmata.ExtractionResultSet;
 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;
@@ -44,7 +44,7 @@ public class BirthmarkExtractionResultPane extends JPanel{
         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();
                 }
index 8a342be..75d9da9 100644 (file)
@@ -22,7 +22,7 @@ import jp.sourceforge.stigmata.BirthmarkSet;
 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;
 
@@ -74,7 +74,7 @@ public class PairComparisonPane extends JPanel{
             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();
                     }
index a305abe..e5ea8ec 100644 (file)
@@ -30,7 +30,7 @@ import jp.sourceforge.stigmata.ComparisonPair;
 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;
@@ -124,7 +124,7 @@ public class PairComparisonResultSetPane extends JPanel{
             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();
                     }
index 52f8a12..cb530c4 100644 (file)
@@ -40,7 +40,7 @@ import jp.sourceforge.stigmata.filter.FilteredComparisonResultSet;
 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;
@@ -246,7 +246,7 @@ public class RoundRobinComparisonResultPane extends JPanel{
             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();
                     }
index 35a3a56..5dd88a7 100644 (file)
@@ -14,7 +14,7 @@ import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilter;
 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;
@@ -27,7 +27,7 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A
     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;
     }
@@ -48,20 +48,20 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A
     }
 
     @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();
index 75a6147..4996f5f 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.ui.swing.filter;
 
 import java.util.Locale;
 
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
 import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
 
 /**
@@ -16,7 +16,7 @@ public interface ComparisonPairFilterComponentService{
 
     public String getFilterName();
 
-    public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service);
+    public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service);
 
-    public ComparisonPairFilterSpi getComparisonPairFilterService();
+    public ComparisonPairFilterService getComparisonPairFilterService();
 }
index 59eb6e4..0eb4b46 100644 (file)
@@ -21,7 +21,7 @@ import javax.swing.JPanel;
 
 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;
@@ -71,8 +71,8 @@ public class FilterEditingPane extends JPanel{
         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);
@@ -83,7 +83,7 @@ public class FilterEditingPane extends JPanel{
 
     private void resetOldComponent(){
         if(filter != null){
-            paneMap.get(filter.getService().getDisplayFilterName()).resetComponents();
+            paneMap.get(filter.getService().getFilterName()).resetComponents();
         }
     }
 
@@ -143,7 +143,7 @@ public class FilterEditingPane extends JPanel{
                 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);
                         }
index 5aacbcd..a036692 100644 (file)
@@ -13,7 +13,7 @@ import javax.swing.event.DocumentListener;
 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;
 
 /**
@@ -23,7 +23,7 @@ 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);
     }
 
@@ -33,17 +33,17 @@ public class SimilarityComparisonPairFilterComponentService extends AbstractComp
     }
 
     @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();
index fb003e6..b7aaacc 100644 (file)
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.ComparisonPairFilter;
 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;
 
 /**
@@ -21,7 +21,7 @@ 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);
     }
 
@@ -31,18 +31,18 @@ public class TargetNameComparisonPairFilterComponentService extends AbstractComp
     }
 
     @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();
index 1c3bef4..9627a7b 100644 (file)
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.ComparisonPairFilter;
 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;
 
 /**
@@ -21,7 +21,7 @@ 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);
     }
 
@@ -31,18 +31,18 @@ public class TotalElementCountComparisonPairFilterComponentService extends Abstr
     }
 
     @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();
index 0869b5d..ea481c3 100644 (file)
@@ -2,6 +2,5 @@ jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkService
 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
index 39d06bb..696e726 100644 (file)
@@ -22,7 +22,6 @@ public class ServiceListTest{
         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"));
index 04ba6af..4aa3925 100644 (file)
@@ -27,7 +27,6 @@ public class StigmataTest{
         Assert.assertNotNull(environment.getService("cvfv"));
         Assert.assertNotNull(environment.getService("is"));
         Assert.assertNotNull(environment.getService("uc"));
-        Assert.assertNotNull(environment.getService("kgram"));
     }
 
     @Test
@@ -93,20 +92,4 @@ public class StigmataTest{
             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()
-        );
-    }
 }
index df06be0..827c9b1 100644 (file)
@@ -23,7 +23,7 @@ public class BirthmarkCompareTest{
     @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(
index 21e1d3e..ab60f94 100644 (file)
@@ -1,11 +1,15 @@
 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;
@@ -16,89 +20,33 @@ import org.junit.Test;
  * @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());
     }
 }
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java
deleted file mode 100644 (file)
index 4c76f1f..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-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());
-    }
-}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java
new file mode 100644 (file)
index 0000000..1b05b40
--- /dev/null
@@ -0,0 +1,46 @@
+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());
+    }
+}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java
deleted file mode 100644 (file)
index b34ecb2..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-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());
-    }
-}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java
new file mode 100644 (file)
index 0000000..7cc4474
--- /dev/null
@@ -0,0 +1,56 @@
+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());
+    }
+}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java
deleted file mode 100644 (file)
index 1ef3e50..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-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());
-        */
-    }
-}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java
deleted file mode 100644 (file)
index 15a1200..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-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());
-    }
-}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java
new file mode 100644 (file)
index 0000000..620821c
--- /dev/null
@@ -0,0 +1,50 @@
+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());
+    }
+}
diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java
new file mode 100644 (file)
index 0000000..a30b723
--- /dev/null
@@ -0,0 +1,27 @@
+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
diff --git a/src/test/resources/resources/HelloWorldFrame.class b/src/test/resources/resources/HelloWorldFrame.class
new file mode 100644 (file)
index 0000000..9766373
Binary files /dev/null and b/src/test/resources/resources/HelloWorldFrame.class differ
diff --git a/src/test/resources/resources/HelloWorldFrame.java b/src/test/resources/resources/HelloWorldFrame.java
new file mode 100644 (file)
index 0000000..2123a8e
--- /dev/null
@@ -0,0 +1,25 @@
+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