From b4c5f64825e1626d32449435a5fb362348897076 Mon Sep 17 00:00:00 2001 From: Haruaki Tamada Date: Tue, 12 Apr 2011 12:37:52 +0900 Subject: [PATCH] =?utf8?q?BirthmarkSpi=20->=20BirthmarkService=20=E6=8A=BD?= =?utf8?q?=E8=B1=A1=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AA=E3=81=A9=E3=81=AF?= =?utf8?q?=E5=89=8A=E9=99=A4=E3=81=97=E3=81=9F=EF=BC=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 + pom.xml | 79 ++++++---- .../jp/sourceforge/stigmata/BirthmarkEngine.java | 4 +- .../sourceforge/stigmata/BirthmarkEnvironment.java | 56 ++++--- .../sourceforge/stigmata/BirthmarkExtractor.java | 9 +- .../stigmata/BirthmarkSpiComparator.java | 6 +- src/main/java/jp/sourceforge/stigmata/Main.java | 4 +- .../java/jp/sourceforge/stigmata/Stigmata.java | 6 +- .../stigmata/birthmarks/ASMBirthmarkExtractor.java | 4 +- .../birthmarks/AbstractBirthmarkExtractor.java | 8 +- .../birthmarks/AbstractBirthmarkPreprocessor.java | 8 +- .../birthmarks/AbstractBirthmarkService.java | 118 --------------- .../stigmata/birthmarks/BirthmarkService.java | 163 --------------------- .../comparators/AbstractBirthmarkComparator.java | 8 +- .../AbstractBirthmarkComparatorService.java | 6 +- .../CosineSimilarityBirthmarkComparator.java | 4 +- ...CosineSimilarityBirthmarkComparatorService.java | 4 +- .../comparators/DPMatchingBirthmarkComparator.java | 4 +- .../DPMatchingBirthmarkComparatorService.java | 4 +- .../EditDistanceBirthmarkComparator.java | 4 +- .../EditDistanceBirthmarkComparatorService.java | 4 +- .../ExtendedEditDistanceBirthmarkComparator.java | 4 +- ...ndedEditDistanceBirthmarkComparatorService.java | 4 +- .../comparators/LogicalAndBirthmarkComparator.java | 4 +- .../LogicalAndBirthmarkComparatorService.java | 4 +- .../comparators/PlainBirthmarkComparator.java | 4 +- .../PlainBirthmarkComparatorService.java | 4 +- ...tantValueOfFieldVariableBirthmarkExtractor.java | 33 ++++- ...nstantValueOfFieldVariableBirthmarkService.java | 38 +---- .../AbstractBirthmarkExtractorService.java | 6 +- .../extractors/BirthmarkExtractorFactory.java | 4 +- ...ueOfFieldVariableBirthmarkExtractorService.java | 4 +- ...equencyMethodCallBirthmarkExtractorService.java | 4 +- ...quencyUsedClassesBirthmarkExtractorService.java | 4 +- ...eritanceStructureBirthmarkExtractorService.java | 4 +- .../KGramBasedBirthmarkExtractorService.java | 4 +- ...uentialMethodCallBirthmarkExtractorService.java | 4 +- .../UsedClassesBirthmarkExtractorService.java | 4 +- .../fmc/FrequencyMethodCallBirthmarkExtractor.java | 11 +- .../fmc/FrequencyMethodCallBirthmarkService.java | 26 ++-- .../FrequencyUsedClassesBirthmarkExtractor.java | 10 +- .../fuc/FrequencyUsedClassesBirthmarkService.java | 15 +- .../is/InheritanceStructureBirthmarkExtractor.java | 10 +- .../is/InheritanceStructureBirthmarkService.java | 13 +- .../kgram/KGramBasedBirthmarkExtractor.java | 20 ++- .../kgram/KGramBasedBirthmarkService.java | 26 +--- .../SequentialMethodCallBirthmarkExtractor.java | 14 +- .../smc/SequentialMethodCallBirthmarkService.java | 21 +-- .../uc/UsedClassesBirthmarkExtractor.java | 10 +- .../birthmarks/uc/UsedClassesBirthmarkService.java | 13 +- .../sourceforge/stigmata/command/HelpCommand.java | 6 +- .../stigmata/command/ListBirthmarksCommand.java | 4 +- .../stigmata/command/UninstallCommand.java | 7 +- .../printer/AbstractBirthmarkServicePrinter.java | 6 +- .../stigmata/printer/BirthmarkServicePrinter.java | 6 +- .../printer/csv/BirthmarkServiceCsvPrinter.java | 8 +- .../printer/xml/BirthmarkServiceXmlPrinter.java | 9 +- .../stigmata/result/RDBExtractionResultSet.java | 4 +- .../result/XmlFileExtractionResultSet.java | 8 +- .../stigmata/spi/BirthmarkComparatorSpi.java | 2 +- .../stigmata/spi/BirthmarkExtractorSpi.java | 2 +- .../sourceforge/stigmata/spi/BirthmarkService.java | 39 +++++ .../jp/sourceforge/stigmata/spi/BirthmarkSpi.java | 76 ---------- .../stigmata/spi/ReflectedBirthmarkService.java | 101 +++++++++++++ .../stigmata/ui/swing/BirthmarkDefinitionPane.java | 54 +++---- .../stigmata/ui/swing/BirthmarkSelectablePane.java | 16 +- .../stigmata/ui/swing/BirthmarkSelection.java | 8 +- .../ui/swing/BirthmarkSelectionCheckSetPane.java | 2 +- .../ui/swing/BirthmarkSelectionListPane.java | 6 +- .../ui/swing/BirthmarkServiceListCellRenderer.java | 8 +- .../ui/swing/BirthmarkServiceListener.java | 6 +- ...tCountComparisonPairFilterComponentService.java | 12 +- .../ui/swing/filter/FilterEditingPane.java | 4 +- .../stigmata/utils/ConfigFileExporter.java | 15 +- .../stigmata/utils/ConfigFileImporter.java | 31 ++-- ...> jp.sourceforge.stigmata.spi.BirthmarkService} | 0 .../java/jp/sourceforge/stigmata/StigmataTest.java | 12 +- 77 files changed, 568 insertions(+), 714 deletions(-) delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java create mode 100644 src/main/java/jp/sourceforge/stigmata/spi/BirthmarkService.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java create mode 100644 src/main/java/jp/sourceforge/stigmata/spi/ReflectedBirthmarkService.java rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.BirthmarkSpi => jp.sourceforge.stigmata.spi.BirthmarkService} (100%) diff --git a/.gitignore b/.gitignore index eb5a316..f57902c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ +.classpath +.djunitplugin +.project +.settings target +jcoverage.ser diff --git a/pom.xml b/pom.xml index b7e052e..6c234bd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ 4.0.0 jp.sourceforge stigmata - 2.0.1-SNAPSHOT - stigmata + 3.0.0-SNAPSHOT + Stigmata Java birthmark toolkit http://stigmata.sourceforge.jp/ 2006 @@ -42,8 +42,8 @@ asm - asm-all - 3.1 + asm + 3.3 compile @@ -79,7 +79,7 @@ jp.sourceforge.stigmata digger - 1.1.0 + 3.0.0-SNAPSHOT compile @@ -125,6 +125,7 @@ org.apache.maven.plugins maven-compiler-plugin + 2.3.2 1.6 1.6 @@ -134,7 +135,17 @@ org.apache.maven.plugins + maven-resources-plugin + 2.4.3 + + utf-8 + + + + + org.apache.maven.plugins maven-jar-plugin + 2.3.1 @@ -167,6 +178,7 @@ org.codehaus.mojo native2ascii-maven-plugin + 1.0-alpha-1 @@ -193,6 +205,7 @@ org.apache.maven.plugins maven-site-plugin + 3.0-beta-3 euc-jp utf-8 @@ -252,56 +265,62 @@ org.apache.maven.plugins maven-project-info-reports-plugin - - - org.apache.maven.plugins - maven-javadoc-plugin - - en - + 2.3.1 org.codehaus.mojo cobertura-maven-plugin + 2.4 + + + xml + html + + utf-8 + + org.apache.maven.plugins maven-pmd-plugin + 2.5 - true utf-8 + utf-8 1.6 - org.apache.maven.plugins - maven-jxr-plugin + org.codehaus.mojo + findbugs-maven-plugin + 2.3.2 + + utf-8 + utf-8 + org.apache.maven.plugins - maven-changes-plugin - - - - changes-report - - - + maven-surefire-report-plugin + 2.8 - org.codehaus.mojo - findbugs-maven-plugin + org.apache.maven.plugins + maven-jxr-plugin + 2.1 - false - Normal - Default + utf-8 + utf-8 + true - org.apache.maven.plugins maven-javadoc-plugin + 2.7 - en + utf-8 + utf-8 + utf-8 diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java index 7e4da6a..9f5ab1f 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java @@ -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); diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java index dcc3274..7e9f484 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java @@ -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 services = new HashMap(); + private Map services = new HashMap(); /** * 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 list = getServiceList(); - BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]); + public synchronized BirthmarkService[] getServices(){ + List list = getServiceList(); + BirthmarkService[] services = list.toArray(new BirthmarkService[list.size()]); Arrays.sort(services, new BirthmarkSpiComparator()); return services; } public Iterator lookupProviders(Class providerClass){ - Iterator iterator; + ServiceLoader services; if(loader != null){ - ServiceLoader services = ServiceLoader.load(providerClass, loader); + services = ServiceLoader.load(providerClass, loader); + } + else{ + services = ServiceLoader.load(providerClass); + } + + Iterator iterator; + if(services != null){ iterator = services.iterator(); } else{ - iterator = ServiceRegistry.lookupProviders(providerClass); + iterator = new NullIterator(); } return iterator; } @@ -257,16 +265,16 @@ public class BirthmarkEnvironment{ /** * return birthmark services lookup from current class path. */ - public synchronized BirthmarkSpi[] findServices(){ - List list = getServiceList(); + public synchronized BirthmarkService[] findServices(){ + List list = getServiceList(); - for(Iterator i = lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ - BirthmarkSpi spi = i.next(); + for(Iterator 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 getServiceList(){ - List list = new ArrayList(); + private List getServiceList(){ + List list = new ArrayList(); 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); + } + } } diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java index 5ebf492..e718d90 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java @@ -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; diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java index 392c802..8898218 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkSpiComparator.java @@ -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{ +class BirthmarkSpiComparator implements Comparator{ /** * default constructor */ @@ -20,7 +20,7 @@ class BirthmarkSpiComparator implements Comparator{ } @Override - public int compare(BirthmarkSpi s1, BirthmarkSpi s2){ + public int compare(BirthmarkService s1, BirthmarkService s2){ if(s1.isExperimental() && !s2.isExperimental()){ return 1; } diff --git a/src/main/java/jp/sourceforge/stigmata/Main.java b/src/main/java/jp/sourceforge/stigmata/Main.java index 180550b..0dec350 100644 --- a/src/main/java/jp/sourceforge/stigmata/Main.java +++ b/src/main/java/jp/sourceforge/stigmata/Main.java @@ -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 birthmarkList = new ArrayList(); - for(BirthmarkSpi service: env.getServices()){ + for(BirthmarkService service: env.getServices()){ if(!service.isExperimental()){ birthmarkList.add(service.getType()); } diff --git a/src/main/java/jp/sourceforge/stigmata/Stigmata.java b/src/main/java/jp/sourceforge/stigmata/Stigmata.java index b02884a..e2447ff 100644 --- a/src/main/java/jp/sourceforge/stigmata/Stigmata.java +++ b/src/main/java/jp/sourceforge/stigmata/Stigmata.java @@ -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 i = defaultEnvironment.lookupProviders(BirthmarkSpi.class); i.hasNext(); ){ - BirthmarkSpi service = i.next(); + for(Iterator i = defaultEnvironment.lookupProviders(BirthmarkService.class); i.hasNext(); ){ + BirthmarkService service = i.next(); defaultEnvironment.addService(service); } PrinterManager.refresh(defaultEnvironment); diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java index 4d496d2..96e2207 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/ASMBirthmarkExtractor.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java index 8dbe3b9..dfe50d7 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java @@ -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; } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkPreprocessor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkPreprocessor.java index 7e9ab77..b679abb 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkPreprocessor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkPreprocessor.java @@ -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 index e376e99..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkService.java +++ /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 BirthmarkSpi} - * - * @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("")){ - 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 index 8cf5330..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/BirthmarkService.java +++ /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 extractorClass; - private Class 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 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 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; - } -} - diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java index 80a8b6e..0883746 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparator.java @@ -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; } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java index 64f40b1..8f95511 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java @@ -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 clazz = c.asSubclass(BirthmarkComparator.class); - Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); + Constructor constructor = clazz.getConstructor(BirthmarkService.class); return constructor.newInstance(service); } catch(NoSuchMethodException e){ } catch(InstantiationException e){ diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java index 35469e9..3655778 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java index a9a6c22..1fbe975 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java index 823be06..25d0efe 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java index 2e4cc0d..c148662 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java index 0127407..2af88e6 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java index 6325a0a..9a2f4b0 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java index 836be14..17ac97a 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java index 6b6bb20..59e9384 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java index 016274f..48152cf 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java index 611be3f..0e1dae4 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java index 71670ea..02eb430 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparator.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java index 87f8840..3ef93f5 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java @@ -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 BirthmarkComparator}. @@ -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); } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java index ebdd6d6..f48cd40 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java index e400fba..7d1dbf2 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkService.java @@ -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; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java index 6efb7c9..5f82501 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java @@ -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 clazz = c.asSubclass(BirthmarkExtractor.class); - Constructor constructor = clazz.getConstructor(BirthmarkSpi.class); + Constructor constructor = clazz.getConstructor(BirthmarkService.class); return constructor.newInstance(service); } catch(NoSuchMethodException e){ } catch(InstantiationException e){ diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java index 760c914..9b00dda 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java @@ -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(); diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java index c3d465b..5a9f111 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java index b73cde5..50e41ca 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java index 028b508..e7eaa5a 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java index d4cd21e..2f9d996 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java index b5ef672..7dc8e70 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java index eaa4c67..c92092b 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java index 004e84b..1dc6102 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java @@ -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 diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java index 84ac9af..a3e2086 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java index 414670d..2aaf418 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkService.java @@ -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; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java index f80d2a9..a7c7ec3 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java index 6816b8f..d43874d 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkService.java @@ -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; } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java index 94626cb..d039eb9 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java index 78f5c76..f8355bf 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkService.java @@ -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 ."; } @@ -45,4 +45,9 @@ public class InheritanceStructureBirthmarkService extends AbstractBirthmarkServi public boolean isUserDefined(){ return false; } + + @Override + public BirthmarkPreprocessor getPreprocessor(){ + return null; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java index 24d5d68..9c8e527 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java @@ -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 kgram = new KGram(param.length); + for(int i = 0; i < param.length; i++){ + kgram.set(i, new Integer(param[i].trim())); + } + return new KGramBasedBirthmarkElement(kgram); + } + return null; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java index 56462f3..571a1b6 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java @@ -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 kgram = new KGram(param.length); - for(int i = 0; i < param.length; i++){ - kgram.set(i, new Integer(param[i].trim())); - } - return new KGramBasedBirthmarkElement(kgram); - } - return null; - } + @Override + public BirthmarkPreprocessor getPreprocessor(){ + return null; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java index d9afe6b..b21bdc4 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java index 53e8359..3891d4c 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkService.java @@ -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; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java index db4503e..c6684ce 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractor.java @@ -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); + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java index 37c81f4..473ced9 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java @@ -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; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/command/HelpCommand.java b/src/main/java/jp/sourceforge/stigmata/command/HelpCommand.java index d9738fc..2dcc2fd 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/HelpCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/HelpCommand.java @@ -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(); diff --git a/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java b/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java index 6a9d0ee..ea2fc15 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java @@ -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(); diff --git a/src/main/java/jp/sourceforge/stigmata/command/UninstallCommand.java b/src/main/java/jp/sourceforge/stigmata/command/UninstallCommand.java index 00169d8..c6e35e6 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/UninstallCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/UninstallCommand.java @@ -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"); diff --git a/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java index 06b1e2e..b8fa6aa 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/AbstractBirthmarkServicePrinter.java @@ -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); diff --git a/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java index 5db63f7..dc27517 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/BirthmarkServicePrinter.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java index fc3f933..1a52636 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/BirthmarkServiceCsvPrinter.java @@ -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(","); diff --git a/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java index 6399998..12785ef 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/BirthmarkServiceXmlPrinter.java @@ -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(""); out.println(""); out.println(" "); - for(BirthmarkSpi spi: spilist){ + for(BirthmarkService spi: spilist){ out.println(" "); out.printf(" %s%n", spi.getType()); - out.printf(" %s%n", spi.getDisplayType()); out.printf(" %s%n", spi.getDescription()); out.printf(" %s%n", spi.getClass().getName()); - out.printf(" %s%n", spi.getExtractorClassName()); - out.printf(" %s%n", spi.getComparatorClassName()); out.println(" "); } out.println(" "); diff --git a/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java index 19a719a..c5dc9c0 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractionResultSet.java @@ -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){ } diff --git a/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java index b1a2e3b..35d7f32 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java +++ b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractionResultSet.java @@ -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{ diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java index 8bb8f53..669887f 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java index 629d210..168dca3 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java @@ -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 index 0000000..72380ec --- /dev/null +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkService.java @@ -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 index 5829520..0000000 --- a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkSpi.java +++ /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 index 0000000..f1e7409 --- /dev/null +++ b/src/main/java/jp/sourceforge/stigmata/spi/ReflectedBirthmarkService.java @@ -0,0 +1,101 @@ +package jp.sourceforge.stigmata.spi; + +import java.io.Serializable; + +import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.BirthmarkPreprocessor; + +public class ReflectedBirthmarkService implements BirthmarkService, Serializable{ + private static final long serialVersionUID = 4090172591560046236L; + + private String type; + private String description; + private String extractorClass; + private String comparatorClass; + private String preprocessorClass; + + private transient BirthmarkExtractor extractor; + private transient BirthmarkComparator comparator; + private transient BirthmarkPreprocessor preprocessor; + + public ReflectedBirthmarkService(String type, String description, + String extractorClass, String comparatorClass){ + this(type, description, extractorClass, comparatorClass, null); + } + + /** + * + * @param type + * @param description + * @param extractorClass + * @param comparatorClass + * @param preprocessorClass + * @throws NullPointerException one of type, extractorClass, and comparatorClass is null. + */ + public ReflectedBirthmarkService(String type, String description, + String extractorClass, String comparatorClass, String preprocessorClass){ + if(type == null || extractorClass == null || comparatorClass == null){ + throw new NullPointerException(); + } + this.type = type; + this.description = description; + this.extractorClass = extractorClass; + this.comparatorClass = comparatorClass; + this.preprocessorClass = preprocessorClass; + } + + @Override + public String getType(){ + return type; + } + + @Override + public String getDescription(){ + return description; + } + + @Override + public synchronized BirthmarkPreprocessor getPreprocessor(){ + if(preprocessor == null && preprocessorClass != null){ + preprocessor = instantiateClass(preprocessorClass, BirthmarkPreprocessor.class); + } + return preprocessor; + } + + private T instantiateClass(String name, Class type){ + try{ + Class targetClass = Class.forName(name).asSubclass(type); + return targetClass.newInstance(); + } catch(Exception e){ + } + return null; + } + + @Override + public BirthmarkExtractor getExtractor(){ + if(extractor == null){ + extractor = instantiateClass(extractorClass, BirthmarkExtractor.class); + } + return extractor; + } + + @Override + public synchronized BirthmarkComparator getComparator(){ + if(comparator == null){ + comparator = instantiateClass(comparatorClass, BirthmarkComparator.class); + } + return comparator; + } + + @Override + public boolean isExperimental(){ + return true; + } + + @Override + public boolean isUserDefined(){ + return true; + } + +} diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java index bfb399a..9e371b2 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java @@ -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 addedService = new ArrayList(); + private List addedService = new ArrayList(); private List listeners = new ArrayList(); 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 diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java index cd8249f..746e283 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectablePane.java @@ -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(); - for(BirthmarkSpi service: serviceArray){ + for(BirthmarkService service: serviceArray){ BirthmarkSelection elem = new BirthmarkSelection(service); services.put(service.getType(), elem); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java index 2708c7d..640452b 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelection.java @@ -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; } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java index 77953ff..d0fca32 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java @@ -70,7 +70,7 @@ public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{ for(Iterator 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 diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java index 68b3cac..2ae8590 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkSelectionListPane.java @@ -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()); diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java index 313f1f2..2a73989 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListCellRenderer.java @@ -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{ diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java index 7e45bca..8162a24 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkServiceListener.java @@ -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); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java index 73ab063..35a3a56 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/BirthmarkElementCountComparisonPairFilterComponentService.java @@ -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(); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java index 77316ae..59eb6e4 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/FilterEditingPane.java @@ -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); diff --git a/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java index 32fdbd3..a39bd2f 100644 --- a/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileExporter.java @@ -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(" "); - for(BirthmarkSpi service: environment.getServices()){ + for(BirthmarkService service: environment.getServices()){ if(service.isExperimental() && service instanceof BirthmarkService){ out.println(" "); out.printf(" %s%n", service.getType()); - out.printf(" %s%n", service.getDisplayType()); - out.printf(" %s%n", service.getDescription()); - out.printf(" %s%n", service.getExtractorClassName()); - out.printf(" %s%n", service.getComparatorClassName()); + if(service instanceof ReflectedBirthmarkService){ + out.printf(" %s%n", service.getDescription()); + out.printf(" %s%n", service.getExtractor().getClass().getName()); + out.printf(" %s%n", service.getComparator().getClass().getName()); + } out.println(" "); } } diff --git a/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java index bdbe6dd..6012343 100644 --- a/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java +++ b/src/main/java/jp/sourceforge/stigmata/utils/ConfigFileImporter.java @@ -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 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(); + } + 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( diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService diff --git a/src/test/java/jp/sourceforge/stigmata/StigmataTest.java b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java index 0443188..04ba6af 100644 --- a/src/test/java/jp/sourceforge/stigmata/StigmataTest.java +++ b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java @@ -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()); -- 2.11.0