From 59e985b7e3ce878e476ff2c9e8c3227231a4a5dc Mon Sep 17 00:00:00 2001 From: Haruaki Tamada Date: Wed, 13 Apr 2011 11:54:52 +0900 Subject: [PATCH] =?utf8?q?Spi=E3=81=A8=E3=81=84=E3=81=86=E5=90=8D=E5=89=8D?= =?utf8?q?=E3=82=92=E3=81=99=E3=81=B9=E3=81=A6Service=E3=81=AB=E5=A4=89?= =?utf8?q?=E6=9B=B4=E3=81=97=E3=81=9F=EF=BC=8E=20=E7=B4=B0=E3=81=8B?= =?utf8?q?=E3=81=AA=E5=A4=89=E6=9B=B4=E3=82=92=E3=81=A1=E3=82=87=E3=81=93?= =?utf8?q?=E3=81=A1=E3=82=87=E3=81=93=E3=81=A8=EF=BC=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../jp/sourceforge/stigmata/BirthmarkEngine.java | 56 +++--- .../sourceforge/stigmata/BirthmarkExtractor.java | 5 + .../sourceforge/stigmata/ComparisonPairFilter.java | 4 +- .../birthmarks/AbstractBirthmarkExtractor.java | 5 + .../AbstractBirthmarkComparatorService.java | 65 ------- ...CosineSimilarityBirthmarkComparatorService.java | 13 +- .../DPMatchingBirthmarkComparatorService.java | 13 +- .../EditDistanceBirthmarkComparatorService.java | 13 +- ...ndedEditDistanceBirthmarkComparatorService.java | 13 +- .../LogicalAndBirthmarkComparatorService.java | 13 +- .../PlainBirthmarkComparatorService.java | 13 +- ...ueOfFieldVariableBirthmarkExtractorService.java | 16 +- .../AbstractBirthmarkExtractorService.java | 65 ------- .../extractors/BirthmarkExtractorFactory.java | 69 -------- .../KGramBasedBirthmarkExtractorService.java | 34 ---- ...equencyMethodCallBirthmarkExtractorService.java | 16 +- ...quencyUsedClassesBirthmarkExtractorService.java | 16 +- ...nheritanceStructureBirthmarkExtractVisitor.java | 44 ++++- ...eritanceStructureBirthmarkExtractorService.java | 16 +- .../stigmata/birthmarks/kgram/KGram.java | 149 ---------------- .../kgram/KGramBasedBirthmarkElement.java | 32 ---- .../kgram/KGramBasedBirthmarkExtractVisitor.java | 50 ------ .../kgram/KGramBasedBirthmarkExtractor.java | 63 ------- .../kgram/KGramBasedBirthmarkService.java | 53 ------ .../stigmata/birthmarks/kgram/KGramBuilder.java | 56 ------ .../kgram/OpcodeExtractionMethodVisitor.java | 93 ---------- ...uentialMethodCallBirthmarkExtractorService.java | 16 +- .../uc/UsedClassesBirthmarkExtractVisitor.java | 44 ++--- .../UsedClassesBirthmarkExtractorService.java | 16 +- .../birthmarks/uc/UsedClassesBirthmarkService.java | 2 +- .../stigmata/command/CompareCommand.java | 4 +- .../stigmata/command/ExtractCommand.java | 4 +- .../stigmata/command/ListBirthmarksCommand.java | 4 +- .../filter/AbstractComparisonPairFilter.java | 8 +- .../AbstractComparisonPairFilterService.java | 32 ---- .../BirthmarkElementCountComparisonPairFilter.java | 4 +- ...arkElementCountComparisonPairFilterService.java | 11 +- .../filter/ComparisonPairFilterManager.java | 20 +-- .../filter/SimilarityComparisonPairFilter.java | 4 +- .../SimilarityComparisonPairFilterService.java | 11 +- .../filter/TargetNameComparisonPairFilter.java | 4 +- .../TargetNameComparisonPairFilterService.java | 11 +- .../TotalElementCountComparisonPairFilter.java | 4 +- ...talElementCountComparisonPairFilterService.java | 11 +- .../stigmata/hook/AbstractStigmataHookService.java | 4 +- .../stigmata/hook/StigmataHookManager.java | 6 +- .../stigmata/printer/PrinterManager.java | 20 +-- .../printer/csv/CsvResultPrinterService.java | 14 +- .../printer/xml/XmlResultPrinterService.java | 14 +- .../result/MemoryExtractedBirthmarkService.java | 14 +- .../result/RDBExtractedBirthmarkService.java | 14 +- .../result/XmlFileExtractedBirthmarkService.java | 14 +- .../history/ExtractedBirthmarkServiceManager.java | 16 +- .../stigmata/spi/AbstractServiceProvider.java | 36 ---- ...torSpi.java => BirthmarkComparatorService.java} | 13 +- ...ctorSpi.java => BirthmarkExtractorService.java} | 13 +- ...erSpi.java => ComparisonPairFilterService.java} | 10 +- ...markSpi.java => ExtractedBirthmarkService.java} | 6 +- ...ltPrinterSpi.java => ResultPrinterService.java} | 4 +- .../sourceforge/stigmata/spi/ServiceProvider.java | 18 -- ...igmataHookSpi.java => StigmataHookService.java} | 6 +- .../stigmata/ui/swing/BirthmarkDefinitionPane.java | 18 +- .../ui/swing/BirthmarkExtractionResultPane.java | 4 +- .../stigmata/ui/swing/PairComparisonPane.java | 4 +- .../ui/swing/PairComparisonResultSetPane.java | 4 +- .../ui/swing/RoundRobinComparisonResultPane.java | 4 +- ...tCountComparisonPairFilterComponentService.java | 10 +- .../ComparisonPairFilterComponentService.java | 6 +- .../ui/swing/filter/FilterEditingPane.java | 10 +- ...larityComparisonPairFilterComponentService.java | 10 +- ...etNameComparisonPairFilterComponentService.java | 10 +- ...tCountComparisonPairFilterComponentService.java | 10 +- ...eforge.stigmata.spi.BirthmarkComparatorService} | 0 ...ceforge.stigmata.spi.BirthmarkExtractorService} | 0 .../jp.sourceforge.stigmata.spi.BirthmarkService | 1 - ...forge.stigmata.spi.ComparisonPairFilterService} | 0 ...ceforge.stigmata.spi.ExtractedBirthmarkService} | 0 ....sourceforge.stigmata.spi.ResultPrinterService} | 0 ...p.sourceforge.stigmata.spi.StigmataHookService} | 0 .../jp/sourceforge/stigmata/ServiceListTest.java | 1 - .../java/jp/sourceforge/stigmata/StigmataTest.java | 17 -- .../stigmata/birthmarks/BirthmarkCompareTest.java | 2 +- .../cvfv/CVFVBirthmarkExtractorTest.java | 100 +++-------- .../birthmarks/is/ISBirthmarkExtractorTest.java | 71 -------- ...InheritanceStructureBirthmarkExtractorTest.java | 46 +++++ .../stigmata/birthmarks/kgram/KGramTest.java | 72 -------- ...SequentialMethodCallBirthmarkExtractorTest.java | 56 ++++++ .../birthmarks/smc/SmcBirthmarkExtractorTest.java | 191 --------------------- .../birthmarks/uc/UCBirthmarkExtractorTest.java | 93 ---------- .../uc/UsedClassesBirthmarkExtractorTest.java | 50 ++++++ .../uc/UsedClassesBirthmarkServiceTest.java | 27 +++ src/test/resources/resources/HelloWorldFrame.class | Bin 0 -> 943 bytes src/test/resources/resources/HelloWorldFrame.java | 25 +++ 94 files changed, 592 insertions(+), 1669 deletions(-) delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => cvfv}/ConstantValueOfFieldVariableBirthmarkExtractorService.java (67%) delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => fmc}/FrequencyMethodCallBirthmarkExtractorService.java (62%) rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => fuc}/FrequencyUsedClassesBirthmarkExtractorService.java (62%) rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => is}/InheritanceStructureBirthmarkExtractorService.java (62%) delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => smc}/SequentialMethodCallBirthmarkExtractorService.java (62%) rename src/main/java/jp/sourceforge/stigmata/birthmarks/{extractors => uc}/UsedClassesBirthmarkExtractorService.java (63%) delete mode 100644 src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java delete mode 100644 src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java rename src/main/java/jp/sourceforge/stigmata/spi/{BirthmarkComparatorSpi.java => BirthmarkComparatorService.java} (64%) rename src/main/java/jp/sourceforge/stigmata/spi/{BirthmarkExtractorSpi.java => BirthmarkExtractorService.java} (65%) rename src/main/java/jp/sourceforge/stigmata/spi/{ComparisonPairFilterSpi.java => ComparisonPairFilterService.java} (54%) rename src/main/java/jp/sourceforge/stigmata/spi/{ExtractedBirthmarkSpi.java => ExtractedBirthmarkService.java} (87%) rename src/main/java/jp/sourceforge/stigmata/spi/{ResultPrinterSpi.java => ResultPrinterService.java} (91%) delete mode 100644 src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java rename src/main/java/jp/sourceforge/stigmata/spi/{StigmataHookSpi.java => StigmataHookService.java} (84%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi => jp.sourceforge.stigmata.spi.BirthmarkComparatorService} (100%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi => jp.sourceforge.stigmata.spi.BirthmarkExtractorService} (100%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi => jp.sourceforge.stigmata.spi.ComparisonPairFilterService} (100%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi => jp.sourceforge.stigmata.spi.ExtractedBirthmarkService} (100%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.ResultPrinterSpi => jp.sourceforge.stigmata.spi.ResultPrinterService} (100%) rename src/main/resources/META-INF/services/{jp.sourceforge.stigmata.spi.StigmataHookSpi => jp.sourceforge.stigmata.spi.StigmataHookService} (100%) delete mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java create mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java delete mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java create mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java delete mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java delete mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java create mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java create mode 100644 src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java create mode 100644 src/test/resources/resources/HelloWorldFrame.class create mode 100644 src/test/resources/resources/HelloWorldFrame.java diff --git a/pom.xml b/pom.xml index 6c234bd..656b628 100644 --- a/pom.xml +++ b/pom.xml @@ -42,7 +42,7 @@ asm - asm + asm-all 3.3 compile diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java index 9f5ab1f..2e01d89 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java @@ -14,7 +14,6 @@ import java.util.Map; import java.util.Set; import java.util.Stack; -import jp.sourceforge.stigmata.birthmarks.extractors.BirthmarkExtractorFactory; import jp.sourceforge.stigmata.digger.ClassFileArchive; import jp.sourceforge.stigmata.digger.ClassFileEntry; import jp.sourceforge.stigmata.digger.ClasspathContext; @@ -48,14 +47,12 @@ public class BirthmarkEngine{ private WarningMessages warnings; private OperationType latestOperationType; private OperationType targetType; - private BirthmarkExtractorFactory factory; /** * constructor. */ public BirthmarkEngine(BirthmarkEnvironment env){ this.environment = env; - factory = new BirthmarkExtractorFactory(env); } /** @@ -352,18 +349,15 @@ public class BirthmarkEngine{ byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){ - Birthmark b = bs.getBirthmark(extractor.getProvider().getType()); - if(b == null){ - b = extractor.createBirthmark(); - bs.addBirthmark(b); - } - extractor.extract(b, new ByteArrayInputStream(data), er.getContext()); + BirthmarkService service = getEnvironment().getService(birthmarkType); + BirthmarkExtractor extractor = service.getExtractor(); + if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){ + Birthmark b = bs.getBirthmark(extractor.getProvider().getType()); + if(b == null){ + b = extractor.createBirthmark(); + bs.addBirthmark(b); } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); + extractor.extract(b, new ByteArrayInputStream(data), er.getContext()); } } } catch(IOException e){ @@ -400,14 +394,11 @@ public class BirthmarkEngine{ byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.CLASS)){ - Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext()); - birthmarkset.addBirthmark(b); - } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); + BirthmarkService service = getEnvironment().getService(birthmarkType); + BirthmarkExtractor extractor = service.getExtractor(); + if(extractor.isAcceptable(ExtractionUnit.CLASS)){ + Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext()); + birthmarkset.addBirthmark(b); } } er.addBirthmarkSet(et, birthmarkset); @@ -428,19 +419,16 @@ public class BirthmarkEngine{ try{ byte[] data = inputStreamToByteArray(entry.getLocation().openStream()); for(String birthmarkType: context.getBirthmarkTypes()){ - try{ - BirthmarkExtractor extractor = factory.getExtractor(birthmarkType); - if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){ - Birthmark b = birthmarkset.getBirthmark(birthmarkType); - if(b == null){ - b = extractor.createBirthmark(); - birthmarkset.addBirthmark(b); - } - extractor.extract(b, new ByteArrayInputStream(data), er.getContext()); + BirthmarkService service = getEnvironment().getService(birthmarkType); + BirthmarkExtractor extractor = service.getExtractor(); + if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){ + Birthmark b = birthmarkset.getBirthmark(birthmarkType); + if(b == null){ + b = extractor.createBirthmark(); + birthmarkset.addBirthmark(b); } - } catch(ExtractorNotFoundException e){ - warnings.addMessage(e, birthmarkType); - } + extractor.extract(b, new ByteArrayInputStream(data), er.getContext()); + } } } catch(IOException e){ warnings.addMessage(e, entry.getClassName()); diff --git a/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java index e718d90..75e05a1 100644 --- a/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/BirthmarkExtractor.java @@ -36,6 +36,11 @@ public interface BirthmarkExtractor{ public BirthmarkElement buildElement(String value); /** + * extract birthmark from given stream with default environment. + */ + public Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException; + + /** * extract birthmark from given stream with given environment. */ public Birthmark extract(InputStream in, BirthmarkContext context) throws BirthmarkExtractionFailedException; diff --git a/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java index 71fcdb4..2359d97 100644 --- a/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/ComparisonPairFilter.java @@ -1,7 +1,7 @@ package jp.sourceforge.stigmata; import jp.sourceforge.stigmata.filter.Criterion; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * Filtering results by some criteria. @@ -24,5 +24,5 @@ public interface ComparisonPairFilter{ public Criterion getCriterion(); - public ComparisonPairFilterSpi getService(); + public ComparisonPairFilterService getService(); } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java index dfe50d7..76b9a64 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/AbstractBirthmarkExtractor.java @@ -5,6 +5,7 @@ import java.io.InputStream; import jp.sourceforge.stigmata.Birthmark; import jp.sourceforge.stigmata.BirthmarkContext; +import jp.sourceforge.stigmata.BirthmarkEnvironment; import jp.sourceforge.stigmata.BirthmarkExtractionFailedException; import jp.sourceforge.stigmata.BirthmarkExtractor; import jp.sourceforge.stigmata.ExtractionUnit; @@ -43,6 +44,10 @@ public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{ return spi; } + public final Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException{ + return extract(createBirthmark(), in, new BirthmarkContext(BirthmarkEnvironment.getDefaultEnvironment())); + } + /** * extract birthmark given stream with given environment. */ diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java deleted file mode 100644 index 8f95511..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/AbstractBirthmarkComparatorService.java +++ /dev/null @@ -1,65 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.comparators; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Locale; - -import jp.sourceforge.stigmata.BirthmarkComparator; -import jp.sourceforge.stigmata.spi.AbstractServiceProvider; -import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi; -import jp.sourceforge.stigmata.spi.BirthmarkService; -import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; - -/** - * Abstract service provider interface for comparing birthmarks. - * - * @author Haruaki TAMADA - */ -abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{ - /** - * returns a type of the birthmark this service provides. - */ - @Override - public abstract String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - @Override - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getType(), LocalizedDescriptionManager.ServiceCategory.comparator - ); - } - - /** - * returns a localized description of the birthmark in default locale. - */ - @Override - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - @Override - public abstract String getComparatorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - @Override - public BirthmarkComparator getComparator(BirthmarkService service){ - try{ - Class c = Class.forName(getComparatorClassName()); - Class clazz = c.asSubclass(BirthmarkComparator.class); - Constructor constructor = clazz.getConstructor(BirthmarkService.class); - return constructor.newInstance(service); - } catch(NoSuchMethodException e){ - } catch(InstantiationException e){ - } catch(InvocationTargetException e){ - } catch(ClassNotFoundException e){ - } catch(IllegalAccessException e){ - } - return null; - } -} - diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java index 1fbe975..9829c1f 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/CosineSimilarityBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class CosineSimilarityBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmar return "cosine"; } - @Override - public String getComparatorClassName(){ - return CosineSimilarityBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmar public BirthmarkComparator getComparator(BirthmarkService service){ return new CosineSimilarityBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "Cosine Similarity"; + } } 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 c148662..b14b0c6 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/DPMatchingBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class DPMatchingBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkCompa return "dpmatching"; } - @Override - public String getComparatorClassName(){ - return DPMatchingBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkCompa public BirthmarkComparator getComparator(BirthmarkService service){ return new DPMatchingBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "DP Matching"; + } } 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 9a2f4b0..020312b 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/EditDistanceBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class EditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkCom return "editdistancee"; } - @Override - public String getComparatorClassName(){ - return EditDistanceBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkCom public BirthmarkComparator getComparator(BirthmarkService service){ return new EditDistanceBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "Edit Distance"; + } } 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 59e9384..99f8e04 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/ExtendedEditDistanceBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class ExtendedEditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirt return "editdistanceext"; } - @Override - public String getComparatorClassName(){ - return ExtendedEditDistanceBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirt public BirthmarkComparator getComparator(BirthmarkService service){ return new ExtendedEditDistanceBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "Extended Edit Distance"; + } } 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 0e1dae4..17e9d71 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/LogicalAndBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class LogicalAndBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkCompa return "and"; } - @Override - public String getComparatorClassName(){ - return LogicalAndBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkCompa public BirthmarkComparator getComparator(BirthmarkService service){ return new LogicalAndBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "Logical And Comparator"; + } } 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 3ef93f5..67efdf4 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/comparators/PlainBirthmarkComparatorService.java @@ -1,6 +1,7 @@ package jp.sourceforge.stigmata.birthmarks.comparators; import jp.sourceforge.stigmata.BirthmarkComparator; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +10,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{ +public class PlainBirthmarkComparatorService implements BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ @@ -18,11 +19,6 @@ public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparator return "plain"; } - @Override - public String getComparatorClassName(){ - return PlainBirthmarkComparator.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -30,5 +26,10 @@ public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparator public BirthmarkComparator getComparator(BirthmarkService service){ return new PlainBirthmarkComparator(service); } + + @Override + public String getDescription(){ + return "Plain Comparator"; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractorService.java similarity index 67% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractorService.java index 5a9f111..de4cb32 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/ConstantValueOfFieldVariableBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/cvfv/ConstantValueOfFieldVariableBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.cvfv; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class ConstantValueOfFieldVariableBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class ConstantValueOfFieldVariableBirthmarkExtractorService extends Abstr return "cvfv"; } - @Override - public String getExtractorClassName(){ - return ConstantValueOfFieldVariableBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class ConstantValueOfFieldVariableBirthmarkExtractorService extends Abstr public BirthmarkExtractor getExtractor(BirthmarkService service){ return new ConstantValueOfFieldVariableBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Constant Value and Field Variable birthmark"; + } } \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java deleted file mode 100644 index 5f82501..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/AbstractBirthmarkExtractorService.java +++ /dev/null @@ -1,65 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; - -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.Locale; - -import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.spi.AbstractServiceProvider; -import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi; -import jp.sourceforge.stigmata.spi.BirthmarkService; -import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - */ -public abstract class AbstractBirthmarkExtractorService extends AbstractServiceProvider implements BirthmarkExtractorSpi{ - /** - * returns a type of the birthmark this service provides. - */ - @Override - public abstract String getType(); - - /** - * returns a localized description of the birthmark this service provides. - */ - @Override - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getType(), LocalizedDescriptionManager.ServiceCategory.extractor - ); - } - - /** - * returns a localized description of the birthmark in default locale. - */ - @Override - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - @Override - public abstract String getExtractorClassName(); - - /** - * returns a extractor for the birthmark of this service. - */ - @Override - public BirthmarkExtractor getExtractor(BirthmarkService service){ - try{ - Class c = Class.forName(getExtractorClassName()); - Class clazz = c.asSubclass(BirthmarkExtractor.class); - Constructor constructor = clazz.getConstructor(BirthmarkService.class); - return constructor.newInstance(service); - } catch(NoSuchMethodException e){ - } catch(InstantiationException e){ - } catch(InvocationTargetException e){ - } catch(ClassNotFoundException e){ - } catch(IllegalAccessException e){ - } - return null; - } -} - diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java deleted file mode 100644 index 9b00dda..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/BirthmarkExtractorFactory.java +++ /dev/null @@ -1,69 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Map; - -import jp.sourceforge.stigmata.BirthmarkEnvironment; -import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.ExtractorNotFoundException; -import jp.sourceforge.stigmata.spi.BirthmarkService; - -import org.apache.commons.beanutils.BeanUtils; - -/** - * - * @author Haruaki Tamada - */ -public class BirthmarkExtractorFactory{ - private BirthmarkEnvironment environment; - private Map extractors = new HashMap(); - - public BirthmarkExtractorFactory(BirthmarkEnvironment env){ - this.environment = env; - } - - public BirthmarkExtractor getExtractor(String name) throws ExtractorNotFoundException{ - BirthmarkExtractor extractor = extractors.get(name); - if(extractor == null){ - extractor = buildExtractor(name); - extractors.put(name, extractor); - } - return extractor; - } - - @SuppressWarnings("rawtypes") - private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{ - BirthmarkService spi = environment.getService(birthmarkType); - BirthmarkExtractor extractor = null; - if(spi != null){ - extractor = spi.getExtractor(); - try{ - if(extractor != null){ - Map props = BeanUtils.describe(extractor); - props.remove("class"); - props.remove("provider"); - for(Object keyObject: props.keySet()){ - String key = "extractor." + spi.getType() + "." + String.valueOf(keyObject); - if(environment.getProperty(key) != null){ - BeanUtils.setProperty( - extractor, (String)keyObject, environment.getProperty(key) - ); - } - } - } - } catch(InvocationTargetException e){ - throw new InternalError(e.getMessage()); - } catch(NoSuchMethodException e){ - throw new InternalError(e.getMessage()); - } catch(IllegalAccessException e){ - throw new InternalError(e.getMessage()); - } - } - if(extractor == null){ - throw new ExtractorNotFoundException("extractor not found: " + birthmarkType); - } - - return extractor; - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java deleted file mode 100644 index 7dc8e70..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/KGramBasedBirthmarkExtractorService.java +++ /dev/null @@ -1,34 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; - -import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor; -import jp.sourceforge.stigmata.spi.BirthmarkService; - -/** - * Birthmark Service Provider Interface. - * - * @author Haruaki TAMADA - */ -public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ - - /** - * returns a type of the birthmark this service provides. - */ - @Override - public String getType(){ - return "kgram"; - } - - @Override - public String getExtractorClassName(){ - return KGramBasedBirthmarkExtractor.class.getName(); - } - - /** - * returns a extractor for the birthmark of this service. - */ - @Override - public BirthmarkExtractor getExtractor(BirthmarkService service){ - return new KGramBasedBirthmarkExtractor(service); - } -} \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractorService.java similarity index 62% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractorService.java index 50e41ca..faaad00 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.fmc; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class FrequencyMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthm return "fmc"; } - @Override - public String getExtractorClassName(){ - return FrequencyMethodCallBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthm public BirthmarkExtractor getExtractor(BirthmarkService service){ return new FrequencyMethodCallBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Frequency of Method Calls birthmark"; + } } \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractorService.java similarity index 62% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractorService.java index e7eaa5a..8a2eeee 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/FrequencyUsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/fuc/FrequencyUsedClassesBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.fuc; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class FrequencyUsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirth return "fuc"; } - @Override - public String getExtractorClassName(){ - return FrequencyUsedClassesBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirth public BirthmarkExtractor getExtractor(BirthmarkService service){ return new FrequencyUsedClassesBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Frequency of Used Classes birthmark"; + } } \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java index 3c73e18..347d191 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractVisitor.java @@ -5,10 +5,14 @@ import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.BirthmarkElement; import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement; +import jp.sourceforge.stigmata.digger.ClassFileEntry; +import jp.sourceforge.stigmata.digger.ClasspathContext; import jp.sourceforge.stigmata.utils.WellknownClassManager; import org.objectweb.asm.ClassVisitor; +import com.sun.xml.internal.ws.org.objectweb.asm.Opcodes; + /** * * @@ -23,16 +27,44 @@ public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtrac @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces){ - try { - Class c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.')); - if(c != null && !c.isInterface()){ - addISBirthmark(c); + if((access & Opcodes.ACC_INTERFACE) != Opcodes.ACC_INTERFACE){ + ClasspathContext context = getEnvironment().getClasspathContext(); + name = name.replace('/', '.'); + ClassFileEntry entry = context.findEntry(name); + if(entry == null){ + superName = superName.replace('/', '.'); + ClassFileEntry parent = context.findEntry(superName); + if(parent != null){ + addIsBirthmark(name); + addIsBirthmark(superName); + } + else{ + addFailur(new ClassNotFoundException(superName)); + } + } + else{ + try{ + Class clazz = context.findClass(name); + addISBirthmark(clazz); + } catch(ClassNotFoundException e){ + addFailur(e); + } } - } catch (ClassNotFoundException ex){ - addFailur(ex); } } + private void addIsBirthmark(String className){ + WellknownClassManager wcm = getEnvironment().getWellknownClassManager(); + BirthmarkElement element; + if(wcm.isWellKnownClass(className)){ + element = new BirthmarkElement(className); + } + else{ + element = NullBirthmarkElement.getInstance(); + } + addElement(element); + } + private void addISBirthmark(Class c){ WellknownClassManager wcm = getEnvironment().getWellknownClassManager(); do{ diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorService.java similarity index 62% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorService.java index 2f9d996..6b7ef2b 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/InheritanceStructureBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.is; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class InheritanceStructureBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class InheritanceStructureBirthmarkExtractorService extends AbstractBirth return "is"; } - @Override - public String getExtractorClassName(){ - return InheritanceStructureBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class InheritanceStructureBirthmarkExtractorService extends AbstractBirth public BirthmarkExtractor getExtractor(BirthmarkService service){ return new InheritanceStructureBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Inheritance Structure birthmark"; + } } \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java deleted file mode 100644 index df01c2d..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGram.java +++ /dev/null @@ -1,149 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import java.io.Serializable; -import java.lang.reflect.Array; -import java.util.Arrays; - -/** - * This class represents k-gram of the some sequence. - * - * @author Haruaki TAMADA - */ -public class KGram implements Serializable{ - private static final long serialVersionUID = 273465874532523L; - // private List list = new ArrayList(); - private int maxLength = 4; - private T[] values; - - /** - * constructor. - * @param kvalue the number of elements of this object. - */ - public KGram(int kvalue){ - setKValue(kvalue); - } - - /** - * sets k-value. - * @param kvalue the number of elements of this object. - */ - public void setKValue(int kvalue){ - this.maxLength = kvalue; - } - - /** - * returns k-value which is the number of elements. - * @return the number of elements. - */ - public int getKValue(){ - return maxLength; - } - - /** - * returns string representation of this object. - */ - @Override - public String toString(){ - StringBuffer buffer = new StringBuffer("{ "); - for(int i = 0; i < maxLength; i++){ - if(i != 0) buffer.append(", "); - buffer.append(get(i)); - } - buffer.append(" }"); - return new String(buffer); - } - - /** - * sets the given value to kgram element at given index. - * @param index index. - * @param value value. - */ - @SuppressWarnings("unchecked") - public void set(int index, T value){ - if(index < 0 || index >= maxLength){ - throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); - } - if(value == null){ - throw new NullPointerException("null value"); - } - if(values == null){ - values = (T[])Array.newInstance(value.getClass(), getKValue()); - } - values[index] = value; - } - - /** - * returns an object of given index. - */ - public T get(int index){ - T returnValue = null; - if(index < 0 || index >= maxLength){ - throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index); - } - if(values != null){ - returnValue = values[index]; - } - - return returnValue; - } - - /** - * adds value at last index. - * - * this object is called with given 2 when following situation, - *
    - *
  • ``{ 1, 3, null, null }'' -> ``{ 1, 2, 3, null }'' and return 2
  • - *
  • ``{ 1, null, 3, null }'' -> ``{ 1, 2, 3, null }'' and return 1
  • - *
  • ``{ 1, 2, 3, 4 }'' -> ``{ 1, 2, 3, 4 }'' and return -1
  • - *
- * - * @param value value for addition. - * @return added index. - */ - public int add(T value){ - int index = -1; - for(int i = 0; i < values.length; i++){ - if(values[i] == null){ - index = i; - values[i] = value; - break; - } - } - return index; - } - - /** - * returns an array of elements this object has. - * @return - */ - @SuppressWarnings("unchecked") - public T[] toArray(){ - if(values == null){ - throw new IllegalStateException("this object has no elements."); - } - T[] newarray = (T[])Array.newInstance(values[0].getClass(), getKValue()); - System.arraycopy(values, 0, newarray, 0, getKValue()); - return newarray; - } - - @Override - public boolean equals(Object o){ - if(o instanceof KGram){ - KGram kgram = (KGram)o; - boolean flag = getKValue() == kgram.getKValue(); - for(int i = 0; !flag && i < maxLength; i++){ - if(!get(i).equals(kgram.get(i))){ - flag = false; - break; - } - } - return flag; - } - return false; - } - - @Override - public int hashCode(){ - return Arrays.hashCode(values); - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java deleted file mode 100644 index f04dc7a..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkElement.java +++ /dev/null @@ -1,32 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import jp.sourceforge.stigmata.BirthmarkElement; - -/** - * - * @author Haruaki TAMADA - */ -public class KGramBasedBirthmarkElement extends BirthmarkElement{ - private static final long serialVersionUID = 28546543857543634L; - - private KGram kgram; - - public KGramBasedBirthmarkElement(KGram kgram){ - super(kgram.toString()); - this.kgram = kgram; - } - - @Override - @SuppressWarnings("rawtypes") - public boolean equals(Object o){ - return o instanceof KGramBasedBirthmarkElement && - kgram.equals(((KGramBasedBirthmarkElement)o).kgram); - } - - @Override - public int hashCode(){ - int v = kgram.hashCode(); - - return (v & 0xff << 24) | (v >> 8); - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java deleted file mode 100644 index 0d5d916..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractVisitor.java +++ /dev/null @@ -1,50 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import java.util.ArrayList; -import java.util.List; - -import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; -import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; - -import org.objectweb.asm.ClassVisitor; -import org.objectweb.asm.MethodVisitor; - -/** - * - * @author Haruaki TAMADA - */ -public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ - private int kvalue; - private List opcodes = new ArrayList(); - - public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){ - super(visitor, birthmark, context); - } - - public int getKValue(){ - return kvalue; - } - - public void setKValue(int kvalue){ - this.kvalue = kvalue; - } - - @Override - public void visitEnd(){ - KGramBuilder builder = KGramBuilder.getInstance(); - KGram[] kgrams = builder.buildKGram(opcodes, getKValue()); - - for(KGram kgram: kgrams){ - addElement(new KGramBasedBirthmarkElement(kgram)); - } - } - - @Override - public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){ - MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4); - MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes); - - return opcodeVisitor; - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java deleted file mode 100644 index 9c8e527..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkExtractor.java +++ /dev/null @@ -1,63 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; -import jp.sourceforge.stigmata.BirthmarkElement; -import jp.sourceforge.stigmata.ExtractionUnit; -import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor; -import jp.sourceforge.stigmata.spi.BirthmarkService; - -import org.objectweb.asm.ClassWriter; - -/** - * @author Haruaki TAMADA - */ -public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{ - private int kvalue = 4; - - public KGramBasedBirthmarkExtractor(BirthmarkService spi){ - super(spi); - } - - public KGramBasedBirthmarkExtractor(){ - super(); - } - - public void setKValue(int kvalue){ - this.kvalue = kvalue; - } - - public int getKValue(){ - return kvalue; - } - - @Override - public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){ - KGramBasedBirthmarkExtractVisitor extractor = new KGramBasedBirthmarkExtractVisitor(writer, birthmark, context); - extractor.setKValue(getKValue()); - return extractor; - } - - @Override - public ExtractionUnit[] getAcceptableUnits(){ - return new ExtractionUnit[] { - ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, ExtractionUnit.ARCHIVE, - }; - } - - - @Override - public BirthmarkElement buildElement(String value) { - value = value.trim(); - if(value.startsWith("{") && value.endsWith("}")){ - String[] param = value.substring(1, value.length() - 1).split(", *"); - KGram 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 deleted file mode 100644 index 571a1b6..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBasedBirthmarkService.java +++ /dev/null @@ -1,53 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import jp.sourceforge.stigmata.BirthmarkComparator; -import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.BirthmarkPreprocessor; -import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; -import jp.sourceforge.stigmata.spi.BirthmarkService; - -/** - * - * - * - * @author Haruaki TAMADA - */ -public class KGramBasedBirthmarkService implements BirthmarkService{ - private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this); - private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this); - - @Override - public String getType(){ - return "kgram"; - } - - @Override - public String getDescription(){ - return "k-gram based birthmark."; - } - - @Override - public BirthmarkExtractor getExtractor(){ - return extractor; - } - - @Override - public BirthmarkComparator getComparator(){ - return comparator; - } - - @Override - public boolean isExperimental(){ - return false; - } - - @Override - public boolean isUserDefined(){ - return false; - } - - @Override - public BirthmarkPreprocessor getPreprocessor(){ - return null; - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java deleted file mode 100644 index 6db7de2..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramBuilder.java +++ /dev/null @@ -1,56 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -/** - * @author Haruaki Tamada - */ -public class KGramBuilder{ - private static final KGramBuilder builder = new KGramBuilder(); - - /** - * private constructor for singleton pattern. - */ - private KGramBuilder(){ - } - - public static KGramBuilder getInstance(){ - return builder; - } - - @SuppressWarnings("unchecked") - public KGram[] buildKGram(T[] values, int kvalue){ - Set> kgrams = new LinkedHashSet>(); - - if(values.length >= kvalue){ - int max = values.length - (kvalue - 1); - for(int i = 0; i < max; i++){ - KGram kgram = new KGram(kvalue); - for(int j = 0; j < kvalue; j++){ - kgram.set(j, values[i + j]); - } - kgrams.add(kgram); - } - } - return kgrams.toArray(new KGram[kgrams.size()]); - } - - @SuppressWarnings("unchecked") - public KGram[] buildKGram(List values, int kvalue){ - Set> kgrams = new LinkedHashSet>(); - - if(values.size() >= kvalue){ - int max = values.size() - (kvalue - 1); - for(int i = 0; i < max; i++){ - KGram kgram = new KGram(kvalue); - for(int j = 0; j < kvalue; j++){ - kgram.set(j, values.get(i + j)); - } - kgrams.add(kgram); - } - } - return kgrams.toArray(new KGram[kgrams.size()]); - } -} \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java deleted file mode 100644 index 3120621..0000000 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/kgram/OpcodeExtractionMethodVisitor.java +++ /dev/null @@ -1,93 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import java.util.List; - -import org.objectweb.asm.Label; -import org.objectweb.asm.MethodAdapter; -import org.objectweb.asm.MethodVisitor; -import org.objectweb.asm.Opcodes; - -/** - * - * @author Haruaki TAMADA - */ -public class OpcodeExtractionMethodVisitor extends MethodAdapter{ - private List opcodes; - - public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List opcodes){ - super(visitor); - this.opcodes = opcodes; - } - - @Override - public void visitFieldInsn(int opcode, String owner, String name, String desc){ - opcodes.add(opcode); - super.visitFieldInsn(opcode, owner, name, desc); - } - - @Override - public void visitIincInsn(int var, int increment){ - opcodes.add(Opcodes.IINC); - super.visitIincInsn(var, increment); - } - - @Override - public void visitInsn(int opcode){ - opcodes.add(opcode); - super.visitInsn(opcode); - } - - @Override - public void visitIntInsn(int opcode, int operand){ - opcodes.add(opcode); - super.visitIntInsn(opcode, operand); - } - - @Override - public void visitJumpInsn(int opcode, Label label){ - opcodes.add(opcode); - super.visitJumpInsn(opcode, label); - } - - @Override - public void visitLdcInsn(Object value){ - opcodes.add(Opcodes.LDC); - super.visitLdcInsn(value); - } - - @Override - public void visitLookupSwitchInsn(Label defaultHandle, int[] keys, Label[] labels){ - opcodes.add(Opcodes.LOOKUPSWITCH); - super.visitLookupSwitchInsn(defaultHandle, keys, labels); - } - - @Override - public void visitMethodInsn(int opcode, String owner, String name, String desc){ - opcodes.add(opcode); - super.visitMethodInsn(opcode, owner, name, desc); - } - - @Override - public void visitMultiANewArrayInsn(String desc, int dims){ - opcodes.add(Opcodes.MULTIANEWARRAY); - super.visitMultiANewArrayInsn(desc, dims); - } - - @Override - public void visitTableSwitchInsn(int min, int max, Label defaultLabel, Label[] labels){ - opcodes.add(Opcodes.TABLESWITCH); - super.visitTableSwitchInsn(min, max, defaultLabel, labels); - } - - @Override - public void visitTypeInsn(int opcode, String desc){ - opcodes.add(opcode); - super.visitTypeInsn(opcode, desc); - } - - @Override - public void visitVarInsn(int opcode, int var){ - opcodes.add(opcode); - super.visitVarInsn(opcode, var); - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorService.java similarity index 62% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorService.java index c92092b..6e23009 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/SequentialMethodCallBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.smc; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class SequentialMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirth return "smc"; } - @Override - public String getExtractorClassName(){ - return SequentialMethodCallBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirth public BirthmarkExtractor getExtractor(BirthmarkService service){ return new SequentialMethodCallBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Sequence of Method Calls birthmark"; + } } \ No newline at end of file diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java index adbd9d1..0ff0b4e 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractVisitor.java @@ -29,13 +29,9 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ String superName, String[] interfaces){ addSignatureClass(signature); - if(getEnvironment().getWellknownClassManager().isWellKnownClass(superName)){ - add(superName); - } + addUCElement(superName); for(String i: interfaces){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(i)){ - add(i); - } + addUCElement(i); } } @@ -55,9 +51,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ String signature, String[] exceptions){ if(exceptions != null){ for(String exception: exceptions){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){ - add(exception); - } + addUCElement(exception); } } addMethodDescriptor(desc); @@ -70,7 +64,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ public void visitTypeInsn(int opcode, String desc){ Type type = Type.getType("L" + desc + ";"); if(checkType(type)){ - add(desc); + addUCElement(desc); } super.visitTypeInsn(opcode, desc); } @@ -79,7 +73,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ public void visitTryCatchBlock(Label start, Label end, Label handle, String desc){ Type type = Type.getType("L" + desc + ";"); if(checkType(type)){ - add(getType(type)); + addUCElement(getType(type)); } super.visitTryCatchBlock(start, end, handle, desc); } @@ -88,7 +82,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ public void visitMultiANewArrayInsn(String desc, int dims){ Type type = Type.getType(desc); if(checkType(type)){ - add(getType(type)); + addUCElement(getType(type)); } super.visitMultiANewArrayInsn(desc, dims); } @@ -97,7 +91,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index){ if(checkType(Type.getType(desc))){ - add(desc); + addUCElement(desc); } addSignatureClass(signature); @@ -106,18 +100,14 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ @Override public void visitFieldInsn(int opcode, String owner, String name, String desc){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(owner)){ - add(owner); - } + addUCElement(owner); addDescriptor(desc); super.visitFieldInsn(opcode, owner, name, desc); } @Override public void visitMethodInsn(int opcode, String owner, String name, String desc){ String className = normalize(owner); - if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){ - add(className); - } + addUCElement(className); addMethodDescriptor(desc); super.visitMethodInsn(opcode, owner, name, desc); } @@ -130,9 +120,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ SignatureWriter writer = new SignatureWriter(){ @Override public void visitClassType(String classType){ - if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){ - add(classType); - } + addUCElement(classType); } }; in.accept(writer); @@ -143,11 +131,11 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ Type returnType = Type.getReturnType(desc); Type[] args = Type.getArgumentTypes(desc); if(checkType(returnType)){ - add(getType(returnType)); + addUCElement(getType(returnType)); } for(Type arg: args){ if(checkType(arg)){ - add(getType(arg)); + addUCElement(getType(arg)); } } } @@ -155,7 +143,7 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ private void addDescriptor(String desc){ Type type = Type.getType(desc); if(checkType(type)){ - add(desc); + addUCElement(desc); } } @@ -198,7 +186,9 @@ public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{ return name; } - private void add(String name){ - addElement(new BirthmarkElement(normalize(name))); + private void addUCElement(String name){ + if(getEnvironment().getWellknownClassManager().isWellKnownClass(name)){ + addElement(new BirthmarkElement(normalize(name))); + } } } diff --git a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorService.java similarity index 63% rename from src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java rename to src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorService.java index 1dc6102..58f682c 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/extractors/UsedClassesBirthmarkExtractorService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorService.java @@ -1,7 +1,7 @@ -package jp.sourceforge.stigmata.birthmarks.extractors; +package jp.sourceforge.stigmata.birthmarks.uc; import jp.sourceforge.stigmata.BirthmarkExtractor; -import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; /** @@ -9,7 +9,7 @@ import jp.sourceforge.stigmata.spi.BirthmarkService; * * @author Haruaki TAMADA */ -public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{ +public class UsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. @@ -19,11 +19,6 @@ public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtra return "uc"; } - @Override - public String getExtractorClassName(){ - return UsedClassesBirthmarkExtractor.class.getName(); - } - /** * returns a extractor for the birthmark of this service. */ @@ -31,4 +26,9 @@ public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtra public BirthmarkExtractor getExtractor(BirthmarkService service){ return new UsedClassesBirthmarkExtractor(service); } + + @Override + public String getDescription(){ + return "Used classes birthmark"; + } } \ No newline at end of file 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 473ced9..5b5da29 100644 --- a/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkService.java @@ -23,7 +23,7 @@ public class UsedClassesBirthmarkService implements BirthmarkService{ @Override public String getDescription(){ - return "Set of used classes in target class."; + return "Used classes birthmark"; } @Override diff --git a/src/main/java/jp/sourceforge/stigmata/command/CompareCommand.java b/src/main/java/jp/sourceforge/stigmata/command/CompareCommand.java index 47a812f..1d2ef92 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/CompareCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/CompareCommand.java @@ -13,7 +13,7 @@ import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter; import jp.sourceforge.stigmata.event.BirthmarkEngineEvent; import jp.sourceforge.stigmata.event.WarningMessages; import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -51,7 +51,7 @@ public class CompareCommand extends AbstractStigmataCommand{ resultset = engine.filter(resultset); } - ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat()); + ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat()); ComparisonResultSetPrinter formatter = spi.getComparisonResultSetPrinter(); formatter.printResult(new PrintWriter(System.out), resultset); }catch(Exception e){ diff --git a/src/main/java/jp/sourceforge/stigmata/command/ExtractCommand.java b/src/main/java/jp/sourceforge/stigmata/command/ExtractCommand.java index 68eacee..ac72845 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/ExtractCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/ExtractCommand.java @@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter; import jp.sourceforge.stigmata.event.BirthmarkEngineEvent; import jp.sourceforge.stigmata.event.WarningMessages; import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -46,7 +46,7 @@ public class ExtractCommand extends AbstractStigmataCommand{ }); ExtractionResultSet ers = engine.extract(args, context); - ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat()); + ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat()); ExtractionResultSetPrinter formatter = spi.getExtractionResultSetPrinter(); formatter.printResult(new PrintWriter(System.out), ers); }catch(Exception ex){ diff --git a/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java b/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java index ea2fc15..7a20fca 100644 --- a/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java +++ b/src/main/java/jp/sourceforge/stigmata/command/ListBirthmarksCommand.java @@ -8,7 +8,7 @@ import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.Stigmata; import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; import jp.sourceforge.stigmata.spi.BirthmarkService; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -23,7 +23,7 @@ public class ListBirthmarksCommand extends AbstractStigmataCommand{ @Override public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){ BirthmarkService[] spis = context.getEnvironment().findServices(); - ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat()); + ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat()); BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter(); try{ diff --git a/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java index eeb6be7..ab6b045 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilter.java @@ -1,22 +1,22 @@ package jp.sourceforge.stigmata.filter; import jp.sourceforge.stigmata.ComparisonPairFilter; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * * @author Haruaki TAMADA */ public abstract class AbstractComparisonPairFilter implements ComparisonPairFilter{ - private ComparisonPairFilterSpi service; + private ComparisonPairFilterService service; private Criterion criterion = Criterion.EQUALS_AS; - public AbstractComparisonPairFilter(ComparisonPairFilterSpi service){ + public AbstractComparisonPairFilter(ComparisonPairFilterService service){ this.service = service; } @Override - public ComparisonPairFilterSpi getService(){ + public ComparisonPairFilterService getService(){ return service; } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java deleted file mode 100644 index 789dbf9..0000000 --- a/src/main/java/jp/sourceforge/stigmata/filter/AbstractComparisonPairFilterService.java +++ /dev/null @@ -1,32 +0,0 @@ -package jp.sourceforge.stigmata.filter; - -import java.util.Locale; - -import jp.sourceforge.stigmata.spi.AbstractServiceProvider; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; -import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; - -/** - * - * @author Haruaki TAMADA - */ -abstract class AbstractComparisonPairFilterService extends AbstractServiceProvider implements ComparisonPairFilterSpi{ - @Override - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter - ); - } - - @Override - public String getDisplayFilterName(){ - return getDisplayFilterName(Locale.getDefault()); - } - - @Override - public String getDisplayFilterName(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDisplayType( - locale, getFilterName(), LocalizedDescriptionManager.ServiceCategory.filter - ); - } -} diff --git a/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java index 084a141..c7a22f2 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilter.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import jp.sourceforge.stigmata.ComparisonPair; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * @@ -26,7 +26,7 @@ public class BirthmarkElementCountComparisonPairFilter extends AbstractCompariso CRITERIA.add(Criterion.NOT_EQUALS_AS); } - public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ + public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterService service){ super(service); } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java index 0051fbc..7897f1c 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/BirthmarkElementCountComparisonPairFilterService.java @@ -1,12 +1,13 @@ package jp.sourceforge.stigmata.filter; import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * * @author Haruaki TAMADA */ -public class BirthmarkElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ +public class BirthmarkElementCountComparisonPairFilterService implements ComparisonPairFilterService{ @Override public ComparisonPairFilter getFilter(){ @@ -14,12 +15,12 @@ public class BirthmarkElementCountComparisonPairFilterService extends AbstractCo } @Override - public String getFilterClassName(){ - return BirthmarkElementCountComparisonPairFilter.class.getName(); + public String getFilterName(){ + return "elementcount"; } @Override - public String getFilterName(){ - return "elementcount"; + public String getDescription(){ + return "Element count Filter"; } } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java b/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java index d110f9d..263a0b9 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/ComparisonPairFilterManager.java @@ -10,7 +10,7 @@ import java.util.Map; import jp.sourceforge.stigmata.BirthmarkEnvironment; import jp.sourceforge.stigmata.ComparisonPairFilter; import jp.sourceforge.stigmata.ComparisonPairFilterSet; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import org.apache.commons.beanutils.BeanUtils; @@ -19,14 +19,14 @@ import org.apache.commons.beanutils.BeanUtils; * @author Haruaki TAMADA */ public class ComparisonPairFilterManager{ - private Map services = new HashMap(); + private Map services = new HashMap(); private Map filters = new HashMap(); private ComparisonPairFilterManager parent; public ComparisonPairFilterManager(BirthmarkEnvironment env, ComparisonPairFilterManager parent){ this.parent = parent; - for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ - ComparisonPairFilterSpi service = i.next(); + for(Iterator i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){ + ComparisonPairFilterService service = i.next(); if(getService(service.getFilterName()) != null){ services.put(service.getFilterName(), service); } @@ -34,8 +34,8 @@ public class ComparisonPairFilterManager{ } public ComparisonPairFilterManager(BirthmarkEnvironment env){ - for(Iterator i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){ - ComparisonPairFilterSpi service = i.next(); + for(Iterator i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){ + ComparisonPairFilterService service = i.next(); services.put(service.getFilterName(), service); } } @@ -122,14 +122,14 @@ public class ComparisonPairFilterManager{ return null; } - public ComparisonPairFilterSpi removeService(String name){ + public ComparisonPairFilterService removeService(String name){ if(parent != null && parent.hasService(name)){ parent.removeService(name); } return services.remove(name); } - public void addService(ComparisonPairFilterSpi service){ + public void addService(ComparisonPairFilterService service){ if(parent == null || parent.getService(service.getFilterName()) == null){ services.put(service.getFilterName(), service); } @@ -139,8 +139,8 @@ public class ComparisonPairFilterManager{ return (parent != null && parent.hasService(name)) || services.get(name) != null; } - public ComparisonPairFilterSpi getService(String name){ - ComparisonPairFilterSpi service = null; + public ComparisonPairFilterService getService(String name){ + ComparisonPairFilterService service = null; if(parent != null){ service = parent.getService(name); } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java index b6c2fd0..5729992 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilter.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import jp.sourceforge.stigmata.ComparisonPair; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * @@ -25,7 +25,7 @@ public class SimilarityComparisonPairFilter extends AbstractComparisonPairFilter private double threshold; - public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){ + public SimilarityComparisonPairFilter(ComparisonPairFilterService service){ super(service); setThreshold(0.8d); } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java index b35503e..8700d95 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/SimilarityComparisonPairFilterService.java @@ -1,24 +1,25 @@ package jp.sourceforge.stigmata.filter; import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * * @author Haruaki TAMADA */ -public class SimilarityComparisonPairFilterService extends AbstractComparisonPairFilterService{ +public class SimilarityComparisonPairFilterService implements ComparisonPairFilterService{ @Override public ComparisonPairFilter getFilter(){ return new SimilarityComparisonPairFilter(this); } @Override - public String getFilterClassName(){ - return SimilarityComparisonPairFilter.class.getName(); + public String getFilterName(){ + return "similarity"; } @Override - public String getFilterName(){ - return "similarity"; + public String getDescription(){ + return "Filtering all comparison pair by its similarity"; } } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java index 28728e9..293c738 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilter.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import jp.sourceforge.stigmata.ComparisonPair; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * @@ -26,7 +26,7 @@ public class TargetNameComparisonPairFilter extends AbstractComparisonPairFilter private FilterTarget target = FilterTarget.BOTH_TARGETS; private String value; - public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){ + public TargetNameComparisonPairFilter(ComparisonPairFilterService service){ super(service); } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java index bc8d870..92442bf 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TargetNameComparisonPairFilterService.java @@ -1,12 +1,13 @@ package jp.sourceforge.stigmata.filter; import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * * @author Haruaki TAMADA */ -public class TargetNameComparisonPairFilterService extends AbstractComparisonPairFilterService{ +public class TargetNameComparisonPairFilterService implements ComparisonPairFilterService{ @Override public ComparisonPairFilter getFilter(){ @@ -14,12 +15,12 @@ public class TargetNameComparisonPairFilterService extends AbstractComparisonPai } @Override - public String getFilterClassName(){ - return TargetNameComparisonPairFilter.class.getName(); + public String getFilterName(){ + return "name"; } @Override - public String getFilterName(){ - return "name"; + public String getDescription(){ + return "Filtering by Target Name"; } } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java index 5bd4227..a62a3d5 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilter.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import jp.sourceforge.stigmata.ComparisonPair; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * @@ -26,7 +26,7 @@ public class TotalElementCountComparisonPairFilter extends AbstractComparisonPai private int threshold = 0; private FilterTarget target; - public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){ + public TotalElementCountComparisonPairFilter(ComparisonPairFilterService service){ super(service); } diff --git a/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java index 87e6dab..59d79ba 100644 --- a/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java +++ b/src/main/java/jp/sourceforge/stigmata/filter/TotalElementCountComparisonPairFilterService.java @@ -1,12 +1,13 @@ package jp.sourceforge.stigmata.filter; import jp.sourceforge.stigmata.ComparisonPairFilter; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; /** * * @author Haruaki TAMADA */ -public class TotalElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{ +public class TotalElementCountComparisonPairFilterService implements ComparisonPairFilterService{ @Override public ComparisonPairFilter getFilter(){ @@ -14,12 +15,12 @@ public class TotalElementCountComparisonPairFilterService extends AbstractCompar } @Override - public String getFilterClassName(){ - return TotalElementCountComparisonPairFilter.class.getName(); + public String getFilterName(){ + return "totalelementcount"; } @Override - public String getFilterName(){ - return "totalelementcount"; + public String getDescription(){ + return "Filtering Element Count"; } } diff --git a/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java b/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java index 855b94f..4b4aa28 100644 --- a/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/AbstractStigmataHookService.java @@ -1,13 +1,13 @@ package jp.sourceforge.stigmata.hook; -import jp.sourceforge.stigmata.spi.StigmataHookSpi; +import jp.sourceforge.stigmata.spi.StigmataHookService; /** * * * @author Haruaki Tamada */ -public abstract class AbstractStigmataHookService implements StigmataHookSpi{ +public abstract class AbstractStigmataHookService implements StigmataHookService{ @Override public StigmataRuntimeHook afterComparison(){ return null; diff --git a/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java index a4ff65c..63c90f0 100644 --- a/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java +++ b/src/main/java/jp/sourceforge/stigmata/hook/StigmataHookManager.java @@ -4,7 +4,7 @@ import java.util.Iterator; import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.BirthmarkEnvironment; -import jp.sourceforge.stigmata.spi.StigmataHookSpi; +import jp.sourceforge.stigmata.spi.StigmataHookService; /** * @@ -36,8 +36,8 @@ public class StigmataHookManager{ private MultipleStigmataHook buildHook(Phase phase, BirthmarkEnvironment env){ MultipleStigmataHook hooks = new MultipleStigmataHook(); - for(Iterator i = env.lookupProviders(StigmataHookSpi.class); i.hasNext(); ){ - StigmataHookSpi service = i.next(); + for(Iterator i = env.lookupProviders(StigmataHookService.class); i.hasNext(); ){ + StigmataHookService service = i.next(); switch(phase){ case SETUP: diff --git a/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java b/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java index 384e9f1..fef34f1 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/PrinterManager.java @@ -7,7 +7,7 @@ import java.util.ServiceLoader; import jp.sourceforge.stigmata.BirthmarkEnvironment; import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -15,12 +15,12 @@ import jp.sourceforge.stigmata.spi.ResultPrinterSpi; */ public class PrinterManager{ private static final PrinterManager manager = new PrinterManager(); - private ServiceLoader serviceLoader; + private ServiceLoader serviceLoader; - private Map formats = new HashMap(); + private Map formats = new HashMap(); private PrinterManager(){ - serviceLoader = ServiceLoader.load(ResultPrinterSpi.class); + serviceLoader = ServiceLoader.load(ResultPrinterService.class); load(); } @@ -32,12 +32,12 @@ public class PrinterManager{ public static void refresh(BirthmarkEnvironment env){ PrinterManager instance = getInstance(); instance.formats.clear(); - for(Iterator i = env.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){ + for(Iterator i = env.lookupProviders(ResultPrinterService.class); i.hasNext(); ){ instance.addService(i.next()); } } - public static ResultPrinterSpi getDefaultFormatService(){ + public static ResultPrinterService getDefaultFormatService(){ return new CsvResultPrinterService(); } @@ -45,19 +45,19 @@ public class PrinterManager{ return manager; } - public ResultPrinterSpi getService(String format){ + public ResultPrinterService getService(String format){ return formats.get(format); } private void load(){ formats.clear(); - for(Iterator i = serviceLoader.iterator(); i.hasNext(); ){ - ResultPrinterSpi spi = i.next(); + for(Iterator i = serviceLoader.iterator(); i.hasNext(); ){ + ResultPrinterService spi = i.next(); addService(spi); } } - private void addService(ResultPrinterSpi service){ + private void addService(ResultPrinterService service){ formats.put(service.getFormat(), service); } } diff --git a/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java b/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java index 6efe566..fd75d39 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/csv/CsvResultPrinterService.java @@ -1,14 +1,10 @@ package jp.sourceforge.stigmata.printer.csv; -import java.util.Locale; - import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; import jp.sourceforge.stigmata.printer.ComparisonPairPrinter; import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; -import jp.sourceforge.stigmata.spi.AbstractServiceProvider; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; -import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -16,7 +12,7 @@ import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; * * @author Haruaki TAMADA */ -public class CsvResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ +public class CsvResultPrinterService implements ResultPrinterService{ private BirthmarkServiceCsvPrinter serviceList = new BirthmarkServiceCsvPrinter(); private ExtractionResultSetCsvPrinter list = new ExtractionResultSetCsvPrinter(); private ComparisonPairCsvPrinter pairPrinter = new ComparisonPairCsvPrinter(list); @@ -26,10 +22,8 @@ public class CsvResultPrinterService extends AbstractServiceProvider implements * returns a localized description of the birthmark this service provides. */ @Override - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter - ); + public String getDescription(){ + return "Print Birthmarks in Csv Format"; } @Override diff --git a/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java b/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java index c9883f0..5e29082 100644 --- a/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java +++ b/src/main/java/jp/sourceforge/stigmata/printer/xml/XmlResultPrinterService.java @@ -1,14 +1,10 @@ package jp.sourceforge.stigmata.printer.xml; -import java.util.Locale; - import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter; import jp.sourceforge.stigmata.printer.ComparisonPairPrinter; import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter; import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; -import jp.sourceforge.stigmata.spi.AbstractServiceProvider; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; -import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; +import jp.sourceforge.stigmata.spi.ResultPrinterService; /** * @@ -16,7 +12,7 @@ import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager; * * @author Haruaki TAMADA */ -public class XmlResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{ +public class XmlResultPrinterService implements ResultPrinterService{ private BirthmarkServiceXmlPrinter serviceList = new BirthmarkServiceXmlPrinter(); private ExtractionResultSetXmlPrinter list = new ExtractionResultSetXmlPrinter(); private ComparisonPairXmlPrinter pairPrinter = new ComparisonPairXmlPrinter(list); @@ -26,10 +22,8 @@ public class XmlResultPrinterService extends AbstractServiceProvider implements * returns a localized description of the birthmark this service provides. */ @Override - public String getDescription(Locale locale){ - return LocalizedDescriptionManager.getInstance().getDescription( - locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter - ); + public String getDescription(){ + return "Print Birthmarks in Xml Format"; } @Override diff --git a/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java index 9284811..c6d819e 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/MemoryExtractedBirthmarkService.java @@ -5,13 +5,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget; import jp.sourceforge.stigmata.ExtractionResultSet; import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; import jp.sourceforge.stigmata.result.history.MemoryExtractedBirthmarkHistory; -import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService; /** * * @author Haruaki Tamada */ -public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{ +public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkService{ private MemoryExtractedBirthmarkHistory history = new MemoryExtractedBirthmarkHistory(); @Override @@ -36,4 +36,14 @@ public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{ return BirthmarkStoreTarget.MEMORY; } + @Override + public String getType(){ + return "memory"; + } + + @Override + public String getDescription(){ + return "Store birthmarks in memory"; + } + } diff --git a/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java index 2287573..2b16192 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/RDBExtractedBirthmarkService.java @@ -7,13 +7,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget; import jp.sourceforge.stigmata.ExtractionResultSet; import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; import jp.sourceforge.stigmata.result.history.RDBExtractedBirthmarkHistory; -import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService; /** * * @author Haruaki Tamada */ -public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{ +public class RDBExtractedBirthmarkService implements ExtractedBirthmarkService{ private DataSource source; public RDBExtractedBirthmarkService(){ @@ -38,4 +38,14 @@ public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{ public BirthmarkStoreTarget getTarget(){ return BirthmarkStoreTarget.RDB; } + + @Override + public String getType(){ + return "rdb"; + } + + @Override + public String getDescription(){ + return "Store birthmarks to Relational Database."; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java index c9f3d4b..b01db0e 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java +++ b/src/main/java/jp/sourceforge/stigmata/result/XmlFileExtractedBirthmarkService.java @@ -8,13 +8,13 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget; import jp.sourceforge.stigmata.ExtractionResultSet; import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; import jp.sourceforge.stigmata.result.history.XmlFileExtractedBirthmarkHistory; -import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService; /** * * @author Haruaki Tamada */ -public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{ +public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkService{ private File defaultBaseDirectory; public XmlFileExtractedBirthmarkService(){ @@ -56,4 +56,14 @@ public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{ public BirthmarkStoreTarget getTarget(){ return BirthmarkStoreTarget.XMLFILE; } + + @Override + public String getType(){ + return "xmlfile"; + } + + @Override + public String getDescription(){ + return "Store birthmarks into Xml File"; + } } diff --git a/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java index f90ca11..694f1da 100644 --- a/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java +++ b/src/main/java/jp/sourceforge/stigmata/result/history/ExtractedBirthmarkServiceManager.java @@ -14,7 +14,7 @@ import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.BirthmarkEnvironment; import jp.sourceforge.stigmata.BirthmarkStoreTarget; import jp.sourceforge.stigmata.ExtractionResultSet; -import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; +import jp.sourceforge.stigmata.spi.ExtractedBirthmarkService; /** * @@ -22,7 +22,7 @@ import jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi; */ public class ExtractedBirthmarkServiceManager{ private ExtractedBirthmarkServiceManager parent; - private Map targets = new HashMap(); + private Map targets = new HashMap(); private BirthmarkEnvironment env; public ExtractedBirthmarkServiceManager(BirthmarkEnvironment env){ @@ -48,7 +48,7 @@ public class ExtractedBirthmarkServiceManager{ bst = BirthmarkStoreTarget.XMLFILE; } - ExtractedBirthmarkSpi service = findService(bst); + ExtractedBirthmarkService service = findService(bst); return service.createResultSet(context); } @@ -64,7 +64,7 @@ public class ExtractedBirthmarkServiceManager{ BirthmarkStoreTarget bst = BirthmarkStoreTarget.valueOf(type); String path = id.substring(index + 1); - ExtractedBirthmarkSpi service = findService(bst); + ExtractedBirthmarkService service = findService(bst); if(service != null){ history = service.getHistory(path); } @@ -90,8 +90,8 @@ public class ExtractedBirthmarkServiceManager{ return values.toArray(new String[values.size()]); } - private synchronized ExtractedBirthmarkSpi findService(BirthmarkStoreTarget bst){ - ExtractedBirthmarkSpi spi = targets.get(bst); + private synchronized ExtractedBirthmarkService findService(BirthmarkStoreTarget bst){ + ExtractedBirthmarkService spi = targets.get(bst); if(spi == null){ refreshService(); } @@ -101,8 +101,8 @@ public class ExtractedBirthmarkServiceManager{ } private synchronized void refreshService(){ - for(Iterator i = env.lookupProviders(ExtractedBirthmarkSpi.class); i.hasNext(); ){ - ExtractedBirthmarkSpi service = i.next(); + for(Iterator i = env.lookupProviders(ExtractedBirthmarkService.class); i.hasNext(); ){ + ExtractedBirthmarkService service = i.next(); targets.put(service.getTarget(), service); } } diff --git a/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java deleted file mode 100644 index 8ce6550..0000000 --- a/src/main/java/jp/sourceforge/stigmata/spi/AbstractServiceProvider.java +++ /dev/null @@ -1,36 +0,0 @@ -package jp.sourceforge.stigmata.spi; - -import java.util.Locale; - -/** - * Base abstract class for birthmark SPI. - * - * @author Haruaki TAMADA - */ -public abstract class AbstractServiceProvider implements ServiceProvider{ - - /** - * returning implementation vendor name of this SPI. - */ - @Override - public String getDescription(){ - return getDescription(Locale.getDefault()); - } - - /** - * returning implementation vendor name of this SPI. - */ - @Override - public String getVendorName(){ - return getClass().getPackage().getImplementationVendor(); - } - - /** - * returning version of this SPI. - */ - @Override - public String getVersion(){ - return getClass().getPackage().getImplementationVersion(); - } - -} diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorService.java similarity index 64% rename from src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorService.java index 669887f..e2e7e3b 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkComparatorService.java @@ -1,7 +1,5 @@ package jp.sourceforge.stigmata.spi; -import java.util.Locale; - import jp.sourceforge.stigmata.BirthmarkComparator; /** @@ -9,26 +7,17 @@ import jp.sourceforge.stigmata.BirthmarkComparator; * * @author Haruaki TAMADA */ -public interface BirthmarkComparatorSpi extends ServiceProvider{ +public interface BirthmarkComparatorService{ /** * returns a type of the birthmark this service provides. */ public String getType(); /** - * returns a localized description of the birthmark this service provides. - */ - @Override - public String getDescription(Locale locale); - - /** * returns a localized description of the birthmark in default locale. */ - @Override public String getDescription(); - public String getComparatorClassName(); - /** * returns a extractor for the birthmark of this service. */ diff --git a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorService.java similarity index 65% rename from src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorService.java index 168dca3..d66cdcb 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/BirthmarkExtractorService.java @@ -1,7 +1,5 @@ package jp.sourceforge.stigmata.spi; -import java.util.Locale; - import jp.sourceforge.stigmata.BirthmarkExtractor; /** @@ -9,26 +7,17 @@ import jp.sourceforge.stigmata.BirthmarkExtractor; * * @author Haruaki TAMADA */ -public interface BirthmarkExtractorSpi extends ServiceProvider{ +public interface BirthmarkExtractorService{ /** * returns a type of the birthmark this service provides. */ public String getType(); /** - * returns a localized description of the birthmark this service provides. - */ - @Override - public String getDescription(Locale locale); - - /** * returns a localized description of the birthmark in default locale. */ - @Override public String getDescription(); - public String getExtractorClassName(); - /** * returns a extractor for the birthmark of this service. */ diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterService.java similarity index 54% rename from src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterService.java index a6da9c5..0751c46 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ComparisonPairFilterService.java @@ -1,7 +1,5 @@ package jp.sourceforge.stigmata.spi; -import java.util.Locale; - import jp.sourceforge.stigmata.ComparisonPairFilter; /** @@ -9,14 +7,10 @@ import jp.sourceforge.stigmata.ComparisonPairFilter; * * @author Haruaki TAMADA */ -public interface ComparisonPairFilterSpi extends ServiceProvider{ - public String getDisplayFilterName(Locale locale); - - public String getDisplayFilterName(); - +public interface ComparisonPairFilterService{ public String getFilterName(); - public String getFilterClassName(); + public String getDescription(); public ComparisonPairFilter getFilter(); } diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkService.java similarity index 87% rename from src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkService.java index 7dd61a1..088592d 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ExtractedBirthmarkService.java @@ -10,7 +10,7 @@ import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkHistory; * * @author Haruaki Tamada */ -public interface ExtractedBirthmarkSpi{ +public interface ExtractedBirthmarkService{ /** * finds and returns history from given parameter. * @param parameter search base. @@ -23,4 +23,8 @@ public interface ExtractedBirthmarkSpi{ public ExtractionResultSet createResultSet(BirthmarkContext context); public BirthmarkStoreTarget getTarget(); + + public String getType(); + + public String getDescription(); } diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterService.java similarity index 91% rename from src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterService.java index 9513fe8..c919e30 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/ResultPrinterService.java @@ -11,12 +11,14 @@ import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; * * @author Haruaki TAMADA */ -public interface ResultPrinterSpi extends ServiceProvider{ +public interface ResultPrinterService{ /** * return a format. */ public String getFormat(); + public String getDescription(); + public BirthmarkServicePrinter getBirthmarkServicePrinter(); public ComparisonResultSetPrinter getComparisonResultSetPrinter(); diff --git a/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java b/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java deleted file mode 100644 index 80e211d..0000000 --- a/src/main/java/jp/sourceforge/stigmata/spi/ServiceProvider.java +++ /dev/null @@ -1,18 +0,0 @@ -package jp.sourceforge.stigmata.spi; - -import java.util.Locale; - -/** - * Base interface for birthmark SPI. - * - * @author Haruaki TAMADA - */ -public interface ServiceProvider{ - public String getDescription(Locale locale); - - public String getDescription(); - - public String getVendorName(); - - public String getVersion(); -} diff --git a/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java b/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookService.java similarity index 84% rename from src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java rename to src/main/java/jp/sourceforge/stigmata/spi/StigmataHookService.java index 6020ae2..3a531ca 100644 --- a/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookSpi.java +++ b/src/main/java/jp/sourceforge/stigmata/spi/StigmataHookService.java @@ -7,7 +7,11 @@ import jp.sourceforge.stigmata.hook.StigmataRuntimeHook; * * @author Haruaki Tamada */ -public interface StigmataHookSpi{ +public interface StigmataHookService{ + public String getType(); + + public String getDescription(); + public StigmataHook onSetup(); public StigmataHook onTearDown(); 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 9e371b2..16dc54d 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkDefinitionPane.java @@ -28,8 +28,8 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import jp.sourceforge.stigmata.BirthmarkEnvironment; -import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi; -import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi; +import jp.sourceforge.stigmata.spi.BirthmarkComparatorService; +import jp.sourceforge.stigmata.spi.BirthmarkExtractorService; import jp.sourceforge.stigmata.spi.BirthmarkService; import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService; import jp.sourceforge.talisman.i18n.Messages; @@ -304,14 +304,16 @@ public class BirthmarkDefinitionPane extends JPanel{ public void initData(){ comparator.addItem(""); - for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorSpi.class); i.hasNext();){ - BirthmarkComparatorSpi service = i.next(); - comparator.addItem(service.getComparatorClassName()); + for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorService.class); i.hasNext();){ + BirthmarkComparatorService service = i.next(); + comparator.addItem(service.getType()); + // TODO: 比較器の名前を引っ張る方法を考える. } extractor.addItem(""); - for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorSpi.class); i.hasNext();){ - BirthmarkExtractorSpi service = i.next(); - extractor.addItem(service.getExtractorClassName()); + for(Iterator i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorService.class); i.hasNext();){ + BirthmarkExtractorService service = i.next(); + extractor.addItem(service.getType()); + // TODO: 考える. } } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java index 67512dc..7302dcd 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/BirthmarkExtractionResultPane.java @@ -17,7 +17,7 @@ import jp.sourceforge.stigmata.ExtractionResultSet; import jp.sourceforge.stigmata.ExtractionTarget; import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter; import jp.sourceforge.stigmata.printer.PrinterManager; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; import jp.sourceforge.stigmata.ui.swing.actions.PopupShowAction; import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; import jp.sourceforge.stigmata.utils.AsciiDataWritable; @@ -44,7 +44,7 @@ public class BirthmarkExtractionResultPane extends JPanel{ Action saveAction = new SaveAction(frame, new AsciiDataWritable(){ @Override public void writeAsciiData(PrintWriter out, String format){ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + ResultPrinterService service = PrinterManager.getInstance().getService(format); if(service == null){ service = PrinterManager.getDefaultFormatService(); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java index 8a342be..75d9da9 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonPane.java @@ -22,7 +22,7 @@ import jp.sourceforge.stigmata.BirthmarkSet; import jp.sourceforge.stigmata.ComparisonPair; import jp.sourceforge.stigmata.ComparisonPairElement; import jp.sourceforge.stigmata.printer.PrinterManager; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; import jp.sourceforge.stigmata.utils.AsciiDataWritable; @@ -74,7 +74,7 @@ public class PairComparisonPane extends JPanel{ frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ @Override public void writeAsciiData(PrintWriter out, String format) throws IOException{ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + ResultPrinterService service = PrinterManager.getInstance().getService(format); if(service == null){ service = PrinterManager.getDefaultFormatService(); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java index a305abe..e5ea8ec 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/PairComparisonResultSetPane.java @@ -30,7 +30,7 @@ import jp.sourceforge.stigmata.ComparisonPair; import jp.sourceforge.stigmata.ComparisonResultSet; import jp.sourceforge.stigmata.printer.PrinterManager; import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; import jp.sourceforge.stigmata.utils.AsciiDataWritable; @@ -124,7 +124,7 @@ public class PairComparisonResultSetPane extends JPanel{ frame.getMessages(), "savecomparison", new SaveAction(frame, new AsciiDataWritable(){ @Override public void writeAsciiData(PrintWriter out, String format) throws IOException{ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + ResultPrinterService service = PrinterManager.getInstance().getService(format); if(service == null){ service = PrinterManager.getDefaultFormatService(); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java index 52f8a12..cb530c4 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/RoundRobinComparisonResultPane.java @@ -40,7 +40,7 @@ import jp.sourceforge.stigmata.filter.FilteredComparisonResultSet; import jp.sourceforge.stigmata.printer.PrinterManager; import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet; import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet; -import jp.sourceforge.stigmata.spi.ResultPrinterSpi; +import jp.sourceforge.stigmata.spi.ResultPrinterService; import jp.sourceforge.stigmata.ui.swing.actions.SaveAction; import jp.sourceforge.stigmata.ui.swing.actions.UpdateBirthmarkCellColorAction; import jp.sourceforge.stigmata.utils.AsciiDataWritable; @@ -246,7 +246,7 @@ public class RoundRobinComparisonResultPane extends JPanel{ messages, "savecomparison", new SaveAction(stigmata, new AsciiDataWritable(){ @Override public void writeAsciiData(PrintWriter out, String format){ - ResultPrinterSpi service = PrinterManager.getInstance().getService(format); + ResultPrinterService service = PrinterManager.getInstance().getService(format); if(service == null){ service = PrinterManager.getDefaultFormatService(); } 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 35a3a56..5dd88a7 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 @@ -14,7 +14,7 @@ import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilter; import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService; import jp.sourceforge.stigmata.filter.FilterTarget; import jp.sourceforge.stigmata.spi.BirthmarkService; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListCellRenderer; import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; @@ -27,7 +27,7 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A private Pane pane; @Override - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){ pane = new Pane(frame, service); return pane; } @@ -48,20 +48,20 @@ public class BirthmarkElementCountComparisonPairFilterComponentService extends A } @Override - public ComparisonPairFilterSpi getComparisonPairFilterService(){ + public ComparisonPairFilterService getComparisonPairFilterService(){ return new BirthmarkElementCountComparisonPairFilterService(); } private static class Pane extends ComparisonPairFilterPane implements BirthmarkServiceListener{ private static final long serialVersionUID = -6398073942592186671L; - private ComparisonPairFilterSpi service; + private ComparisonPairFilterService service; private JComboBox criterionType; private JTextField threshold; private JComboBox targetType; private JComboBox birthmarks; - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + public Pane(StigmataFrame frame, ComparisonPairFilterService service){ super(frame); this.service = service; initLayouts(); diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java index 75a6147..4996f5f 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/ComparisonPairFilterComponentService.java @@ -2,7 +2,7 @@ package jp.sourceforge.stigmata.ui.swing.filter; import java.util.Locale; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; /** @@ -16,7 +16,7 @@ public interface ComparisonPairFilterComponentService{ public String getFilterName(); - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service); + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service); - public ComparisonPairFilterSpi getComparisonPairFilterService(); + public ComparisonPairFilterService getComparisonPairFilterService(); } 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 59eb6e4..0eb4b46 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 @@ -21,7 +21,7 @@ import javax.swing.JPanel; import jp.sourceforge.stigmata.ComparisonPairFilter; import jp.sourceforge.stigmata.spi.BirthmarkService; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.BirthmarkServiceListener; import jp.sourceforge.stigmata.ui.swing.GUIUtility; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; @@ -71,8 +71,8 @@ public class FilterEditingPane extends JPanel{ resetOldComponent(); this.filter = filter; if(filter != null && filter.getService() != null){ - ComparisonPairFilterSpi service = filter.getService(); - String name = service.getDisplayFilterName(); + ComparisonPairFilterService service = filter.getService(); + String name = service.getFilterName(); combo.setSelectedItem(name); card.show(cardComponent, name); @@ -83,7 +83,7 @@ public class FilterEditingPane extends JPanel{ private void resetOldComponent(){ if(filter != null){ - paneMap.get(filter.getService().getDisplayFilterName()).resetComponents(); + paneMap.get(filter.getService().getFilterName()).resetComponents(); } } @@ -143,7 +143,7 @@ public class FilterEditingPane extends JPanel{ card.show(cardComponent, item); if(paneMap.get(item) != null){ if(filter != null){ - String oldType = filter.getService().getDisplayFilterName(); + String oldType = filter.getService().getFilterName(); if(item.equals(oldType)){ paneMap.get(item).setFilter(filter); } diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java index 5aacbcd..a036692 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/SimilarityComparisonPairFilterComponentService.java @@ -13,7 +13,7 @@ import javax.swing.event.DocumentListener; import jp.sourceforge.stigmata.ComparisonPairFilter; import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilter; import jp.sourceforge.stigmata.filter.SimilarityComparisonPairFilterService; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; /** @@ -23,7 +23,7 @@ import jp.sourceforge.stigmata.ui.swing.StigmataFrame; public class SimilarityComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ @Override - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){ return new Pane(frame, service); } @@ -33,17 +33,17 @@ public class SimilarityComparisonPairFilterComponentService extends AbstractComp } @Override - public ComparisonPairFilterSpi getComparisonPairFilterService(){ + public ComparisonPairFilterService getComparisonPairFilterService(){ return new SimilarityComparisonPairFilterService(); } private static class Pane extends ComparisonPairFilterPane{ private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; + private ComparisonPairFilterService service; private JComboBox criterionType; private JTextField threshold; - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + public Pane(StigmataFrame frame, ComparisonPairFilterService service){ super(frame); this.service = service; initLayouts(); diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java index fb003e6..b7aaacc 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TargetNameComparisonPairFilterComponentService.java @@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.ComparisonPairFilter; import jp.sourceforge.stigmata.filter.FilterTarget; import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilter; import jp.sourceforge.stigmata.filter.TargetNameComparisonPairFilterService; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; /** @@ -21,7 +21,7 @@ import jp.sourceforge.stigmata.ui.swing.StigmataFrame; public class TargetNameComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ @Override - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){ return new Pane(frame, service); } @@ -31,18 +31,18 @@ public class TargetNameComparisonPairFilterComponentService extends AbstractComp } @Override - public ComparisonPairFilterSpi getComparisonPairFilterService(){ + public ComparisonPairFilterService getComparisonPairFilterService(){ return new TargetNameComparisonPairFilterService(); } private static class Pane extends ComparisonPairFilterPane{ private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; + private ComparisonPairFilterService service; private JComboBox criterionType; private JTextField value; private JComboBox targetType; - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + public Pane(StigmataFrame frame, ComparisonPairFilterService service){ super(frame); this.service = service; initLayouts(); diff --git a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java index 1c3bef4..9627a7b 100644 --- a/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java +++ b/src/main/java/jp/sourceforge/stigmata/ui/swing/filter/TotalElementCountComparisonPairFilterComponentService.java @@ -12,7 +12,7 @@ import jp.sourceforge.stigmata.ComparisonPairFilter; import jp.sourceforge.stigmata.filter.FilterTarget; import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilter; import jp.sourceforge.stigmata.filter.TotalElementCountComparisonPairFilterService; -import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi; +import jp.sourceforge.stigmata.spi.ComparisonPairFilterService; import jp.sourceforge.stigmata.ui.swing.StigmataFrame; /** @@ -21,7 +21,7 @@ import jp.sourceforge.stigmata.ui.swing.StigmataFrame; public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{ @Override - public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){ + public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){ return new Pane(frame, service); } @@ -31,18 +31,18 @@ public class TotalElementCountComparisonPairFilterComponentService extends Abstr } @Override - public ComparisonPairFilterSpi getComparisonPairFilterService(){ + public ComparisonPairFilterService getComparisonPairFilterService(){ return new TotalElementCountComparisonPairFilterService(); } private static class Pane extends ComparisonPairFilterPane{ private static final long serialVersionUID = 8912037614500713027L; - private ComparisonPairFilterSpi service; + private ComparisonPairFilterService service; private JComboBox criterionType; private JTextField threshold; private JComboBox targetType; - public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){ + public Pane(StigmataFrame frame, ComparisonPairFilterService service){ super(frame); this.service = service; initLayouts(); diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkComparatorService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkExtractorService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService index 0869b5d..ea481c3 100644 --- a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService +++ b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService @@ -2,6 +2,5 @@ jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkService jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkService jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkService jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkService -jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkService jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkService jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ComparisonPairFilterService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ExtractedBirthmarkService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.ResultPrinterService diff --git a/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookSpi b/src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookService similarity index 100% rename from src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookSpi rename to src/main/resources/META-INF/services/jp.sourceforge.stigmata.spi.StigmataHookService diff --git a/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java b/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java index 39d06bb..696e726 100644 --- a/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java +++ b/src/test/java/jp/sourceforge/stigmata/ServiceListTest.java @@ -22,7 +22,6 @@ public class ServiceListTest{ assertNotNull(env.getService("fmc")); assertNotNull(env.getService("fuc")); assertNotNull(env.getService("is")); - assertNotNull(env.getService("kgram")); assertNotNull(env.getService("smc")); assertNotNull(env.getService("uc")); assertNotNull(env.getService("cvfv_dp")); diff --git a/src/test/java/jp/sourceforge/stigmata/StigmataTest.java b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java index 04ba6af..4aa3925 100644 --- a/src/test/java/jp/sourceforge/stigmata/StigmataTest.java +++ b/src/test/java/jp/sourceforge/stigmata/StigmataTest.java @@ -27,7 +27,6 @@ public class StigmataTest{ Assert.assertNotNull(environment.getService("cvfv")); Assert.assertNotNull(environment.getService("is")); Assert.assertNotNull(environment.getService("uc")); - Assert.assertNotNull(environment.getService("kgram")); } @Test @@ -93,20 +92,4 @@ public class StigmataTest{ service.getExtractor().getClass().getName() ); } - - @Test - public void checkKgramBirthmarkService() throws Exception{ - BirthmarkService service = environment.getService("kgram"); - - Assert.assertNotNull(service.getComparator()); - Assert.assertNotNull(service.getExtractor()); - Assert.assertEquals( - "jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator", - service.getComparator().getClass().getName() - ); - Assert.assertEquals( - "jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor", - service.getExtractor().getClass().getName() - ); - } } diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java index df06be0..827c9b1 100644 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/BirthmarkCompareTest.java @@ -23,7 +23,7 @@ public class BirthmarkCompareTest{ @Before public void readBirthmarks() throws Exception{ context = Stigmata.getInstance().createContext(); - context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", "kgram", }); + context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", }); engine = new BirthmarkEngine(context.getEnvironment()); ExtractionResultSet ers = engine.extract( diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java index 21e1d3e..ab60f94 100644 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/cvfv/CVFVBirthmarkExtractorTest.java @@ -1,11 +1,15 @@ package jp.sourceforge.stigmata.birthmarks.cvfv; +import java.io.FileInputStream; + import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; import jp.sourceforge.stigmata.BirthmarkElement; -import jp.sourceforge.stigmata.BirthmarkSet; -import jp.sourceforge.stigmata.ExtractionResultSet; -import jp.sourceforge.stigmata.Stigmata; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType; +import jp.sourceforge.stigmata.utils.WellknownClassManager; import org.junit.Assert; import org.junit.Before; @@ -16,89 +20,33 @@ import org.junit.Test; * @author Haruaki TAMADA */ public class CVFVBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; + private BirthmarkExtractor extractor; @Before public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("cvfv"); + extractor = new ConstantValueOfFieldVariableBirthmarkService().getExtractor(); + BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment(); + WellknownClassManager manager = env.getWellknownClassManager(); + manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); } - @Test - public void checkCVFVBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("cvfv")); - - Birthmark birthmark = array[0].getBirthmark("cvfv"); - Assert.assertEquals("cvfv", birthmark.getType()); - Assert.assertEquals(4, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[0].getClass().getName()); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[1].getClass().getName()); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[2].getClass().getName()); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[3].getClass().getName()); - - Assert.assertEquals("Ljp/sourceforge/stigmata/Stigmata;", - ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[0]).getValue()); - - Assert.assertEquals("Ljp/sourceforge/stigmata/printer/PrinterManager;", - ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[1]).getValue()); - - Assert.assertEquals("Ljp/sourceforge/stigmata/BirthmarkEnvironment;", - ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[2]).getValue()); - - Assert.assertEquals("Ljava/util/List;", - ((TypeAndValueBirthmarkElement)elements[3]).getSignature()); - Assert.assertNull(((TypeAndValueBirthmarkElement)elements[3]).getValue()); - } @Test - public void checkCVFVBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(array.length, 1); - Assert.assertNotNull(array[0].getBirthmark("cvfv")); - - Birthmark birthmark = array[0].getBirthmark("cvfv"); - Assert.assertEquals(birthmark.getType(), "cvfv"); - Assert.assertEquals(3, birthmark.getElementCount()); + public void checkBirthmark() throws Exception{ + Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class")); + Assert.assertEquals("cvfv", birthmark.getType()); BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[0].getClass().getName()); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[1].getClass().getName()); - Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement", - elements[2].getClass().getName()); + Assert.assertEquals(2, elements.length); - Assert.assertEquals("I", ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); - Assert.assertEquals(-1, ((TypeAndValueBirthmarkElement)elements[0]).getValue()); + Assert.assertTrue(elements[0] instanceof TypeAndValueBirthmarkElement); + Assert.assertTrue(elements[1] instanceof TypeAndValueBirthmarkElement); - Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); - Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue()); + Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[0]).getSignature()); + Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[1]).getSignature()); - Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature()); - Assert.assertEquals(0, ((TypeAndValueBirthmarkElement)elements[2]).getValue()); + Assert.assertEquals("Hello World", elements[0].getValue()); + Assert.assertEquals("Lucida Regular", elements[1].getValue()); } } diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java deleted file mode 100644 index 4c76f1f..0000000 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/is/ISBirthmarkExtractorTest.java +++ /dev/null @@ -1,71 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.is; - -import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; -import jp.sourceforge.stigmata.BirthmarkElement; -import jp.sourceforge.stigmata.BirthmarkEngine; -import jp.sourceforge.stigmata.BirthmarkSet; -import jp.sourceforge.stigmata.ExtractionResultSet; -import jp.sourceforge.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - */ -public class ISBirthmarkExtractorTest{ - private BirthmarkEngine engine; - private BirthmarkContext context; - - @Before - public void setup(){ - engine = Stigmata.getInstance().createEngine(); - context = Stigmata.getInstance().createContext(); - context.addBirthmarkType("is"); - } - - @Test - public void checkISBirthmark() throws Exception{ - ExtractionResultSet ers = engine.extract( - new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, - context - ); - - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("is")); - - Birthmark birthmark = array[0].getBirthmark("is"); - Assert.assertEquals("is", birthmark.getType()); - Assert.assertEquals(2, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertNull(elements[0].getValue()); - Assert.assertEquals("java.lang.Object", elements[1].getValue()); - } - - @Test - public void checkISBirthmark2() throws Exception{ - ExtractionResultSet ers = engine.extract( - new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("is")); - - Birthmark birthmark = array[0].getBirthmark("is"); - Assert.assertEquals("is", birthmark.getType()); - Assert.assertEquals(3, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - Assert.assertNull(elements[0].getValue()); - Assert.assertNull(elements[1].getValue()); - Assert.assertEquals("java.lang.Object", elements[2].getValue()); - } -} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java new file mode 100644 index 0000000..1b05b40 --- /dev/null +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/is/InheritanceStructureBirthmarkExtractorTest.java @@ -0,0 +1,46 @@ +package jp.sourceforge.stigmata.birthmarks.is; + +import java.io.FileInputStream; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + */ +public class InheritanceStructureBirthmarkExtractorTest{ + private BirthmarkExtractor extractor; + + @Before + public void setup(){ + extractor = new InheritanceStructureBirthmarkService().getExtractor(); + BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment(); + WellknownClassManager manager = env.getWellknownClassManager(); + manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + } + + @Test + public void checkBirthmark() throws Exception{ + Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class")); + Assert.assertEquals("is", birthmark.getType()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertEquals(2, elements.length); + + Assert.assertTrue(elements[0] instanceof NullBirthmarkElement); + Assert.assertEquals("java.lang.Object", elements[1].getValue()); + } +} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java deleted file mode 100644 index b34ecb2..0000000 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/kgram/KGramTest.java +++ /dev/null @@ -1,72 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.kgram; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki Tamada - */ -public class KGramTest{ - private String[] plainValues; - private String[] complexValues; - - @Before - public void buildKGrams(){ - plainValues = new String[] { "a", "b", "c", "d", "e", "f", "g", }; - complexValues = new String[] { "a", "b", "r", "a", "c", "a", "d", "a", "b", "r", "a", }; - } - - @Test - public void checkPlainKGram(){ - KGram[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 4); - Assert.assertEquals(4, kgrams.length); - - Assert.assertEquals(4, kgrams[0].getKValue()); - Assert.assertEquals(4, kgrams[1].getKValue()); - Assert.assertEquals(4, kgrams[2].getKValue()); - Assert.assertEquals(4, kgrams[3].getKValue()); - - Assert.assertArrayEquals(new String[] { "a", "b", "c", "d", }, kgrams[0].toArray()); - Assert.assertArrayEquals(new String[] { "b", "c", "d", "e", }, kgrams[1].toArray()); - Assert.assertArrayEquals(new String[] { "c", "d", "e", "f", }, kgrams[2].toArray()); - Assert.assertArrayEquals(new String[] { "d", "e", "f", "g", }, kgrams[3].toArray()); - } - - @Test - public void checkPlainKGram2(){ - KGram[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 3); - Assert.assertEquals(5, kgrams.length); - - Assert.assertEquals(3, kgrams[0].getKValue()); - Assert.assertEquals(3, kgrams[1].getKValue()); - Assert.assertEquals(3, kgrams[2].getKValue()); - Assert.assertEquals(3, kgrams[3].getKValue()); - Assert.assertEquals(3, kgrams[4].getKValue()); - - Assert.assertArrayEquals(new String[] { "a", "b", "c", }, kgrams[0].toArray()); - Assert.assertArrayEquals(new String[] { "b", "c", "d", }, kgrams[1].toArray()); - Assert.assertArrayEquals(new String[] { "c", "d", "e", }, kgrams[2].toArray()); - Assert.assertArrayEquals(new String[] { "d", "e", "f", }, kgrams[3].toArray()); - Assert.assertArrayEquals(new String[] { "e", "f", "g", }, kgrams[4].toArray()); - } - - @Test - public void checkComplexKGram(){ - KGram[] kgrams = KGramBuilder.getInstance().buildKGram(complexValues, 3); - - Assert.assertEquals(7, kgrams.length); - - Assert.assertArrayEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray()); - Assert.assertArrayEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray()); - Assert.assertArrayEquals(new String[] { "r", "a", "c", }, kgrams[2].toArray()); - Assert.assertArrayEquals(new String[] { "a", "c", "a", }, kgrams[3].toArray()); - Assert.assertArrayEquals(new String[] { "c", "a", "d", }, kgrams[4].toArray()); - Assert.assertArrayEquals(new String[] { "a", "d", "a", }, kgrams[5].toArray()); - Assert.assertArrayEquals(new String[] { "d", "a", "b", }, kgrams[6].toArray()); - // following kgram is appeared in above. - // assertEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray()); - // assertEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray()); - } -} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java new file mode 100644 index 0000000..7cc4474 --- /dev/null +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractorTest.java @@ -0,0 +1,56 @@ +package jp.sourceforge.stigmata.birthmarks.smc; + +import java.io.FileInputStream; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + */ +public class SequentialMethodCallBirthmarkExtractorTest{ + private BirthmarkExtractor extractor; + + @Before + public void setup(){ + extractor = new SequentialMethodCallBirthmarkService().getExtractor(); + BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment(); + WellknownClassManager manager = env.getWellknownClassManager(); + manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + } + + + @Test + public void checkBirthmark() throws Exception{ + Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class")); + Assert.assertEquals("smc", birthmark.getType()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertEquals(10, elements.length); + + Assert.assertEquals("java.lang.Object#!()V", elements[0].getValue()); + Assert.assertEquals("javax.swing.JFrame#!()V", elements[1].getValue()); + Assert.assertEquals("javax.swing.JLabel#!(Ljava/lang/String;)V", elements[2].getValue()); + Assert.assertEquals("java.awt.Font#!(Ljava/lang/String;II)V", elements[3].getValue()); + Assert.assertEquals("javax.swing.JLabel#setFont!(Ljava/awt/Font;)V", elements[4].getValue()); + Assert.assertEquals("javax.swing.JFrame#setDefaultCloseOperation!(I)V", elements[5].getValue()); + Assert.assertEquals("javax.swing.JFrame#getContentPane!()Ljava/awt/Container;", + elements[6].getValue()); + Assert.assertEquals("java.awt.Container#add!(Ljava/awt/Component;Ljava/lang/Object;)V", + elements[7].getValue()); + Assert.assertEquals("javax.swing.JFrame#pack!()V", elements[8].getValue()); + Assert.assertEquals("javax.swing.JFrame#setVisible!(Z)V", elements[9].getValue()); + } +} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java deleted file mode 100644 index 1ef3e50..0000000 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/smc/SmcBirthmarkExtractorTest.java +++ /dev/null @@ -1,191 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.smc; - -import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; -import jp.sourceforge.stigmata.BirthmarkElement; -import jp.sourceforge.stigmata.BirthmarkSet; -import jp.sourceforge.stigmata.ExtractionResultSet; -import jp.sourceforge.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - */ -public class SmcBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; - - @Before - public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("smc"); - } - - @Test - public void checkSmcBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("smc")); - - Birthmark birthmark = array[0].getBirthmark("smc"); - Assert.assertEquals("smc", birthmark.getType()); - - BirthmarkElement[] elements = birthmark.getElements(); - for(int i = 0; i < elements.length; i++){ - Assert.assertEquals( - "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement", - elements[i].getClass().getName() - ); - } - /* - Assert.assertEquals(76, birthmark.getElementCount()); - int index = 0; - Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); - Assert.assertEquals("java.lang.System#getProperty", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#exists", elements[index++].getValue()); - Assert.assertEquals("java.io.FileInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class#getResourceAsStream", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.io.File#", elements[index++].getValue()); - Assert.assertEquals("java.io.File#toURI", elements[index++].getValue()); - Assert.assertEquals("java.net.URI#toURL", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.net.URL#openStream", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#size", elements[index++].getValue()); - Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class#getName", elements[index++].getValue()); - Assert.assertEquals("java.util.logging.Logger#getLogger", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); - Assert.assertEquals("java.util.logging.Logger#warning", elements[index++].getValue()); - Assert.assertEquals("java.util.List#size", elements[index++].getValue()); - Assert.assertEquals("java.util.List#toArray", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList#", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#valueOf", elements[index++].getValue()); - Assert.assertEquals("java.util.List#add", elements[index++].getValue()); - Assert.assertEquals("java.util.List#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); - Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue()); - Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#describe", - elements[index++].getValue()); - Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); - Assert.assertEquals("java.util.Map#remove", elements[index++].getValue()); - Assert.assertEquals("java.util.Map#keySet", elements[index++].getValue()); - Assert.assertEquals("java.util.Set#iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.String#valueOf", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue()); - Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue()); - Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#setProperty", - elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayInputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#", elements[index++].getValue()); - Assert.assertEquals("java.io.InputStream#read", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#write", elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#toByteArray", - elements[index++].getValue()); - Assert.assertEquals("java.io.ByteArrayOutputStream#close", elements[index++].getValue()); - Assert.assertEquals("javax.imageio.spi.ServiceRegistry#lookupProviders", - elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue()); - */ - } - - @Test - public void checkSmcBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(array.length, 1); - Assert.assertNotNull(array[0].getBirthmark("smc")); - - Birthmark birthmark = array[0].getBirthmark("smc"); - Assert.assertEquals("smc", birthmark.getType()); - Assert.assertEquals(18, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - for(int i = 0; i < elements.length; i++){ - Assert.assertEquals( - "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement", - elements[i].getClass().getName() - ); - } - /* - int index = 0; - // (ExtractionResult, BirthmarkEnvironment, boolean) - Assert.assertEquals("java.lang.Object#", elements[index++].toString()); - - // getComparisonSources - Assert.assertEquals("java.util.ArrayArrays#", elements[index++].toString()); - Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString()); - - // setCompareSamePair - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - Assert.assertEquals("java.util.List#size", elements[index++].toString()); - - // getComparisonSources - Assert.assertEquals("java.util.HashMap#", elements[index++].toString()); - Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map#put", elements[index++].toString()); - Assert.assertEquals("java.util.List#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map#put", elements[index++].toString()); - Assert.assertEquals("java.util.Map#size", elements[index++].toString()); - Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString()); - Assert.assertEquals("java.util.Set#iterator", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString()); - Assert.assertEquals("java.util.Iterator#next", elements[index++].toString()); - Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString()); - */ - } -} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java deleted file mode 100644 index 15a1200..0000000 --- a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UCBirthmarkExtractorTest.java +++ /dev/null @@ -1,93 +0,0 @@ -package jp.sourceforge.stigmata.birthmarks.uc; - -import jp.sourceforge.stigmata.Birthmark; -import jp.sourceforge.stigmata.BirthmarkContext; -import jp.sourceforge.stigmata.BirthmarkElement; -import jp.sourceforge.stigmata.BirthmarkSet; -import jp.sourceforge.stigmata.ExtractionResultSet; -import jp.sourceforge.stigmata.Stigmata; - -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * - * @author Haruaki TAMADA - */ -public class UCBirthmarkExtractorTest{ - private Stigmata stigmata; - private BirthmarkContext context; - - @Before - public void setup(){ - stigmata = Stigmata.getInstance(); - context = stigmata.createContext(); - context.addBirthmarkType("uc"); - } - - @Test - public void checkUCBirthmark() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("uc")); - - Birthmark birthmark = array[0].getBirthmark("uc"); - Assert.assertEquals("uc", birthmark.getType()); - Assert.assertEquals(18, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - int index = 0; - Assert.assertEquals("java.io.File", elements[index++].getValue()); - Assert.assertEquals("java.io.FileFilter", elements[index++].getValue()); - Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue()); - Assert.assertEquals("java.io.FileWriter", elements[index++].getValue()); - Assert.assertEquals("java.io.InputStream", elements[index++].getValue()); - Assert.assertEquals("java.io.PrintWriter", elements[index++].getValue()); - Assert.assertEquals("java.io.Writer", elements[index++].getValue()); - Assert.assertEquals("java.lang.Class", elements[index++].getValue()); - Assert.assertEquals("java.lang.ClassLoader", elements[index++].getValue()); - Assert.assertEquals("java.lang.Object", elements[index++].getValue()); - Assert.assertEquals("java.lang.String", elements[index++].getValue()); - Assert.assertEquals("java.lang.System", elements[index++].getValue()); - Assert.assertEquals("java.net.URI", elements[index++].getValue()); - Assert.assertEquals("java.net.URL", elements[index++].getValue()); - Assert.assertEquals("java.net.URLClassLoader", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.List", elements[index++].getValue()); - } - - @Test - public void checkUCBirthmark2() throws Exception{ - ExtractionResultSet ers = stigmata.createEngine().extract( - new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", }, - context - ); - BirthmarkSet[] array = ers.getBirthmarkSets(); - - Assert.assertEquals(1, array.length); - Assert.assertNotNull(array[0].getBirthmark("uc")); - - Birthmark birthmark = array[0].getBirthmark("uc"); - Assert.assertEquals("uc", birthmark.getType()); - Assert.assertEquals(9, birthmark.getElementCount()); - - BirthmarkElement[] elements = birthmark.getElements(); - int index = 0; - Assert.assertEquals("java.lang.Object", elements[index++].getValue()); - Assert.assertEquals("java.lang.String", elements[index++].getValue()); - Assert.assertEquals("java.net.URL", elements[index++].getValue()); - Assert.assertEquals("java.util.ArrayList", elements[index++].getValue()); - Assert.assertEquals("java.util.Collection", elements[index++].getValue()); - Assert.assertEquals("java.util.HashMap", elements[index++].getValue()); - Assert.assertEquals("java.util.Iterator", elements[index++].getValue()); - Assert.assertEquals("java.util.List", elements[index++].getValue()); - Assert.assertEquals("java.util.Map", elements[index++].getValue()); - } -} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java new file mode 100644 index 0000000..620821c --- /dev/null +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkExtractorTest.java @@ -0,0 +1,50 @@ +package jp.sourceforge.stigmata.birthmarks.uc; + +import java.io.FileInputStream; + +import jp.sourceforge.stigmata.Birthmark; +import jp.sourceforge.stigmata.BirthmarkElement; +import jp.sourceforge.stigmata.BirthmarkEnvironment; +import jp.sourceforge.stigmata.BirthmarkExtractor; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType; +import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType; +import jp.sourceforge.stigmata.utils.WellknownClassManager; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * + * @author Haruaki TAMADA + */ +public class UsedClassesBirthmarkExtractorTest{ + private BirthmarkExtractor extractor; + + @Before + public void setup(){ + extractor = new UsedClassesBirthmarkService().getExtractor(); + BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment(); + WellknownClassManager manager = env.getWellknownClassManager(); + manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME)); + } + + @Test + public void checkBirthmark() throws Exception{ + Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class")); + + Assert.assertEquals("uc", birthmark.getType()); + Assert.assertEquals(7, birthmark.getElementCount()); + + BirthmarkElement[] elements = birthmark.getElements(); + Assert.assertEquals("java.awt.Component", elements[0].getValue()); + Assert.assertEquals("java.awt.Container", elements[1].getValue()); + Assert.assertEquals("java.awt.Font", elements[2].getValue()); + Assert.assertEquals("java.lang.Object", elements[3].getValue()); + Assert.assertEquals("java.lang.String", elements[4].getValue()); + Assert.assertEquals("javax.swing.JFrame", elements[5].getValue()); + Assert.assertEquals("javax.swing.JLabel", elements[6].getValue()); + } +} diff --git a/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java new file mode 100644 index 0000000..a30b723 --- /dev/null +++ b/src/test/java/jp/sourceforge/stigmata/birthmarks/uc/UsedClassesBirthmarkServiceTest.java @@ -0,0 +1,27 @@ +package jp.sourceforge.stigmata.birthmarks.uc; + +import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator; +import junit.framework.Assert; + +import org.junit.Before; +import org.junit.Test; + +public class UsedClassesBirthmarkServiceTest{ + private UsedClassesBirthmarkService service; + + @Before + public void setUp(){ + service = new UsedClassesBirthmarkService(); + } + + @Test + public void testBasic(){ + Assert.assertEquals("uc", service.getType()); + Assert.assertEquals("Used classes birthmark", service.getDescription()); + Assert.assertFalse(service.isExperimental()); + Assert.assertFalse(service.isUserDefined()); + Assert.assertEquals(UsedClassesBirthmarkExtractor.class, service.getExtractor().getClass()); + Assert.assertEquals(LogicalAndBirthmarkComparator.class, service.getComparator().getClass()); + Assert.assertNull(service.getPreprocessor()); + } +} diff --git a/src/test/resources/resources/HelloWorldFrame.class b/src/test/resources/resources/HelloWorldFrame.class new file mode 100644 index 0000000000000000000000000000000000000000..976637314ca36c668e2ec6d65d895991c69fd32d GIT binary patch literal 943 zcmZuw>rN9v6#j-T-R-iJvQR+0wF9u)YM|cK+s>)c4!v2yJWi+-@<1x zkv6f358y)?&ny@a$tE*%&Nt_q?_BoR?;k$_ETgO=jjV=i2~6R-h6TAVs<@#ej;xBC zIy6`+ayoS6rBRSbQ7*SMEa|XuTN-!dvaI5+P6QNqk3sE-ZkM+OgIU|-pSkUFuWfIJ zf#bDH4BD>mg>~K`Jih99PPoPpvvOMuO4)CbccSKaqTcH?MDU(BT=FO#?syC{*2n(| zWuU(4_kyOVIP&uJx^P{8+Yj7UC7@@Pqy_^QFwZa+VVMXtFoRi!WUbe9T0HYkw0kZO z49rQdDTBV)-2>8Wzm9m$I%~WkT*-T%VLZx{AB1*=l9SFA0}t@fz#}|1P{JxDTNYj@ z0u@gTtl_DFXP7te94{#2Gm;rnCxzQ+?1^T`khacGe)b%HwJOV^c10-lkn-a@e-)M_ zJV)?LvCDgISa$uc*w_~V4;`N>tymF3vMs_g5s>h=+@spgSh*t+l1L)d7ZFfXqk7r@ zc&V$r)ndqL)4Na=Ok@^Q{lLEo5oD(lojw^ikiU z6Ll)unQSf?E|T??#xX|wMt%U6H%AT;%bUs}Mu&*+44~GA(020Q5gQ=!rZ|KyjZr1F zKEPNXMj_tEc%hGE(VXZbMW@Mv(uettC>bu%x`Z)W4Jb&^uc0G_aT=K<7BGPovPzi5 sE10N~;5w%1)@58d7Pm;^8AT_Cm?AOL+b6U-L7;pzB4fBp=MiN70Ci-{^8f$< literal 0 HcmV?d00001 diff --git a/src/test/resources/resources/HelloWorldFrame.java b/src/test/resources/resources/HelloWorldFrame.java new file mode 100644 index 0000000..2123a8e --- /dev/null +++ b/src/test/resources/resources/HelloWorldFrame.java @@ -0,0 +1,25 @@ +import java.awt.BorderLayout; +import java.awt.Font; + +import javax.swing.JFrame; +import javax.swing.JLabel; + + +public class HelloWorldFrame{ + private String message = "Hello World"; + private String fontName = "Lucida Regular"; + + public HelloWorldFrame(){ + JFrame frame = new JFrame(); + JLabel label = new JLabel(message); + label.setFont(new Font(fontName, Font.BOLD, 72)); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.getContentPane().add(label, BorderLayout.CENTER); + frame.pack(); + frame.setVisible(true); + } + + public static void main(String[] args){ + new HelloWorldFrame(); + } +} \ No newline at end of file -- 2.11.0