OSDN Git Service

BirthmarkSpi -> BirthmarkService
authorHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Tue, 12 Apr 2011 03:37:52 +0000 (12:37 +0900)
committerHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Tue, 12 Apr 2011 03:38:33 +0000 (12:38 +0900)
抽象クラスなどは削除した.

77 files changed:
.gitignore
pom.xml
src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java
src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java
src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java
src/main/java/jp/sourceforge/stigmata/Main.java
src/main/java/jp/sourceforge/stigmata/Stigmata.java
src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkPreprocessor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java [deleted file]
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java
src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java
src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java
src/main/java/jp/sourceforge/stigmata/command/HelpCommand.java
src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java
src/main/java/jp/sourceforge/stigmata/command/UninstallCommand.java
src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java
src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java
src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java
src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java
src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java
src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkService.java [new file with mode: 0644]
src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java [deleted file]
src/main/java/jp/sourceforge/stigmata/spi/ReflectedBirthmarkService.java [new file with mode: 0644]
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java
src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java
src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java
src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java
src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java
src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService [moved from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi with 100% similarity]
src/test/java/jp/sourceforge/stigmata/StigmataTest.java

index eb5a316..f57902c 100644 (file)
@@ -1 +1,6 @@
+.classpath
+.djunitplugin
+.project
+.settings
 target
+jcoverage.ser
diff --git a/pom.xml b/pom.xml
index b7e052e..6c234bd 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -4,8 +4,8 @@
   <modelVersion>4.0.0</modelVersion>\r
   <groupId>jp.sourceforge</groupId>\r
   <artifactId>stigmata</artifactId>\r
-  <version>2.0.1-SNAPSHOT</version>\r
-  <name>stigmata</name>\r
+  <version>3.0.0-SNAPSHOT</version>\r
+  <name>Stigmata</name>\r
   <description>Java birthmark toolkit</description>\r
   <url>http://stigmata.sourceforge.jp/</url>\r
   <inceptionYear>2006</inceptionYear>\r
@@ -42,8 +42,8 @@
   <dependencies>\r
     <dependency>\r
       <groupId>asm</groupId>\r
-      <artifactId>asm-all</artifactId>\r
-      <version>3.1</version>\r
+      <artifactId>asm</artifactId>\r
+      <version>3.3</version>\r
       <scope>compile</scope>\r
     </dependency>\r
     <dependency>\r
@@ -79,7 +79,7 @@
     <dependency>\r
       <groupId>jp.sourceforge.stigmata</groupId>\r
       <artifactId>digger</artifactId>\r
-      <version>1.1.0</version>\r
+      <version>3.0.0-SNAPSHOT</version>\r
       <scope>compile</scope>\r
     </dependency>\r
     <dependency>\r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-compiler-plugin</artifactId>\r
+        <version>2.3.2</version>\r
         <configuration>\r
           <source>1.6</source>\r
           <target>1.6</target>\r
 \r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
+        <artifactId>maven-resources-plugin</artifactId>\r
+        <version>2.4.3</version>\r
+        <configuration>\r
+          <encoding>utf-8</encoding>\r
+        </configuration>\r
+      </plugin>\r
+\r
+      <plugin>\r
+        <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-jar-plugin</artifactId>\r
+        <version>2.3.1</version>\r
         <configuration>\r
           <archive>\r
             <manifest>\r
       <plugin>\r
         <groupId>org.codehaus.mojo</groupId>\r
         <artifactId>native2ascii-maven-plugin</artifactId>\r
+        <version>1.0-alpha-1</version>\r
         <executions>\r
           <execution>\r
             <goals>\r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-site-plugin</artifactId>\r
+        <version>3.0-beta-3</version>\r
         <configuration>\r
           <inputEncoding>euc-jp</inputEncoding>\r
           <outputEncoding>utf-8</outputEncoding>\r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-project-info-reports-plugin</artifactId>\r
-      </plugin>\r
-      <plugin>\r
-        <groupId>org.apache.maven.plugins</groupId>\r
-        <artifactId>maven-javadoc-plugin</artifactId>\r
-        <configuration>\r
-          <locale>en</locale>\r
-        </configuration>\r
+        <version>2.3.1</version>\r
       </plugin>\r
       <plugin>\r
         <groupId>org.codehaus.mojo</groupId>\r
         <artifactId>cobertura-maven-plugin</artifactId>\r
+        <version>2.4</version>\r
+        <configuration>\r
+          <formats>\r
+            <format>xml</format>\r
+            <format>html</format>\r
+          </formats>\r
+          <encoding>utf-8</encoding>\r
+        </configuration>\r
       </plugin>\r
       <plugin>\r
+        <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-pmd-plugin</artifactId>\r
+        <version>2.5</version>\r
         <configuration>\r
-          <linkXref>true</linkXref>\r
           <sourceEncoding>utf-8</sourceEncoding>\r
+          <outputEncoding>utf-8</outputEncoding>\r
           <targetJdk>1.6</targetJdk>\r
         </configuration>\r
       </plugin>\r
       <plugin>\r
-        <groupId>org.apache.maven.plugins</groupId>\r
-        <artifactId>maven-jxr-plugin</artifactId>\r
+        <groupId>org.codehaus.mojo</groupId>\r
+        <artifactId>findbugs-maven-plugin</artifactId>\r
+        <version>2.3.2</version>\r
+        <configuration>\r
+          <sourceEncoding>utf-8</sourceEncoding>\r
+          <outputEncoding>utf-8</outputEncoding>\r
+        </configuration>\r
       </plugin>\r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
-        <artifactId>maven-changes-plugin</artifactId>\r
-        <reportSets>\r
-          <reportSet>\r
-            <reports>\r
-              <report>changes-report</report>\r
-            </reports>\r
-          </reportSet>\r
-        </reportSets>\r
+        <artifactId>maven-surefire-report-plugin</artifactId>\r
+        <version>2.8</version>\r
       </plugin>\r
       <plugin>\r
-        <groupId>org.codehaus.mojo</groupId>\r
-        <artifactId>findbugs-maven-plugin</artifactId>\r
+        <groupId>org.apache.maven.plugins</groupId>\r
+        <artifactId>maven-jxr-plugin</artifactId>\r
+        <version>2.1</version>\r
         <configuration>\r
-          <xmlOutput>false</xmlOutput>\r
-          <threshold>Normal</threshold>\r
-          <effort>Default</effort>\r
+          <inputEncoding>utf-8</inputEncoding>\r
+          <outputEncoding>utf-8</outputEncoding>\r
+          <aggregate>true</aggregate>\r
         </configuration>\r
       </plugin>\r
-\r
       <plugin>\r
         <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-javadoc-plugin</artifactId>\r
+        <version>2.7</version>\r
         <configuration>\r
-          <locale>en</locale>\r
+          <charset>utf-8</charset>\r
+          <encoding>utf-8</encoding>\r
+          <docencoding>utf-8</docencoding>\r
         </configuration>\r
       </plugin>\r
     </plugins>\r
index 7e4da6a..9f5ab1f 100644 (file)
@@ -32,7 +32,7 @@ import jp.sourceforge.stigmata.hook.Phase;
 import jp.sourceforge.stigmata.hook.StigmataHookManager;
 import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
 import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * core engine for extracting/comparing/filtering birthmarks.
@@ -276,7 +276,7 @@ public class BirthmarkEngine{
         String[] target = set.toArray(new String[set.size()]);
         ClassFileArchive[] archives = createArchives(target, environment);
         for(String type: context.getBirthmarkTypes()){
-            BirthmarkSpi service = context.getEnvironment().getService(type);
+            BirthmarkService service = context.getEnvironment().getService(type);
             if(service != null && service.getPreprocessor() != null){
                 BirthmarkPreprocessor preprocessor = service.getPreprocessor();
                 preprocessor.preprocess(archives, context);
index dcc3274..7e9f484 100644 (file)
@@ -12,13 +12,12 @@ import java.util.Map;
 import java.util.ServiceLoader;
 import java.util.Set;
 
-import javax.imageio.spi.ServiceRegistry;
-
 import jp.sourceforge.stigmata.digger.ClasspathContext;
 import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager;
 import jp.sourceforge.stigmata.resolvers.StigmataHomeManager;
 import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.utils.NullIterator;
 import jp.sourceforge.stigmata.utils.WellknownClassManager;
 
 /**
@@ -56,7 +55,7 @@ public class BirthmarkEnvironment{
     /**
      * collection of services.
      */
-    private Map<String, BirthmarkSpi> services = new HashMap<String, BirthmarkSpi>();
+    private Map<String, BirthmarkService> services = new HashMap<String, BirthmarkService>();
 
     /**
      * properties manager.
@@ -91,6 +90,8 @@ public class BirthmarkEnvironment{
         classpathContext = new ClasspathContext();
         filterManager = new ComparisonPairFilterManager(this);
         historyManager = new ExtractedBirthmarkServiceManager(this);
+
+        findDefaultServices();
     }
 
     /**
@@ -207,7 +208,7 @@ public class BirthmarkEnvironment{
     /**
      * add given birthmark service to this environment.
      */
-    public synchronized void addService(BirthmarkSpi service){
+    public synchronized void addService(BirthmarkService service){
         if(parent == null || parent.getService(service.getType()) == null){
             services.put(service.getType(), service);
         }
@@ -223,8 +224,8 @@ public class BirthmarkEnvironment{
     /**
      * return birthmark service registered with given birthmark type.
      */
-    public BirthmarkSpi getService(String type){
-        BirthmarkSpi service = services.get(type);
+    public BirthmarkService getService(String type){
+        BirthmarkService service = services.get(type);
         if(service == null && parent != null){
             service = parent.getService(type);
         }
@@ -234,22 +235,29 @@ public class BirthmarkEnvironment{
     /**
      * return all birthmark services searching traverse to root environment.
      */
-    public synchronized BirthmarkSpi[] getServices(){
-        List<BirthmarkSpi> list = getServiceList();
-        BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]);
+    public synchronized BirthmarkService[] getServices(){
+        List<BirthmarkService> list = getServiceList();
+        BirthmarkService[] services = list.toArray(new BirthmarkService[list.size()]);
         Arrays.sort(services, new BirthmarkSpiComparator());
 
         return services;
     }
 
     public <T> Iterator<T> lookupProviders(Class<T> providerClass){
-        Iterator<T> iterator;
+        ServiceLoader<T> services;
         if(loader != null){
-            ServiceLoader<T> services = ServiceLoader.load(providerClass, loader);
+            services = ServiceLoader.load(providerClass, loader);
+        }
+        else{
+            services = ServiceLoader.load(providerClass);
+        }
+
+        Iterator<T> iterator;
+        if(services != null){
             iterator = services.iterator();
         }
         else{
-            iterator = ServiceRegistry.lookupProviders(providerClass);
+            iterator = new NullIterator<T>();
         }
         return iterator;
     }
@@ -257,16 +265,16 @@ public class BirthmarkEnvironment{
     /**
      * return birthmark services lookup from current class path.
      */
-    public synchronized BirthmarkSpi[] findServices(){
-        List<BirthmarkSpi> list = getServiceList();
+    public synchronized BirthmarkService[] findServices(){
+        List<BirthmarkService> list = getServiceList();
 
-        for(Iterator<BirthmarkSpi> i = lookupProviders(BirthmarkSpi.class); i.hasNext(); ){
-            BirthmarkSpi spi = i.next();
+        for(Iterator<BirthmarkService> i = lookupProviders(BirthmarkService.class); i.hasNext(); ){
+            BirthmarkService spi = i.next();
             if(getService(spi.getType()) == null){
                 list.add(spi);
             }
         }
-        BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]);
+        BirthmarkService[] services = list.toArray(new BirthmarkService[list.size()]);
         Arrays.sort(services, new BirthmarkSpiComparator());
 
         return services;
@@ -294,10 +302,10 @@ public class BirthmarkEnvironment{
     /**
      * find the all birthmark services searching to root environment.
      */
-    private List<BirthmarkSpi> getServiceList(){
-        List<BirthmarkSpi> list = new ArrayList<BirthmarkSpi>();
+    private List<BirthmarkService> getServiceList(){
+        List<BirthmarkService> list = new ArrayList<BirthmarkService>();
         if(parent != null){
-            for(BirthmarkSpi spi: parent.getServices()){
+            for(BirthmarkService spi: parent.getServices()){
                 list.add(spi);
             }
         }
@@ -306,4 +314,10 @@ public class BirthmarkEnvironment{
         }
         return list;
     }
+
+    private void findDefaultServices(){
+        for(BirthmarkService service: ServiceLoader.load(BirthmarkService.class)){
+            addService(service);
+        }
+    }
 }
index 5ebf492..e718d90 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata;
 
 import java.io.InputStream;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * extract birthmarks from given Java bytecode stream.
@@ -13,7 +13,7 @@ public interface BirthmarkExtractor{
     /**
      * returns service provider interface of this extractor.
      */
-    public BirthmarkSpi getProvider();
+    public BirthmarkService getProvider();
 
     /**
      * create new birthmark.
@@ -31,6 +31,11 @@ public interface BirthmarkExtractor{
     public ExtractionUnit[] getAcceptableUnits();
 
     /**
+     * build birthmark element from given string.
+     */
+    public BirthmarkElement buildElement(String value);
+
+    /**
      * extract birthmark from given stream with given environment.
      */
     public Birthmark extract(InputStream in, BirthmarkContext context) throws BirthmarkExtractionFailedException;
index 392c802..8898218 100644 (file)
@@ -2,12 +2,12 @@ package jp.sourceforge.stigmata;
 
 import java.util.Comparator;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * @author Haruaki TAMADA
  */
-class BirthmarkSpiComparator implements Comparator<BirthmarkSpi>{
+class BirthmarkSpiComparator implements Comparator<BirthmarkService>{
     /**
      * default constructor
      */
@@ -20,7 +20,7 @@ class BirthmarkSpiComparator implements Comparator<BirthmarkSpi>{
     }
 
     @Override
-    public int compare(BirthmarkSpi s1, BirthmarkSpi s2){
+    public int compare(BirthmarkService s1, BirthmarkService s2){
         if(s1.isExperimental() && !s2.isExperimental()){
             return 1;
         }
index 180550b..0dec350 100644 (file)
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.command.StigmataCommandFactory;
 import jp.sourceforge.stigmata.digger.ClasspathContext;
 import jp.sourceforge.stigmata.hook.Phase;
 import jp.sourceforge.stigmata.hook.StigmataHookManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.talisman.xmlcli.CommandLinePlus;
 import jp.sourceforge.talisman.xmlcli.OptionsBuilder;
 import jp.sourceforge.talisman.xmlcli.XmlCliConfigurationException;
@@ -121,7 +121,7 @@ public final class Main{
         String[] birthmarks = cl.getOptionValues("birthmark");
         if(birthmarks == null || birthmarks.length == 0){
             List<String> birthmarkList = new ArrayList<String>();
-            for(BirthmarkSpi service: env.getServices()){
+            for(BirthmarkService service: env.getServices()){
                 if(!service.isExperimental()){
                     birthmarkList.add(service.getType());
                 }
index b02884a..e2447ff 100644 (file)
@@ -16,7 +16,7 @@ import java.util.List;
 
 import jp.sourceforge.stigmata.event.BirthmarkEngineListener;
 import jp.sourceforge.stigmata.printer.PrinterManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.ui.swing.ExtensionFilter;
 import jp.sourceforge.stigmata.utils.ConfigFileExporter;
 import jp.sourceforge.stigmata.utils.ConfigFileImporter;
@@ -153,8 +153,8 @@ public class Stigmata{
         } catch(IOException e){
             throw new ApplicationInitializationError(e);
         }
-        for(Iterator<BirthmarkSpi> i = defaultEnvironment.lookupProviders(BirthmarkSpi.class); i.hasNext(); ){
-            BirthmarkSpi service = i.next();
+        for(Iterator<BirthmarkService> i = defaultEnvironment.lookupProviders(BirthmarkService.class); i.hasNext(); ){
+            BirthmarkService service = i.next();
             defaultEnvironment.addService(service);
         }
         PrinterManager.refresh(defaultEnvironment);
index 4d496d2..96e2207 100644 (file)
@@ -6,7 +6,7 @@ import java.io.InputStream;
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassWriter;
@@ -17,7 +17,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public abstract class ASMBirthmarkExtractor extends AbstractBirthmarkExtractor{
-    public ASMBirthmarkExtractor(BirthmarkSpi spi){
+    public ASMBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
index 8dbe3b9..dfe50d7 100644 (file)
@@ -8,7 +8,7 @@ import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.ExtractionUnit;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Abstract class for extracting birthmark.
@@ -18,7 +18,7 @@ public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{
     /**
      * provider.
      */
-    private BirthmarkSpi spi;
+    private BirthmarkService spi;
 
     /**
      * default constructor.
@@ -31,7 +31,7 @@ public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{
      * constructor.
      * @param spi service provider.
      */
-    public AbstractBirthmarkExtractor(BirthmarkSpi spi){
+    public AbstractBirthmarkExtractor(BirthmarkService spi){
         this.spi = spi;
     }
 
@@ -39,7 +39,7 @@ public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{
      * returns the provider of this extractor.
      */
     @Override
-    public BirthmarkSpi getProvider(){
+    public BirthmarkService getProvider(){
         return spi;
     }
 
index 7e9ab77..b679abb 100644 (file)
@@ -3,10 +3,10 @@ package jp.sourceforge.stigmata.birthmarks;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.digger.ClassFileArchive;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 public abstract class AbstractBirthmarkPreprocessor implements BirthmarkPreprocessor{
-    private BirthmarkSpi service;
+    private BirthmarkService service;
 
     /**
      * default constructor.
@@ -15,11 +15,11 @@ public abstract class AbstractBirthmarkPreprocessor implements BirthmarkPreproce
     public AbstractBirthmarkPreprocessor(){
     }
 
-    public AbstractBirthmarkPreprocessor(BirthmarkSpi service){
+    public AbstractBirthmarkPreprocessor(BirthmarkService service){
         this.service = service;
     }
 
-    public BirthmarkSpi getProvider(){
+    public BirthmarkService getProvider(){
         return service;
     }
 
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java
deleted file mode 100644 (file)
index e376e99..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-package jp.sourceforge.stigmata.birthmarks;
-
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.BirthmarkPreprocessor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Abstract class for {@link BirthmarkSpi <code>BirthmarkSpi</code>}
- *
- * @author Haruaki TAMADA
- */
-public abstract class AbstractBirthmarkService implements BirthmarkSpi{
-    @Override
-    public String getDisplayType(){
-        return getDisplayType(Locale.getDefault());
-    }
-
-    @Override
-    public String getDisplayType(Locale locale){
-        LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance();
-        String type = manager.getDisplayType(locale, getType());
-        if(type == null){
-            type = getType();
-        }
-        return type;
-    }
-
-    @Override
-    public String getDescription(){
-        return getDescription(Locale.getDefault());
-    }
-
-    @Override
-    public String getDescription(Locale locale){
-        LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance();
-        String description = manager.getDescription(locale, getType());
-        if(description == null){
-            description = getDefaultDescription();
-        }
-        return description;
-    }
-
-    @Override
-    public abstract BirthmarkComparator getComparator();
-
-    @Override
-    public String getComparatorClassName(){
-        return getComparator().getClass().getName();
-    }
-
-    @Override
-    public abstract BirthmarkExtractor getExtractor();
-
-    @Override
-    public String getExtractorClassName(){
-        return getExtractor().getClass().getName();
-    }
-
-    @Override
-    public BirthmarkPreprocessor getPreprocessor(){
-        return null;
-    }
-
-    @Override
-    public String getPreprocessorClassName(){
-        BirthmarkPreprocessor preprocessor = getPreprocessor();
-        String name = null;
-        if(preprocessor != null){
-            name = preprocessor.getClass().getName();
-        }
-        return name;
-    }
-
-    @Override
-    public abstract String getType();
-
-    @Override
-    public abstract String getDefaultDescription();
-
-    @Override
-    public boolean isExperimental(){
-        return true;
-    }
-
-    @Override
-    public boolean isUserDefined(){
-        return true;
-    }
-
-    @Override
-    public String getVersion(){
-        return getClass().getPackage().getImplementationVersion();
-    }
-
-    @Override
-    public String getVendorName(){
-        return getClass().getPackage().getImplementationVendor();
-    }
-
-    @Override
-    public Birthmark buildBirthmark(){
-       return getExtractor().createBirthmark();
-    }
-
-    @Override
-    public BirthmarkElement buildBirthmarkElement(String value){
-       if(value == null || value.equals("<null>")){
-               return NullBirthmarkElement.getInstance();
-       }
-               return new BirthmarkElement(value);
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java
deleted file mode 100644 (file)
index 8cf5330..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-package jp.sourceforge.stigmata.birthmarks;
-
-import java.lang.reflect.Constructor;
-
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Service provider interface for birthmarks which are defined in
- * configuration files.
- *
- * @author Haruaki TAMADA
- */
-public class BirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
-    private Class<? extends BirthmarkExtractor> extractorClass;
-    private Class<? extends BirthmarkComparator> comparatorClass;
-    private String type;
-    private String displayType;
-    private String description;
-    private BirthmarkExtractor extractorObject;
-    private BirthmarkComparator comparatorObject;
-    private boolean userDefined = true;
-    private BirthmarkEnvironment environment;
-
-    public BirthmarkService(BirthmarkEnvironment environment){
-        this.environment = environment;
-    }
-
-    public BirthmarkService(){
-    }
-
-    public void setBirthmarkEnvironment(BirthmarkEnvironment environment){
-        this.environment = environment;
-    }
-
-    public void setExtractorClassName(String extractor){
-        try{
-            Class<?> c;
-            if(environment == null){
-                c = Class.forName(extractor);
-            }
-            else{
-                c = environment.getClasspathContext().findClass(extractor);
-            }
-            extractorClass = c.asSubclass(BirthmarkExtractor.class);
-            extractorObject = null;
-        } catch(ClassNotFoundException e){
-            e.printStackTrace();
-        }
-    }
-
-    public void setComparatorClassName(String comparator){
-        try{
-            Class<?> c;
-            if(environment == null){
-                c = Class.forName(comparator);
-            }
-            else{
-                c = environment.getClasspathContext().findClass(comparator);
-            }
-            comparatorClass = c.asSubclass(BirthmarkComparator.class);
-            comparatorObject = null;
-        } catch(ClassNotFoundException e){
-            e.printStackTrace();
-        }
-    }
-
-    public void setType(String type){
-        this.type = type;
-    }
-
-    /**
-     * returns a type of the birthmark this service provides.
-     */
-    @Override
-    public String getType(){
-        return type;
-    }
-
-    public void setDisplayType(String displayType){
-        this.displayType = displayType;
-    }
-
-    @Override
-    public String getDisplayType(){
-        return displayType;
-    }
-
-    public void setDescription(String description){
-        this.description = description;
-    }
-
-    @Override
-    public String getDescription(){
-        String desc = description;
-        if(description == null){
-            desc = "";
-        }
-        return desc;
-    }
-
-    /**
-     * returns a description of the birthmark this service provides.
-     */
-    @Override
-    public String getDefaultDescription(){
-        return description;
-    }
-
-    @Override
-    public String getExtractorClassName(){
-        return extractorClass.getName();
-    }
-
-    /**
-     * returns a extractor for the birthmark of this service.
-     */
-    @Override
-    public BirthmarkExtractor getExtractor(){
-        if(extractorObject == null){
-            try{
-                Constructor<? extends BirthmarkExtractor> c = extractorClass.getConstructor(BirthmarkSpi.class);
-                extractorObject = c.newInstance(this);
-            } catch(Exception e){
-                e.printStackTrace();
-            }
-        }
-        return extractorObject;
-    }
-
-    @Override
-    public String getComparatorClassName(){
-        return comparatorClass.getName();
-    }
-
-    /**
-     * returns a comparator for the birthmark of this service.
-     */
-    @Override
-    public BirthmarkComparator getComparator(){
-        if(comparatorObject == null){
-            try{
-                Constructor<? extends BirthmarkComparator> c = comparatorClass.getConstructor(BirthmarkSpi.class);
-                comparatorObject = c.newInstance(this);
-            } catch(Exception e){
-                e.printStackTrace();
-            }
-        }
-        return comparatorObject;
-    }
-
-    @Override
-    public boolean isUserDefined(){
-        return userDefined;
-    }
-
-    public void setUserDefined(boolean userDefined){
-        this.userDefined = userDefined;
-    }
-}
-
index 80a8b6e..0883746 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators;
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkComparator;
 import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * abstract birthmark comparator.
@@ -11,17 +11,17 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki Tamada
  */
 public abstract class AbstractBirthmarkComparator implements BirthmarkComparator{
-    private BirthmarkSpi spi;
+    private BirthmarkService spi;
 
     @Deprecated
     public AbstractBirthmarkComparator(){
     }
 
-    public AbstractBirthmarkComparator(BirthmarkSpi spi){
+    public AbstractBirthmarkComparator(BirthmarkService spi){
         this.spi = spi;
     }
 
-    public BirthmarkSpi getProvider(){
+    public BirthmarkService getProvider(){
         return spi;
     }
 
index 64f40b1..8f95511 100644 (file)
@@ -7,7 +7,7 @@ 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.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
 
 /**
@@ -47,11 +47,11 @@ abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvide
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    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(BirthmarkSpi.class);
+            Constructor<? extends BirthmarkComparator> constructor = clazz.getConstructor(BirthmarkService.class);
             return constructor.newInstance(service);
         } catch(NoSuchMethodException e){
         } catch(InstantiationException e){
index 35469e9..3655778 100644 (file)
@@ -7,7 +7,7 @@ import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.birthmarks.ValueCountable;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Comparing birthmarks by cosine similarity algorithm. This class compares
@@ -19,7 +19,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
 public class CosineSimilarityBirthmarkComparator extends
         AbstractBirthmarkComparator{
 
-    public CosineSimilarityBirthmarkComparator(BirthmarkSpi spi){
+    public CosineSimilarityBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index a9a6c22..1fbe975 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmar
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new CosineSimilarityBirthmarkComparator(service);
     }
 }
index 823be06..25d0efe 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators;
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * calculate similarities between two birthmarks by DP matching algorithm.
@@ -14,7 +14,7 @@ public class DPMatchingBirthmarkComparator extends AbstractBirthmarkComparator{
     private int mismatchPenalty = 5;
     private int shiftPenalty = 1;
 
-    public DPMatchingBirthmarkComparator(BirthmarkSpi spi){
+    public DPMatchingBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index 2e4cc0d..c148662 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkCompa
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new DPMatchingBirthmarkComparator(service);
     }
 }
index 0127407..2af88e6 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators;
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * calculate similarities between two birthmarks by edit distance
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA
  */
 public class EditDistanceBirthmarkComparator extends AbstractBirthmarkComparator{
-    public EditDistanceBirthmarkComparator(BirthmarkSpi spi){
+    public EditDistanceBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index 6325a0a..9a2f4b0 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkCom
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new EditDistanceBirthmarkComparator(service);
     }
 }
index 836be14..17ac97a 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * calculate similarities between two birthmarks by edit distance
@@ -11,7 +11,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA
  */
 public class ExtendedEditDistanceBirthmarkComparator extends EditDistanceBirthmarkComparator{
-    public ExtendedEditDistanceBirthmarkComparator(BirthmarkSpi spi){
+    public ExtendedEditDistanceBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index 6b6bb20..59e9384 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirt
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new ExtendedEditDistanceBirthmarkComparator(service);
     }
 }
index 016274f..48152cf 100644 (file)
@@ -6,7 +6,7 @@ import java.util.Set;
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * this comparator calculate following formula.
@@ -16,7 +16,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA
  */
 public class LogicalAndBirthmarkComparator extends AbstractBirthmarkComparator{
-    public LogicalAndBirthmarkComparator(BirthmarkSpi spi){
+    public LogicalAndBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index 611be3f..0e1dae4 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkCompa
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new LogicalAndBirthmarkComparator(service);
     }
 }
index 71670ea..02eb430 100644 (file)
@@ -4,7 +4,7 @@ import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkComparator;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * An implementation of {@link BirthmarkComparator
@@ -17,7 +17,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA
  */
 public class PlainBirthmarkComparator extends AbstractBirthmarkComparator{
-    public PlainBirthmarkComparator(BirthmarkSpi spi){
+    public PlainBirthmarkComparator(BirthmarkService spi){
         super(spi);
     }
 
index 87f8840..3ef93f5 100644 (file)
@@ -1,7 +1,7 @@
 package jp.sourceforge.stigmata.birthmarks.comparators;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
@@ -27,7 +27,7 @@ public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparator
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkComparator getComparator(BirthmarkSpi service){
+    public BirthmarkComparator getComparator(BirthmarkService service){
         return new PlainBirthmarkComparator(service);
     }
 }
index ebdd6d6..f48cd40 100644 (file)
@@ -2,10 +2,11 @@ package jp.sourceforge.stigmata.birthmarks.cvfv;
 
 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.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -14,7 +15,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class ConstantValueOfFieldVariableBirthmarkExtractor extends ASMBirthmarkExtractor{
-    public ConstantValueOfFieldVariableBirthmarkExtractor(BirthmarkSpi spi){
+    public ConstantValueOfFieldVariableBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -33,4 +34,32 @@ public class ConstantValueOfFieldVariableBirthmarkExtractor extends ASMBirthmark
             ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, ExtractionUnit.ARCHIVE, 
         };
     }
+
+    @Override
+    public BirthmarkElement buildElement(String value) {
+       String signature = value.substring(0, value.indexOf('='));
+       String subValue = value.substring(value.indexOf('=') + 1);
+       Object elementValue = subValue;
+    
+        if(subValue.equals("null")){
+            elementValue = null;
+        }
+        else{
+            switch(signature.charAt(0)){
+            case 'Z':{
+                if(value.equals("true")) elementValue = Boolean.TRUE;
+                else                     elementValue = Boolean.FALSE;
+                break;
+            }
+            case 'C': elementValue = new Character(subValue.charAt(0)); break;
+            case 'D': elementValue = new Double(subValue);  break;
+            case 'F': elementValue = new Float(subValue);   break;
+            case 'S': elementValue = new Short(subValue);   break;
+            case 'B': elementValue = new Byte(subValue);    break;
+            case 'I': elementValue = new Integer(subValue); break;
+            default:  elementValue = value; break;
+            }
+       }
+       return new TypeAndValueBirthmarkElement(signature, elementValue);
+    }
 }
index e400fba..7d1dbf2 100644 (file)
@@ -1,11 +1,10 @@
 package jp.sourceforge.stigmata.birthmarks.cvfv;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class ConstantValueOfFieldVariableBirthmarkService implements BirthmarkService{
        private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
 
@@ -23,7 +22,7 @@ public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthm
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "Field type and its initial value.";
     }
 
@@ -48,30 +47,7 @@ public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthm
     }
 
     @Override
-       public BirthmarkElement buildBirthmarkElement(String value) {
-       String signature = value.substring(0, value.indexOf('='));
-       String subValue = value.substring(value.indexOf('=') + 1);
-       Object elementValue = subValue;
-
-        if(subValue.equals("null")){
-            elementValue = null;
-        }
-        else{
-            switch(signature.charAt(0)){
-            case 'Z':{
-                if(value.equals("true")) elementValue = Boolean.TRUE;
-                else                     elementValue = Boolean.FALSE;
-                break;
-            }
-            case 'C': elementValue = new Character(subValue.charAt(0)); break;
-            case 'D': elementValue = new Double(subValue);  break;
-            case 'F': elementValue = new Float(subValue);   break;
-            case 'S': elementValue = new Short(subValue);   break;
-            case 'B': elementValue = new Byte(subValue);    break;
-            case 'I': elementValue = new Integer(subValue); break;
-            default:  elementValue = value; break;
-            }
-       }
-       return new TypeAndValueBirthmarkElement(signature, elementValue);
-       }
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index 6efb7c9..5f82501 100644 (file)
@@ -7,7 +7,7 @@ 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.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
 
 /**
@@ -47,11 +47,11 @@ public abstract class AbstractBirthmarkExtractorService extends AbstractServiceP
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    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(BirthmarkSpi.class);
+            Constructor<? extends BirthmarkExtractor> constructor = clazz.getConstructor(BirthmarkService.class);
             return constructor.newInstance(service);
         } catch(NoSuchMethodException e){
         } catch(InstantiationException e){
index 760c914..9b00dda 100644 (file)
@@ -7,7 +7,7 @@ import java.util.Map;
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.ExtractorNotFoundException;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.apache.commons.beanutils.BeanUtils;
 
@@ -34,7 +34,7 @@ public class BirthmarkExtractorFactory{
 
     @SuppressWarnings("rawtypes")
     private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{
-        BirthmarkSpi spi = environment.getService(birthmarkType);
+        BirthmarkService spi = environment.getService(birthmarkType);
         BirthmarkExtractor extractor = null;
         if(spi != null){
             extractor = spi.getExtractor();
index c3d465b..5a9f111 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class ConstantValueOfFieldVariableBirthmarkExtractorService extends Abstr
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new ConstantValueOfFieldVariableBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index b73cde5..50e41ca 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthm
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new FrequencyMethodCallBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index 028b508..e7eaa5a 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirth
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new FrequencyUsedClassesBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index d4cd21e..2f9d996 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class InheritanceStructureBirthmarkExtractorService extends AbstractBirth
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new InheritanceStructureBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index b5ef672..7dc8e70 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtrac
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new KGramBasedBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index eaa4c67..c92092b 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirth
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new SequentialMethodCallBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index 004e84b..1dc6102 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.birthmarks.extractors;
 
 import jp.sourceforge.stigmata.BirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * Birthmark Service Provider Interface.
@@ -28,7 +28,7 @@ public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtra
      * returns a extractor for the birthmark of this service.
      */
     @Override
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+    public BirthmarkExtractor getExtractor(BirthmarkService service){
         return new UsedClassesBirthmarkExtractor(service);
     }
 }
\ No newline at end of file
index 84ac9af..a3e2086 100644 (file)
@@ -2,13 +2,14 @@ package jp.sourceforge.stigmata.birthmarks.fmc;
 
 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.birthmarks.FrequencyBirthmark;
 import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
 import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -16,7 +17,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class FrequencyMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
-    public FrequencyMethodCallBirthmarkExtractor(BirthmarkSpi spi){
+    public FrequencyMethodCallBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -45,4 +46,10 @@ public class FrequencyMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor
     public Birthmark createBirthmark(){
         return new FrequencyBirthmark(getProvider().getType());
     }
+
+
+    @Override
+    public BirthmarkElement buildElement(String value) {
+        return new FrequencyBirthmarkElement(value);
+    }
 }
index 414670d..2aaf418 100644 (file)
@@ -1,12 +1,10 @@
 package jp.sourceforge.stigmata.birthmarks.fmc;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
-import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -14,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * 
  * @author Haruaki TAMADA
  */
-public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class FrequencyMethodCallBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new FrequencyMethodCallBirthmarkExtractor(this);
 
@@ -24,11 +22,6 @@ public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkServic
     }
 
     @Override
-    public String getDefaultDescription(){
-        return "Frequency of method call which order is appeared in method definition.";
-    }
-
-    @Override
     public BirthmarkExtractor getExtractor(){
         return extractor;
     }
@@ -48,8 +41,13 @@ public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkServic
         return false;
     }
 
-       @Override
-       public BirthmarkElement buildBirthmarkElement(String value) {
-       return new FrequencyBirthmarkElement(value);
-       }
+    @Override
+    public String getDescription(){
+        return "Frequency of Method Calls";
+    }
+
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index f80d2a9..a7c7ec3 100644 (file)
@@ -2,12 +2,14 @@ package jp.sourceforge.stigmata.birthmarks.fuc;
 
 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.birthmarks.FrequencyBirthmark;
+import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
 import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -16,7 +18,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class FrequencyUsedClassesBirthmarkExtractor extends ASMBirthmarkExtractor{
-    public FrequencyUsedClassesBirthmarkExtractor(BirthmarkSpi spi){
+    public FrequencyUsedClassesBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -40,4 +42,8 @@ public class FrequencyUsedClassesBirthmarkExtractor extends ASMBirthmarkExtracto
     public Birthmark createBirthmark(){
         return new FrequencyBirthmark(getProvider().getType());
     }
+
+    public BirthmarkElement buildElement(String value){
+        return new FrequencyBirthmarkElement(value);
+    }
 }
index 6816b8f..d43874d 100644 (file)
@@ -1,12 +1,10 @@
 package jp.sourceforge.stigmata.birthmarks.fuc;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
-import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -14,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class FrequencyUsedClassesBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new FrequencyUsedClassesBirthmarkExtractor(this);
 
@@ -24,7 +22,7 @@ public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkServi
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "Frequency of used classes in target class.";
     }
 
@@ -48,7 +46,8 @@ public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkServi
         return false;
     }
 
-    public BirthmarkElement createBirthmarkElement(String value){
-       return new FrequencyBirthmarkElement(value);
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
     }
 }
index 94626cb..d039eb9 100644 (file)
@@ -5,12 +5,13 @@ import java.io.InputStream;
 
 import jp.sourceforge.stigmata.Birthmark;
 import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkElementClassNotFoundException;
 import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
 import jp.sourceforge.stigmata.ExtractionUnit;
 import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassWriter;
@@ -21,7 +22,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class InheritanceStructureBirthmarkExtractor extends AbstractBirthmarkExtractor{
-    public InheritanceStructureBirthmarkExtractor(BirthmarkSpi spi){
+    public InheritanceStructureBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -65,4 +66,9 @@ public class InheritanceStructureBirthmarkExtractor extends AbstractBirthmarkExt
     public ExtractionUnit[] getAcceptableUnits(){
         return new ExtractionUnit[] { ExtractionUnit.CLASS, };
     }
+
+    @Override
+    public BirthmarkElement buildElement(String value){
+        return new BirthmarkElement(value);
+    }
 }
index 78f5c76..f8355bf 100644 (file)
@@ -2,9 +2,9 @@ package jp.sourceforge.stigmata.birthmarks.is;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class InheritanceStructureBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class InheritanceStructureBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new InheritanceStructureBirthmarkExtractor(this);
 
@@ -22,7 +22,7 @@ public class InheritanceStructureBirthmarkService extends AbstractBirthmarkServi
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "Inheritance sequence to root class and user classes is replaced to <null>.";
     }
 
@@ -45,4 +45,9 @@ public class InheritanceStructureBirthmarkService extends AbstractBirthmarkServi
     public boolean isUserDefined(){
         return false;
     }
+
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index 24d5d68..9c8e527 100644 (file)
@@ -2,10 +2,11 @@ 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.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -15,7 +16,7 @@ import org.objectweb.asm.ClassWriter;
 public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
     private int kvalue = 4;
 
-    public KGramBasedBirthmarkExtractor(BirthmarkSpi spi){
+    public KGramBasedBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -44,4 +45,19 @@ public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
             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;
+    }
 }
index 56462f3..571a1b6 100644 (file)
@@ -1,11 +1,10 @@
 package jp.sourceforge.stigmata.birthmarks.kgram;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class KGramBasedBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this);
 
@@ -23,7 +22,7 @@ public class KGramBasedBirthmarkService extends AbstractBirthmarkService impleme
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "k-gram based birthmark.";
     }
 
@@ -47,17 +46,8 @@ public class KGramBasedBirthmarkService extends AbstractBirthmarkService impleme
         return false;
     }
 
-       @Override
-       public BirthmarkElement buildBirthmarkElement(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;
-       }
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index d9afe6b..b21bdc4 100644 (file)
@@ -2,10 +2,11 @@ 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.ExtractionUnit;
 import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -13,7 +14,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class SequentialMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
-    public SequentialMethodCallBirthmarkExtractor(BirthmarkSpi spi){
+    public SequentialMethodCallBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -30,4 +31,13 @@ public class SequentialMethodCallBirthmarkExtractor extends ASMBirthmarkExtracto
     public ExtractionUnit[] getAcceptableUnits(){
         return new ExtractionUnit[] { ExtractionUnit.CLASS, ExtractionUnit.ARCHIVE, ExtractionUnit.PACKAGE, };
     }
+
+    @Override
+    public BirthmarkElement buildElement(String value) {
+        String className = value.substring(0, value.indexOf('#'));
+        String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!'));
+        String signature = value.substring(value.lastIndexOf('!') + 1);
+
+        return new MethodCallBirthmarkElement(className, methodName, signature);
+    }
 }
index 53e8359..3891d4c 100644 (file)
@@ -1,11 +1,10 @@
 package jp.sourceforge.stigmata.birthmarks.smc;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class SequentialMethodCallBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new SequentialMethodCallBirthmarkExtractor(this);
 
@@ -23,7 +22,7 @@ public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkServi
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "Sequence of method call which order is appeared in method definition.";
     }
 
@@ -47,12 +46,8 @@ public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkServi
         return false;
     }
 
-       @Override
-       public BirthmarkElement buildBirthmarkElement(String value) {
-               String className = value.substring(0, value.indexOf('#'));
-               String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!'));
-               String signature = value.substring(value.lastIndexOf('!') + 1);
-
-               return new MethodCallBirthmarkElement(className, methodName, signature);
-       }
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index db4503e..c6684ce 100644 (file)
@@ -2,10 +2,11 @@ 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.ExtractionUnit;
 import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.objectweb.asm.ClassWriter;
 
@@ -14,7 +15,7 @@ import org.objectweb.asm.ClassWriter;
  * @author Haruaki TAMADA
  */
 public class UsedClassesBirthmarkExtractor extends ASMBirthmarkExtractor{
-    public UsedClassesBirthmarkExtractor(BirthmarkSpi spi){
+    public UsedClassesBirthmarkExtractor(BirthmarkService spi){
         super(spi);
     }
 
@@ -38,4 +39,9 @@ public class UsedClassesBirthmarkExtractor extends ASMBirthmarkExtractor{
     public Birthmark createBirthmark(){
         return new UsedClassesBirthmark(getProvider().getType());
     }
+
+    @Override
+    public BirthmarkElement buildElement(String value){
+        return new BirthmarkElement(value);
+    }
 }
index 37c81f4..473ced9 100644 (file)
@@ -2,9 +2,9 @@ package jp.sourceforge.stigmata.birthmarks.uc;
 
 import jp.sourceforge.stigmata.BirthmarkComparator;
 import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
 import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  *
  * @author Haruaki TAMADA
  */
-public class UsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class UsedClassesBirthmarkService implements BirthmarkService{
     private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
     private BirthmarkExtractor extractor = new UsedClassesBirthmarkExtractor(this);
 
@@ -22,7 +22,7 @@ public class UsedClassesBirthmarkService extends AbstractBirthmarkService implem
     }
 
     @Override
-    public String getDefaultDescription(){
+    public String getDescription(){
         return "Set of used classes in target class.";
     }
 
@@ -45,4 +45,9 @@ public class UsedClassesBirthmarkService extends AbstractBirthmarkService implem
     public boolean isUserDefined(){
         return false;
     }
+
+    @Override
+    public BirthmarkPreprocessor getPreprocessor(){
+        return null;
+    }
 }
index d9738fc..2dcc2fd 100644 (file)
@@ -7,7 +7,7 @@ import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.ComparisonPairFilter;
 import jp.sourceforge.stigmata.ComparisonPairFilterSet;
 import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.talisman.xmlcli.ResourceHelpFormatter;
 
 import org.apache.commons.cli.HelpFormatter;
@@ -45,10 +45,10 @@ public class HelpCommand extends AbstractStigmataCommand{
         );
         System.out.println();
         System.out.println(helpResource.getString("cli.interface.birthmarks"));
-        for(BirthmarkSpi service: env.getServices()){
+        for(BirthmarkService service: env.getServices()){
             if(!service.isExperimental()){
                 System.out.printf("    %-5s (%s): %s%n", service.getType(),
-                        service.getDisplayType(), service.getDescription());
+                        service.getType(), service.getDescription());
             }
         }
         System.out.println();
index 6a9d0ee..ea2fc15 100644 (file)
@@ -7,7 +7,7 @@ import java.io.PrintWriter;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.Stigmata;
 import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
 
 /**
@@ -22,7 +22,7 @@ public class ListBirthmarksCommand extends AbstractStigmataCommand{
 
     @Override
     public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
-        BirthmarkSpi[] spis = context.getEnvironment().findServices();
+        BirthmarkService[] spis = context.getEnvironment().findServices();
         ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
         BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter();
 
index 00169d8..c6e35e6 100644 (file)
@@ -12,8 +12,7 @@ import java.util.regex.Pattern;
 import jp.sourceforge.stigmata.BirthmarkContext;
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.utils.ConfigFileExporter;
 
 /**
@@ -40,7 +39,7 @@ public class UninstallCommand extends AbstractStigmataCommand{
         boolean removeServiceInConfigFile = false;
 
         for(int i = 0; i < args.length; i++){
-            BirthmarkSpi service = env.getService(args[i]);
+            BirthmarkService service = env.getService(args[i]);
             if(service instanceof BirthmarkService){
                 env.removeService(args[i]);
                 removeServiceInConfigFile = true;
@@ -67,7 +66,7 @@ public class UninstallCommand extends AbstractStigmataCommand{
         }
     }
 
-    private String getPluginFileNameOfService(BirthmarkContext context, BirthmarkSpi service){
+    private String getPluginFileNameOfService(BirthmarkContext context, BirthmarkService service){
         Class<?> serviceClass = service.getClass();
         URL location = serviceClass.getResource("/" + serviceClass.getName().replace('.', '/') + ".class");
 
index 06b1e2e..b8fa6aa 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.printer;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,10 +13,10 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  */
 public abstract class AbstractBirthmarkServicePrinter implements BirthmarkServicePrinter, Printer{
     @Override
-    public abstract void printResult(PrintWriter out, BirthmarkSpi[] spilist);
+    public abstract void printResult(PrintWriter out, BirthmarkService[] spilist);
 
     @Override
-    public String getResult(BirthmarkSpi[] spilist){
+    public String getResult(BirthmarkService[] spilist){
         StringWriter writer = new StringWriter();
         PrintWriter out = new PrintWriter(writer);
 
index 5db63f7..dc27517 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.printer;
 import java.io.IOException;
 import java.io.PrintWriter;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA
  */
 public interface BirthmarkServicePrinter{
-    public void printResult(PrintWriter out, BirthmarkSpi[] spilist) throws IOException;
+    public void printResult(PrintWriter out, BirthmarkService[] spilist) throws IOException;
 
-    public String getResult(BirthmarkSpi[] spilist);
+    public String getResult(BirthmarkService[] spilist);
 }
index fc3f933..1a52636 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.printer.csv;
 import java.io.PrintWriter;
 
 import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,12 +13,12 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  */
 public class BirthmarkServiceCsvPrinter extends AbstractBirthmarkServicePrinter{
     @Override
-    public void printResult(PrintWriter out, BirthmarkSpi[] spilist){
+    public void printResult(PrintWriter out, BirthmarkService[] spilist){
         printHeader(out);
-        for(BirthmarkSpi spi: spilist){
+        for(BirthmarkService spi: spilist){
             out.print(spi.getType());
             out.print(",");
-            out.print(spi.getDisplayType());
+            out.print(spi.getType());
             out.print(",");
             out.print(spi.getClass().getName());
             out.print(",");
index 6399998..12785ef 100644 (file)
@@ -3,7 +3,7 @@ package jp.sourceforge.stigmata.printer.xml;
 import java.io.PrintWriter;
 
 import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -13,18 +13,15 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
  */
 public class BirthmarkServiceXmlPrinter extends AbstractBirthmarkServicePrinter{
     @Override
-    public void printResult(PrintWriter out, BirthmarkSpi[] spilist){
+    public void printResult(PrintWriter out, BirthmarkService[] spilist){
         out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
         out.println("<birthmark-result-set>");
         out.println("  <birthmark-services>");
-        for(BirthmarkSpi spi: spilist){
+        for(BirthmarkService spi: spilist){
             out.println("    <birthmark-service>");
             out.printf("      <type>%s</type>%n", spi.getType());
-            out.printf("      <display-name>%s</display-name>%n", spi.getDisplayType());
             out.printf("      <description>%s</description>%n", spi.getDescription());
             out.printf("      <class-name>%s</class-name>%n", spi.getClass().getName());
-            out.printf("      <extractor>%s</extractor>%n", spi.getExtractorClassName());
-            out.printf("      <comparator>%s</comparator>%n", spi.getComparatorClassName());
             out.println("    </birthmark-service>");
         }
         out.println("  </birthmark-services>");
index 19a719a..c5dc9c0 100644 (file)
@@ -217,11 +217,11 @@ public class RDBExtractionResultSet extends AbstractExtractionResultSet{
 
                     Birthmark birthmark = bs.getBirthmark(type);
                     if(birthmark == null){
-                        birthmark = env.getService(type).buildBirthmark();
+                        birthmark = env.getService(type).getExtractor().createBirthmark();
                         bs.addBirthmark(birthmark);
                     }
                     String element = rs.getString("ELEMENT");
-                    birthmark.addElement(env.getService(type).buildBirthmarkElement(element));
+                    birthmark.addElement(env.getService(type).getExtractor().buildElement(element));
 
                 } catch(MalformedURLException e){
                 }
index b1a2e3b..35d7f32 100644 (file)
@@ -35,7 +35,7 @@ import jp.sourceforge.stigmata.ExtractionTarget;
 import jp.sourceforge.stigmata.ExtractionUnit;
 import jp.sourceforge.stigmata.Stigmata;
 import jp.sourceforge.stigmata.printer.xml.ExtractionResultSetXmlPrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.ui.swing.ExtensionFilter;
 import jp.sourceforge.stigmata.utils.MultipleIterator;
 
@@ -278,7 +278,7 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{
             String className = null;
             BirthmarkSet bs = null;
             Birthmark birthmark = null;
-            BirthmarkSpi service = null;
+            BirthmarkService service = null;
                 
             while(reader.hasNext()){
                 // XMLEvent event = reader.peek();
@@ -315,7 +315,7 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{
                     }
                     else if(part.equals("element")){
                         if(service != null){
-                            BirthmarkElement be = service.buildBirthmarkElement(reader.getElementText());
+                            BirthmarkElement be = service.getExtractor().buildElement(reader.getElementText());
                             birthmark.addElement(be);
                         }
                     }
@@ -323,7 +323,7 @@ public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{
                         String type = se.getAttributeByName(new QName("type")).getValue();
                         service = env.getService(type);
                         if(service != null){
-                            birthmark = service.buildBirthmark();
+                            birthmark = service.getExtractor().createBirthmark();
                             bs.addBirthmark(birthmark);
                         }
                         else{
index 8bb8f53..669887f 100644 (file)
@@ -32,6 +32,6 @@ public interface BirthmarkComparatorSpi extends ServiceProvider{
     /**
      * returns a extractor for the birthmark of this service.
      */
-    public BirthmarkComparator getComparator(BirthmarkSpi service);
+    public BirthmarkComparator getComparator(BirthmarkService service);
 }
 
index 629d210..168dca3 100644 (file)
@@ -32,6 +32,6 @@ public interface BirthmarkExtractorSpi extends ServiceProvider{
     /**
      * returns a extractor for the birthmark of this service.
      */
-    public BirthmarkExtractor getExtractor(BirthmarkSpi service);
+    public BirthmarkExtractor getExtractor(BirthmarkService service);
 }
 
diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkService.java
new file mode 100644 (file)
index 0000000..72380ec
--- /dev/null
@@ -0,0 +1,39 @@
+package jp.sourceforge.stigmata.spi;
+
+import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
+
+/**
+ * Birthmark service provider interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public interface BirthmarkService{
+    /**
+     * returns a type of the birthmark this service provides.
+     */
+    public String getType();
+
+    /**
+     * returns a description of the birthmark this service provides.
+     */
+    public String getDescription();
+
+    public BirthmarkPreprocessor getPreprocessor();
+
+    /**
+     * returns a extractor for the birthmark of this service.
+     */
+    public BirthmarkExtractor getExtractor();
+
+    /**
+     * returns a comparator for the birthmark of this service.
+     */
+    public BirthmarkComparator getComparator();
+
+    public boolean isExperimental();
+
+    public boolean isUserDefined();
+}
+
diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java
deleted file mode 100644 (file)
index 5829520..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-package jp.sourceforge.stigmata.spi;
-
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.BirthmarkPreprocessor;
-
-/**
- * Birthmark service provider interface.
- *
- * @author Haruaki TAMADA
- */
-public interface BirthmarkSpi extends ServiceProvider{
-    /**
-     * returns a type of the birthmark this service provides.
-     */
-    public String getType();
-
-    /**
-     * returns a type of the birthmark for display.
-     */
-    public String getDisplayType(Locale locale);
-
-    /**
-     * returns a type of the birthmark for display in default locale.
-     */
-    public String getDisplayType();
-
-    /**
-     * returns a description of the birthmark this service provides.
-     */
-    public String getDefaultDescription();
-
-    /**
-     * 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();
-
-    public Birthmark buildBirthmark();
-
-    public BirthmarkElement buildBirthmarkElement(String elementValue);
-
-    public BirthmarkPreprocessor getPreprocessor();
-
-    public String getPreprocessorClassName();
-
-    /**
-     * returns a extractor for the birthmark of this service.
-     */
-    public BirthmarkExtractor getExtractor();
-
-    public String getComparatorClassName();
-
-    /**
-     * returns a comparator for the birthmark of this service.
-     */
-    public BirthmarkComparator getComparator();
-
-    public boolean isExperimental();
-
-    public boolean isUserDefined();
-
-}
-
diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ReflectedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/spi/ReflectedBirthmarkService.java
new file mode 100644 (file)
index 0000000..f1e7409
--- /dev/null
@@ -0,0 +1,101 @@
+package jp.sourceforge.stigmata.spi;\r
+\r
+import java.io.Serializable;\r
+\r
+import jp.sourceforge.stigmata.BirthmarkComparator;\r
+import jp.sourceforge.stigmata.BirthmarkExtractor;\r
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;\r
+\r
+public class ReflectedBirthmarkService implements BirthmarkService, Serializable{\r
+    private static final long serialVersionUID = 4090172591560046236L;\r
+\r
+    private String type;\r
+    private String description;\r
+    private String extractorClass;\r
+    private String comparatorClass;\r
+    private String preprocessorClass;\r
+\r
+    private transient BirthmarkExtractor extractor;\r
+    private transient BirthmarkComparator comparator;\r
+    private transient BirthmarkPreprocessor preprocessor;\r
+\r
+    public ReflectedBirthmarkService(String type, String description,\r
+            String extractorClass, String comparatorClass){\r
+        this(type, description, extractorClass, comparatorClass, null);\r
+    }\r
+\r
+    /**\r
+     * \r
+     * @param type\r
+     * @param description\r
+     * @param extractorClass\r
+     * @param comparatorClass\r
+     * @param preprocessorClass\r
+     * @throws NullPointerException one of type, extractorClass, and comparatorClass is null. \r
+     */\r
+    public ReflectedBirthmarkService(String type, String description,\r
+            String extractorClass, String comparatorClass, String preprocessorClass){\r
+        if(type == null || extractorClass == null || comparatorClass == null){\r
+            throw new NullPointerException();\r
+        }\r
+        this.type = type;\r
+        this.description = description;\r
+        this.extractorClass = extractorClass;\r
+        this.comparatorClass = comparatorClass;\r
+        this.preprocessorClass = preprocessorClass;\r
+    }\r
+\r
+    @Override\r
+    public String getType(){\r
+        return type;\r
+    }\r
+\r
+    @Override\r
+    public String getDescription(){\r
+        return description;\r
+    }\r
+\r
+    @Override\r
+    public synchronized BirthmarkPreprocessor getPreprocessor(){\r
+        if(preprocessor == null && preprocessorClass != null){\r
+            preprocessor = instantiateClass(preprocessorClass, BirthmarkPreprocessor.class);\r
+        }\r
+        return preprocessor;\r
+    }\r
+\r
+    private <T> T instantiateClass(String name, Class<T> type){\r
+        try{\r
+            Class<? extends T> targetClass = Class.forName(name).asSubclass(type);\r
+            return targetClass.newInstance();\r
+        } catch(Exception e){\r
+        }\r
+        return null;\r
+    }\r
+\r
+    @Override\r
+    public BirthmarkExtractor getExtractor(){\r
+        if(extractor == null){\r
+            extractor = instantiateClass(extractorClass, BirthmarkExtractor.class);\r
+        }\r
+        return extractor;\r
+    }\r
+\r
+    @Override\r
+    public synchronized BirthmarkComparator getComparator(){\r
+        if(comparator == null){\r
+            comparator = instantiateClass(comparatorClass, BirthmarkComparator.class);\r
+        }\r
+        return comparator;\r
+    }\r
+\r
+    @Override\r
+    public boolean isExperimental(){\r
+        return true;\r
+    }\r
+\r
+    @Override\r
+    public boolean isUserDefined(){\r
+        return true;\r
+    }\r
+\r
+}\r
index bfb399a..9e371b2 100644 (file)
@@ -28,10 +28,10 @@ import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
 import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi;
 import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
 import jp.sourceforge.talisman.i18n.Messages;
 
 /**
@@ -47,7 +47,7 @@ public class BirthmarkDefinitionPane extends JPanel{
     private JList serviceList;
     private JButton newService;
     private JButton removeService;
-    private List<BirthmarkSpi> addedService = new ArrayList<BirthmarkSpi>();
+    private List<BirthmarkService> addedService = new ArrayList<BirthmarkService>();
     private List<BirthmarkServiceListener> listeners = new ArrayList<BirthmarkServiceListener>();
 
     public BirthmarkDefinitionPane(StigmataFrame stigmata){
@@ -68,17 +68,14 @@ public class BirthmarkDefinitionPane extends JPanel{
     }
 
     public void reset(){
-        for(BirthmarkSpi service: addedService){
+        for(BirthmarkService service: addedService){
             model.removeElement(service);
         }
     }
 
     public void updateEnvironment(BirthmarkEnvironment environment){
-        for(BirthmarkSpi service: addedService){
+        for(BirthmarkService service: addedService){
             if(environment.getService(service.getType()) == null){
-                if(service instanceof BirthmarkService){
-                    ((BirthmarkService)service).setBirthmarkEnvironment(environment);
-                }
                 environment.addService(service);
             }
         }
@@ -88,7 +85,7 @@ public class BirthmarkDefinitionPane extends JPanel{
         information.initData();
         model.addElement(stigmata.getMessages().get("newservice.definition.label"));
 
-        for(BirthmarkSpi service: stigmata.getEnvironment().findServices()){
+        for(BirthmarkService service: stigmata.getEnvironment().findServices()){
             model.addElement(service);
         }
     }
@@ -146,7 +143,7 @@ public class BirthmarkDefinitionPane extends JPanel{
     private void removeService(){
         int index = serviceList.getSelectedIndex();
         if(index > 0){
-            BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index);
+            BirthmarkService service = (BirthmarkService)model.getElementAt(index);
             if(service != null && service.isUserDefined()){
                 model.remove(index);
                 for(BirthmarkServiceListener listener: listeners){
@@ -173,7 +170,7 @@ public class BirthmarkDefinitionPane extends JPanel{
     private void listValueChanged(ListSelectionEvent e){
         int index = serviceList.getSelectedIndex();
         if(index > 0){
-            BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index);
+            BirthmarkService service = (BirthmarkService)model.getElementAt(index);
             if(service != null){
                 information.setService(service);
             }
@@ -192,9 +189,9 @@ public class BirthmarkDefinitionPane extends JPanel{
     private void updateView(){
         int index = serviceList.getSelectedIndex();
         ListModel model = serviceList.getModel();
-        BirthmarkSpi service = null;
+        BirthmarkService service = null;
         if(index > 0){
-            service = (BirthmarkSpi)model.getElementAt(index); 
+            service = (BirthmarkService)model.getElementAt(index); 
         }
         newService.setEnabled(
             (index <= 0 || service.isUserDefined()) && 
@@ -206,7 +203,7 @@ public class BirthmarkDefinitionPane extends JPanel{
     }
 
     private boolean isAvailableServiceName(String name){
-        for(BirthmarkSpi service: addedService){
+        for(BirthmarkService service: addedService){
             if(service.getType().equals(name)){
                 return false;
             }
@@ -220,7 +217,6 @@ public class BirthmarkDefinitionPane extends JPanel{
         private StigmataFrame stigmata;
         private BirthmarkDefinitionPane thisPane;
         private JTextField type;
-        private JTextField displayType;
         private JTextArea description;
         private JComboBox extractor;
         private JComboBox comparator;
@@ -242,27 +238,23 @@ public class BirthmarkDefinitionPane extends JPanel{
             super.setEnabled(flag);
 
             type.setEnabled(flag);
-            displayType.setEnabled(flag);
             description.setEnabled(flag);
             extractor.setEnabled(flag);
             comparator.setEnabled(flag);
         }
 
         public BirthmarkService createService(){
-            BirthmarkService service = new BirthmarkService();
-            service.setType(type.getText());
-            service.setDisplayType(displayType.getText());
-            service.setDescription(description.getText());
-            service.setExtractorClassName(extractor.getSelectedItem().toString());
-            service.setComparatorClassName(comparator.getSelectedItem().toString());
-            service.setUserDefined(true);
+            BirthmarkService service = new ReflectedBirthmarkService(
+                type.getText(), description.getText(),
+                extractor.getSelectedItem().toString(),
+                comparator.getSelectedItem().toString()
+            );
 
             return service;
         }
 
         public void clear(){
             type.setText("");
-            displayType.setText("");
             description.setText("");
             extractor.getModel().setSelectedItem(null);
             comparator.getModel().setSelectedItem(null);
@@ -285,7 +277,6 @@ public class BirthmarkDefinitionPane extends JPanel{
             BirthmarkEnvironment environment = stigmata.getEnvironment();
 
             boolean flag = newType.length() > 0
-                    && displayType.getText().length() > 0
                     && extractorClass.length() > 0
                     && comparatorClass.length() > 0;
 
@@ -300,12 +291,11 @@ public class BirthmarkDefinitionPane extends JPanel{
             return flag;
         }
 
-        public void setService(BirthmarkSpi service){
+        public void setService(BirthmarkService service){
             type.setText(service.getType());
-            displayType.setText(service.getDisplayType());
-            description.setText(service.getDefaultDescription());
-            selectComboBoxItem(extractor, service.getExtractorClassName());
-            selectComboBoxItem(comparator, service.getComparatorClassName());
+            description.setText(service.getDescription());
+            selectComboBoxItem(extractor, service.getExtractor().getClass().getName());
+            selectComboBoxItem(comparator, service.getComparator().getClass().getName());
             userDefined.setSelected(service.isUserDefined());
             experimental.setSelected(service.isExperimental());
 
@@ -332,7 +322,6 @@ public class BirthmarkDefinitionPane extends JPanel{
         private void initLayouts(){
             Messages messages = stigmata.getMessages();
             type = new JTextField();
-            displayType = new JTextField();
             extractor = new JComboBox();
             comparator = new JComboBox();
             experimental = new JCheckBox(messages.get("define.experimental.label"));
@@ -340,14 +329,12 @@ public class BirthmarkDefinitionPane extends JPanel{
             description = new JTextArea();
             JScrollPane scroll = new JScrollPane(description);
             type.setColumns(10);
-            displayType.setColumns(20);
             description.setColumns(40);
             description.setRows(10);
 
             JPanel typePane = new JPanel(new BorderLayout());
             JPanel displayTypePane = new JPanel(new BorderLayout());
             typePane.add(type, BorderLayout.CENTER);
-            displayTypePane.add(displayType, BorderLayout.CENTER);
 
             JPanel box1 = new JPanel(new BorderLayout());
             box1.add(typePane, BorderLayout.WEST);
@@ -409,7 +396,6 @@ public class BirthmarkDefinitionPane extends JPanel{
             };
 
             type.getDocument().addDocumentListener(listener);
-            displayType.getDocument().addDocumentListener(listener);
             description.getDocument().addDocumentListener(listener);
             ItemListener itemListener = new ItemListener(){
                 @Override
index cd8249f..746e283 100644 (file)
@@ -10,7 +10,7 @@ import java.util.Set;
 
 import javax.swing.JPanel;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.talisman.i18n.Messages;
 
 /**
@@ -52,7 +52,7 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
         return selectedServices.toArray(new String[selectedServices.size()]);
     }
 
-    public BirthmarkSpi getService(String type){
+    public BirthmarkService getService(String type){
         BirthmarkSelection elem = services.get(type);
         if(elem != null){
             return elem.getService();
@@ -65,7 +65,7 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
         String[] serviceArray = new String[services.size()];
         int index = 0;
         for(String key: services.keySet()){
-            BirthmarkSpi service = services.get(key).getService();
+            BirthmarkService service = services.get(key).getService();
             serviceArray[index] = service.getType();
             index++;
         }
@@ -86,7 +86,7 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
         fireEvent();
     }
 
-    public void select(BirthmarkSpi service, boolean flag){
+    public void select(BirthmarkService service, boolean flag){
         select(service.getType(), flag);
     }
 
@@ -103,7 +103,7 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
     }
 
     @Override
-    public void serviceAdded(BirthmarkSpi service){
+    public void serviceAdded(BirthmarkService service){
         if(services.get(service.getType()) == null){
             BirthmarkSelection elem = new BirthmarkSelection(service);
             selectedServices.add(service.getType());
@@ -114,7 +114,7 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
     }
 
     @Override
-    public void serviceRemoved(BirthmarkSpi service){
+    public void serviceRemoved(BirthmarkService service){
         BirthmarkSelection elem = services.get(service);
         if(elem != null){
             selectedServices.remove(service);
@@ -142,10 +142,10 @@ public abstract class BirthmarkSelectablePane extends JPanel implements Birthmar
     }
 
     private void initServices(){
-        BirthmarkSpi[] serviceArray = stigmata.getEnvironment().getServices();
+        BirthmarkService[] serviceArray = stigmata.getEnvironment().getServices();
 
         services = new LinkedHashMap<String, BirthmarkSelection>();
-        for(BirthmarkSpi service: serviceArray){
+        for(BirthmarkService service: serviceArray){
             BirthmarkSelection elem = new BirthmarkSelection(service);
             services.put(service.getType(), elem);
         }
index 2708c7d..640452b 100644 (file)
@@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.ui.swing;
 
 import java.io.Serializable;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * @author Haruaki TAMADA
@@ -10,14 +10,14 @@ import jp.sourceforge.stigmata.spi.BirthmarkSpi;
 class BirthmarkSelection implements Serializable{
     private static final long serialVersionUID = -3244323970546344L;
 
-    private BirthmarkSpi service;
+    private BirthmarkService service;
     private boolean selected = true;
 
-    public BirthmarkSelection(BirthmarkSpi service){
+    public BirthmarkSelection(BirthmarkService service){
         this.service = service;
     }
 
-    public BirthmarkSpi getService(){
+    public BirthmarkService getService(){
         return service;
     }
 
index 77953ff..d0fca32 100644 (file)
@@ -70,7 +70,7 @@ public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{
         for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
             final BirthmarkSelection elem = i.next();
             if(elem.isVisible(isExperimentalMode())){
-                JCheckBox check = new JCheckBox(elem.getService().getDisplayType());
+                JCheckBox check = new JCheckBox(elem.getService().getType());
                 check.setSelected(elem.isSelected());
                 check.addActionListener(new ActionListener(){
                     @Override
index 68b3cac..2ae8590 100644 (file)
@@ -19,7 +19,7 @@ import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.border.EmptyBorder;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  *
@@ -38,7 +38,7 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{
     }
 
     @Override
-    public void serviceRemoved(BirthmarkSpi service){
+    public void serviceRemoved(BirthmarkService service){
         BirthmarkSelection elem = getSelection(service.getType());
         model.removeElement(elem);
         
@@ -118,7 +118,7 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{
         @Override
         public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean forcus){
             BirthmarkSelection elem = (BirthmarkSelection)value;
-            setText(elem.getService().getDisplayType());
+            setText(elem.getService().getType());
             setToolTipText(elem.getService().getDescription());
             setSelected(elem.isSelected());
 
index 313f1f2..2a73989 100644 (file)
@@ -14,7 +14,7 @@ import javax.swing.UIManager;
 import javax.swing.border.Border;
 import javax.swing.border.EmptyBorder;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
@@ -42,9 +42,9 @@ public class BirthmarkServiceListCellRenderer extends JPanel implements ListCell
 
     @Override
     public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus){
-        if(value instanceof BirthmarkSpi){
-            BirthmarkSpi service = (BirthmarkSpi)value;
-            leftLabel.setText(service.getDisplayType());
+        if(value instanceof BirthmarkService){
+            BirthmarkService service = (BirthmarkService)value;
+            leftLabel.setText(service.getType());
             rightLabel.setText("(" + service.getType() + ")");
         }
         else{
index 7e45bca..8162a24 100644 (file)
@@ -1,13 +1,13 @@
 package jp.sourceforge.stigmata.ui.swing;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 /**
  * 
  * @author Haruaki Tamada
  */
 public interface BirthmarkServiceListener{
-    public void serviceAdded(BirthmarkSpi service);
+    public void serviceAdded(BirthmarkService service);
 
-    public void serviceRemoved(BirthmarkSpi service);
+    public void serviceRemoved(BirthmarkService service);
 }
index 73ab063..35a3a56 100644 (file)
@@ -13,7 +13,7 @@ import jp.sourceforge.stigmata.ComparisonPairFilter;
 import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilter;
 import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService;
 import jp.sourceforge.stigmata.filter.FilterTarget;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
 import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListCellRenderer;
 import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener;
@@ -38,12 +38,12 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A
     }
 
     @Override
-    public void serviceAdded(BirthmarkSpi service){
+    public void serviceAdded(BirthmarkService service){
         pane.serviceAdded(service);
     }
 
     @Override
-    public void serviceRemoved(BirthmarkSpi service){
+    public void serviceRemoved(BirthmarkService service){
         pane.serviceRemoved(service);
     }
 
@@ -68,12 +68,12 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A
         }
 
         @Override
-        public void serviceAdded(BirthmarkSpi service){
+        public void serviceAdded(BirthmarkService service){
             birthmarks.addItem(service);
         }
 
         @Override
-        public void serviceRemoved(BirthmarkSpi service){
+        public void serviceRemoved(BirthmarkService service){
             birthmarks.removeItem(service);
         }
 
@@ -144,7 +144,7 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A
         }
 
         private String getBirthmarkType(){
-            BirthmarkSpi service = (BirthmarkSpi)birthmarks.getSelectedItem();
+            BirthmarkService service = (BirthmarkService)birthmarks.getSelectedItem();
             if(service != null){
                 return service.getType();
             }
index 77316ae..59eb6e4 100644 (file)
@@ -20,7 +20,7 @@ import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 
 import jp.sourceforge.stigmata.ComparisonPairFilter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
 import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener;
 import jp.sourceforge.stigmata.ui.swing.GUIUtility;
@@ -110,7 +110,7 @@ public class FilterEditingPane extends JPanel{
 
             ComparisonPairFilterPane pane = service.createComponent(stigmata, service.getComparisonPairFilterService());
             if(pane instanceof BirthmarkServiceListener){
-                for(BirthmarkSpi bs: stigmata.getEnvironment().getServices()){
+                for(BirthmarkService bs: stigmata.getEnvironment().getServices()){
                     ((BirthmarkServiceListener)pane).serviceAdded(bs);
                 }
                 stigmata.addBirthmarkServiceListener((BirthmarkServiceListener)pane);
index 32fdbd3..a39bd2f 100644 (file)
@@ -9,8 +9,8 @@ import java.util.Map;
 import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.ComparisonPairFilter;
 import jp.sourceforge.stigmata.ComparisonPairFilterSet;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
 
 import org.apache.commons.beanutils.BeanUtils;
 
@@ -156,14 +156,15 @@ public class ConfigFileExporter{
 
     private void exportServices(PrintWriter out) throws IOException{
         out.println("  <birthmark-services>");
-        for(BirthmarkSpi service: environment.getServices()){
+        for(BirthmarkService service: environment.getServices()){
             if(service.isExperimental() && service instanceof BirthmarkService){
                 out.println("    <birthmark-service>");
                 out.printf("      <type>%s</type>%n", service.getType());
-                out.printf("      <display-name>%s</display-name>%n", service.getDisplayType());
-                out.printf("      <description>%s</description>%n", service.getDescription());
-                out.printf("      <extractor>%s</extractor>%n", service.getExtractorClassName());
-                out.printf("      <comparator>%s</comparator>%n", service.getComparatorClassName());
+                if(service instanceof ReflectedBirthmarkService){
+                    out.printf("      <description>%s</description>%n", service.getDescription());
+                    out.printf("      <extractor>%s</extractor>%n", service.getExtractor().getClass().getName());
+                    out.printf("      <comparator>%s</comparator>%n", service.getComparator().getClass().getName());
+                }
                 out.println("    </birthmark-service>");
             }
         }
index bdbe6dd..6012343 100644 (file)
@@ -15,7 +15,8 @@ import jp.sourceforge.stigmata.BirthmarkEnvironment;
 import jp.sourceforge.stigmata.ComparisonPairFilter;
 import jp.sourceforge.stigmata.ComparisonPairFilterSet;
 import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
 
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
@@ -60,7 +61,7 @@ public class ConfigFileImporter{
     private static class Handler extends DefaultHandler{
         private BirthmarkEnvironment environment;
         private WellknownClassManager manager;
-        private BirthmarkService service;
+        private Map<String, String> serviceMap;
         private ComparisonPairFilterSet filter;
         private Part part;
         private boolean exclude;
@@ -99,8 +100,6 @@ public class ConfigFileImporter{
             }
             else if(qname.equals("birthmark-service")){
                 part = Part.SERVICES;
-                service = new BirthmarkService();
-                service.setUserDefined(false);
             }
             else if(qname.equals("filterset-list")){
                 part = Part.FILTER_SET;
@@ -163,23 +162,16 @@ public class ConfigFileImporter{
                 }
                 else if(part == Part.CLASSPATH && qname.equals("classpath")){
                     try{
-                        environment.getClasspathContext().addClasspath(
-                                new URL(value));
+                        environment.getClasspathContext().addClasspath(new URL(value));
                     }catch(MalformedURLException e){
                         throw new SAXException(e);
                     }
                 }
                 else if(part == Part.SERVICES){
-                    if(qname.equals("type"))
-                        service.setType(value);
-                    else if(qname.equals("display-name"))
-                        service.setDisplayType(value);
-                    else if(qname.equals("description"))
-                        service.setDescription(value);
-                    else if(qname.equals("extractor"))
-                        service.setExtractorClassName(value);
-                    else if(qname.equals("comparator"))
-                        service.setComparatorClassName(value);
+                    if(serviceMap == null){
+                        serviceMap = new HashMap<String, String>();
+                    }
+                    serviceMap.put(qname, value);
                 }
                 else if(part == Part.FILTER_SET){
                     if(qname.equals("name")){
@@ -214,8 +206,13 @@ public class ConfigFileImporter{
         @Override
         public void endElement(String uri, String localname, String qname){
             if(part == Part.SERVICES && qname.equals("birthmark-service")){
+                BirthmarkService service = new ReflectedBirthmarkService(
+                    serviceMap.get("type"),
+                    serviceMap.get("description"),
+                    serviceMap.get("extractor"),
+                    serviceMap.get("comparator")
+                );
                 environment.addService(service);
-                service = null;
             }
             else if(part == Part.FILTER_DEFINITION && qname.equals("filter")){
                 ComparisonPairFilter f = environment.getFilterManager().buildFilter(
index 0443188..04ba6af 100644 (file)
@@ -1,6 +1,6 @@
 package jp.sourceforge.stigmata;
 
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
 
 import org.junit.Assert;
 import org.junit.Before;
@@ -32,7 +32,7 @@ public class StigmataTest{
 
     @Test
     public void checkSmcBirthmarkService() throws Exception{
-        BirthmarkSpi service = environment.getService("smc");
+        BirthmarkService service = environment.getService("smc");
 
         Assert.assertNotNull(service.getComparator());
         Assert.assertNotNull(service.getExtractor());
@@ -48,7 +48,7 @@ public class StigmataTest{
 
     @Test
     public void checkCvfvBirthmarkService() throws Exception{
-        BirthmarkSpi service = environment.getService("cvfv");
+        BirthmarkService service = environment.getService("cvfv");
 
         Assert.assertNotNull(service.getComparator());
         Assert.assertNotNull(service.getExtractor());
@@ -64,7 +64,7 @@ public class StigmataTest{
 
     @Test
     public void checkIsBirthmarkService() throws Exception{
-        BirthmarkSpi service = environment.getService("is");
+        BirthmarkService service = environment.getService("is");
 
         Assert.assertNotNull(service.getComparator());
         Assert.assertNotNull(service.getExtractor());
@@ -80,7 +80,7 @@ public class StigmataTest{
 
     @Test
     public void checkUcBirthmarkService() throws Exception{
-        BirthmarkSpi service = environment.getService("uc");
+        BirthmarkService service = environment.getService("uc");
 
         Assert.assertNotNull(service.getComparator());
         Assert.assertNotNull(service.getExtractor());
@@ -96,7 +96,7 @@ public class StigmataTest{
 
     @Test
     public void checkKgramBirthmarkService() throws Exception{
-        BirthmarkSpi service = environment.getService("kgram");
+        BirthmarkService service = environment.getService("kgram");
 
         Assert.assertNotNull(service.getComparator());
         Assert.assertNotNull(service.getExtractor());