+.classpath
+.djunitplugin
+.project
+.settings
target
+jcoverage.ser
<modelVersion>4.0.0</modelVersion>\r
<groupId>jp.sourceforge</groupId>\r
<artifactId>stigmata</artifactId>\r
- <version>2.0.1-SNAPSHOT</version>\r
- <name>stigmata</name>\r
+ <version>3.0.0-SNAPSHOT</version>\r
+ <name>Stigmata</name>\r
<description>Java birthmark toolkit</description>\r
<url>http://stigmata.sourceforge.jp/</url>\r
<inceptionYear>2006</inceptionYear>\r
<dependency>\r
<groupId>asm</groupId>\r
<artifactId>asm-all</artifactId>\r
- <version>3.1</version>\r
+ <version>3.3</version>\r
<scope>compile</scope>\r
</dependency>\r
<dependency>\r
</dependency>\r
<dependency>\r
<groupId>jp.sourceforge.stigmata</groupId>\r
+ <artifactId>cflib</artifactId>\r
+ <version>1.0.0</version>\r
+ <scope>compile</scope>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>jp.sourceforge.stigmata</groupId>\r
<artifactId>digger</artifactId>\r
- <version>1.1.0</version>\r
+ <version>3.0.0-SNAPSHOT</version>\r
<scope>compile</scope>\r
</dependency>\r
<dependency>\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-compiler-plugin</artifactId>\r
+ <version>2.3.2</version>\r
<configuration>\r
<source>1.6</source>\r
<target>1.6</target>\r
\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-resources-plugin</artifactId>\r
+ <version>2.4.3</version>\r
+ <configuration>\r
+ <encoding>utf-8</encoding>\r
+ </configuration>\r
+ </plugin>\r
+\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-jar-plugin</artifactId>\r
+ <version>2.3.1</version>\r
<configuration>\r
<archive>\r
<manifest>\r
<plugin>\r
<groupId>org.codehaus.mojo</groupId>\r
<artifactId>native2ascii-maven-plugin</artifactId>\r
+ <version>1.0-alpha-1</version>\r
<executions>\r
<execution>\r
<goals>\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-site-plugin</artifactId>\r
+ <version>3.0-beta-3</version>\r
<configuration>\r
<inputEncoding>euc-jp</inputEncoding>\r
<outputEncoding>utf-8</outputEncoding>\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-project-info-reports-plugin</artifactId>\r
- </plugin>\r
- <plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-javadoc-plugin</artifactId>\r
- <configuration>\r
- <locale>en</locale>\r
- </configuration>\r
+ <version>2.3.1</version>\r
</plugin>\r
<plugin>\r
<groupId>org.codehaus.mojo</groupId>\r
<artifactId>cobertura-maven-plugin</artifactId>\r
+ <version>2.4</version>\r
+ <configuration>\r
+ <formats>\r
+ <format>xml</format>\r
+ <format>html</format>\r
+ </formats>\r
+ <encoding>utf-8</encoding>\r
+ </configuration>\r
</plugin>\r
<plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-pmd-plugin</artifactId>\r
+ <version>2.5</version>\r
<configuration>\r
- <linkXref>true</linkXref>\r
<sourceEncoding>utf-8</sourceEncoding>\r
+ <outputEncoding>utf-8</outputEncoding>\r
<targetJdk>1.6</targetJdk>\r
</configuration>\r
</plugin>\r
<plugin>\r
- <groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-jxr-plugin</artifactId>\r
+ <groupId>org.codehaus.mojo</groupId>\r
+ <artifactId>findbugs-maven-plugin</artifactId>\r
+ <version>2.3.2</version>\r
+ <configuration>\r
+ <sourceEncoding>utf-8</sourceEncoding>\r
+ <outputEncoding>utf-8</outputEncoding>\r
+ </configuration>\r
</plugin>\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
- <artifactId>maven-changes-plugin</artifactId>\r
- <reportSets>\r
- <reportSet>\r
- <reports>\r
- <report>changes-report</report>\r
- </reports>\r
- </reportSet>\r
- </reportSets>\r
+ <artifactId>maven-surefire-report-plugin</artifactId>\r
+ <version>2.8</version>\r
</plugin>\r
<plugin>\r
- <groupId>org.codehaus.mojo</groupId>\r
- <artifactId>findbugs-maven-plugin</artifactId>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-jxr-plugin</artifactId>\r
+ <version>2.1</version>\r
<configuration>\r
- <xmlOutput>false</xmlOutput>\r
- <threshold>Normal</threshold>\r
- <effort>Default</effort>\r
+ <inputEncoding>utf-8</inputEncoding>\r
+ <outputEncoding>utf-8</outputEncoding>\r
+ <aggregate>true</aggregate>\r
</configuration>\r
</plugin>\r
-\r
<plugin>\r
<groupId>org.apache.maven.plugins</groupId>\r
<artifactId>maven-javadoc-plugin</artifactId>\r
+ <version>2.7</version>\r
<configuration>\r
- <locale>en</locale>\r
+ <charset>utf-8</charset>\r
+ <encoding>utf-8</encoding>\r
+ <docencoding>utf-8</docencoding>\r
</configuration>\r
</plugin>\r
</plugins>\r
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* Thrown an application fails to launch in initialization.
* This error causes invalid deployment.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ApplicationInitializationError extends Error{
private static final long serialVersionUID = 32097456654328L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.Iterator;
/**
* The birthmark is native characteristics of a program.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface Birthmark extends Iterable<BirthmarkElement>{
/**
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* Interface for comparing given two birthmarks and calculate similarity.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface BirthmarkComparator {
/**
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* Thrown to indicate failed to compare two birthmarks.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkComparisonFailedException extends BirthmarkException{
private static final long serialVersionUID = 3194872113405859851L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
* Birthmark runtime context.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkContext{
private BirthmarkEnvironment environment;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.io.Serializable;
/**
* element of birthmark.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkElement implements Serializable{
private static final long serialVersionUID = 943675475343245243L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.List;
* Thrown if extracting birthmark is failed to find a class definition.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkElementClassNotFoundException extends
BirthmarkExtractionFailedException {
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
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;
import jp.sourceforge.stigmata.hook.StigmataHookManager;
import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* core engine for extracting/comparing/filtering birthmarks.
* This class is not thread safe.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkEngine{
private BirthmarkEnvironment environment;
private WarningMessages warnings;
private OperationType latestOperationType;
private OperationType targetType;
- private BirthmarkExtractorFactory factory;
/**
* constructor.
*/
public BirthmarkEngine(BirthmarkEnvironment env){
this.environment = env;
- factory = new BirthmarkExtractorFactory(env);
}
/**
String[] target = set.toArray(new String[set.size()]);
ClassFileArchive[] archives = createArchives(target, environment);
for(String type: context.getBirthmarkTypes()){
- BirthmarkSpi service = context.getEnvironment().getService(type);
+ BirthmarkService service = context.getEnvironment().getService(type);
if(service != null && service.getPreprocessor() != null){
BirthmarkPreprocessor preprocessor = service.getPreprocessor();
preprocessor.preprocess(archives, context);
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){
- Birthmark b = bs.getBirthmark(extractor.getProvider().getType());
- if(b == null){
- b = extractor.createBirthmark();
- bs.addBirthmark(b);
- }
- extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.PACKAGE)){
+ Birthmark b = bs.getBirthmark(extractor.getProvider().getType());
+ if(b == null){
+ b = extractor.createBirthmark();
+ bs.addBirthmark(b);
}
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
+ extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
}
}
} catch(IOException e){
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.CLASS)){
- Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext());
- birthmarkset.addBirthmark(b);
- }
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.CLASS)){
+ Birthmark b = extractor.extract(new ByteArrayInputStream(data), er.getContext());
+ birthmarkset.addBirthmark(b);
}
}
er.addBirthmarkSet(et, birthmarkset);
try{
byte[] data = inputStreamToByteArray(entry.getLocation().openStream());
for(String birthmarkType: context.getBirthmarkTypes()){
- try{
- BirthmarkExtractor extractor = factory.getExtractor(birthmarkType);
- if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){
- Birthmark b = birthmarkset.getBirthmark(birthmarkType);
- if(b == null){
- b = extractor.createBirthmark();
- birthmarkset.addBirthmark(b);
- }
- extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ BirthmarkService service = getEnvironment().getService(birthmarkType);
+ BirthmarkExtractor extractor = service.getExtractor();
+ if(extractor.isAcceptable(ExtractionUnit.ARCHIVE)){
+ Birthmark b = birthmarkset.getBirthmark(birthmarkType);
+ if(b == null){
+ b = extractor.createBirthmark();
+ birthmarkset.addBirthmark(b);
}
- } catch(ExtractorNotFoundException e){
- warnings.addMessage(e, birthmarkType);
- }
+ extractor.extract(b, new ByteArrayInputStream(data), er.getContext());
+ }
}
} catch(IOException e){
warnings.addMessage(e, entry.getClassName());
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.ServiceLoader;
import java.util.Set;
-import javax.imageio.spi.ServiceRegistry;
-
import jp.sourceforge.stigmata.digger.ClasspathContext;
import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager;
import jp.sourceforge.stigmata.resolvers.StigmataHomeManager;
import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.utils.NullIterator;
import jp.sourceforge.stigmata.utils.WellknownClassManager;
/**
* This class represents the context for extracting/comparing birthmarks.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkEnvironment{
/**
/**
* collection of services.
*/
- private Map<String, BirthmarkSpi> services = new HashMap<String, BirthmarkSpi>();
+ private Map<String, BirthmarkService> services = new HashMap<String, BirthmarkService>();
/**
* properties manager.
classpathContext = new ClasspathContext();
filterManager = new ComparisonPairFilterManager(this);
historyManager = new ExtractedBirthmarkServiceManager(this);
+
+ findDefaultServices();
}
/**
/**
* add given birthmark service to this environment.
*/
- public synchronized void addService(BirthmarkSpi service){
+ public synchronized void addService(BirthmarkService service){
if(parent == null || parent.getService(service.getType()) == null){
services.put(service.getType(), service);
}
/**
* return birthmark service registered with given birthmark type.
*/
- public BirthmarkSpi getService(String type){
- BirthmarkSpi service = services.get(type);
+ public BirthmarkService getService(String type){
+ BirthmarkService service = services.get(type);
if(service == null && parent != null){
service = parent.getService(type);
}
/**
* return all birthmark services searching traverse to root environment.
*/
- public synchronized BirthmarkSpi[] getServices(){
- List<BirthmarkSpi> list = getServiceList();
- BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]);
+ public synchronized BirthmarkService[] getServices(){
+ List<BirthmarkService> list = getServiceList();
+ BirthmarkService[] services = list.toArray(new BirthmarkService[list.size()]);
Arrays.sort(services, new BirthmarkSpiComparator());
return services;
}
public <T> Iterator<T> lookupProviders(Class<T> providerClass){
- Iterator<T> iterator;
+ ServiceLoader<T> services;
if(loader != null){
- ServiceLoader<T> services = ServiceLoader.load(providerClass, loader);
+ services = ServiceLoader.load(providerClass, loader);
+ }
+ else{
+ services = ServiceLoader.load(providerClass);
+ }
+
+ Iterator<T> iterator;
+ if(services != null){
iterator = services.iterator();
}
else{
- iterator = ServiceRegistry.lookupProviders(providerClass);
+ iterator = new NullIterator<T>();
}
return iterator;
}
/**
* return birthmark services lookup from current class path.
*/
- public synchronized BirthmarkSpi[] findServices(){
- List<BirthmarkSpi> list = getServiceList();
+ public synchronized BirthmarkService[] findServices(){
+ List<BirthmarkService> list = getServiceList();
- for(Iterator<BirthmarkSpi> i = lookupProviders(BirthmarkSpi.class); i.hasNext(); ){
- BirthmarkSpi spi = i.next();
+ for(Iterator<BirthmarkService> i = lookupProviders(BirthmarkService.class); i.hasNext(); ){
+ BirthmarkService spi = i.next();
if(getService(spi.getType()) == null){
list.add(spi);
}
}
- BirthmarkSpi[] services = list.toArray(new BirthmarkSpi[list.size()]);
+ BirthmarkService[] services = list.toArray(new BirthmarkService[list.size()]);
Arrays.sort(services, new BirthmarkSpiComparator());
return services;
/**
* find the all birthmark services searching to root environment.
*/
- private List<BirthmarkSpi> getServiceList(){
- List<BirthmarkSpi> list = new ArrayList<BirthmarkSpi>();
+ private List<BirthmarkService> getServiceList(){
+ List<BirthmarkService> list = new ArrayList<BirthmarkService>();
if(parent != null){
- for(BirthmarkSpi spi: parent.getServices()){
+ for(BirthmarkService spi: parent.getServices()){
list.add(spi);
}
}
}
return list;
}
+
+ private void findDefaultServices(){
+ for(BirthmarkService service: ServiceLoader.load(BirthmarkService.class)){
+ addService(service);
+ }
+ }
}
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This exception represents occuring some exceptions caused birthmarking.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkException extends Exception{
private static final long serialVersionUID = -6422474631148213820L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkExtractionFailedException extends BirthmarkException {
private static final long serialVersionUID = 21932436457235L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.io.InputStream;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* extract birthmarks from given Java bytecode stream.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface BirthmarkExtractor{
/**
* returns service provider interface of this extractor.
*/
- public BirthmarkSpi getProvider();
+ public BirthmarkService getProvider();
/**
* create new birthmark.
public ExtractionUnit[] getAcceptableUnits();
/**
+ * build birthmark element from given string.
+ */
+ public BirthmarkElement buildElement(String value);
+
+ /**
+ * extract birthmark from given stream with default environment.
+ */
+ public Birthmark extract(InputStream in) throws BirthmarkExtractionFailedException;
+
+ /**
* extract birthmark from given stream with given environment.
*/
public Birthmark extract(InputStream in, BirthmarkContext context) throws BirthmarkExtractionFailedException;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.digger.ClassFileArchive;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface BirthmarkPreprocessor{
public void preprocess(ClassFileArchive[] targets, BirthmarkContext context);
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.net.URL;
import java.util.HashMap;
import java.util.Iterator;
* This class manages a set of birthmarks which extracted from a target.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkSet implements Iterable<Birthmark>{
/**
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.Comparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
-class BirthmarkSpiComparator implements Comparator<BirthmarkSpi>{
+class BirthmarkSpiComparator implements Comparator<BirthmarkService>{
/**
* default constructor
*/
}
@Override
- public int compare(BirthmarkSpi s1, BirthmarkSpi s2){
+ public int compare(BirthmarkService s1, BirthmarkService s2){
if(s1.isExperimental() && !s2.isExperimental()){
return 1;
}
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This exception class will be thrown when birthmark storing is failed.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkStoreException extends BirthmarkException{
private static final long serialVersionUID = -7106053809841281816L;
import java.util.HashMap;
import java.util.Map;
-/*
- * $Id$
- */
-
/**
* This class represents how to store extracted birthmarks.
* memory?, databases?, or files?
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkStoreTarget implements Serializable, Comparable<BirthmarkStoreTarget>{
private static final long serialVersionUID = -4225861589804166362L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This exception class be thrown when birthmark types are different in some
* operation such as merging, and comparing.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkTypeMismatchException extends BirthmarkException{
private static final long serialVersionUID = -6198325117696243731L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This enum represents birthmark comparison method. let <it>X</it> be a set of
* target <it>{ x1, x2, ..., xn, }</it> and <it>Y</it> be a set of target
* <it>{ y1, y2, ..., ym, }</it>.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public enum ComparisonMethod{
/**
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
* This class represents comparison pair.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonPair implements Iterable<ComparisonPairElement>{
private BirthmarkSet target1;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This class represents comparing two birthmarks.
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonPairElement{
private Birthmark birthmark1;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.filter.Criterion;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
* Filtering results by some criteria.
* </ul>
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonPairFilter{
public boolean isFiltered(ComparisonPair pair);
public Criterion getCriterion();
- public ComparisonPairFilterSpi getService();
+ public ComparisonPairFilterService getService();
}
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
* Set of {@link ComparisonPairFilter <Ccode>ComparisonPairFilter</code>}.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonPairFilterSet implements Iterable<ComparisonPairFilter>{
private List<ComparisonPairFilter> filters = new ArrayList<ComparisonPairFilter>();
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.Iterator;
/**
* result set of birthmark comparison.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonResultSet extends Iterable<ComparisonPair>{
/**
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.util.Iterator;
/**
* This interface represents a set of extracted birthmarks.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface ExtractionResultSet extends Iterable<BirthmarkSet>{
public BirthmarkStoreTarget getStoreTarget();
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This enum represents the mean of extracted birthmarks.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public enum ExtractionTarget{
TARGET_X,
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
* This enum type represents birthmark extraction unit.
*
* class name, method name, package name, or product name.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public enum ExtractionUnit{
CLASS,
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ExtractorNotFoundException extends BirthmarkException{
private static final long serialVersionUID = 2050231007494812969L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class FilterNotFoundException extends BirthmarkException{
private static final long serialVersionUID = -3981002035876805953L;
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import jp.sourceforge.stigmata.digger.ClasspathContext;
import jp.sourceforge.stigmata.hook.Phase;
import jp.sourceforge.stigmata.hook.StigmataHookManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.talisman.xmlcli.CommandLinePlus;
import jp.sourceforge.talisman.xmlcli.OptionsBuilder;
import jp.sourceforge.talisman.xmlcli.XmlCliConfigurationException;
* Front end class.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public final class Main{
/**
String[] birthmarks = cl.getOptionValues("birthmark");
if(birthmarks == null || birthmarks.length == 0){
List<String> birthmarkList = new ArrayList<String>();
- for(BirthmarkSpi service: env.getServices()){
+ for(BirthmarkService service: env.getServices()){
if(!service.isExperimental()){
birthmarkList.add(service.getType());
}
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import jp.sourceforge.stigmata.event.BirthmarkEngineListener;
import jp.sourceforge.stigmata.printer.PrinterManager;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.stigmata.ui.swing.ExtensionFilter;
import jp.sourceforge.stigmata.utils.ConfigFileExporter;
import jp.sourceforge.stigmata.utils.ConfigFileImporter;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class Stigmata{
/**
} catch(IOException e){
throw new ApplicationInitializationError(e);
}
- for(Iterator<BirthmarkSpi> i = defaultEnvironment.lookupProviders(BirthmarkSpi.class); i.hasNext(); ){
- BirthmarkSpi service = i.next();
+ for(Iterator<BirthmarkService> i = defaultEnvironment.lookupProviders(BirthmarkService.class); i.hasNext(); ){
+ BirthmarkService service = i.next();
defaultEnvironment.addService(service);
}
PrinterManager.refresh(defaultEnvironment);
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface StigmataCommand{
public boolean isAvailableArguments(String[] args);
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.InputStream;
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
* Abstract birthmark extractor using ASM.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class ASMBirthmarkExtractor extends AbstractBirthmarkExtractor{
- public ASMBirthmarkExtractor(BirthmarkSpi spi){
+ public ASMBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
* Abstract class for concrete {@link Birthmark <code>Birthmark</code>}
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractBirthmark implements Birthmark, Serializable{
private static final long serialVersionUID = -1300436185045832554L;
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import java.io.ByteArrayInputStream;
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;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* Abstract class for extracting birthmark.
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractBirthmarkExtractor implements BirthmarkExtractor{
/**
* provider.
*/
- private BirthmarkSpi spi;
+ private BirthmarkService spi;
/**
* default constructor.
* constructor.
* @param spi service provider.
*/
- public AbstractBirthmarkExtractor(BirthmarkSpi spi){
+ public AbstractBirthmarkExtractor(BirthmarkService spi){
this.spi = spi;
}
* returns the provider of this extractor.
*/
@Override
- public BirthmarkSpi getProvider(){
+ public BirthmarkService getProvider(){
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.
*/
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.digger.ClassFileArchive;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
public abstract class AbstractBirthmarkPreprocessor implements BirthmarkPreprocessor{
- private BirthmarkSpi service;
+ private BirthmarkService service;
/**
* default constructor.
public AbstractBirthmarkPreprocessor(){
}
- public AbstractBirthmarkPreprocessor(BirthmarkSpi service){
+ public AbstractBirthmarkPreprocessor(BirthmarkService service){
this.service = service;
}
- public BirthmarkSpi getProvider(){
+ public BirthmarkService getProvider(){
return service;
}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks;
-
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.BirthmarkPreprocessor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Abstract class for {@link BirthmarkSpi <code>BirthmarkSpi</code>}
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public abstract class AbstractBirthmarkService implements BirthmarkSpi{
- @Override
- public String getDisplayType(){
- return getDisplayType(Locale.getDefault());
- }
-
- @Override
- public String getDisplayType(Locale locale){
- LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance();
- String type = manager.getDisplayType(locale, getType());
- if(type == null){
- type = getType();
- }
- return type;
- }
-
- @Override
- public String getDescription(){
- return getDescription(Locale.getDefault());
- }
-
- @Override
- public String getDescription(Locale locale){
- LocalizedDescriptionManager manager = LocalizedDescriptionManager.getInstance();
- String description = manager.getDescription(locale, getType());
- if(description == null){
- description = getDefaultDescription();
- }
- return description;
- }
-
- @Override
- public abstract BirthmarkComparator getComparator();
-
- @Override
- public String getComparatorClassName(){
- return getComparator().getClass().getName();
- }
-
- @Override
- public abstract BirthmarkExtractor getExtractor();
-
- @Override
- public String getExtractorClassName(){
- return getExtractor().getClass().getName();
- }
-
- @Override
- public BirthmarkPreprocessor getPreprocessor(){
- return null;
- }
-
- @Override
- public String getPreprocessorClassName(){
- BirthmarkPreprocessor preprocessor = getPreprocessor();
- String name = null;
- if(preprocessor != null){
- name = preprocessor.getClass().getName();
- }
- return name;
- }
-
- @Override
- public abstract String getType();
-
- @Override
- public abstract String getDefaultDescription();
-
- @Override
- public boolean isExperimental(){
- return true;
- }
-
- @Override
- public boolean isUserDefined(){
- return true;
- }
-
- @Override
- public String getVersion(){
- return getClass().getPackage().getImplementationVersion();
- }
-
- @Override
- public String getVendorName(){
- return getClass().getPackage().getImplementationVendor();
- }
-
- @Override
- public Birthmark buildBirthmark(){
- return getExtractor().createBirthmark();
- }
-
- @Override
- public BirthmarkElement buildBirthmarkElement(String value){
- if(value == null || value.equals("<null>")){
- return NullBirthmarkElement.getInstance();
- }
- return new BirthmarkElement(value);
- }
-}
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.List;
* Abstract visitor class of extracting birthmarks from class file.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class BirthmarkExtractVisitor extends ClassAdapter{
private Birthmark birthmark;
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks;
-
-/*
- * $Id$
- */
-
-import java.lang.reflect.Constructor;
-
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Service provider interface for birthmarks which are defined in
- * configuration files.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class BirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
- private Class<? extends BirthmarkExtractor> extractorClass;
- private Class<? extends BirthmarkComparator> comparatorClass;
- private String type;
- private String displayType;
- private String description;
- private BirthmarkExtractor extractorObject;
- private BirthmarkComparator comparatorObject;
- private boolean userDefined = true;
- private BirthmarkEnvironment environment;
-
- public BirthmarkService(BirthmarkEnvironment environment){
- this.environment = environment;
- }
-
- public BirthmarkService(){
- }
-
- public void setBirthmarkEnvironment(BirthmarkEnvironment environment){
- this.environment = environment;
- }
-
- public void setExtractorClassName(String extractor){
- try{
- Class<?> c;
- if(environment == null){
- c = Class.forName(extractor);
- }
- else{
- c = environment.getClasspathContext().findClass(extractor);
- }
- extractorClass = c.asSubclass(BirthmarkExtractor.class);
- extractorObject = null;
- } catch(ClassNotFoundException e){
- e.printStackTrace();
- }
- }
-
- public void setComparatorClassName(String comparator){
- try{
- Class<?> c;
- if(environment == null){
- c = Class.forName(comparator);
- }
- else{
- c = environment.getClasspathContext().findClass(comparator);
- }
- comparatorClass = c.asSubclass(BirthmarkComparator.class);
- comparatorObject = null;
- } catch(ClassNotFoundException e){
- e.printStackTrace();
- }
- }
-
- public void setType(String type){
- this.type = type;
- }
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return type;
- }
-
- public void setDisplayType(String displayType){
- this.displayType = displayType;
- }
-
- @Override
- public String getDisplayType(){
- return displayType;
- }
-
- public void setDescription(String description){
- this.description = description;
- }
-
- @Override
- public String getDescription(){
- String desc = description;
- if(description == null){
- desc = "";
- }
- return desc;
- }
-
- /**
- * returns a description of the birthmark this service provides.
- */
- @Override
- public String getDefaultDescription(){
- return description;
- }
-
- @Override
- public String getExtractorClassName(){
- return extractorClass.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(){
- if(extractorObject == null){
- try{
- Constructor<? extends BirthmarkExtractor> c = extractorClass.getConstructor(BirthmarkSpi.class);
- extractorObject = c.newInstance(this);
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- return extractorObject;
- }
-
- @Override
- public String getComparatorClassName(){
- return comparatorClass.getName();
- }
-
- /**
- * returns a comparator for the birthmark of this service.
- */
- @Override
- public BirthmarkComparator getComparator(){
- if(comparatorObject == null){
- try{
- Constructor<? extends BirthmarkComparator> c = comparatorClass.getConstructor(BirthmarkSpi.class);
- comparatorObject = c.newInstance(this);
- } catch(Exception e){
- e.printStackTrace();
- }
- }
- return comparatorObject;
- }
-
- @Override
- public boolean isUserDefined(){
- return userDefined;
- }
-
- public void setUserDefined(boolean userDefined){
- this.userDefined = userDefined;
- }
-}
-
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashMap;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class FrequencyBirthmark extends AbstractBirthmark{
private static final long serialVersionUID = 1905526895627693908L;
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkElement;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class FrequencyBirthmarkElement extends BirthmarkElement implements ValueCountable{
private static final long serialVersionUID = 4454345943098520436L;
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkElement;
/**
* Null birthmark element.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class NullBirthmarkElement extends BirthmarkElement{
private static final long serialVersionUID = -92345638932523L;
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkElement;
/**
* Implementation of plain birthmark.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class PlainBirthmark extends AbstractBirthmark{
private static final long serialVersionUID = 2370435723234463456L;
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
/**
* This interface represents that the implemented class have name and its count.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface ValueCountable{
public int getValueCount();
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkComparator;
import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* abstract birthmark comparator.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public abstract class AbstractBirthmarkComparator implements BirthmarkComparator{
- private BirthmarkSpi spi;
+ private BirthmarkService spi;
@Deprecated
public AbstractBirthmarkComparator(){
}
- public AbstractBirthmarkComparator(BirthmarkSpi spi){
+ public AbstractBirthmarkComparator(BirthmarkService spi){
this.spi = spi;
}
- public BirthmarkSpi getProvider(){
+ public BirthmarkService getProvider(){
return spi;
}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.comparators;
-
-/*
- * $Id$
- */
-
-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.BirthmarkSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Abstract service provider interface for comparing birthmarks.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-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(BirthmarkSpi service){
- try{
- Class<?> c = Class.forName(getComparatorClassName());
- Class<? extends BirthmarkComparator> clazz = c.asSubclass(BirthmarkComparator.class);
- Constructor<? extends BirthmarkComparator> constructor = clazz.getConstructor(BirthmarkSpi.class);
- return constructor.newInstance(service);
- } catch(NoSuchMethodException e){
- } catch(InstantiationException e){
- } catch(InvocationTargetException e){
- } catch(ClassNotFoundException e){
- } catch(IllegalAccessException e){
- }
- return null;
- }
-}
-
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Map;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.birthmarks.ValueCountable;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* Comparing birthmarks by cosine similarity algorithm. This class compares
* {@link ValueCountable <code>ValueCountable</code>} interface.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class CosineSimilarityBirthmarkComparator extends
AbstractBirthmarkComparator{
- public CosineSimilarityBirthmarkComparator(BirthmarkSpi spi){
+ public CosineSimilarityBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by cosine similarity algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class CosineSimilarityBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class CosineSimilarityBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "cosine";
}
- @Override
- public String getComparatorClassName(){
- return CosineSimilarityBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new CosineSimilarityBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Cosine Similarity";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* calculate similarities between two birthmarks by DP matching algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class DPMatchingBirthmarkComparator extends AbstractBirthmarkComparator{
private int mismatchPenalty = 5;
private int shiftPenalty = 1;
- public DPMatchingBirthmarkComparator(BirthmarkSpi spi){
+ public DPMatchingBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by DP matching algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class DPMatchingBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "dpmatching";
}
- @Override
- public String getComparatorClassName(){
- return DPMatchingBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new DPMatchingBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "DP Matching";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* calculate similarities between two birthmarks by edit distance
* algorithm (levenshtein distance).
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class EditDistanceBirthmarkComparator extends AbstractBirthmarkComparator{
- public EditDistanceBirthmarkComparator(BirthmarkSpi spi){
+ public EditDistanceBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by edit distance algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class EditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "editdistancee";
}
- @Override
- public String getComparatorClassName(){
- return EditDistanceBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new EditDistanceBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Edit Distance";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* calculate similarities between two birthmarks by edit distance
* algorithm (levenshtein distance).
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ExtendedEditDistanceBirthmarkComparator extends EditDistanceBirthmarkComparator{
- public ExtendedEditDistanceBirthmarkComparator(BirthmarkSpi spi){
+ public ExtendedEditDistanceBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by extended edit distance algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class ExtendedEditDistanceBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "editdistanceext";
}
- @Override
- public String getComparatorClassName(){
- return ExtendedEditDistanceBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new ExtendedEditDistanceBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Extended Edit Distance";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import java.util.HashSet;
import java.util.Set;
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* this comparator calculate following formula.
* similarity of those birthmarks are defined by |f(p) and f(q)|/|f(p) or f(q)|.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class LogicalAndBirthmarkComparator extends AbstractBirthmarkComparator{
- public LogicalAndBirthmarkComparator(BirthmarkSpi spi){
+ public LogicalAndBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by logical AND algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class LogicalAndBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "and";
}
- @Override
- public String getComparatorClassName(){
- return LogicalAndBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new LogicalAndBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Logical And Comparator";
+ }
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkComparator;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* An implementation of {@link BirthmarkComparator
* this class is defined as <i>|f(p) and f(q)|/(|f(p)| + |f(q)|)</i>.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class PlainBirthmarkComparator extends AbstractBirthmarkComparator{
- public PlainBirthmarkComparator(BirthmarkSpi spi){
+ public PlainBirthmarkComparator(BirthmarkService spi){
super(spi);
}
package jp.sourceforge.stigmata.birthmarks.comparators;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkComparatorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* SPI of {@link BirthmarkComparator <code>BirthmarkComparator</code>}.
* Comparing birthmarks by default matching algorithm.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{
+public class PlainBirthmarkComparatorService implements BirthmarkComparatorService{
/**
* returns a type of the birthmark this service provides.
*/
return "plain";
}
- @Override
- public String getComparatorClassName(){
- return PlainBirthmarkComparator.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkComparator getComparator(BirthmarkSpi service){
+ public BirthmarkComparator getComparator(BirthmarkService service){
return new PlainBirthmarkComparator(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Plain Comparator";
+ }
}
package jp.sourceforge.stigmata.birthmarks.cvfv;
-/*
- * $Id$
- */
-
import java.util.LinkedHashMap;
import java.util.Map;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ConstantValueOfFieldVariableBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
private Map<String, TypeAndValueBirthmarkElement> elements = new LinkedHashMap<String, TypeAndValueBirthmarkElement>();
package jp.sourceforge.stigmata.birthmarks.cvfv;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ConstantValueOfFieldVariableBirthmarkExtractor extends ASMBirthmarkExtractor{
- public ConstantValueOfFieldVariableBirthmarkExtractor(BirthmarkSpi spi){
+ public ConstantValueOfFieldVariableBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
ExtractionUnit.CLASS, ExtractionUnit.PACKAGE, ExtractionUnit.ARCHIVE,
};
}
+
+ @Override
+ public BirthmarkElement buildElement(String value) {
+ String signature = value.substring(0, value.indexOf('='));
+ String subValue = value.substring(value.indexOf('=') + 1);
+ Object elementValue = subValue;
+
+ if(subValue.equals("null")){
+ elementValue = null;
+ }
+ else{
+ switch(signature.charAt(0)){
+ case 'Z':{
+ if(value.equals("true")) elementValue = Boolean.TRUE;
+ else elementValue = Boolean.FALSE;
+ break;
+ }
+ case 'C': elementValue = new Character(subValue.charAt(0)); break;
+ case 'D': elementValue = new Double(subValue); break;
+ case 'F': elementValue = new Float(subValue); break;
+ case 'S': elementValue = new Short(subValue); break;
+ case 'B': elementValue = new Byte(subValue); break;
+ case 'I': elementValue = new Integer(subValue); break;
+ default: elementValue = value; break;
+ }
+ }
+ return new TypeAndValueBirthmarkElement(signature, elementValue);
+ }
}
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
+package jp.sourceforge.stigmata.birthmarks.cvfv;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* Birthmark Service Provider Interface.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
+public class ConstantValueOfFieldVariableBirthmarkExtractorService implements BirthmarkExtractorService{
/**
* returns a type of the birthmark this service provides.
return "cvfv";
}
- @Override
- public String getExtractorClassName(){
- return ConstantValueOfFieldVariableBirthmarkExtractor.class.getName();
- }
-
/**
* returns a extractor for the birthmark of this service.
*/
@Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
+ public BirthmarkExtractor getExtractor(BirthmarkService service){
return new ConstantValueOfFieldVariableBirthmarkExtractor(service);
}
+
+ @Override
+ public String getDescription(){
+ return "Constant Value and Field Variable birthmark";
+ }
}
\ No newline at end of file
package jp.sourceforge.stigmata.birthmarks.cvfv;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class ConstantValueOfFieldVariableBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class ConstantValueOfFieldVariableBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
private BirthmarkExtractor extractor = new ConstantValueOfFieldVariableBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
+ public String getDescription(){
return "Field type and its initial value.";
}
}
@Override
- public BirthmarkElement buildBirthmarkElement(String value) {
- String signature = value.substring(0, value.indexOf('='));
- String subValue = value.substring(value.indexOf('=') + 1);
- Object elementValue = subValue;
-
- if(subValue.equals("null")){
- elementValue = null;
- }
- else{
- switch(signature.charAt(0)){
- case 'Z':{
- if(value.equals("true")) elementValue = Boolean.TRUE;
- else elementValue = Boolean.FALSE;
- break;
- }
- case 'C': elementValue = new Character(subValue.charAt(0)); break;
- case 'D': elementValue = new Double(subValue); break;
- case 'F': elementValue = new Float(subValue); break;
- case 'S': elementValue = new Short(subValue); break;
- case 'B': elementValue = new Byte(subValue); break;
- case 'I': elementValue = new Integer(subValue); break;
- default: elementValue = value; break;
- }
- }
- return new TypeAndValueBirthmarkElement(signature, elementValue);
- }
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
+ }
}
package jp.sourceforge.stigmata.birthmarks.cvfv;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TypeAndValueBirthmarkElement extends BirthmarkElement implements Serializable{
private static final long serialVersionUID = 237098465735321L;
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-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.BirthmarkSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-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(BirthmarkSpi service){
- try{
- Class<?> c = Class.forName(getExtractorClassName());
- Class<? extends BirthmarkExtractor> clazz = c.asSubclass(BirthmarkExtractor.class);
- Constructor<? extends BirthmarkExtractor> constructor = clazz.getConstructor(BirthmarkSpi.class);
- return constructor.newInstance(service);
- } catch(NoSuchMethodException e){
- } catch(InstantiationException e){
- } catch(InvocationTargetException e){
- } catch(ClassNotFoundException e){
- } catch(IllegalAccessException e){
- }
- return null;
- }
-}
-
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-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.BirthmarkSpi;
-
-import org.apache.commons.beanutils.BeanUtils;
-
-/**
- *
- * @author Haruaki Tamada
- * @version $Revision$
- */
-public class BirthmarkExtractorFactory{
- private BirthmarkEnvironment environment;
- private Map<String, BirthmarkExtractor> extractors = new HashMap<String, BirthmarkExtractor>();
-
- public BirthmarkExtractorFactory(BirthmarkEnvironment env){
- this.environment = env;
- }
-
- public BirthmarkExtractor getExtractor(String name) throws ExtractorNotFoundException{
- BirthmarkExtractor extractor = extractors.get(name);
- if(extractor == null){
- extractor = buildExtractor(name);
- extractors.put(name, extractor);
- }
- return extractor;
- }
-
- @SuppressWarnings("rawtypes")
- private BirthmarkExtractor buildExtractor(String birthmarkType) throws ExtractorNotFoundException{
- BirthmarkSpi spi = environment.getService(birthmarkType);
- BirthmarkExtractor extractor = null;
- if(spi != null){
- extractor = spi.getExtractor();
- try{
- if(extractor != null){
- Map props = BeanUtils.describe(extractor);
- props.remove("class");
- props.remove("provider");
- for(Object keyObject: props.keySet()){
- String key = "extractor." + spi.getType() + "." + String.valueOf(keyObject);
- if(environment.getProperty(key) != null){
- BeanUtils.setProperty(
- extractor, (String)keyObject, environment.getProperty(key)
- );
- }
- }
- }
- } catch(InvocationTargetException e){
- throw new InternalError(e.getMessage());
- } catch(NoSuchMethodException e){
- throw new InternalError(e.getMessage());
- } catch(IllegalAccessException e){
- throw new InternalError(e.getMessage());
- }
- }
- if(extractor == null){
- throw new ExtractorNotFoundException("extractor not found: " + birthmarkType);
- }
-
- return extractor;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class FrequencyMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "fmc";
- }
-
- @Override
- public String getExtractorClassName(){
- return FrequencyMethodCallBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
- return new FrequencyMethodCallBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class FrequencyUsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "fuc";
- }
-
- @Override
- public String getExtractorClassName(){
- return FrequencyUsedClassesBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
- return new FrequencyUsedClassesBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "is";
- }
-
- @Override
- public String getExtractorClassName(){
- return InheritanceStructureBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
- return new InheritanceStructureBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.kgram.KGramBasedBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-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(BirthmarkSpi service){
- return new KGramBasedBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "smc";
- }
-
- @Override
- public String getExtractorClassName(){
- return SequentialMethodCallBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
- return new SequentialMethodCallBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.extractors;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- * Birthmark Service Provider Interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{
-
- /**
- * returns a type of the birthmark this service provides.
- */
- @Override
- public String getType(){
- return "uc";
- }
-
- @Override
- public String getExtractorClassName(){
- return UsedClassesBirthmarkExtractor.class.getName();
- }
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- @Override
- public BirthmarkExtractor getExtractor(BirthmarkSpi service){
- return new UsedClassesBirthmarkExtractor(service);
- }
-}
\ No newline at end of file
package jp.sourceforge.stigmata.birthmarks.fmc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmark;
import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
import jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassWriter;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FrequencyMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
- public FrequencyMethodCallBirthmarkExtractor(BirthmarkSpi spi){
+ public FrequencyMethodCallBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
public Birthmark createBirthmark(){
return new FrequencyBirthmark(getProvider().getType());
}
+
+
+ @Override
+ public BirthmarkElement buildElement(String value) {
+ return new FrequencyBirthmarkElement(value);
+ }
}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.fmc;
+
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+
+/**
+ * Birthmark Service Provider Interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public class FrequencyMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{
+
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ @Override
+ public String getType(){
+ return "fmc";
+ }
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ @Override
+ public BirthmarkExtractor getExtractor(BirthmarkService service){
+ return new FrequencyMethodCallBirthmarkExtractor(service);
+ }
+
+ @Override
+ public String getDescription(){
+ return "Frequency of Method Calls birthmark";
+ }
+}
\ No newline at end of file
package jp.sourceforge.stigmata.birthmarks.fmc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
-import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class FrequencyMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class FrequencyMethodCallBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this);
private BirthmarkExtractor extractor = new FrequencyMethodCallBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
- return "Frequency of method call which order is appeared in method definition.";
- }
-
- @Override
public BirthmarkExtractor getExtractor(){
return extractor;
}
return false;
}
- @Override
- public BirthmarkElement buildBirthmarkElement(String value) {
- return new FrequencyBirthmarkElement(value);
- }
+ @Override
+ public String getDescription(){
+ return "Frequency of Method Calls";
+ }
+
+ @Override
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
+ }
}
package jp.sourceforge.stigmata.birthmarks.fuc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmark;
+import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
import jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FrequencyUsedClassesBirthmarkExtractor extends ASMBirthmarkExtractor{
- public FrequencyUsedClassesBirthmarkExtractor(BirthmarkSpi spi){
+ public FrequencyUsedClassesBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
public Birthmark createBirthmark(){
return new FrequencyBirthmark(getProvider().getType());
}
+
+ public BirthmarkElement buildElement(String value){
+ return new FrequencyBirthmarkElement(value);
+ }
}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.fuc;
+
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+
+/**
+ * Birthmark Service Provider Interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public class FrequencyUsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{
+
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ @Override
+ public String getType(){
+ return "fuc";
+ }
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ @Override
+ 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
package jp.sourceforge.stigmata.birthmarks.fuc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
-import jp.sourceforge.stigmata.birthmarks.FrequencyBirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.CosineSimilarityBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class FrequencyUsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class FrequencyUsedClassesBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new CosineSimilarityBirthmarkComparator(this);
private BirthmarkExtractor extractor = new FrequencyUsedClassesBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
+ public String getDescription(){
return "Frequency of used classes in target class.";
}
return false;
}
- public BirthmarkElement createBirthmarkElement(String value){
- return new FrequencyBirthmarkElement(value);
+ @Override
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
}
}
package jp.sourceforge.stigmata.birthmarks.is;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
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 org.objectweb.asm.Opcodes;
+
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class InheritanceStructureBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
public InheritanceStructureBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
@Override
public void visit(int version, int access, String name, String signature,
String superName, String[] interfaces){
- try {
- Class<?> c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.'));
- if(c != null && !c.isInterface()){
- addISBirthmark(c);
+ if((access & Opcodes.ACC_INTERFACE) != Opcodes.ACC_INTERFACE){
+ ClasspathContext context = getEnvironment().getClasspathContext();
+ name = name.replace('/', '.');
+ ClassFileEntry entry = context.findEntry(name);
+ if(entry == null){
+ superName = superName.replace('/', '.');
+ ClassFileEntry parent = context.findEntry(superName);
+ if(parent != null){
+ addIsBirthmark(name);
+ addIsBirthmark(superName);
+ }
+ else{
+ addFailur(new ClassNotFoundException(superName));
+ }
+ }
+ else{
+ try{
+ Class<?> clazz = context.findClass(name);
+ addISBirthmark(clazz);
+ } catch(ClassNotFoundException e){
+ addFailur(e);
+ }
}
- } catch (ClassNotFoundException ex){
- addFailur(ex);
}
}
+ private void addIsBirthmark(String className){
+ WellknownClassManager wcm = getEnvironment().getWellknownClassManager();
+ BirthmarkElement element;
+ if(wcm.isWellKnownClass(className)){
+ element = new BirthmarkElement(className);
+ }
+ else{
+ element = NullBirthmarkElement.getInstance();
+ }
+ addElement(element);
+ }
+
private void addISBirthmark(Class<?> c){
WellknownClassManager wcm = getEnvironment().getWellknownClassManager();
do{
package jp.sourceforge.stigmata.birthmarks.is;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.InputStream;
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.BirthmarkElementClassNotFoundException;
import jp.sourceforge.stigmata.BirthmarkExtractionFailedException;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class InheritanceStructureBirthmarkExtractor extends AbstractBirthmarkExtractor{
- public InheritanceStructureBirthmarkExtractor(BirthmarkSpi spi){
+ public InheritanceStructureBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
public ExtractionUnit[] getAcceptableUnits(){
return new ExtractionUnit[] { ExtractionUnit.CLASS, };
}
+
+ @Override
+ public BirthmarkElement buildElement(String value){
+ return new BirthmarkElement(value);
+ }
}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.is;
+
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+
+/**
+ * Birthmark Service Provider Interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public class InheritanceStructureBirthmarkExtractorService implements BirthmarkExtractorService{
+
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ @Override
+ public String getType(){
+ return "is";
+ }
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ @Override
+ public BirthmarkExtractor getExtractor(BirthmarkService service){
+ return new InheritanceStructureBirthmarkExtractor(service);
+ }
+
+ @Override
+ public String getDescription(){
+ return "Inheritance Structure birthmark";
+ }
+}
\ No newline at end of file
package jp.sourceforge.stigmata.birthmarks.is;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class InheritanceStructureBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class InheritanceStructureBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
private BirthmarkExtractor extractor = new InheritanceStructureBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
+ public String getDescription(){
return "Inheritance sequence to root class and user classes is replaced to <null>.";
}
public boolean isUserDefined(){
return false;
}
+
+ @Override
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
+ }
}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class KGram<T> implements Serializable{
- private static final long serialVersionUID = 273465874532523L;
- // private List<T> list = new ArrayList<T>();
- private int maxLength = 4;
- private T[] values;
-
- /**
- * constructor.
- * @param kvalue the number of elements of this object.
- */
- public KGram(int kvalue){
- setKValue(kvalue);
- }
-
- /**
- * sets k-value.
- * @param kvalue the number of elements of this object.
- */
- public void setKValue(int kvalue){
- this.maxLength = kvalue;
- }
-
- /**
- * returns k-value which is the number of elements.
- * @return the number of elements.
- */
- public int getKValue(){
- return maxLength;
- }
-
- /**
- * returns string representation of this object.
- */
- @Override
- public String toString(){
- StringBuffer buffer = new StringBuffer("{ ");
- for(int i = 0; i < maxLength; i++){
- if(i != 0) buffer.append(", ");
- buffer.append(get(i));
- }
- buffer.append(" }");
- return new String(buffer);
- }
-
- /**
- * sets the given value to kgram element at given index.
- * @param index index.
- * @param value value.
- */
- @SuppressWarnings("unchecked")
- public void set(int index, T value){
- if(index < 0 || index >= maxLength){
- throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index);
- }
- if(value == null){
- throw new NullPointerException("null value");
- }
- if(values == null){
- values = (T[])Array.newInstance(value.getClass(), getKValue());
- }
- values[index] = value;
- }
-
- /**
- * returns an object of given index.
- */
- public T get(int index){
- T returnValue = null;
- if(index < 0 || index >= maxLength){
- throw new ArrayIndexOutOfBoundsException("expected 0-" + (maxLength - 1) + ": " + index);
- }
- if(values != null){
- returnValue = values[index];
- }
-
- return returnValue;
- }
-
- /**
- * adds value at last index.
- *
- * this object is called with given 2 when following situation,
- * <ul>
- * <li>``{ 1, 3, null, null }'' -> ``{ 1, 2, 3, null }'' and return 2<li>
- * <li>``{ 1, null, 3, null }'' -> ``{ 1, 2, 3, null }'' and return 1<li>
- * <li>``{ 1, 2, 3, 4 }'' -> ``{ 1, 2, 3, 4 }'' and return -1<li>
- * </ul>
- *
- * @param value value for addition.
- * @return added index.
- */
- public int add(T value){
- int index = -1;
- for(int i = 0; i < values.length; i++){
- if(values[i] == null){
- index = i;
- values[i] = value;
- break;
- }
- }
- return index;
- }
-
- /**
- * returns an array of elements this object has.
- * @return
- */
- @SuppressWarnings("unchecked")
- public T[] toArray(){
- if(values == null){
- throw new IllegalStateException("this object has no elements.");
- }
- T[] newarray = (T[])Array.newInstance(values[0].getClass(), getKValue());
- System.arraycopy(values, 0, newarray, 0, getKValue());
- return newarray;
- }
-
- @Override
- public boolean equals(Object o){
- if(o instanceof KGram){
- KGram<?> kgram = (KGram<?>)o;
- boolean flag = getKValue() == kgram.getKValue();
- for(int i = 0; !flag && i < maxLength; i++){
- if(!get(i).equals(kgram.get(i))){
- flag = false;
- break;
- }
- }
- return flag;
- }
- return false;
- }
-
- @Override
- public int hashCode(){
- return Arrays.hashCode(values);
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkElement;
-
-/**
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class KGramBasedBirthmarkElement<T> extends BirthmarkElement{
- private static final long serialVersionUID = 28546543857543634L;
-
- private KGram<T> kgram;
-
- public KGramBasedBirthmarkElement(KGram<T> kgram){
- super(kgram.toString());
- this.kgram = kgram;
- }
-
- @Override
- @SuppressWarnings("rawtypes")
- public boolean equals(Object o){
- return o instanceof KGramBasedBirthmarkElement &&
- kgram.equals(((KGramBasedBirthmarkElement)o).kgram);
- }
-
- @Override
- public int hashCode(){
- int v = kgram.hashCode();
-
- return (v & 0xff << 24) | (v >> 8);
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
- private int kvalue;
- private List<Integer> opcodes = new ArrayList<Integer>();
-
- public KGramBasedBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
- super(visitor, birthmark, context);
- }
-
- public int getKValue(){
- return kvalue;
- }
-
- public void setKValue(int kvalue){
- this.kvalue = kvalue;
- }
-
- @Override
- public void visitEnd(){
- KGramBuilder builder = KGramBuilder.getInstance();
- KGram<Integer>[] kgrams = builder.<Integer>buildKGram(opcodes, getKValue());
-
- for(KGram<Integer> kgram: kgrams){
- addElement(new KGramBasedBirthmarkElement<Integer>(kgram));
- }
- }
-
- @Override
- public MethodVisitor visitMethod(int arg0, String arg1, String arg2, String arg3, String[] arg4){
- MethodVisitor visitor = super.visitMethod(arg0, arg1, arg2, arg3, arg4);
- MethodVisitor opcodeVisitor = new OpcodeExtractionMethodVisitor(visitor, opcodes);
-
- return opcodeVisitor;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
-import jp.sourceforge.stigmata.ExtractionUnit;
-import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-import org.objectweb.asm.ClassWriter;
-
-/**
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
- private int kvalue = 4;
-
- public KGramBasedBirthmarkExtractor(BirthmarkSpi 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,
- };
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
-import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-
-/**
- *
- *
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
- private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
- private BirthmarkExtractor extractor = new KGramBasedBirthmarkExtractor(this);
-
- @Override
- public String getType(){
- return "kgram";
- }
-
- @Override
- public String getDefaultDescription(){
- 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 BirthmarkElement buildBirthmarkElement(String value) {
- value = value.trim();
- if(value.startsWith("{") && value.endsWith("}")){
- String[] param = value.substring(1, value.length() - 1).split(", *");
- KGram<Integer> kgram = new KGram<Integer>(param.length);
- for(int i = 0; i < param.length; i++){
- kgram.set(i, new Integer(param[i].trim()));
- }
- return new KGramBasedBirthmarkElement<Integer>(kgram);
- }
- return null;
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;\r
-\r
-/*\r
- * $Id$\r
- */\r
-\r
-import java.util.LinkedHashSet;\r
-import java.util.List;\r
-import java.util.Set;\r
-\r
-/**\r
- * @author Haruaki Tamada\r
- * @version $Revision$\r
- */\r
-public class KGramBuilder{\r
- private static final KGramBuilder builder = new KGramBuilder();\r
-\r
- /**\r
- * private constructor for singleton pattern.\r
- */\r
- private KGramBuilder(){\r
- }\r
-\r
- public static KGramBuilder getInstance(){\r
- return builder;\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public <T> KGram<T>[] buildKGram(T[] values, int kvalue){\r
- Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();\r
-\r
- if(values.length >= kvalue){\r
- int max = values.length - (kvalue - 1);\r
- for(int i = 0; i < max; i++){\r
- KGram<T> kgram = new KGram<T>(kvalue);\r
- for(int j = 0; j < kvalue; j++){\r
- kgram.set(j, values[i + j]);\r
- }\r
- kgrams.add(kgram);\r
- }\r
- }\r
- return kgrams.toArray(new KGram[kgrams.size()]);\r
- }\r
-\r
- @SuppressWarnings("unchecked")\r
- public <T> KGram<T>[] buildKGram(List<T> values, int kvalue){\r
- Set<KGram<T>> kgrams = new LinkedHashSet<KGram<T>>();\r
-\r
- if(values.size() >= kvalue){\r
- int max = values.size() - (kvalue - 1);\r
- for(int i = 0; i < max; i++){\r
- KGram<T> kgram = new KGram<T>(kvalue);\r
- for(int j = 0; j < kvalue; j++){\r
- kgram.set(j, values.get(i + j));\r
- }\r
- kgrams.add(kgram);\r
- }\r
- }\r
- return kgrams.toArray(new KGram[kgrams.size()]);\r
- }\r
-}
\ No newline at end of file
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class OpcodeExtractionMethodVisitor extends MethodAdapter{
- private List<Integer> opcodes;
-
- public OpcodeExtractionMethodVisitor(MethodVisitor visitor, List<Integer> opcodes){
- super(visitor);
- this.opcodes = opcodes;
- }
-
- @Override
- public void visitFieldInsn(int opcode, String owner, String name, String desc){
- opcodes.add(opcode);
- super.visitFieldInsn(opcode, owner, name, desc);
- }
-
- @Override
- public void visitIincInsn(int var, int increment){
- opcodes.add(Opcodes.IINC);
- super.visitIincInsn(var, increment);
- }
-
- @Override
- public void visitInsn(int opcode){
- opcodes.add(opcode);
- super.visitInsn(opcode);
- }
-
- @Override
- public void visitIntInsn(int opcode, int operand){
- opcodes.add(opcode);
- super.visitIntInsn(opcode, operand);
- }
-
- @Override
- public void visitJumpInsn(int opcode, Label label){
- opcodes.add(opcode);
- super.visitJumpInsn(opcode, label);
- }
-
- @Override
- public void visitLdcInsn(Object value){
- opcodes.add(Opcodes.LDC);
- super.visitLdcInsn(value);
- }
-
- @Override
- public void visitLookupSwitchInsn(Label defaultHandle, int[] keys, Label[] labels){
- opcodes.add(Opcodes.LOOKUPSWITCH);
- super.visitLookupSwitchInsn(defaultHandle, keys, labels);
- }
-
- @Override
- public void visitMethodInsn(int opcode, String owner, String name, String desc){
- opcodes.add(opcode);
- super.visitMethodInsn(opcode, owner, name, desc);
- }
-
- @Override
- public void visitMultiANewArrayInsn(String desc, int dims){
- opcodes.add(Opcodes.MULTIANEWARRAY);
- super.visitMultiANewArrayInsn(desc, dims);
- }
-
- @Override
- public void visitTableSwitchInsn(int min, int max, Label defaultLabel, Label[] labels){
- opcodes.add(Opcodes.TABLESWITCH);
- super.visitTableSwitchInsn(min, max, defaultLabel, labels);
- }
-
- @Override
- public void visitTypeInsn(int opcode, String desc){
- opcodes.add(opcode);
- super.visitTypeInsn(opcode, desc);
- }
-
- @Override
- public void visitVarInsn(int opcode, int var){
- opcodes.add(opcode);
- super.visitVarInsn(opcode, var);
- }
-}
package jp.sourceforge.stigmata.birthmarks.smc;
-/*
- * $Id$
- */
-
import java.io.Serializable;
import jp.sourceforge.stigmata.BirthmarkElement;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class MethodCallBirthmarkElement extends BirthmarkElement implements Serializable {
private static final long serialVersionUID = -3178451461780859954L;
package jp.sourceforge.stigmata.birthmarks.smc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SequentialMethodCallBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
public SequentialMethodCallBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
package jp.sourceforge.stigmata.birthmarks.smc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassWriter;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SequentialMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor{
- public SequentialMethodCallBirthmarkExtractor(BirthmarkSpi spi){
+ public SequentialMethodCallBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
public ExtractionUnit[] getAcceptableUnits(){
return new ExtractionUnit[] { ExtractionUnit.CLASS, ExtractionUnit.ARCHIVE, ExtractionUnit.PACKAGE, };
}
+
+ @Override
+ public BirthmarkElement buildElement(String value) {
+ String className = value.substring(0, value.indexOf('#'));
+ String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!'));
+ String signature = value.substring(value.lastIndexOf('!') + 1);
+
+ return new MethodCallBirthmarkElement(className, methodName, signature);
+ }
}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.smc;
+
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+
+/**
+ * Birthmark Service Provider Interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public class SequentialMethodCallBirthmarkExtractorService implements BirthmarkExtractorService{
+
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ @Override
+ public String getType(){
+ return "smc";
+ }
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ @Override
+ 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
package jp.sourceforge.stigmata.birthmarks.smc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.PlainBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class SequentialMethodCallBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class SequentialMethodCallBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new PlainBirthmarkComparator(this);
private BirthmarkExtractor extractor = new SequentialMethodCallBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
+ public String getDescription(){
return "Sequence of method call which order is appeared in method definition.";
}
return false;
}
- @Override
- public BirthmarkElement buildBirthmarkElement(String value) {
- String className = value.substring(0, value.indexOf('#'));
- String methodName = value.substring(value.indexOf('#') + 1, value.lastIndexOf('!'));
- String signature = value.substring(value.lastIndexOf('!') + 1);
-
- return new MethodCallBirthmarkElement(className, methodName, signature);
- }
+ @Override
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
+ }
}
package jp.sourceforge.stigmata.birthmarks.uc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.birthmarks.PlainBirthmark;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
class UsedClassesBirthmark extends PlainBirthmark{
private static final long serialVersionUID = -1043130948373105655L;
package jp.sourceforge.stigmata.birthmarks.uc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class UsedClassesBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
public UsedClassesBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark,
String superName, String[] interfaces){
addSignatureClass(signature);
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(superName)){
- add(superName);
- }
+ addUCElement(superName);
for(String i: interfaces){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(i)){
- add(i);
- }
+ addUCElement(i);
}
}
String signature, String[] exceptions){
if(exceptions != null){
for(String exception: exceptions){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(exception)){
- add(exception);
- }
+ addUCElement(exception);
}
}
addMethodDescriptor(desc);
public void visitTypeInsn(int opcode, String desc){
Type type = Type.getType("L" + desc + ";");
if(checkType(type)){
- add(desc);
+ addUCElement(desc);
}
super.visitTypeInsn(opcode, desc);
}
public void visitTryCatchBlock(Label start, Label end, Label handle, String desc){
Type type = Type.getType("L" + desc + ";");
if(checkType(type)){
- add(getType(type));
+ addUCElement(getType(type));
}
super.visitTryCatchBlock(start, end, handle, desc);
}
public void visitMultiANewArrayInsn(String desc, int dims){
Type type = Type.getType(desc);
if(checkType(type)){
- add(getType(type));
+ addUCElement(getType(type));
}
super.visitMultiANewArrayInsn(desc, dims);
}
public void visitLocalVariable(String name, String desc, String signature,
Label start, Label end, int index){
if(checkType(Type.getType(desc))){
- add(desc);
+ addUCElement(desc);
}
addSignatureClass(signature);
@Override
public void visitFieldInsn(int opcode, String owner, String name, String desc){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(owner)){
- add(owner);
- }
+ addUCElement(owner);
addDescriptor(desc);
super.visitFieldInsn(opcode, owner, name, desc);
}
@Override
public void visitMethodInsn(int opcode, String owner, String name, String desc){
String className = normalize(owner);
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){
- add(className);
- }
+ addUCElement(className);
addMethodDescriptor(desc);
super.visitMethodInsn(opcode, owner, name, desc);
}
SignatureWriter writer = new SignatureWriter(){
@Override
public void visitClassType(String classType){
- if(getEnvironment().getWellknownClassManager().isWellKnownClass(classType)){
- add(classType);
- }
+ addUCElement(classType);
}
};
in.accept(writer);
Type returnType = Type.getReturnType(desc);
Type[] args = Type.getArgumentTypes(desc);
if(checkType(returnType)){
- add(getType(returnType));
+ addUCElement(getType(returnType));
}
for(Type arg: args){
if(checkType(arg)){
- add(getType(arg));
+ addUCElement(getType(arg));
}
}
}
private void addDescriptor(String desc){
Type type = Type.getType(desc);
if(checkType(type)){
- add(desc);
+ addUCElement(desc);
}
}
return name;
}
- private void add(String name){
- addElement(new BirthmarkElement(normalize(name)));
+ private void addUCElement(String name){
+ if(getEnvironment().getWellknownClassManager().isWellKnownClass(name)){
+ addElement(new BirthmarkElement(normalize(name)));
+ }
}
}
package jp.sourceforge.stigmata.birthmarks.uc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Birthmark;
import jp.sourceforge.stigmata.BirthmarkContext;
+import jp.sourceforge.stigmata.BirthmarkElement;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.birthmarks.ASMBirthmarkExtractor;
import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.objectweb.asm.ClassWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class UsedClassesBirthmarkExtractor extends ASMBirthmarkExtractor{
- public UsedClassesBirthmarkExtractor(BirthmarkSpi spi){
+ public UsedClassesBirthmarkExtractor(BirthmarkService spi){
super(spi);
}
public Birthmark createBirthmark(){
return new UsedClassesBirthmark(getProvider().getType());
}
+
+ @Override
+ public BirthmarkElement buildElement(String value){
+ return new BirthmarkElement(value);
+ }
}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.uc;
+
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.spi.BirthmarkExtractorService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+
+/**
+ * Birthmark Service Provider Interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public class UsedClassesBirthmarkExtractorService implements BirthmarkExtractorService{
+
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ @Override
+ public String getType(){
+ return "uc";
+ }
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ @Override
+ public BirthmarkExtractor getExtractor(BirthmarkService service){
+ return new UsedClassesBirthmarkExtractor(service);
+ }
+
+ @Override
+ public String getDescription(){
+ return "Used classes birthmark";
+ }
+}
\ No newline at end of file
package jp.sourceforge.stigmata.birthmarks.uc;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkComparator;
import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class UsedClassesBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{
+public class UsedClassesBirthmarkService implements BirthmarkService{
private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);
private BirthmarkExtractor extractor = new UsedClassesBirthmarkExtractor(this);
}
@Override
- public String getDefaultDescription(){
- return "Set of used classes in target class.";
+ public String getDescription(){
+ return "Used classes birthmark";
}
@Override
public boolean isUserDefined(){
return false;
}
+
+ @Override
+ public BirthmarkPreprocessor getPreprocessor(){
+ return null;
+ }
}
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.Stigmata;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.StigmataCommand;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public abstract class AbstractStigmataCommand implements StigmataCommand{
/**
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.util.Iterator;
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;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class CompareCommand extends AbstractStigmataCommand{
@Override
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){
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ExportConfigCommand extends AbstractStigmataCommand{
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.util.Iterator;
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;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ExtractCommand extends AbstractStigmataCommand{
@Override
});
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){
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.Stigmata;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class GuiCommand extends AbstractStigmataCommand{
@Override
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.util.ResourceBundle;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.talisman.xmlcli.ResourceHelpFormatter;
import org.apache.commons.cli.HelpFormatter;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class HelpCommand extends AbstractStigmataCommand{
private Options options;
);
System.out.println();
System.out.println(helpResource.getString("cli.interface.birthmarks"));
- for(BirthmarkSpi service: env.getServices()){
+ for(BirthmarkService service: env.getServices()){
if(!service.isExperimental()){
System.out.printf(" %-5s (%s): %s%n", service.getType(),
- service.getDisplayType(), service.getDescription());
+ service.getType(), service.getDescription());
}
}
System.out.println();
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class InstallCommand extends AbstractStigmataCommand{
@Override
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class LicenseCommand extends AbstractStigmataCommand{
@Override
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.Stigmata;
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ListBirthmarksCommand extends AbstractStigmataCommand{
@Override
@Override
public void perform(Stigmata stigmata, BirthmarkContext context, String[] args){
- BirthmarkSpi[] spis = context.getEnvironment().findServices();
- ResultPrinterSpi spi = stigmata.getPrinterManager().getService(context.getFormat());
+ BirthmarkService[] spis = context.getEnvironment().findServices();
+ ResultPrinterService spi = stigmata.getPrinterManager().getService(context.getFormat());
BirthmarkServicePrinter formatter = spi.getBirthmarkServicePrinter();
try{
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Map;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class StigmataCommandFactory{
private static final StigmataCommandFactory factory = new StigmataCommandFactory();
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.stigmata.utils.ConfigFileExporter;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
@Deprecated
public class UninstallCommand extends AbstractStigmataCommand{
boolean removeServiceInConfigFile = false;
for(int i = 0; i < args.length; i++){
- BirthmarkSpi service = env.getService(args[i]);
+ BirthmarkService service = env.getService(args[i]);
if(service instanceof BirthmarkService){
env.removeService(args[i]);
removeServiceInConfigFile = true;
}
}
- private String getPluginFileNameOfService(BirthmarkContext context, BirthmarkSpi service){
+ private String getPluginFileNameOfService(BirthmarkContext context, BirthmarkService service){
Class<?> serviceClass = service.getClass();
URL location = serviceClass.getResource("/" + serviceClass.getName().replace('.', '/') + ".class");
package jp.sourceforge.stigmata.command;
-/*
- * $Id$
- */
-
import java.util.ResourceBundle;
import jp.sourceforge.stigmata.BirthmarkContext;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class VersionCommand extends AbstractStigmataCommand{
@Override
package jp.sourceforge.stigmata.event;
-/*
- * $Id$
- */
-
/**
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkEngineAdapter implements BirthmarkEngineListener{
package jp.sourceforge.stigmata.event;
-/*
- * $Id$
- */
-
import java.util.EventObject;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkEngineEvent extends EventObject{
private static final long serialVersionUID = -1260793588721638917L;
package jp.sourceforge.stigmata.event;
-/*
- * $Id$
- */
-
import java.util.EventListener;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface BirthmarkEngineListener extends EventListener{
public void operationStart(BirthmarkEngineEvent e);
package jp.sourceforge.stigmata.event;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public enum OperationType{
CONFIGURATION,
package jp.sourceforge.stigmata.event;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class WarningMessages{
private OperationType type;
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractComparisonPairFilter implements ComparisonPairFilter{
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private Criterion criterion = Criterion.EQUALS_AS;
- public AbstractComparisonPairFilter(ComparisonPairFilterSpi service){
+ public AbstractComparisonPairFilter(ComparisonPairFilterService service){
this.service = service;
}
@Override
- public ComparisonPairFilterSpi getService(){
+ public ComparisonPairFilterService getService(){
return service;
}
+++ /dev/null
-package jp.sourceforge.stigmata.filter;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-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
- );
- }
-}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkElementCountComparisonPairFilter extends AbstractComparisonPairFilter{
private static final List<Criterion> CRITERIA = new ArrayList<Criterion>();
CRITERIA.add(Criterion.NOT_EQUALS_AS);
}
- public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+ public BirthmarkElementCountComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class BirthmarkElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class BirthmarkElementCountComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return BirthmarkElementCountComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "elementcount";
}
@Override
- public String getFilterName(){
- return "elementcount";
+ public String getDescription(){
+ return "Element count Filter";
}
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import org.apache.commons.beanutils.BeanUtils;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonPairFilterManager{
- private Map<String, ComparisonPairFilterSpi> services = new HashMap<String, ComparisonPairFilterSpi>();
+ private Map<String, ComparisonPairFilterService> services = new HashMap<String, ComparisonPairFilterService>();
private Map<String, ComparisonPairFilterSet> filters = new HashMap<String, ComparisonPairFilterSet>();
private ComparisonPairFilterManager parent;
public ComparisonPairFilterManager(BirthmarkEnvironment env, ComparisonPairFilterManager parent){
this.parent = parent;
- for(Iterator<ComparisonPairFilterSpi> i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){
- ComparisonPairFilterSpi service = i.next();
+ for(Iterator<ComparisonPairFilterService> i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){
+ ComparisonPairFilterService service = i.next();
if(getService(service.getFilterName()) != null){
services.put(service.getFilterName(), service);
}
}
public ComparisonPairFilterManager(BirthmarkEnvironment env){
- for(Iterator<ComparisonPairFilterSpi> i = env.lookupProviders(ComparisonPairFilterSpi.class); i.hasNext(); ){
- ComparisonPairFilterSpi service = i.next();
+ for(Iterator<ComparisonPairFilterService> i = env.lookupProviders(ComparisonPairFilterService.class); i.hasNext(); ){
+ ComparisonPairFilterService service = i.next();
services.put(service.getFilterName(), service);
}
}
return null;
}
- public ComparisonPairFilterSpi removeService(String name){
+ public ComparisonPairFilterService removeService(String name){
if(parent != null && parent.hasService(name)){
parent.removeService(name);
}
return services.remove(name);
}
- public void addService(ComparisonPairFilterSpi service){
+ public void addService(ComparisonPairFilterService service){
if(parent == null || parent.getService(service.getFilterName()) == null){
services.put(service.getFilterName(), service);
}
return (parent != null && parent.hasService(name)) || services.get(name) != null;
}
- public ComparisonPairFilterSpi getService(String name){
- ComparisonPairFilterSpi service = null;
+ public ComparisonPairFilterService getService(String name){
+ ComparisonPairFilterService service = null;
if(parent != null){
service = parent.getService(name);
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public enum Criterion{
LESS_THAN,
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
/**
* This enum represents filter target.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public enum FilterTarget{
TARGET_1, TARGET_2, BOTH_TARGETS, ONE_OF_TARGETS,
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
* Filtering {@link ComparisonResultSet <code>ComparisonResultSet</code>}.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FilteredComparisonResultSet implements ComparisonResultSet{
private ComparisonResultSet resultset;
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SimilarityComparisonPairFilter extends AbstractComparisonPairFilter{
private static final double EQUALS_THRESHOLD = 5E-5;
private double threshold;
- public SimilarityComparisonPairFilter(ComparisonPairFilterSpi service){
+ public SimilarityComparisonPairFilter(ComparisonPairFilterService service){
super(service);
setThreshold(0.8d);
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-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";
}
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TargetNameComparisonPairFilter extends AbstractComparisonPairFilter{
private static final List<Criterion> CRITERIA = new ArrayList<Criterion>();
private FilterTarget target = FilterTarget.BOTH_TARGETS;
private String value;
- public TargetNameComparisonPairFilter(ComparisonPairFilterSpi service){
+ public TargetNameComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class TargetNameComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class TargetNameComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return TargetNameComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "name";
}
@Override
- public String getFilterName(){
- return "name";
+ public String getDescription(){
+ return "Filtering by Target Name";
}
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TotalElementCountComparisonPairFilter extends AbstractComparisonPairFilter{
private static final List<Criterion> CRITERIA = new ArrayList<Criterion>();
private int threshold = 0;
private FilterTarget target;
- public TotalElementCountComparisonPairFilter(ComparisonPairFilterSpi service){
+ public TotalElementCountComparisonPairFilter(ComparisonPairFilterService service){
super(service);
}
package jp.sourceforge.stigmata.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class TotalElementCountComparisonPairFilterService extends AbstractComparisonPairFilterService{
+public class TotalElementCountComparisonPairFilterService implements ComparisonPairFilterService{
@Override
public ComparisonPairFilter getFilter(){
}
@Override
- public String getFilterClassName(){
- return TotalElementCountComparisonPairFilter.class.getName();
+ public String getFilterName(){
+ return "totalelementcount";
}
@Override
- public String getFilterName(){
- return "totalelementcount";
+ public String getDescription(){
+ return "Filtering Element Count";
}
}
package jp.sourceforge.stigmata.hook;
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.spi.StigmataHookSpi;
+import jp.sourceforge.stigmata.spi.StigmataHookService;
/**
*
*
* @author Haruaki Tamada
- * @version $Revision$
*/
-public abstract class AbstractStigmataHookService implements StigmataHookSpi{
+public abstract class AbstractStigmataHookService implements StigmataHookService{
@Override
public StigmataRuntimeHook afterComparison(){
return null;
package jp.sourceforge.stigmata.hook;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class MultipleStigmataHook implements StigmataHook, StigmataRuntimeHook{
private List<StigmataHook> hooks = new ArrayList<StigmataHook>();
package jp.sourceforge.stigmata.hook;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public enum Phase{
SETUP,
package jp.sourceforge.stigmata.hook;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkEnvironment;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface StigmataHook{
public void onHook(Phase phase, BirthmarkEnvironment env);
package jp.sourceforge.stigmata.hook;
-/*
- * $Id$
- */
-
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;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class StigmataHookManager{
private static final StigmataHookManager manager = new StigmataHookManager();
private MultipleStigmataHook buildHook(Phase phase, BirthmarkEnvironment env){
MultipleStigmataHook hooks = new MultipleStigmataHook();
- for(Iterator<StigmataHookSpi> i = env.lookupProviders(StigmataHookSpi.class); i.hasNext(); ){
- StigmataHookSpi service = i.next();
+ for(Iterator<StigmataHookService> i = env.lookupProviders(StigmataHookService.class); i.hasNext(); ){
+ StigmataHookService service = i.next();
switch(phase){
case SETUP:
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface StigmataRuntimeHook{
public void onHook(Phase phase, BirthmarkContext context);
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.io.StringWriter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractBirthmarkServicePrinter implements BirthmarkServicePrinter, Printer{
@Override
- public abstract void printResult(PrintWriter out, BirthmarkSpi[] spilist);
+ public abstract void printResult(PrintWriter out, BirthmarkService[] spilist);
@Override
- public String getResult(BirthmarkSpi[] spilist){
+ public String getResult(BirthmarkService[] spilist){
StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.io.StringWriter;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public abstract class AbstractComparisonPairPrinter implements ComparisonPairPrinter, Printer{
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.io.StringWriter;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractComparisonResultSetPrinter implements ComparisonResultSetPrinter, Printer{
@Override
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.io.StringWriter;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractExtractionResultSetPrinter implements ExtractionResultSetPrinter{
@Override
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.PrintWriter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface BirthmarkServicePrinter{
- public void printResult(PrintWriter out, BirthmarkSpi[] spilist) throws IOException;
+ public void printResult(PrintWriter out, BirthmarkService[] spilist) throws IOException;
- public String getResult(BirthmarkSpi[] spilist);
+ public String getResult(BirthmarkService[] spilist);
}
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.ComparisonPair;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface ComparisonPairPrinter{
public String getResult(ComparisonPair pair);
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.ComparisonResultSet;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonResultSetPrinter{
public void printResult(PrintWriter out, ComparisonResultSet resultset);
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.ExtractionResultSet;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ExtractionResultSetPrinter{
public void printResult(PrintWriter out, ExtractionResultSet ers);
package jp.sourceforge.stigmata.printer;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.printer.csv.CsvResultPrinterService;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class PrinterManager{
private static final PrinterManager manager = new PrinterManager();
- private ServiceLoader<ResultPrinterSpi> serviceLoader;
+ private ServiceLoader<ResultPrinterService> serviceLoader;
- private Map<String, ResultPrinterSpi> formats = new HashMap<String, ResultPrinterSpi>();
+ private Map<String, ResultPrinterService> formats = new HashMap<String, ResultPrinterService>();
private PrinterManager(){
- serviceLoader = ServiceLoader.load(ResultPrinterSpi.class);
+ serviceLoader = ServiceLoader.load(ResultPrinterService.class);
load();
}
public static void refresh(BirthmarkEnvironment env){
PrinterManager instance = getInstance();
instance.formats.clear();
- for(Iterator<ResultPrinterSpi> i = env.lookupProviders(ResultPrinterSpi.class); i.hasNext(); ){
+ for(Iterator<ResultPrinterService> i = env.lookupProviders(ResultPrinterService.class); i.hasNext(); ){
instance.addService(i.next());
}
}
- public static ResultPrinterSpi getDefaultFormatService(){
+ public static ResultPrinterService getDefaultFormatService(){
return new CsvResultPrinterService();
}
return manager;
}
- public ResultPrinterSpi getService(String format){
+ public ResultPrinterService getService(String format){
return formats.get(format);
}
private void load(){
formats.clear();
- for(Iterator<ResultPrinterSpi> i = serviceLoader.iterator(); i.hasNext(); ){
- ResultPrinterSpi spi = i.next();
+ for(Iterator<ResultPrinterService> i = serviceLoader.iterator(); i.hasNext(); ){
+ ResultPrinterService spi = i.next();
addService(spi);
}
}
- private void addService(ResultPrinterSpi service){
+ private void addService(ResultPrinterService service){
formats.put(service.getFormat(), service);
}
}
package jp.sourceforge.stigmata.printer.csv;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkServiceCsvPrinter extends AbstractBirthmarkServicePrinter{
@Override
- public void printResult(PrintWriter out, BirthmarkSpi[] spilist){
+ public void printResult(PrintWriter out, BirthmarkService[] spilist){
printHeader(out);
- for(BirthmarkSpi spi: spilist){
+ for(BirthmarkService spi: spilist){
out.print(spi.getType());
out.print(",");
- out.print(spi.getDisplayType());
+ out.print(spi.getType());
out.print(",");
out.print(spi.getClass().getName());
out.print(",");
package jp.sourceforge.stigmata.printer.csv;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonResultSetCsvPrinter extends AbstractComparisonResultSetPrinter{
public ComparisonResultSetCsvPrinter(){
package jp.sourceforge.stigmata.printer.csv;
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.printer.ComparisonPairPrinter;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class CsvResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{
+public class CsvResultPrinterService implements ResultPrinterService{
private BirthmarkServiceCsvPrinter serviceList = new BirthmarkServiceCsvPrinter();
private ExtractionResultSetCsvPrinter list = new ExtractionResultSetCsvPrinter();
private ComparisonPairCsvPrinter pairPrinter = new ComparisonPairCsvPrinter(list);
* returns a localized description of the birthmark this service provides.
*/
@Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter
- );
+ public String getDescription(){
+ return "Print Birthmarks in Csv Format";
}
@Override
package jp.sourceforge.stigmata.printer.csv;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.util.Iterator;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ExtractionResultSetCsvPrinter extends AbstractExtractionResultSetPrinter{
@Override
package jp.sourceforge.stigmata.printer.xml;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.printer.AbstractBirthmarkServicePrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkServiceXmlPrinter extends AbstractBirthmarkServicePrinter{
@Override
- public void printResult(PrintWriter out, BirthmarkSpi[] spilist){
+ public void printResult(PrintWriter out, BirthmarkService[] spilist){
out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
out.println("<birthmark-result-set>");
out.println(" <birthmark-services>");
- for(BirthmarkSpi spi: spilist){
+ for(BirthmarkService spi: spilist){
out.println(" <birthmark-service>");
out.printf(" <type>%s</type>%n", spi.getType());
- out.printf(" <display-name>%s</display-name>%n", spi.getDisplayType());
out.printf(" <description>%s</description>%n", spi.getDescription());
out.printf(" <class-name>%s</class-name>%n", spi.getClass().getName());
- out.printf(" <extractor>%s</extractor>%n", spi.getExtractorClassName());
- out.printf(" <comparator>%s</comparator>%n", spi.getComparatorClassName());
out.println(" </birthmark-service>");
}
out.println(" </birthmark-services>");
package jp.sourceforge.stigmata.printer.xml;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import jp.sourceforge.stigmata.ComparisonPair;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ComparisonResultSetXmlPrinter extends AbstractComparisonResultSetPrinter{
private ComparisonPairXmlPrinter pairPrinter;
package jp.sourceforge.stigmata.printer.xml;
-/*
- * $Id$
- */
-
import java.io.PrintWriter;
import java.util.Iterator;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ExtractionResultSetXmlPrinter extends AbstractExtractionResultSetPrinter{
@Override
package jp.sourceforge.stigmata.printer.xml;
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.printer.ComparisonPairPrinter;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
-import jp.sourceforge.stigmata.spi.AbstractServiceProvider;
-import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
-import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
+import jp.sourceforge.stigmata.spi.ResultPrinterService;
/**
*
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public class XmlResultPrinterService extends AbstractServiceProvider implements ResultPrinterSpi{
+public class XmlResultPrinterService implements ResultPrinterService{
private BirthmarkServiceXmlPrinter serviceList = new BirthmarkServiceXmlPrinter();
private ExtractionResultSetXmlPrinter list = new ExtractionResultSetXmlPrinter();
private ComparisonPairXmlPrinter pairPrinter = new ComparisonPairXmlPrinter(list);
* returns a localized description of the birthmark this service provides.
*/
@Override
- public String getDescription(Locale locale){
- return LocalizedDescriptionManager.getInstance().getDescription(
- locale, getFormat(), LocalizedDescriptionManager.ServiceCategory.formatter
- );
+ public String getDescription(){
+ return "Print Birthmarks in Xml Format";
}
@Override
import java.io.File;
import java.util.ServiceLoader;
+/**
+ *
+ * @author Haruaki Tamada
+ */
public class StigmataHomeManager implements StigmataHomeResolver{
private String home;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Iterator;
* Abstract class for ComparisonResultSet.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public abstract class AbstractComparisonResultSet implements ComparisonResultSet{
protected ExtractionResultSet extraction;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
* Abstract class for ExtractionResultSet.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public abstract class AbstractExtractionResultSet implements ExtractionResultSet{
private BirthmarkContext context;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.net.URL;
import java.util.Collection;
import java.util.HashMap;
* user.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class CertainPairComparisonResultSet extends AbstractComparisonResultSet{
private int compareCount = -1;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkContext;
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
- * @version $Revision$
*/
-public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class MemoryExtractedBirthmarkService implements ExtractedBirthmarkService{
private MemoryExtractedBirthmarkHistory history = new MemoryExtractedBirthmarkHistory();
@Override
return BirthmarkStoreTarget.MEMORY;
}
+ @Override
+ public String getType(){
+ return "memory";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks in memory";
+ }
+
}
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class MemoryExtractionResultSet extends AbstractExtractionResultSet{
private List<BirthmarkSet> targetX = new ArrayList<BirthmarkSet>();
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import javax.sql.DataSource;
import jp.sourceforge.stigmata.BirthmarkContext;
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
- * @version $Revision$
*/
-public class RDBExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class RDBExtractedBirthmarkService implements ExtractedBirthmarkService{
private DataSource source;
public RDBExtractedBirthmarkService(){
public BirthmarkStoreTarget getTarget(){
return BirthmarkStoreTarget.RDB;
}
+
+ @Override
+ public String getType(){
+ return "rdb";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks to Relational Database.";
+ }
}
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.net.MalformedURLException;
import java.net.URL;
import java.sql.ResultSet;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class RDBExtractionResultSet extends AbstractExtractionResultSet{
private String id;
Birthmark birthmark = bs.getBirthmark(type);
if(birthmark == null){
- birthmark = env.getService(type).buildBirthmark();
+ birthmark = env.getService(type).getExtractor().createBirthmark();
bs.addBirthmark(birthmark);
}
String element = rs.getString("ELEMENT");
- birthmark.addElement(env.getService(type).buildBirthmarkElement(element));
+ birthmark.addElement(env.getService(type).getExtractor().buildElement(element));
} catch(MalformedURLException e){
}
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
* Concrete class for ComparisonResultSet. This instance compare class files by round robin.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class RoundRobinComparisonResultSet extends AbstractComparisonResultSet{
private int compareCount = -1;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class SingleExtractionResultSet extends AbstractExtractionResultSet{
private BirthmarkSet bs;
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.io.File;
import jp.sourceforge.stigmata.BirthmarkContext;
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
- * @version $Revision$
*/
-public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkSpi{
+public class XmlFileExtractedBirthmarkService implements ExtractedBirthmarkService{
private File defaultBaseDirectory;
public XmlFileExtractedBirthmarkService(){
public BirthmarkStoreTarget getTarget(){
return BirthmarkStoreTarget.XMLFILE;
}
+
+ @Override
+ public String getType(){
+ return "xmlfile";
+ }
+
+ @Override
+ public String getDescription(){
+ return "Store birthmarks into Xml File";
+ }
}
package jp.sourceforge.stigmata.result;
-/*
- * $Id$
- */
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import jp.sourceforge.stigmata.ExtractionUnit;
import jp.sourceforge.stigmata.Stigmata;
import jp.sourceforge.stigmata.printer.xml.ExtractionResultSetXmlPrinter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.stigmata.ui.swing.ExtensionFilter;
import jp.sourceforge.stigmata.utils.MultipleIterator;
* This instance do not use {@link ExtractionTarget <code>ExtractionTarget</code>}.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class XmlFileExtractionResultSet extends AbstractExtractionResultSet{
private boolean addmode = true;
* Iterator class for reading birthmark xml file by StAX.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
private static class BirthmarkSetStAXIterator implements Iterator<BirthmarkSet>{
private XMLEventReader reader = null;
String className = null;
BirthmarkSet bs = null;
Birthmark birthmark = null;
- BirthmarkSpi service = null;
+ BirthmarkService service = null;
while(reader.hasNext()){
// XMLEvent event = reader.peek();
}
else if(part.equals("element")){
if(service != null){
- BirthmarkElement be = service.buildBirthmarkElement(reader.getElementText());
+ BirthmarkElement be = service.getExtractor().buildElement(reader.getElementText());
birthmark.addElement(be);
}
}
String type = se.getAttributeByName(new QName("type")).getValue();
service = env.getService(type);
if(service != null){
- birthmark = service.buildBirthmark();
+ birthmark = service.getExtractor().createBirthmark();
bs.addBirthmark(birthmark);
}
else{
* This class represents a xml file about XmlFileExtractionResultSet.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
private static class XmlFile{
private ExtractionResultSetXmlPrinter formatter;
package jp.sourceforge.stigmata.result.history;
-/*
- * $Id$
- */
-
import java.util.Iterator;
import jp.sourceforge.stigmata.ExtractionResultSet;
* This interface indicates extracted history management.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface ExtractedBirthmarkHistory extends Iterable<String>{
/**
package jp.sourceforge.stigmata.result.history;
-/*
- * $Id$
- */
-
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
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;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ExtractedBirthmarkServiceManager{
private ExtractedBirthmarkServiceManager parent;
- private Map<BirthmarkStoreTarget, ExtractedBirthmarkSpi> targets = new HashMap<BirthmarkStoreTarget, ExtractedBirthmarkSpi>();
+ private Map<BirthmarkStoreTarget, ExtractedBirthmarkService> targets = new HashMap<BirthmarkStoreTarget, ExtractedBirthmarkService>();
private BirthmarkEnvironment env;
public ExtractedBirthmarkServiceManager(BirthmarkEnvironment env){
bst = BirthmarkStoreTarget.XMLFILE;
}
- ExtractedBirthmarkSpi service = findService(bst);
+ ExtractedBirthmarkService service = findService(bst);
return service.createResultSet(context);
}
BirthmarkStoreTarget bst = BirthmarkStoreTarget.valueOf(type);
String path = id.substring(index + 1);
- ExtractedBirthmarkSpi service = findService(bst);
+ ExtractedBirthmarkService service = findService(bst);
if(service != null){
history = service.getHistory(path);
}
return values.toArray(new String[values.size()]);
}
- private synchronized ExtractedBirthmarkSpi findService(BirthmarkStoreTarget bst){
- ExtractedBirthmarkSpi spi = targets.get(bst);
+ private synchronized ExtractedBirthmarkService findService(BirthmarkStoreTarget bst){
+ ExtractedBirthmarkService spi = targets.get(bst);
if(spi == null){
refreshService();
}
}
private synchronized void refreshService(){
- for(Iterator<ExtractedBirthmarkSpi> i = env.lookupProviders(ExtractedBirthmarkSpi.class); i.hasNext(); ){
- ExtractedBirthmarkSpi service = i.next();
+ for(Iterator<ExtractedBirthmarkService> i = env.lookupProviders(ExtractedBirthmarkService.class); i.hasNext(); ){
+ ExtractedBirthmarkService service = i.next();
targets.put(service.getTarget(), service);
}
}
package jp.sourceforge.stigmata.result.history;
-/*
- * $Id$
- */
-
import java.sql.SQLException;
import java.util.Iterator;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class RDBExtractedBirthmarkHistory implements ExtractedBirthmarkHistory{
private DataSource source;
package jp.sourceforge.stigmata.result.history;
-/*
- * $Id$
- */
-
import java.io.File;
import java.util.Iterator;
import java.util.LinkedHashMap;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class XmlFileExtractedBirthmarkHistory implements ExtractedBirthmarkHistory{
private File parent;
+++ /dev/null
-package jp.sourceforge.stigmata.spi;
-
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
-/**
- * Base abstract class for birthmark SPI.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public abstract class AbstractServiceProvider implements ServiceProvider{
-
- /**
- * returning implementation vendor name of this SPI.
- */
- @Override
- public String getDescription(){
- return getDescription(Locale.getDefault());
- }
-
- /**
- * returning implementation vendor name of this SPI.
- */
- @Override
- public String getVendorName(){
- return getClass().getPackage().getImplementationVendor();
- }
-
- /**
- * returning version of this SPI.
- */
- @Override
- public String getVersion(){
- return getClass().getPackage().getImplementationVersion();
- }
-
-}
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
import jp.sourceforge.stigmata.BirthmarkComparator;
/**
* Service provider interface for comparing birthmarks.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-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.
*/
- public BirthmarkComparator getComparator(BirthmarkSpi service);
+ public BirthmarkComparator getComparator(BirthmarkService service);
}
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
import jp.sourceforge.stigmata.BirthmarkExtractor;
/**
* Service provider interface for extracting birhtmark from given class files.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-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.
*/
- public BirthmarkExtractor getExtractor(BirthmarkSpi service);
+ public BirthmarkExtractor getExtractor(BirthmarkService service);
}
--- /dev/null
+package jp.sourceforge.stigmata.spi;
+
+import jp.sourceforge.stigmata.BirthmarkComparator;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;
+
+/**
+ * Birthmark service provider interface.
+ *
+ * @author Haruaki TAMADA
+ */
+public interface BirthmarkService{
+ /**
+ * returns a type of the birthmark this service provides.
+ */
+ public String getType();
+
+ /**
+ * returns a description of the birthmark this service provides.
+ */
+ public String getDescription();
+
+ public BirthmarkPreprocessor getPreprocessor();
+
+ /**
+ * returns a extractor for the birthmark of this service.
+ */
+ public BirthmarkExtractor getExtractor();
+
+ /**
+ * returns a comparator for the birthmark of this service.
+ */
+ public BirthmarkComparator getComparator();
+
+ public boolean isExperimental();
+
+ public boolean isUserDefined();
+}
+
+++ /dev/null
-package jp.sourceforge.stigmata.spi;
-
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
-import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkComparator;
-import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkExtractor;
-import jp.sourceforge.stigmata.BirthmarkPreprocessor;
-
-/**
- * Birthmark service provider interface.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public interface BirthmarkSpi extends ServiceProvider{
- /**
- * returns a type of the birthmark this service provides.
- */
- public String getType();
-
- /**
- * returns a type of the birthmark for display.
- */
- public String getDisplayType(Locale locale);
-
- /**
- * returns a type of the birthmark for display in default locale.
- */
- public String getDisplayType();
-
- /**
- * returns a description of the birthmark this service provides.
- */
- public String getDefaultDescription();
-
- /**
- * returns a localized description of the birthmark this service provides.
- */
- @Override
- public String getDescription(Locale locale);
-
- /**
- * returns a localized description of the birthmark in default locale.
- */
- @Override
- public String getDescription();
-
- public String getExtractorClassName();
-
- public Birthmark buildBirthmark();
-
- public BirthmarkElement buildBirthmarkElement(String elementValue);
-
- public BirthmarkPreprocessor getPreprocessor();
-
- public String getPreprocessorClassName();
-
- /**
- * returns a extractor for the birthmark of this service.
- */
- public BirthmarkExtractor getExtractor();
-
- public String getComparatorClassName();
-
- /**
- * returns a comparator for the birthmark of this service.
- */
- public BirthmarkComparator getComparator();
-
- public boolean isExperimental();
-
- public boolean isUserDefined();
-
-}
-
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
/**
* Service provider interface for filtering comparison pair.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-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();
}
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkStoreTarget;
import jp.sourceforge.stigmata.ExtractionResultSet;
* This service provider interface manages extracted birthmark histories.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
-public interface ExtractedBirthmarkSpi{
+public interface ExtractedBirthmarkService{
/**
* finds and returns history from given parameter.
* @param parameter search base.
public ExtractionResultSet createResultSet(BirthmarkContext context);
public BirthmarkStoreTarget getTarget();
+
+ public String getType();
+
+ public String getDescription();
}
--- /dev/null
+package jp.sourceforge.stigmata.spi;\r
+\r
+import java.io.Serializable;\r
+import java.lang.reflect.Constructor;\r
+\r
+import jp.sourceforge.stigmata.BirthmarkComparator;\r
+import jp.sourceforge.stigmata.BirthmarkExtractor;\r
+import jp.sourceforge.stigmata.BirthmarkPreprocessor;\r
+\r
+public class ReflectedBirthmarkService implements BirthmarkService, Serializable{\r
+ private static final long serialVersionUID = 4090172591560046236L;\r
+\r
+ private String type;\r
+ private String description;\r
+ private String extractorClass;\r
+ private String comparatorClass;\r
+ private String preprocessorClass;\r
+\r
+ private transient BirthmarkExtractor extractor;\r
+ private transient BirthmarkComparator comparator;\r
+ private transient BirthmarkPreprocessor preprocessor;\r
+\r
+ public ReflectedBirthmarkService(String type, String description,\r
+ String extractorClass, String comparatorClass){\r
+ this(type, description, extractorClass, comparatorClass, null);\r
+ }\r
+\r
+ public String toString(){\r
+ return String.format("%s, extractor=%s, comparator=%s", type, extractorClass, comparatorClass);\r
+ }\r
+\r
+ /**\r
+ * \r
+ * @param type\r
+ * @param description\r
+ * @param extractorClass\r
+ * @param comparatorClass\r
+ * @param preprocessorClass\r
+ * @throws NullPointerException one of type, extractorClass, and comparatorClass is null. \r
+ */\r
+ public ReflectedBirthmarkService(String type, String description,\r
+ String extractorClass, String comparatorClass, String preprocessorClass){\r
+ if(type == null || extractorClass == null || comparatorClass == null){\r
+ throw new NullPointerException();\r
+ }\r
+ this.type = type;\r
+ this.description = description;\r
+ this.extractorClass = extractorClass;\r
+ this.comparatorClass = comparatorClass;\r
+ this.preprocessorClass = preprocessorClass;\r
+ }\r
+\r
+ @Override\r
+ public String getType(){\r
+ return type;\r
+ }\r
+\r
+ @Override\r
+ public String getDescription(){\r
+ return description;\r
+ }\r
+\r
+ @Override\r
+ public synchronized BirthmarkPreprocessor getPreprocessor(){\r
+ if(preprocessor == null && preprocessorClass != null){\r
+ preprocessor = instantiateClass(preprocessorClass, BirthmarkPreprocessor.class);\r
+ }\r
+ return preprocessor;\r
+ }\r
+\r
+ private <T> T instantiateClass(String name, Class<T> type){\r
+ try{\r
+ Class<? extends T> targetClass = Class.forName(name).asSubclass(type);\r
+ Constructor<? extends T> constructor = targetClass.getConstructor(BirthmarkService.class);\r
+ return constructor.newInstance(this);\r
+ } catch(Exception e){\r
+ e.printStackTrace();\r
+ }\r
+ return null;\r
+ }\r
+\r
+ public String getExtractorClassName(){\r
+ return extractorClass;\r
+ }\r
+\r
+ @Override\r
+ public BirthmarkExtractor getExtractor(){\r
+ if(extractor == null){\r
+ extractor = instantiateClass(extractorClass, BirthmarkExtractor.class);\r
+ }\r
+ return extractor;\r
+ }\r
+\r
+ public String getComparatorClassName(){\r
+ return comparatorClass;\r
+ }\r
+\r
+ @Override\r
+ public synchronized BirthmarkComparator getComparator(){\r
+ if(comparator == null){\r
+ comparator = instantiateClass(comparatorClass, BirthmarkComparator.class);\r
+ }\r
+ return comparator;\r
+ }\r
+\r
+ @Override\r
+ public boolean isExperimental(){\r
+ return true;\r
+ }\r
+\r
+ @Override\r
+ public boolean isUserDefined(){\r
+ return true;\r
+ }\r
+\r
+}\r
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
import jp.sourceforge.stigmata.printer.ComparisonPairPrinter;
import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
* result to certain output stream.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
-public interface ResultPrinterSpi extends ServiceProvider{
+public interface ResultPrinterService{
/**
* return a format.
*/
public String getFormat();
+ public String getDescription();
+
public BirthmarkServicePrinter getBirthmarkServicePrinter();
public ComparisonResultSetPrinter getComparisonResultSetPrinter();
+++ /dev/null
-package jp.sourceforge.stigmata.spi;
-
-/*
- * $Id$
- */
-
-import java.util.Locale;
-
-/**
- * Base interface for birthmark SPI.
- *
- * @author Haruaki TAMADA
- * @version $Revision$
- */
-public interface ServiceProvider{
- public String getDescription(Locale locale);
-
- public String getDescription();
-
- public String getVendorName();
-
- public String getVersion();
-}
package jp.sourceforge.stigmata.spi;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.hook.StigmataHook;
import jp.sourceforge.stigmata.hook.StigmataRuntimeHook;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
-public interface StigmataHookSpi{
+public interface StigmataHookService{
+ public String getType();
+
+ public String getDescription();
+
public StigmataHook onSetup();
public StigmataHook onTearDown();
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import javax.swing.event.ListSelectionListener;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
-import jp.sourceforge.stigmata.spi.BirthmarkComparatorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkExtractorSpi;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkDefinitionPane extends JPanel{
private static final long serialVersionUID = 3932637653297802978L;
private JList serviceList;
private JButton newService;
private JButton removeService;
- private List<BirthmarkSpi> addedService = new ArrayList<BirthmarkSpi>();
+ private List<BirthmarkService> addedService = new ArrayList<BirthmarkService>();
private List<BirthmarkServiceListener> listeners = new ArrayList<BirthmarkServiceListener>();
public BirthmarkDefinitionPane(StigmataFrame stigmata){
}
public void reset(){
- for(BirthmarkSpi service: addedService){
+ for(BirthmarkService service: addedService){
model.removeElement(service);
}
}
public void updateEnvironment(BirthmarkEnvironment environment){
- for(BirthmarkSpi service: addedService){
+ for(BirthmarkService service: addedService){
if(environment.getService(service.getType()) == null){
- if(service instanceof BirthmarkService){
- ((BirthmarkService)service).setBirthmarkEnvironment(environment);
- }
environment.addService(service);
}
}
information.initData();
model.addElement(stigmata.getMessages().get("newservice.definition.label"));
- for(BirthmarkSpi service: stigmata.getEnvironment().findServices()){
+ for(BirthmarkService service: stigmata.getEnvironment().findServices()){
model.addElement(service);
}
}
private void removeService(){
int index = serviceList.getSelectedIndex();
if(index > 0){
- BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index);
+ BirthmarkService service = (BirthmarkService)model.getElementAt(index);
if(service != null && service.isUserDefined()){
model.remove(index);
for(BirthmarkServiceListener listener: listeners){
private void listValueChanged(ListSelectionEvent e){
int index = serviceList.getSelectedIndex();
if(index > 0){
- BirthmarkSpi service = (BirthmarkSpi)model.getElementAt(index);
+ BirthmarkService service = (BirthmarkService)model.getElementAt(index);
if(service != null){
information.setService(service);
}
private void updateView(){
int index = serviceList.getSelectedIndex();
ListModel model = serviceList.getModel();
- BirthmarkSpi service = null;
+ BirthmarkService service = null;
if(index > 0){
- service = (BirthmarkSpi)model.getElementAt(index);
+ service = (BirthmarkService)model.getElementAt(index);
}
newService.setEnabled(
(index <= 0 || service.isUserDefined()) &&
}
private boolean isAvailableServiceName(String name){
- for(BirthmarkSpi service: addedService){
+ for(BirthmarkService service: addedService){
if(service.getType().equals(name)){
return false;
}
private StigmataFrame stigmata;
private BirthmarkDefinitionPane thisPane;
private JTextField type;
- private JTextField displayType;
private JTextArea description;
private JComboBox extractor;
private JComboBox comparator;
super.setEnabled(flag);
type.setEnabled(flag);
- displayType.setEnabled(flag);
description.setEnabled(flag);
extractor.setEnabled(flag);
comparator.setEnabled(flag);
}
public BirthmarkService createService(){
- BirthmarkService service = new BirthmarkService();
- service.setType(type.getText());
- service.setDisplayType(displayType.getText());
- service.setDescription(description.getText());
- service.setExtractorClassName(extractor.getSelectedItem().toString());
- service.setComparatorClassName(comparator.getSelectedItem().toString());
- service.setUserDefined(true);
+ BirthmarkService service = new ReflectedBirthmarkService(
+ type.getText(), description.getText(),
+ extractor.getSelectedItem().toString(),
+ comparator.getSelectedItem().toString()
+ );
return service;
}
public void clear(){
type.setText("");
- displayType.setText("");
description.setText("");
extractor.getModel().setSelectedItem(null);
comparator.getModel().setSelectedItem(null);
BirthmarkEnvironment environment = stigmata.getEnvironment();
boolean flag = newType.length() > 0
- && displayType.getText().length() > 0
&& extractorClass.length() > 0
&& comparatorClass.length() > 0;
return flag;
}
- public void setService(BirthmarkSpi service){
+ public void setService(BirthmarkService service){
type.setText(service.getType());
- displayType.setText(service.getDisplayType());
- description.setText(service.getDefaultDescription());
- selectComboBoxItem(extractor, service.getExtractorClassName());
- selectComboBoxItem(comparator, service.getComparatorClassName());
+ description.setText(service.getDescription());
+ selectComboBoxItem(extractor, service.getExtractor().getClass().getName());
+ selectComboBoxItem(comparator, service.getComparator().getClass().getName());
userDefined.setSelected(service.isUserDefined());
experimental.setSelected(service.isExperimental());
public void initData(){
comparator.addItem("");
- for(Iterator<BirthmarkComparatorSpi> i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorSpi.class); i.hasNext();){
- BirthmarkComparatorSpi service = i.next();
- comparator.addItem(service.getComparatorClassName());
+ for(Iterator<BirthmarkComparatorService> i = stigmata.getEnvironment().lookupProviders(BirthmarkComparatorService.class); i.hasNext();){
+ BirthmarkComparatorService service = i.next();
+ comparator.addItem(service.getType());
+ // TODO: 比較器の名前を引っ張る方法を考える.
}
extractor.addItem("");
- for(Iterator<BirthmarkExtractorSpi> i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorSpi.class); i.hasNext();){
- BirthmarkExtractorSpi service = i.next();
- extractor.addItem(service.getExtractorClassName());
+ for(Iterator<BirthmarkExtractorService> i = stigmata.getEnvironment().lookupProviders(BirthmarkExtractorService.class); i.hasNext();){
+ BirthmarkExtractorService service = i.next();
+ extractor.addItem(service.getType());
+ // TODO: 考える.
}
}
private void initLayouts(){
Messages messages = stigmata.getMessages();
type = new JTextField();
- displayType = new JTextField();
extractor = new JComboBox();
comparator = new JComboBox();
experimental = new JCheckBox(messages.get("define.experimental.label"));
description = new JTextArea();
JScrollPane scroll = new JScrollPane(description);
type.setColumns(10);
- displayType.setColumns(20);
description.setColumns(40);
description.setRows(10);
JPanel typePane = new JPanel(new BorderLayout());
JPanel displayTypePane = new JPanel(new BorderLayout());
typePane.add(type, BorderLayout.CENTER);
- displayTypePane.add(displayType, BorderLayout.CENTER);
JPanel box1 = new JPanel(new BorderLayout());
box1.add(typePane, BorderLayout.WEST);
};
type.getDocument().addDocumentListener(listener);
- displayType.getDocument().addDocumentListener(listener);
description.getDocument().addDocumentListener(listener);
ItemListener itemListener = new ItemListener(){
@Override
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.io.PrintWriter;
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;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkExtractionResultPane extends JPanel{
private static final long serialVersionUID = 239084365756236543L;
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();
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import javax.swing.JPanel;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import jp.sourceforge.talisman.i18n.Messages;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class BirthmarkSelectablePane extends JPanel implements BirthmarkServiceListener{
private static final long serialVersionUID = 7057130952947891635L;
return selectedServices.toArray(new String[selectedServices.size()]);
}
- public BirthmarkSpi getService(String type){
+ public BirthmarkService getService(String type){
BirthmarkSelection elem = services.get(type);
if(elem != null){
return elem.getService();
String[] serviceArray = new String[services.size()];
int index = 0;
for(String key: services.keySet()){
- BirthmarkSpi service = services.get(key).getService();
+ BirthmarkService service = services.get(key).getService();
serviceArray[index] = service.getType();
index++;
}
fireEvent();
}
- public void select(BirthmarkSpi service, boolean flag){
+ public void select(BirthmarkService service, boolean flag){
select(service.getType(), flag);
}
}
@Override
- public void serviceAdded(BirthmarkSpi service){
+ public void serviceAdded(BirthmarkService service){
if(services.get(service.getType()) == null){
BirthmarkSelection elem = new BirthmarkSelection(service);
selectedServices.add(service.getType());
}
@Override
- public void serviceRemoved(BirthmarkSpi service){
+ public void serviceRemoved(BirthmarkService service){
BirthmarkSelection elem = services.get(service);
if(elem != null){
selectedServices.remove(service);
}
private void initServices(){
- BirthmarkSpi[] serviceArray = stigmata.getEnvironment().getServices();
+ BirthmarkService[] serviceArray = stigmata.getEnvironment().getServices();
services = new LinkedHashMap<String, BirthmarkSelection>();
- for(BirthmarkSpi service: serviceArray){
+ for(BirthmarkService service: serviceArray){
BirthmarkSelection elem = new BirthmarkSelection(service);
services.put(service.getType(), elem);
}
package jp.sourceforge.stigmata.ui.swing;
-/**
- * $Id$
- */
-
import java.io.Serializable;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
class BirthmarkSelection implements Serializable{
private static final long serialVersionUID = -3244323970546344L;
- private BirthmarkSpi service;
+ private BirthmarkService service;
private boolean selected = true;
- public BirthmarkSelection(BirthmarkSpi service){
+ public BirthmarkSelection(BirthmarkService service){
this.service = service;
}
- public BirthmarkSpi getService(){
+ public BirthmarkService getService(){
return service;
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{
private static final long serialVersionUID = 3209854654743223453L;
for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){
final BirthmarkSelection elem = i.next();
if(elem.isVisible(isExperimentalMode())){
- JCheckBox check = new JCheckBox(elem.getService().getDisplayType());
+ JCheckBox check = new JCheckBox(elem.getService().getType());
check.setSelected(elem.isSelected());
check.addActionListener(new ActionListener(){
@Override
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{
private static final long serialVersionUID = 3209854654743223453L;
}
@Override
- public void serviceRemoved(BirthmarkSpi service){
+ public void serviceRemoved(BirthmarkService service){
BirthmarkSelection elem = getSelection(service.getType());
model.removeElement(elem);
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean forcus){
BirthmarkSelection elem = (BirthmarkSelection)value;
- setText(elem.getService().getDisplayType());
+ setText(elem.getService().getType());
setToolTipText(elem.getService().getDescription());
setSelected(elem.isSelected());
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkServiceListCellRenderer extends JPanel implements ListCellRenderer{
private static final long serialVersionUID = 3254763527508235L;
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus){
- if(value instanceof BirthmarkSpi){
- BirthmarkSpi service = (BirthmarkSpi)value;
- leftLabel.setText(service.getDisplayType());
+ if(value instanceof BirthmarkService){
+ BirthmarkService service = (BirthmarkService)value;
+ leftLabel.setText(service.getType());
rightLabel.setText("(" + service.getType() + ")");
}
else{
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface BirthmarkServiceListener{
- public void serviceAdded(BirthmarkSpi service);
+ public void serviceAdded(BirthmarkService service);
- public void serviceRemoved(BirthmarkSpi service);
+ public void serviceRemoved(BirthmarkService service);
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.List;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkTree extends JTree{
private static final long serialVersionUID = 68345692177534765L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import javax.swing.tree.DefaultMutableTreeNode;
import jp.sourceforge.stigmata.Birthmark;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkTreeNode extends DefaultMutableTreeNode{
private static final long serialVersionUID = -12323457653245L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ClassNameObfuscator{
private Map<String, String> nameMapping = new HashMap<String, String>();
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ClasspathSettingsPane extends JPanel{
private static final long serialVersionUID = 320973463423634L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
* http://terai.xrea.jp/Swing/ClippedLRComboBox.html
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ClippedLRListCellRenderer extends JPanel implements ListCellRenderer{
private static final long serialVersionUID = 32943674625674235L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.Color;
import java.awt.Component;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class CompareTableCellRenderer extends DefaultTableCellRenderer{
private static final long serialVersionUID = 234557758658567345L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ControlPane extends JPanel{
private static final long serialVersionUID = 983547612346543645L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.util.EventListener;
/**
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface DataChangeListener extends EventListener{
public void valueChanged(Object source);
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.io.File;
import java.util.ArrayList;
import java.util.List;
* File filter by file extension.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ExtensionFilter extends FileFilter implements java.io.FileFilter{
private List<String> extensions = new ArrayList<String>();
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
* Birthmark extraction history viewer.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ExtractedHistoryPane extends JPanel{
private static final long serialVersionUID = 4070750464486981964L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.Component;
import java.io.File;
import java.text.MessageFormat;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FileIOManager{
private Component parent;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FilterManagementPane extends JPanel implements ComparisonPairFilterRetainable{
private static final long serialVersionUID = 972135792354L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.MouseAdapter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FilterSelectionPane extends JPanel implements ComparisonPairFilterRetainable{
private static final long serialVersionUID = 1825547576389498336L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
* Utility routines for building GUI.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class GUIUtility{
private GUIUtility(){
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class PairComparisonPane extends JPanel{
private static final long serialVersionUID = 2342856785474356234L;
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();
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
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;
*
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class PairComparisonResultSetPane extends JPanel{
private static final long serialVersionUID = 3298346465652354302L;
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();
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
* Popup button.
*
* @author tamada
- * @version $Revision$
*/
public class PopupButton extends JPanel{
private static final long serialVersionUID = -4428839967597028837L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class PropertyEditPane extends JPanel{
private static final long serialVersionUID = 12397342543653L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.GridLayout;
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class RoundRobinComparisonResultPane extends JPanel{
private static final long serialVersionUID = 2134574576543623L;
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();
}
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class StigmataFrame extends JFrame{
private static final long serialVersionUID = 92345543665342134L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TargetSelectionPane extends JPanel{
private static final long serialVersionUID = 3209435745432235432L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Map;
*
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class UneditableDefaultTableModel extends DefaultTableModel{
private static final long serialVersionUID = -7483377914997660949L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class UnsupportedFormatException extends Exception{
private static final long serialVersionUID = 8165384564671102575L;
package jp.sourceforge.stigmata.ui.swing;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
* Well-known classes judge rules management pane.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class WellknownClassesSettingsPane extends JPanel{
private static final long serialVersionUID = 329734546345634532L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import javax.swing.JLabel;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class AboutAction extends ShowTextAction{
private static final long serialVersionUID = -7060581883871662749L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ChangeColorAction extends AbstractAction{
private static final long serialVersionUID = -7617597154707466764L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ui.swing.GUIUtility;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class LicenseAction extends ShowTextAction{
private static final long serialVersionUID = 7727665273988881423L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.Desktop;
import java.net.URL;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
class LinkFollower implements HyperlinkListener{
@Override
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.Component;
import java.awt.Desktop;
import java.awt.event.ActionEvent;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class OpenSettingDirAction extends AbstractAction{
private static final long serialVersionUID = -8347328823893358927L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.event.ActionEvent;
import java.io.BufferedOutputStream;
import java.io.File;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SaveAction extends AbstractAction{
private static final long serialVersionUID = 1427912047636729211L;
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
abstract class ShowTextAction extends AbstractAction{
private static final long serialVersionUID = 7341139545864209076L;
protected String loadStringFromFile(URL url){
try{
String line;
- BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
+ BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8"));
StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
while((line = in.readLine()) != null){
package jp.sourceforge.stigmata.ui.swing.actions;
-/*
- * $Id$
- */
-
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class UpdateBirthmarkCellColorAction extends AbstractAction{
private static final long serialVersionUID = 2390797591047570440L;
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.util.Locale;
import jp.sourceforge.stigmata.utils.LocalizedDescriptionManager;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class AbstractComparisonPairFilterComponentService implements ComparisonPairFilterComponentService{
@Override
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.ArrayList;
import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilter;
import jp.sourceforge.stigmata.filter.BirthmarkElementCountComparisonPairFilterService;
import jp.sourceforge.stigmata.filter.FilterTarget;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class BirthmarkElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService implements BirthmarkServiceListener{
private Pane pane;
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
pane = new Pane(frame, service);
return pane;
}
}
@Override
- public void serviceAdded(BirthmarkSpi service){
+ public void serviceAdded(BirthmarkService service){
pane.serviceAdded(service);
}
@Override
- public void serviceRemoved(BirthmarkSpi service){
+ public void serviceRemoved(BirthmarkService service){
pane.serviceRemoved(service);
}
@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();
}
@Override
- public void serviceAdded(BirthmarkSpi service){
+ public void serviceAdded(BirthmarkService service){
birthmarks.addItem(service);
}
@Override
- public void serviceRemoved(BirthmarkSpi service){
+ public void serviceRemoved(BirthmarkService service){
birthmarks.removeItem(service);
}
}
private String getBirthmarkType(){
- BirthmarkSpi service = (BirthmarkSpi)birthmarks.getSelectedItem();
+ BirthmarkService service = (BirthmarkService)birthmarks.getSelectedItem();
if(service != null){
return service.getType();
}
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.util.Locale;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.ComparisonPairFilterService;
import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonPairFilterComponentService{
public String getDisplayFilterName(Locale locale);
public String getFilterName();
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service);
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service);
- public ComparisonPairFilterSpi getComparisonPairFilterService();
+ public ComparisonPairFilterService getComparisonPairFilterService();
}
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonPairFilterListener{
public void filterAdded(ComparisonPairFilter filter);
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Map;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public abstract class ComparisonPairFilterPane extends JPanel{
private static final long serialVersionUID = -5201125568912008141L;
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface ComparisonPairFilterRetainable{
public void filterSelected(ComparisonPairFilter filter);
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import javax.swing.JPanel;
import jp.sourceforge.stigmata.ComparisonPairFilter;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
-import jp.sourceforge.stigmata.spi.ComparisonPairFilterSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FilterEditingPane extends JPanel{
private static final long serialVersionUID = -2607954525579006086L;
resetOldComponent();
this.filter = filter;
if(filter != null && filter.getService() != null){
- ComparisonPairFilterSpi service = filter.getService();
- String name = service.getDisplayFilterName();
+ ComparisonPairFilterService service = filter.getService();
+ String name = service.getFilterName();
combo.setSelectedItem(name);
card.show(cardComponent, name);
private void resetOldComponent(){
if(filter != null){
- paneMap.get(filter.getService().getDisplayFilterName()).resetComponents();
+ paneMap.get(filter.getService().getFilterName()).resetComponents();
}
}
ComparisonPairFilterPane pane = service.createComponent(stigmata, service.getComparisonPairFilterService());
if(pane instanceof BirthmarkServiceListener){
- for(BirthmarkSpi bs: stigmata.getEnvironment().getServices()){
+ for(BirthmarkService bs: stigmata.getEnvironment().getServices()){
((BirthmarkServiceListener)pane).serviceAdded(bs);
}
stigmata.addBirthmarkServiceListener((BirthmarkServiceListener)pane);
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);
}
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class FilterSetDefinitionPane extends JPanel implements ComparisonPairFilterListener{
private static final long serialVersionUID = 7519306603672717119L;
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
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;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SimilarityComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new SimilarityComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField threshold;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
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;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TargetNameComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new TargetNameComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField value;
private JComboBox targetType;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
package jp.sourceforge.stigmata.ui.swing.filter;
-/*
- * $Id$
- */
-
import java.awt.GridLayout;
import java.util.ArrayList;
import java.util.List;
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;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class TotalElementCountComparisonPairFilterComponentService extends AbstractComparisonPairFilterComponentService{
@Override
- public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public ComparisonPairFilterPane createComponent(StigmataFrame frame, ComparisonPairFilterService service){
return new Pane(frame, service);
}
}
@Override
- public ComparisonPairFilterSpi getComparisonPairFilterService(){
+ public ComparisonPairFilterService getComparisonPairFilterService(){
return new TotalElementCountComparisonPairFilterService();
}
private static class Pane extends ComparisonPairFilterPane{
private static final long serialVersionUID = 8912037614500713027L;
- private ComparisonPairFilterSpi service;
+ private ComparisonPairFilterService service;
private JComboBox criterionType;
private JTextField threshold;
private JComboBox targetType;
- public Pane(StigmataFrame frame, ComparisonPairFilterSpi service){
+ public Pane(StigmataFrame frame, ComparisonPairFilterService service){
super(frame);
this.service = service;
initLayouts();
package jp.sourceforge.stigmata.ui.swing.graph;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class SimilarityDistributionGraphPane extends JPanel{
private static final long serialVersionUID = 2314463453465L;
package jp.sourceforge.stigmata.ui.swing.mds;
-/*
- * $Id$
- */
import java.util.ArrayList;
import java.util.Collections;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
class LabelMap{
private List<String> labels = new ArrayList<String>();
package jp.sourceforge.stigmata.ui.swing.mds;
-/*
- * $Id$
- */
-
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class MdsImageExporter implements BinaryDataWritable{
private MdsPane viewer;
package jp.sourceforge.stigmata.ui.swing.mds;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.PrintWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class MdsItemsLocationExporter implements AsciiDataWritable{
private MdsPane viewer;
package jp.sourceforge.stigmata.ui.swing.mds;
-/*
- * $Id$
- */
-
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class MdsViewerPane extends JPanel implements ZoomEnabler, MessageManager{
private static final long serialVersionUID = -7256554014379112897L;
package jp.sourceforge.stigmata.ui.swing.mds;
-/*
- * $Id$
- */
-
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class OpenItemsAction extends AbstractAction{
private static final long serialVersionUID = 5956900396146338537L;
package jp.sourceforge.stigmata.ui.swing.tab;
-/*
- * $Id$
- */
-
import java.awt.LayoutManager;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
*
* @author Haruaki Tamada
* @author Terai Atsuhiro
- * @version $Revision$
*/
class EditableGlassPane extends JPanel{
private static final long serialVersionUID = 9009103705988625476L;
package jp.sourceforge.stigmata.ui.swing.tab;
-/*
- * $Id$
- */
-
import java.awt.FocusTraversalPolicy;
import java.awt.Rectangle;
import java.awt.event.FocusAdapter;
*
* @author Haruaki Tamada
* @author Terai Atsuhiro
- * @version $Revision$
*/
public class EditableTabbedPane extends JTabbedPane{
private static final long serialVersionUID = -66174062280771547L;
package jp.sourceforge.stigmata.ui.swing.tab;
-/*
- * $Id$
- */
-
import java.awt.Component;
import java.awt.Container;
import java.awt.FocusTraversalPolicy;
*
* @author Haruaki Tamada
* @author Terai Atsuhiro
- * @version $Revision$
*/
class EditableTabbedPaneFocusTraversalPolicy extends FocusTraversalPolicy{
private JTextField editor;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.util.Iterator;
/**
*
* @author Haruaki Tamada
- * @version $Revission$
*/
public class ArrayIterator<T> implements Iterator<T>{
private T[] values;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.PrintWriter;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public interface AsciiDataWritable{
public void writeAsciiData(PrintWriter out, String format) throws IOException, UnsupportedFormatException;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.OutputStream;
/**
* @author Haruaki Tamada
- * @version $Revision$
*/
public interface BinaryDataWritable{
public void writeBinaryData(OutputStream out, String format) throws IOException, UnsupportedFormatException;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import jp.sourceforge.stigmata.BirthmarkEnvironment;
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
import org.apache.commons.beanutils.BeanUtils;
* Export birthmark environment to xml file.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ConfigFileExporter{
private BirthmarkEnvironment environment;
}
public void export(PrintWriter out) throws IOException{
- out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
- out.println("<stigmata>");
+ try{
+ out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
+ out.println("<stigmata>");
- exportServices(out);
- exportFilters(out);
- exportWellknownClasses(out);
- exportClasspath(out);
- exportProperties(out);
+ exportServices(out);
+ exportFilters(out);
+ exportWellknownClasses(out);
+ exportClasspath(out);
+ exportProperties(out);
- out.println("</stigmata>");
- out.flush();
+ out.println("</stigmata>");
+ out.flush();
+ } finally{
+ out.close();
+ }
}
private void exportProperties(PrintWriter out) throws IOException{
private void exportServices(PrintWriter out) throws IOException{
out.println(" <birthmark-services>");
- for(BirthmarkSpi service: environment.getServices()){
+ for(BirthmarkService service: environment.getServices()){
if(service.isExperimental() && service instanceof BirthmarkService){
out.println(" <birthmark-service>");
out.printf(" <type>%s</type>%n", service.getType());
- out.printf(" <display-name>%s</display-name>%n", service.getDisplayType());
- out.printf(" <description>%s</description>%n", service.getDescription());
- out.printf(" <extractor>%s</extractor>%n", service.getExtractorClassName());
- out.printf(" <comparator>%s</comparator>%n", service.getComparatorClassName());
+ if(service instanceof ReflectedBirthmarkService){
+ ReflectedBirthmarkService rbs = (ReflectedBirthmarkService)service;
+ out.printf(" <description>%s</description>%n", rbs.getDescription());
+ out.printf(" <extractor>%s</extractor>%n", rbs.getExtractorClassName());
+ out.printf(" <comparator>%s</comparator>%n", rbs.getComparatorClassName());
+ }
out.println(" </birthmark-service>");
}
}
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import jp.sourceforge.stigmata.ComparisonPairFilter;
import jp.sourceforge.stigmata.ComparisonPairFilterSet;
import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.birthmarks.BirthmarkService;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
+import jp.sourceforge.stigmata.spi.ReflectedBirthmarkService;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
* configuration file parser.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class ConfigFileImporter{
private BirthmarkEnvironment environment;
private static class Handler extends DefaultHandler{
private BirthmarkEnvironment environment;
private WellknownClassManager manager;
- private BirthmarkService service;
+ private Map<String, String> serviceMap;
private ComparisonPairFilterSet filter;
private Part part;
private boolean exclude;
}
else if(qname.equals("birthmark-service")){
part = Part.SERVICES;
- service = new BirthmarkService();
- service.setUserDefined(false);
}
else if(qname.equals("filterset-list")){
part = Part.FILTER_SET;
}
else if(part == Part.CLASSPATH && qname.equals("classpath")){
try{
- environment.getClasspathContext().addClasspath(
- new URL(value));
+ environment.getClasspathContext().addClasspath(new URL(value));
}catch(MalformedURLException e){
throw new SAXException(e);
}
}
else if(part == Part.SERVICES){
- if(qname.equals("type"))
- service.setType(value);
- else if(qname.equals("display-name"))
- service.setDisplayType(value);
- else if(qname.equals("description"))
- service.setDescription(value);
- else if(qname.equals("extractor"))
- service.setExtractorClassName(value);
- else if(qname.equals("comparator"))
- service.setComparatorClassName(value);
+ if(serviceMap == null){
+ serviceMap = new HashMap<String, String>();
+ }
+ serviceMap.put(qname, value);
}
else if(part == Part.FILTER_SET){
if(qname.equals("name")){
@Override
public void endElement(String uri, String localname, String qname){
if(part == Part.SERVICES && qname.equals("birthmark-service")){
+ BirthmarkService service = new ReflectedBirthmarkService(
+ serviceMap.get("type"),
+ serviceMap.get("description"),
+ serviceMap.get("extractor"),
+ serviceMap.get("comparator")
+ );
environment.addService(service);
- service = null;
}
else if(part == Part.FILTER_DEFINITION && qname.equals("filter")){
ComparisonPairFilter f = environment.getFilterManager().buildFilter(
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.io.Serializable;
/**
* This class represents a fully class name.
*
* @author Haruaki Tamada
- * @version $Revision$
*/
class FullyClassName implements Serializable{
private static final long serialVersionUID = 1911603124143509407L;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class HermesUtility{
private HermesContext context;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
/**
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class LocalizedDescriptionManager{
public static enum ServiceCategory{
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class MultipleIterator<T> implements Iterator<T>{
private List<Iterator<T>> iterators = new ArrayList<Iterator<T>>();
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class NullIterator<T> implements Iterator<T>{
@Override
if(flag){
try{
JarFile jarfile = new JarFile(pluginFile);
- JarEntry entry = jarfile.getJarEntry("META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkSpi");
+ JarEntry entry = jarfile.getJarEntry("META-INF/services/jp.sourceforge.stigmata.spi.BirthmarkService");
if(entry == null){
messages.add("install.error.servicedescriptor.missing");
flag = false;
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
/**
* A rule for checking wellknown class or not.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public final class WellknownClassJudgeRule{
public enum MatchType{
package jp.sourceforge.stigmata.utils;
-/*
- * $Id$
- */
-
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
* Managing wellknown class checking rule.
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class WellknownClassManager implements Iterable<WellknownClassJudgeRule>{
private List<WellknownClassJudgeRule> rules = new ArrayList<WellknownClassJudgeRule>();
-<!--\r
- $Id$\r
--->\r
-\r
<!ATTLIST birthmark\r
type NAME #REQUIRED\r
count CDATA #REQUIRED\r
\r
Apache License\r
- Version 2.0\81A2004\94N1\8c\8e\r
+ Version 2.0、2004年1月\r
http://www.apache.org/licenses/\r
\r
-\8eg\97p\81A\95¡\90»\81A\82¨\82æ\82Ñ\94Ð\95z\82É\8aÖ\82·\82é\8fð\8d\80\r
-\r
-1. \92è\8b`\r
-\r
- \81u\83\89\83C\83Z\83\93\83X\81v\82Æ\82Í\81A\82±\82Ì\83h\83L\83\85\83\81\83\93\83g\82Ì\91æ1\8d\80\82©\82ç\91æ9\8d\80\82Ü\82Å\82Å\92è\8b`\82µ\82Ä\82¢\r
- \82é\81A\8eg\97p\81A\95¡\90»\81A\82¨\82æ\82Ñ\94Ð\95z\82É\8aÖ\82·\82é\8fð\8d\80\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\83\89\83C\83Z\83\93\83T\81[\81v\82Æ\82Í\81A\92\98\8dì\8c \8f\8a\97L\8eÒ\81A\82 \82é\82¢\82Í\92\98\8dì\8c \8f\8a\97L\8eÒ\82ª\83\89\83C\83Z\83\93\83X\r
- \95t\97^\91Î\8fÛ\82Æ\82µ\82Ä\94F\82ß\82½\8eÒ\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\96@\90l\81v\82Æ\82Í\81A\8ds\88×\8eÒ\82Æ\81A\8ds\88×\8eÒ\82ð\8aÇ\97\9d\82·\82é\82©\8ds\88×\8eÒ\82É\82æ\82è\8aÇ\97\9d\82³\82ê\82é\82©\8ds\r
- \88×\8eÒ\8b¤\92Ê\82Ì\8aÇ\97\9d\89º\82É\82 \82é\91¼\82Ì\82·\82×\82Ä\82Ì\8eÒ\82Æ\82©\82ç\90¬\82é\98A\8d\87\91Ì\82ð\8ew\82µ\82Ü\82·\81B\82±\82Ì\r
- \92è\8b`\82É\82¨\82¯\82é\81u\8aÇ\97\9d\81v\82Æ\82Í\81A(i) \8c_\96ñ\82Ü\82½\82Í\82»\82Ì\91¼\82É\82æ\82è\81A\92¼\90Ú\82Ü\82½\82Í\8aÔ\90Ú\r
- \93I\82É\82±\82Ì\96@\90l\82Ì\8ew\8aö\81E\8co\89c\82ð\8ds\82¤\8c \8cÀ\81A\82Ü\82½\82Í (ii) \82±\82Ì\96@\90l\82Ì50%\88È\8fã\82Ì\r
- \8a\94\8e®\82Ì\8f\8a\97L\8c \82Ü\82½\82Í (iii) \8eó\89v\8f\8a\97L\8c \82ð\97L\82·\82é\82±\82Æ\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\82 \82È\82½\81v\82Æ\82Í\81A\96{\83\89\83C\83Z\83\93\83X\82É\82æ\82è\95t\97^\82³\82ê\82é\8c \97\98\82ð\8ds\8eg\82·\82é\8cÂ\90l\82Ü\82½\82Í\r
- \96@\90l\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\83\\81[\83X\81v\8c`\8e®\82Æ\82Í\81A\83\\83t\83g\83E\83F\83A\82Ì\83\\81[\83X\83R\81[\83h\81A\83h\83L\83\85\83\81\83\93\83g\83\\81[\83X\81A\r
- \90Ý\92è\83t\83@\83C\83\8b\82Æ\82¢\82Á\82½\81A\95Ï\8dX\82ð\89Á\82¦\82é\82Ì\82É\8dD\93s\8d\87\82È\8c`\8e®\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\83I\83u\83W\83F\83N\83g\81v\8c`\8e®\82Æ\82Í\81A\83R\83\93\83p\83C\83\8b\82³\82ê\82½\83I\83u\83W\83F\83N\83g\83R\81[\83h\81A\90¶\90¬\82³\r
- \82ê\82½\83h\83L\83\85\83\81\83\93\83g\81A\91¼\82Ì\83\81\83f\83B\83A\82Ö\82Ì\95Ï\8a·\95¨\82Æ\82¢\82Á\82½\81A\83\\81[\83X\8c`\8e®\82Ì\8b@\8aB\93I\r
- \82È\95Ï\8a·\82É\82æ\82è\90¶\82¶\82é\8c`\8e®\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\90¬\89Ê\95¨\81v\82Æ\82Í\81A\83\\81[\83X\8c`\8e®\82Å\82 \82é\82Æ\83I\83u\83W\83F\83N\83g\8c`\8e®\82Å\82 \82é\82Æ\82ð\96â\82í\82¸\81A\r
- \90»\8dì\95¨\82É\91}\93ü\82Ü\82½\82Í\93Y\95t\82³\82ê\82é\81i\8cã\8fo\82Ì\95t\98^\82É\97á\82ª\82 \82é\81j\92\98\8dì\8c \95\\8e¦\82Å\8e¦\82³\r
- \82ê\82½\92\98\8dì\95¨\82Å\81A\96{\83\89\83C\83Z\83\93\83X\82É\8aî\82Ã\82¢\82Ä\97\98\97p\82ª\8b\96\82³\82ê\82é\82à\82Ì\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
- \81u\94h\90¶\90¬\89Ê\95¨\81v\82Æ\82Í\81A\95Ò\8fW\8fã\82Ì\89ü\92ù\81A\92\8d\89ð\81A\90\84\9dÈ\82È\82Ç\81A\90¬\89Ê\95¨\82ð\8aî\82É\82µ\82Ä\82¢\r
- \82Ä\91S\91Ì\82Æ\82µ\82Ä\83I\83\8a\83W\83i\83\8b\92\98\8dì\95¨\82Æ\8cÄ\82×\82é\82æ\82¤\82È\90»\8dì\95¨\91S\94Ê\82ð\8ew\82µ\82Ü\82·\81B\96{\83\89\r
- \83C\83Z\83\93\83X\82Å\82Í\81A\90¬\89Ê\95¨\82â\94h\90¶\90¬\89Ê\95¨\82©\82ç\95ª\97£\82Å\82«\82é\90»\8dì\95¨\82â\81A\90¬\89Ê\95¨\82â\94h\90¶\r
- \90¬\89Ê\95¨\82Ì\83C\83\93\83^\83t\83F\81[\83X\82Ö\82Ì\92P\82È\82é\83\8a\83\93\83N\81i\82Ü\82½\82Í\96¼\91O\82É\82æ\82é\83o\83C\83\93\83h\81j\82ð\81A\r
- \94h\90¶\90¬\89Ê\95¨\82É\8aÜ\82ß\82Ü\82¹\82ñ\81B\r
-\r
- \81u\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\81v\82Æ\82Í\81A\90¬\89Ê\95¨\82Ì\83I\83\8a\83W\83i\83\8b\83o\81[\83W\83\87\83\93\82È\82ç\82Ñ\82É\90¬\r
- \89Ê\95¨\82Ü\82½\82Í\94h\90¶\90¬\89Ê\95¨\82Ö\82Ì\95Ï\8dX\82â\92Ç\89Á\82à\8aÜ\82ß\82Ä\81A\92\98\8dì\8c \8f\8a\97L\8eÒ\82 \82é\82¢\82Í\92\98\8dì\r
- \8c \8f\8a\97L\8eÒ\82ª\94F\82ß\82½\8cÂ\90l\82Ü\82½\82Í\96@\90l\82É\82æ\82é\90¬\89Ê\95¨\82Ö\82Ì\91g\82Ý\8d\9e\82Ý\82ð\88Ó\90}\82µ\82Ä\83\89\83C\r
- \83Z\83\93\83T\81[\82É\92ñ\8fo\82³\82ê\82é\92\98\8dì\95¨\91S\94Ê\82ð\8ew\82µ\82Ü\82·\81B\82±\82Ì\92è\8b`\82É\82¨\82¯\82é\81u\92ñ\8fo\81v\82Æ\r
- \82Í\81A\90¬\89Ê\95¨\82ð\98_\82¶\82½\82è\89ü\97Ç\82·\82é\82½\82ß\82É\83\89\83C\83Z\83\93\83T\81[\82Ü\82½\82Í\82»\82Ì\91ã\97\9d\8eÒ\82É\82æ\82è\r
- \8aÇ\97\9d\82³\82ê\82é\93d\8eq\93I\83\81\81[\83\8a\83\93\83O\83\8a\83X\83g\81A\83\\81[\83X\83R\81[\83h\8aÇ\97\9d\83V\83X\83e\83\80\81A\96â\91è\92Ç\90Õ\r
- \83V\83X\83e\83\80\82Æ\82¢\82Á\82½\81A\93d\8eq\93I\95û\96@\81A\8cû\93ª\81A\82Ü\82½\82Í\8f\91\96Ê\82Å\81A\83\89\83C\83Z\83\93\83T\81[\82Ü\82½\82Í\r
- \82»\82Ì\91ã\97\9d\8eÒ\82É\8fî\95ñ\82ð\91\97\82é\82±\82Æ\82ð\8ew\82µ\82Ü\82·\81B\82½\82¾\82µ\81A\92\98\8dì\8c \8f\8a\97L\8eÒ\82ª\8f\91\96Ê\82Å\r
- \81u\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\82Å\82È\82¢\81v\82Æ\96¾\8e¦\82µ\82½\82à\82Ì\82Í\8f\9c\82«\82Ü\82·\81B\r
-\r
- \81u\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\81v\82Æ\82Í\81A\83\89\83C\83Z\83\93\83T\81[\82¨\82æ\82Ñ\82»\82Ì\91ã\97\9d\82ð\96±\82ß\82é\8cÂ\90l\82Ü\r
- \82½\82Í\96@\90l\82Å\81A\8e©\95ª\82Ì\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\82ª\83\89\83C\83Z\83\93\83T\81[\82É\8eó\97Ì\82³\82ê\82Ä\90¬\89Ê\r
- \95¨\82É\91g\82Ý\8d\9e\82Ü\82ê\82½\8eÒ\82ð\8ew\82µ\82Ü\82·\81B\r
-\r
-2. \92\98\8dì\8c \83\89\83C\83Z\83\93\83X\82Ì\95t\97^\r
-\r
- \96{\83\89\83C\83Z\83\93\83X\82Ì\8fð\8d\80\82É\8f]\82Á\82Ä\81A\8ae\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Í\82 \82È\82½\82É\91Î\82µ\81A\83\\81[\r
- \83X\8c`\8e®\82Å\82 \82ê\83I\83u\83W\83F\83N\83g\8c`\8e®\82Å\82 \82ê\81A\90¬\89Ê\95¨\82¨\82æ\82Ñ\94h\90¶\90¬\89Ê\95¨\82ð\95¡\90»\82µ\82½\r
- \82è\81A\94h\90¶\90¬\89Ê\95¨\82ð\8dì\90¬\82µ\82½\82è\81A\8cö\82É\95\\8e¦\82µ\82½\82è\81A\8cö\82É\8eÀ\8ds\82µ\82½\82è\81A\83T\83u\83\89\83C\r
- \83Z\83\93\83X\82µ\82½\82è\81A\94Ð\95z\82µ\82½\82è\82·\82é\81A\96³\8aú\8cÀ\82Å\90¢\8aE\8bK\96Í\82Å\94ñ\93Æ\90è\93I\82Å\8eg\97p\97¿\96³\97¿\r
- \82Å\8eæ\82è\8fÁ\82µ\95s\94\\82È\92\98\8dì\8c \83\89\83C\83Z\83\93\83X\82ð\95t\97^\82µ\82Ü\82·\81B\r
-\r
-3. \93Á\8b\96\83\89\83C\83Z\83\93\83X\82Ì\95t\97^\r
-\r
- \96{\83\89\83C\83Z\83\93\83X\82Ì\8fð\8d\80\82É\8f]\82Á\82Ä\81A\8ae\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Í\82 \82È\82½\82É\91Î\82µ\81A\90¬\89Ê\r
- \95¨\82ð\8dì\90¬\82µ\82½\82è\81A\8eg\97p\82µ\82½\82è\81A\94Ì\94\84\82µ\82½\82è\81A\94Ì\94\84\97p\82É\92ñ\8b\9f\82µ\82½\82è\81A\83C\83\93\83|\81[\r
- \83g\82µ\82½\82è\81A\82»\82Ì\91¼\82Ì\95û\96@\82Å\88Ú\93]\82µ\82½\82è\82·\82é\81A\96³\8aú\8cÀ\82Å\90¢\8aE\8bK\96Í\82Å\94ñ\93Æ\90è\93I\82Å\r
- \8eg\97p\97¿\96³\97¿\82Å\8eæ\82è\8fÁ\82µ\95s\94\\82È\81i\82±\82Ì\8d\80\82Å\96¾\8bL\82µ\82½\82à\82Ì\82Í\8f\9c\82\81j\93Á\8b\96\83\89\83C\83Z\83\93\r
- \83X\82ð\95t\97^\82µ\82Ü\82·\81B\82½\82¾\82µ\81A\82±\82Ì\82æ\82¤\82È\83\89\83C\83Z\83\93\83X\82Í\81A\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82É\r
- \82æ\82Á\82Ä\83\89\83C\83Z\83\93\83X\89Â\94\\82È\93Á\8b\96\90\\90¿\82Ì\82¤\82¿\81A\93\96\8aY\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Ì\83R\83\93\83g\r
- \83\8a\83r\83\85\81[\83V\83\87\83\93\82ð\92P\93Æ\82Ü\82½\82Í\8aY\93\96\82·\82é\90¬\89Ê\95¨\82Æ\91g\82Ý\8d\87\82í\82¹\82Ä\97p\82¢\82é\82±\82Æ\82Å\95K\r
- \91R\93I\82É\90N\8aQ\82³\82ê\82é\82à\82Ì\82É\82Ì\82Ý\93K\97p\82³\82ê\82Ü\82·\81B\82 \82È\82½\82ª\92N\82©\82É\91Î\82µ\81A\8cð\8d·\90¿\8b\81\r
- \82â\94½\91i\82ð\8aÜ\82ß\82Ä\81A\90¬\89Ê\95¨\82 \82é\82¢\82Í\90¬\89Ê\95¨\82É\91g\82Ý\8d\9e\82Ü\82ê\82½\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\r
- \83\93\82ª\92¼\90Ú\82Ü\82½\82Í\8aÔ\90Ú\93I\82È\93Á\8b\96\90N\8aQ\82É\93\96\82½\82é\82Æ\82µ\82Ä\93Á\8b\96\91i\8f×\82ð\8bN\82±\82µ\82½\8fê\8d\87\81A\r
- \96{\83\89\83C\83Z\83\93\83X\82É\8aî\82Ã\82¢\82Ä\82 \82È\82½\82É\95t\97^\82³\82ê\82½\93Á\8b\96\83\89\83C\83Z\83\93\83X\82Í\81A\82»\82¤\82µ\82½\91i\r
- \8f×\82ª\90³\8e®\82É\8bN\82±\82³\82ê\82½\8e\9e\93_\82Å\8fI\97¹\82·\82é\82à\82Ì\82Æ\82µ\82Ü\82·\81B\r
-\r
-4. \8dÄ\94Ð\95z\r
-\r
- \82 \82È\82½\82Í\81A\83\\81[\83X\8c`\8e®\82Å\82 \82ê\83I\83u\83W\83F\83N\83g\8c`\8e®\82Å\82 \82ê\81A\95Ï\8dX\82Ì\97L\96³\82É\8aÖ\82í\82ç\r
- \82¸\81A\88È\89º\82Ì\8fð\8c\8f\82ð\82·\82×\82Ä\96\9e\82½\82·\8cÀ\82è\82É\82¨\82¢\82Ä\81A\90¬\89Ê\95¨\82Ü\82½\82Í\82»\82Ì\94h\90¶\90¬\89Ê\95¨\r
- \82Ì\83R\83s\81[\82ð\95¡\90»\82µ\82½\82è\94Ð\95z\82µ\82½\82è\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\r
-\r
- 1. \90¬\89Ê\95¨\82Ü\82½\82Í\94h\90¶\90¬\89Ê\95¨\82Ì\91¼\82Ì\8eó\97Ì\8eÒ\82É\96{\83\89\83C\83Z\83\93\83X\82Ì\83R\83s\81[\82à\93n\82·\82±\82Æ\81B\r
-\r
- 2. \95Ï\8dX\82ð\89Á\82¦\82½\83t\83@\83C\83\8b\82É\82Â\82¢\82Ä\82Í\81A\82 \82È\82½\82ª\95Ï\8dX\82µ\82½\82Æ\82¢\82¤\82±\82Æ\82ª\82æ\82\r
- \82í\82©\82é\82æ\82¤\82È\8d\90\92m\82ð\93ü\82ê\82é\82±\82Æ\81B\r
-\r
- 3. \83\\81[\83X\8c`\8e®\82Ì\94h\90¶\90¬\89Ê\95¨\82ð\94Ð\95z\82·\82é\8fê\8d\87\82Í\81A\83\\81[\83X\8c`\8e®\82Ì\90¬\89Ê\95¨\82É\8aÜ\82Ü\r
- \82ê\82Ä\82¢\82é\92\98\8dì\8c \81A\93Á\8b\96\81A\8f¤\95W\81A\82¨\82æ\82Ñ\8bA\91®\82É\82Â\82¢\82Ä\82Ì\8d\90\92m\82ð\81A\94h\90¶\90¬\89Ê\r
- \95¨\82Ì\82Ç\82±\82É\82à\8aÖ\8cW\82µ\82È\82¢\82à\82Ì\82Í\8f\9c\82¢\82Ä\81A\82·\82×\82Ä\94h\90¶\90¬\89Ê\95¨\82É\93ü\82ê\82é\82±\82Æ\81B\r
- 4. \90¬\89Ê\95¨\82Ì\88ê\95\94\82Æ\82µ\82Ä\81uNOTICE\81v\82É\91\8a\93\96\82·\82é\83e\83L\83X\83g\83t\83@\83C\83\8b\82ª\8aÜ\82Ü\82ê\r
- \82Ä\82¢\82é\8fê\8d\87\82Í\81A\82»\82¤\82µ\82½NOTICE\83t\83@\83C\83\8b\82É\8aÜ\82Ü\82ê\82Ä\82¢\82é\8bA\91®\8d\90\92m\82Ì\83R\83s\81[\r
- \82ð\81A\94h\90¶\90¬\89Ê\95¨\82Ì\82Ç\82±\82É\82à\8aÖ\8cW\82µ\82È\82¢\82à\82Ì\82Í\8f\9c\82¢\82Ä\81A\94Ð\95z\82·\82é\94h\90¶\90¬\89Ê\r
- \95¨\82É\93ü\82ê\82é\82±\82Æ\81B\82»\82Ì\8dÛ\81A\8e\9f\82Ì\82¤\82¿\82Ì\8f\82È\82\82Æ\82à1\89Ó\8f\8a\82É\91}\93ü\82·\82é\82±\82Æ\81B\r
- (i) \94h\90¶\90¬\89Ê\95¨\82Ì\88ê\95\94\82Æ\82µ\82Ä\94Ð\95z\82·\82éNOTICE\83e\83L\83X\83g\83t\83@\83C\83\8b\81A(ii) \83\\81[\r
- \83X\8c`\8e®\82Ü\82½\82Í\83h\83L\83\85\83\81\83\93\83g\81i\94h\90¶\90¬\89Ê\95¨\82Æ\8b¤\82É\83h\83L\83\85\83\81\83\93\83g\82ð\94Ð\95z\82·\82é\r
- \8fê\8d\87\81j\81A(iii) \94h\90¶\90¬\89Ê\95¨\82É\82æ\82Á\82Ä\90¶\90¬\82³\82ê\82é\95\\8e¦\81i\82±\82¤\82µ\82½\91æ\8eO\8eÒ\8d\90\r
- \92m\82ð\90·\82è\8d\9e\82Þ\82±\82Æ\82ª\95W\8f\80\93I\82È\82â\82è\95û\82É\82È\82Á\82Ä\82¢\82é\8fê\8d\87\81j\81BNOTICE\83t\83@\83C\r
- \83\8b\82Ì\93à\97e\82Í\82 \82\82Ü\82Å\8fî\95ñ\93`\92B\97p\82Å\82 \82Á\82Ä\81A\96{\83\89\83C\83Z\83\93\83X\82ð\8fC\90³\82·\82é\82à\82Ì\r
- \82Å\82 \82Á\82Ä\82Í\82È\82è\82Ü\82¹\82ñ\81B\82 \82È\82½\82Í\94Ð\95z\82·\82é\94h\90¶\90¬\89Ê\95¨\82É\8e©\95ª\82Ì\8bA\91®\8d\90\92m\r
- \82ð\81i\90¬\89Ê\95¨\82©\82ç\82ÌNOTICE\83e\83L\83X\83g\82É\95À\82×\82Ä\81A\82Ü\82½\82Í\82»\82Ì\95t\98^\82Æ\82µ\82Ä\81j\92Ç\r
- \89Á\82Å\82«\82Ü\82·\82ª\81A\82±\82ê\82Í\82»\82¤\82µ\82½\92Ç\89Á\82Ì\8bA\91®\8d\90\92m\82ª\96{\83\89\83C\83Z\83\93\83X\82Ì\8fC\90³\82Æ\r
- \89ð\8eß\82³\82ê\82é\82¨\82»\82ê\82ª\82È\82¢\8fê\8d\87\82É\8cÀ\82ç\82ê\82Ü\82·\81B\r
-\r
- \82 \82È\82½\82Í\8e©\95ª\82Ì\8fC\90³\95¨\82É\8e©\82ç\82Ì\92\98\8dì\8c \95\\8e¦\82ð\92Ç\89Á\82·\82é\82±\82Æ\82ª\82Å\82«\81A\8e©\95ª\82Ì\8fC\r
- \90³\95¨\82Ì\8eg\97p\81A\95¡\90»\81A\82Ü\82½\82Í\94Ð\95z\82É\82Â\82¢\82Ä\81A\82 \82é\82¢\82Í\82»\82¤\82µ\82½\94h\90¶\90¬\89Ê\95¨\82Ì\91S\r
- \91Ì\82É\82Â\82¢\82Ä\81A\95t\89Á\93I\82È\83\89\83C\83Z\83\93\83X\8fð\8d\80\82Ü\82½\82Í\88Ù\82È\82é\83\89\83C\83Z\83\93\83X\8fð\8d\80\82ð\90Ý\82¯\82é\r
- \82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\82½\82¾\82µ\81A\82±\82ê\82Í\90¬\89Ê\95¨\82É\82Â\82¢\82Ä\82Ì\82 \82È\82½\82Ì\8eg\97p\81A\95¡\90»\81A\82¨\r
- \82æ\82Ñ\94Ð\95z\82ª\81A\82»\82ê\88È\8aO\82Ì\93_\82Å\96{\83\89\83C\83Z\83\93\83X\82Ì\8fð\8d\80\82É\8f]\82Á\82Ä\82¢\82é\8fê\8d\87\82É\8cÀ\82ç\82ê\r
- \82Ü\82·\81B\r
-\r
-5. \83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\82Ì\92ñ\8fo\r
-\r
- \93Á\82É\92f\82è\82ª\82È\82¢\8cÀ\82è\81A\82 \82È\82½\82ª\90¬\89Ê\95¨\82Ö\82Ì\91g\82Ý\8d\9e\82Ý\82ð\88Ó\90}\82µ\82Ä\83\89\83C\83Z\83\93\83T\81[\r
- \82É\92ñ\8fo\82µ\82½\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\82Í\81A\95t\89Á\93I\82È\8fð\8d\80\82ª\82È\82¯\82ê\82Î\81A\96{\83\89\83C\83Z\83\93\r
- \83X\82Ì\8fð\8d\80\82É\8f]\82¤\82à\82Ì\82Æ\82µ\82Ü\82·\81B\8fã\8fq\82Ì\8bK\92è\82É\82©\82©\82í\82ç\82¸\81A\82»\82¤\82µ\82½\83R\83\93\83g\83\8a\r
- \83r\83\85\81[\83V\83\87\83\93\82É\8aÖ\82µ\82Ä\82 \82È\82½\82ª\83\89\83C\83Z\83\93\83T\81[\82Æ\8c\8b\82ñ\82¾\82©\82à\82µ\82ê\82È\82¢\95Ê\82Ì\83\89\83C\r
- \83Z\83\93\83X\8c_\96ñ\82Ì\8fð\8d\80\82ð\81A\82±\82±\82Å\96³\8cø\82É\82µ\82½\82è\8fC\90³\82µ\82½\82è\82·\82é\82±\82Æ\82Í\82 \82è\82Ü\82¹\82ñ\81B\r
-\r
-6. \8f¤\95W\r
-\r
- \96{\83\89\83C\83Z\83\93\83X\82Å\82Í\81A\90¬\89Ê\95¨\82Ì\8fo\8f\8a\82ð\8bL\8fq\82µ\82½\82èNOTICE\83t\83@\83C\83\8b\82Ì\93à\97e\82ð\95¡\90»\r
- \82·\82é\82Æ\82«\82É\95K\97v\82É\82È\82é\91Ã\93\96\82Å\8aµ\8fK\93I\82È\8eg\82¢\95û\82Í\95Ê\82Æ\82µ\82Ä\81A\83\89\83C\83Z\83\93\83T\81[\82Ì\8f¤\r
- \8d\86\81A\8f¤\95W\81A\83T\81[\83r\83X\83}\81[\83N\81A\82Ü\82½\82Í\90»\95i\96¼\82Ì\8eg\97p\8c \82ð\95t\97^\82µ\82Ü\82¹\82ñ\81B\r
-\r
-7. \95Û\8fØ\82Ì\94Û\94F\r
-\r
- \93K\97p\82³\82ê\82é\96@\97¥\82Ü\82½\82Í\8f\91\96Ê\82Å\82Ì\93¯\88Ó\82É\82æ\82Á\82Ä\96½\82¶\82ç\82ê\82È\82¢\8cÀ\82è\81A\83\89\83C\83Z\83\93\83T\81[\r
- \82Í\90¬\89Ê\95¨\82ð\81i\82»\82µ\82Ä\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Í\8ae\8e©\82Ì\83R\83\93\83g\83\8a\83r\83\85\81[\83V\83\87\83\93\82ð\81j\r
- \81u\8c»\8fó\82Ì\82Ü\82Ü\81v\92ñ\8b\9f\82·\82é\82à\82Ì\82Æ\82µ\81A\96¾\8e¦\96Ù\8e¦\82ð\96â\82í\82¸\81A\83^\83C\83g\83\8b\81A\94ñ\90N\8aQ\90«\81A\r
- \8f¤\8bÆ\93I\82È\8eg\97p\89Â\94\\90«\81A\82¨\82æ\82Ñ\93Á\92è\82Ì\96Ú\93I\82É\91Î\82·\82é\93K\8d\87\90«\82ð\8aÜ\82ß\81A\82¢\82©\82È\82é\95Û\r
- \8fØ\82à\8fð\8c\8f\82à\92ñ\8b\9f\82µ\82Ü\82¹\82ñ\81B\82 \82È\82½\82Í\90¬\89Ê\95¨\82Ì\8eg\97p\82â\8dÄ\94Ð\95z\82Ì\93K\90Ø\90«\82ð\8e©\95ª\82Å\r
- \94»\92f\82·\82é\90Ó\94C\82ð\8e\9d\82Â\82Æ\8b¤\82É\81A\96{\83\89\83C\83Z\83\93\83X\82É\82æ\82è\95t\97^\82³\82ê\82é\8c \97\98\82ð\8ds\8eg\82·\82é\r
- \82±\82Æ\82É\94º\82¤\82·\82×\82Ä\82Ì\83\8a\83X\83N\82ð\95\89\82¤\82±\82Æ\82É\82È\82è\82Ü\82·\81B\r
-\r
-8. \90Ó\94C\82Ì\90§\8cÀ\r
-\r
- \82¢\82©\82È\82é\8fð\8c\8f\82¨\82æ\82Ñ\96@\97\9d\98_\82É\82¨\82¢\82Ä\82à\81A\95s\96@\8ds\88×\81i\89ß\8e¸\82ð\8aÜ\82Þ\81j\81A\8c_\96ñ\81A\82Ü\r
- \82½\82Í\82»\82Ì\91¼\82¢\82©\82È\82é\8fê\8d\87\82Å\82à\81A\93K\97p\82³\82ê\82é\96@\97¥\82Ü\82½\82Í\8f\91\96Ê\82Å\82Ì\93¯\88Ó\82É\82æ\82Á\82Ä\r
- \96½\82¶\82ç\82ê\82È\82¢\8cÀ\82è\81A\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Í\96{\83\89\83C\83Z\83\93\83X\82Ü\82½\82Í\90¬\89Ê\95¨\82Ì\8eg\82¢\r
- \95û\82É\8aÖ\98A\82µ\82Ä\90¶\82¶\82é\92¼\90Ú\91¹\8aQ\81A\8aÔ\90Ú\91¹\8aQ\81A\8bô\94\93I\82È\91¹\8aQ\81A\93Á\95Ê\91¹\8aQ\81A\92¦\94±\93I\r
- \91¹\8aQ\81A\82Ü\82½\82Í\8c\8b\89Ê\91¹\8aQ\82ð\8aÜ\82ß\81A\89c\8bÆ\8c \82Ì\91¹\8e¸\81A\8bÆ\96±\82Ì\92â\8e~\81A\83R\83\93\83s\83\85\81[\83^\81[\r
- \8fá\8aQ\82Ü\82½\82Í\8cë\8dì\93®\81A\82»\82Ì\91¼\82Ì\8f¤\8bÆ\8fã\82Ì\91¹\8aQ\82â\91¹\8e¸\82È\82Ç\81A\82¢\82©\82È\82é\91¹\8aQ\82É\91Î\82µ\r
- \82Ä\82à\81A\82½\82Æ\82¦\82»\82¤\82µ\82½\91¹\8aQ\82Ì\89Â\94\\90«\82ð\82½\82Æ\82¦\92m\82ç\82³\82ê\82Ä\82¢\82½\82Æ\82µ\82Ä\82à\81A\82 \82È\r
- \82½\82É\90Ó\94C\82ð\95\89\82í\82È\82¢\82à\82Ì\82Æ\82µ\82Ü\82·\81B\r
-\r
-9. \95Û\8fØ\82Ü\82½\82Í\92Ç\89Á\93I\90Ó\94C\82Ì\88ø\82«\8eó\82¯\r
-\r
- \90¬\89Ê\95¨\82Ü\82½\82Í\82»\82Ì\94h\90¶\90¬\89Ê\95¨\82ð\8dÄ\94Ð\95z\82·\82é\8dÛ\81A\82 \82È\82½\82Í\83T\83|\81[\83g\81A\95Û\8fØ\81A\91¹\r
- \8aQ\95â\8f\9e\81A\82Ü\82½\82Í\82»\82Ì\91¼\82Ì\90Ó\94C\82â\81A\96{\83\89\83C\83Z\83\93\83X\82É\96µ\8f\82\82µ\82È\82¢\8c \97\98\82ð\92ñ\8e¦\82µ\81A\r
- \82±\82ê\82ð\97L\97¿\82É\82·\82é\82±\82Æ\82ª\82Å\82«\82Ü\82·\81B\82½\82¾\82µ\81A\82»\82¤\82µ\82½\90Ó\94C\82ð\88ø\82«\8eó\82¯\82é\8fê\8d\87\81A\r
- \82 \82È\82½\82Í\82»\82ê\82ð\8e©\95ª\8e©\90g\82Ì\82½\82ß\82É\82¾\82¯\8e©\8cÈ\90Ó\94C\82Æ\82µ\82Ä\8ds\82¦\82é\82Ì\82Å\82 \82Á\82Ä\81A\91¼\r
- \82Ì\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Ì\82½\82ß\82É\8ds\82¤\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81B\82Ü\82½\81A\82 \82È\82½\82Í\82»\82¤\r
- \82µ\82½\95Û\8fØ\82â\92Ç\89Á\93I\90Ó\94C\82Ì\82¹\82¢\82Å\91¼\82Ì\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82É\90Ó\94C\82ª\8d~\82è\82©\82©\82Á\r
- \82½\82è\94\85\8f\9e\97v\8b\81\82ª\8fo\82³\82ê\82½\82Æ\82µ\82Ä\82à\81A\82»\82ê\82ç\82Ì\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82É\91¹\8aQ\82ª\8by\r
- \82Ô\82Ì\82ð\96h\82®\82Æ\8b¤\82É\8ae\83R\83\93\83g\83\8a\83r\83\85\81[\83^\81[\82Ì\91¹\8aQ\82ð\95â\8f\9e\82·\82é\82±\82Æ\82É\93¯\88Ó\82µ\82È\82¯\r
- \82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B\r
-\r
-\8eg\97p\81A\95¡\90»\81A\82¨\82æ\82Ñ\94Ð\95z\82É\8aÖ\82·\82é\8fð\8d\80\82Ì\8fI\82í\82è\r
-\r
-\95t\98^\81F Apache License\82Ì\93K\97p\82Ì\8ed\95û\r
-\r
- \82 \82È\82½\82Ì\90»\8dì\95¨\82ÉApache License\82ð\93K\97p\82·\82é\82Æ\82«\82Í\81A\8e\9f\82Ì\92è\8c^\95¶\82ð\93Y\95t\82µ\82Ä\r
- \82\82¾\82³\82¢\81B\82½\82¾\82µ\81A"[]"\82Å\88Í\82Ü\82ê\82Ä\82¢\82é\95\94\95ª\82Í\81A\82 \82È\82½\8e©\90g\82Ì\8e¯\95Ê\8fî\95ñ\82É\92u\r
- \82«\8a·\82¦\82Ä\82\82¾\82³\82¢\81i\82»\82Ì\8dÛ\81A\8ap\8a\87\8cÊ\82Í\8eæ\82è\8f\9c\82«\82Ü\82·\81j\81B\82Ü\82½\81A\82±\82Ì\95¶\8c¾\82ð\8aY\r
- \93\96\82·\82é\83t\83@\83C\83\8b\8c`\8e®\82É\8d\87\82Á\82½\83R\83\81\83\93\83g\8d\\95¶\82Å\88Í\82ñ\82Å\82\82¾\82³\82¢\81B\82³\82ç\82É\81A\91æ\8eO\r
- \8eÒ\83A\81[\83J\83C\83u\93à\82Å\82Ì\8e¯\95Ê\82ð\97e\88Õ\82É\82·\82é\82½\82ß\81A\83t\83@\83C\83\8b\96¼\82Ü\82½\82Í\83N\83\89\83X\96¼\82È\82ç\r
- \82Ñ\82É\8eï\8e|\90à\96¾\82ª\92\98\8dì\8c \95\\8e¦\82Æ\93¯\82¶\81u\88ó\8dü\83y\81[\83W\81v\82É\8c»\82ê\82é\82æ\82¤\82É\82·\82é\82±\82Æ\82ð\r
- \82¨\8a©\82ß\82µ\82Ü\82·\81B\r
-\r
- Copyright [yyyy] [\92\98\8dì\8c \8f\8a\97L\8eÒ\82Ì\96¼\91O]\r
-\r
- Apache License Version 2.0\81i\81u\96{\83\89\83C\83Z\83\93\83X\81v\81j\82É\8aî\82Ã\82¢\82Ä\83\89\83C\83Z\83\93\r
- \83X\82³\82ê\82Ü\82·\81B\82 \82È\82½\82ª\82±\82Ì\83t\83@\83C\83\8b\82ð\8eg\97p\82·\82é\82½\82ß\82É\82Í\81A\96{\83\89\83C\83Z\83\93\83X\r
- \82É\8f]\82í\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B\96{\83\89\83C\83Z\83\93\83X\82Ì\83R\83s\81[\82Í\89º\8bL\82Ì\8fê\8f\8a\82©\82ç\93ü\r
- \8eè\82Å\82«\82Ü\82·\81B\r
+使用、複製、および頒布に関する条項\r
+\r
+1. 定義\r
+\r
+ 「ライセンス」とは、このドキュメントの第1項から第9項までで定義してい\r
+ る、使用、複製、および頒布に関する条項を指します。\r
+\r
+ 「ライセンサー」とは、著作権所有者、あるいは著作権所有者がライセンス\r
+ 付与対象として認めた者を指します。\r
+\r
+ 「法人」とは、行為者と、行為者を管理するか行為者により管理されるか行\r
+ 為者共通の管理下にある他のすべての者とから成る連合体を指します。この\r
+ 定義における「管理」とは、(i) 契約またはその他により、直接または間接\r
+ 的にこの法人の指揮・経営を行う権限、または (ii) この法人の50%以上の\r
+ 株式の所有権または (iii) 受益所有権を有することを指します。\r
+\r
+ 「あなた」とは、本ライセンスにより付与される権利を行使する個人または\r
+ 法人を指します。\r
+\r
+ 「ソース」形式とは、ソフトウェアのソースコード、ドキュメントソース、\r
+ 設定ファイルといった、変更を加えるのに好都合な形式を指します。\r
+\r
+ 「オブジェクト」形式とは、コンパイルされたオブジェクトコード、生成さ\r
+ れたドキュメント、他のメディアへの変換物といった、ソース形式の機械的\r
+ な変換により生じる形式を指します。\r
+\r
+ 「成果物」とは、ソース形式であるとオブジェクト形式であるとを問わず、\r
+ 製作物に挿入または添付される(後出の付録に例がある)著作権表示で示さ\r
+ れた著作物で、本ライセンスに基づいて利用が許されるものを指します。\r
+\r
+ 「派生成果物」とは、編集上の改訂、注解、推敲など、成果物を基にしてい\r
+ て全体としてオリジナル著作物と呼べるような製作物全般を指します。本ラ\r
+ イセンスでは、成果物や派生成果物から分離できる製作物や、成果物や派生\r
+ 成果物のインタフェースへの単なるリンク(または名前によるバインド)を、\r
+ 派生成果物に含めません。\r
+\r
+ 「コントリビューション」とは、成果物のオリジナルバージョンならびに成\r
+ 果物または派生成果物への変更や追加も含めて、著作権所有者あるいは著作\r
+ 権所有者が認めた個人または法人による成果物への組み込みを意図してライ\r
+ センサーに提出される著作物全般を指します。この定義における「提出」と\r
+ は、成果物を論じたり改良するためにライセンサーまたはその代理者により\r
+ 管理される電子的メーリングリスト、ソースコード管理システム、問題追跡\r
+ システムといった、電子的方法、口頭、または書面で、ライセンサーまたは\r
+ その代理者に情報を送ることを指します。ただし、著作権所有者が書面で\r
+ 「コントリビューションでない」と明示したものは除きます。\r
+\r
+ 「コントリビューター」とは、ライセンサーおよびその代理を務める個人ま\r
+ たは法人で、自分のコントリビューションがライセンサーに受領されて成果\r
+ 物に組み込まれた者を指します。\r
+\r
+2. 著作権ライセンスの付与\r
+\r
+ 本ライセンスの条項に従って、各コントリビューターはあなたに対し、ソー\r
+ ス形式であれオブジェクト形式であれ、成果物および派生成果物を複製した\r
+ り、派生成果物を作成したり、公に表示したり、公に実行したり、サブライ\r
+ センスしたり、頒布したりする、無期限で世界規模で非独占的で使用料無料\r
+ で取り消し不能な著作権ライセンスを付与します。\r
+\r
+3. 特許ライセンスの付与\r
+\r
+ 本ライセンスの条項に従って、各コントリビューターはあなたに対し、成果\r
+ 物を作成したり、使用したり、販売したり、販売用に提供したり、インポー\r
+ トしたり、その他の方法で移転したりする、無期限で世界規模で非独占的で\r
+ 使用料無料で取り消し不能な(この項で明記したものは除く)特許ライセン\r
+ スを付与します。ただし、このようなライセンスは、コントリビューターに\r
+ よってライセンス可能な特許申請のうち、当該コントリビューターのコント\r
+ リビューションを単独または該当する成果物と組み合わせて用いることで必\r
+ 然的に侵害されるものにのみ適用されます。あなたが誰かに対し、交差請求\r
+ や反訴を含めて、成果物あるいは成果物に組み込まれたコントリビューショ\r
+ ンが直接または間接的な特許侵害に当たるとして特許訴訟を起こした場合、\r
+ 本ライセンスに基づいてあなたに付与された特許ライセンスは、そうした訴\r
+ 訟が正式に起こされた時点で終了するものとします。\r
+\r
+4. 再頒布\r
+\r
+ あなたは、ソース形式であれオブジェクト形式であれ、変更の有無に関わら\r
+ ず、以下の条件をすべて満たす限りにおいて、成果物またはその派生成果物\r
+ のコピーを複製したり頒布したりすることができます。\r
+\r
+ 1. 成果物または派生成果物の他の受領者に本ライセンスのコピーも渡すこと。\r
+\r
+ 2. 変更を加えたファイルについては、あなたが変更したということがよく\r
+ わかるような告知を入れること。\r
+\r
+ 3. ソース形式の派生成果物を頒布する場合は、ソース形式の成果物に含ま\r
+ れている著作権、特許、商標、および帰属についての告知を、派生成果\r
+ 物のどこにも関係しないものは除いて、すべて派生成果物に入れること。\r
+ 4. 成果物の一部として「NOTICE」に相当するテキストファイルが含まれ\r
+ ている場合は、そうしたNOTICEファイルに含まれている帰属告知のコピー\r
+ を、派生成果物のどこにも関係しないものは除いて、頒布する派生成果\r
+ 物に入れること。その際、次のうちの少なくとも1箇所に挿入すること。\r
+ (i) 派生成果物の一部として頒布するNOTICEテキストファイル、(ii) ソー\r
+ ス形式またはドキュメント(派生成果物と共にドキュメントを頒布する\r
+ 場合)、(iii) 派生成果物によって生成される表示(こうした第三者告\r
+ 知を盛り込むことが標準的なやり方になっている場合)。NOTICEファイ\r
+ ルの内容はあくまで情報伝達用であって、本ライセンスを修正するもの\r
+ であってはなりません。あなたは頒布する派生成果物に自分の帰属告知\r
+ を(成果物からのNOTICEテキストに並べて、またはその付録として)追\r
+ 加できますが、これはそうした追加の帰属告知が本ライセンスの修正と\r
+ 解釈されるおそれがない場合に限られます。\r
+\r
+ あなたは自分の修正物に自らの著作権表示を追加することができ、自分の修\r
+ 正物の使用、複製、または頒布について、あるいはそうした派生成果物の全\r
+ 体について、付加的なライセンス条項または異なるライセンス条項を設ける\r
+ ことができます。ただし、これは成果物についてのあなたの使用、複製、お\r
+ よび頒布が、それ以外の点で本ライセンスの条項に従っている場合に限られ\r
+ ます。\r
+\r
+5. コントリビューションの提出\r
+\r
+ 特に断りがない限り、あなたが成果物への組み込みを意図してライセンサー\r
+ に提出したコントリビューションは、付加的な条項がなければ、本ライセン\r
+ スの条項に従うものとします。上述の規定にかかわらず、そうしたコントリ\r
+ ビューションに関してあなたがライセンサーと結んだかもしれない別のライ\r
+ センス契約の条項を、ここで無効にしたり修正したりすることはありません。\r
+\r
+6. 商標\r
+\r
+ 本ライセンスでは、成果物の出所を記述したりNOTICEファイルの内容を複製\r
+ するときに必要になる妥当で慣習的な使い方は別として、ライセンサーの商\r
+ 号、商標、サービスマーク、または製品名の使用権を付与しません。\r
+\r
+7. 保証の否認\r
+\r
+ 適用される法律または書面での同意によって命じられない限り、ライセンサー\r
+ は成果物を(そしてコントリビューターは各自のコントリビューションを)\r
+ 「現状のまま」提供するものとし、明示黙示を問わず、タイトル、非侵害性、\r
+ 商業的な使用可能性、および特定の目的に対する適合性を含め、いかなる保\r
+ 証も条件も提供しません。あなたは成果物の使用や再頒布の適切性を自分で\r
+ 判断する責任を持つと共に、本ライセンスにより付与される権利を行使する\r
+ ことに伴うすべてのリスクを負うことになります。\r
+\r
+8. 責任の制限\r
+\r
+ いかなる条件および法理論においても、不法行為(過失を含む)、契約、ま\r
+ たはその他いかなる場合でも、適用される法律または書面での同意によって\r
+ 命じられない限り、コントリビューターは本ライセンスまたは成果物の使い\r
+ 方に関連して生じる直接損害、間接損害、偶発的な損害、特別損害、懲罰的\r
+ 損害、または結果損害を含め、営業権の損失、業務の停止、コンピューター\r
+ 障害または誤作動、その他の商業上の損害や損失など、いかなる損害に対し\r
+ ても、たとえそうした損害の可能性をたとえ知らされていたとしても、あな\r
+ たに責任を負わないものとします。\r
+\r
+9. 保証または追加的責任の引き受け\r
+\r
+ 成果物またはその派生成果物を再頒布する際、あなたはサポート、保証、損\r
+ 害補償、またはその他の責任や、本ライセンスに矛盾しない権利を提示し、\r
+ これを有料にすることができます。ただし、そうした責任を引き受ける場合、\r
+ あなたはそれを自分自身のためにだけ自己責任として行えるのであって、他\r
+ のコントリビューターのために行うことはできません。また、あなたはそう\r
+ した保証や追加的責任のせいで他のコントリビューターに責任が降りかかっ\r
+ たり賠償要求が出されたとしても、それらのコントリビューターに損害が及\r
+ ぶのを防ぐと共に各コントリビューターの損害を補償することに同意しなけ\r
+ ればなりません。\r
+\r
+使用、複製、および頒布に関する条項の終わり\r
+\r
+付録: Apache Licenseの適用の仕方\r
+\r
+ あなたの製作物にApache Licenseを適用するときは、次の定型文を添付して\r
+ ください。ただし、"[]"で囲まれている部分は、あなた自身の識別情報に置\r
+ き換えてください(その際、角括弧は取り除きます)。また、この文言を該\r
+ 当するファイル形式に合ったコメント構文で囲んでください。さらに、第三\r
+ 者アーカイブ内での識別を容易にするため、ファイル名またはクラス名なら\r
+ びに趣旨説明が著作権表示と同じ「印刷ページ」に現れるようにすることを\r
+ お勧めします。\r
+\r
+ Copyright [yyyy] [著作権所有者の名前]\r
+\r
+ Apache License Version 2.0(「本ライセンス」)に基づいてライセン\r
+ スされます。あなたがこのファイルを使用するためには、本ライセンス\r
+ に従わなければなりません。本ライセンスのコピーは下記の場所から入\r
+ 手できます。\r
\r
http://www.apache.org/licenses/LICENSE-2.0\r
\r
- \93K\97p\82³\82ê\82é\96@\97¥\82Ü\82½\82Í\8f\91\96Ê\82Å\82Ì\93¯\88Ó\82É\82æ\82Á\82Ä\96½\82¶\82ç\82ê\82È\82¢\8cÀ\82è\81A\96{\83\89\83C\r
- \83Z\83\93\83X\82É\8aî\82Ã\82¢\82Ä\94Ð\95z\82³\82ê\82é\83\\83t\83g\83E\83F\83A\82Í\81A\96¾\8e¦\96Ù\8e¦\82ð\96â\82í\82¸\81A\82¢\82©\r
- \82È\82é\95Û\8fØ\82à\8fð\8c\8f\82à\82È\82µ\82É\81u\8c»\8fó\82Ì\82Ü\82Ü\81v\94Ð\95z\82³\82ê\82Ü\82·\81B\96{\83\89\83C\83Z\83\93\83X\82Å\r
- \82Ì\8c \97\98\82Æ\90§\8cÀ\82ð\8bK\92è\82µ\82½\95¶\8c¾\82É\82Â\82¢\82Ä\82Í\81A\96{\83\89\83C\83Z\83\93\83X\82ð\8eQ\8fÆ\82µ\82Ä\82\82¾\r
- \82³\82¢\81B
\ No newline at end of file
+ 適用される法律または書面での同意によって命じられない限り、本ライ\r
+ センスに基づいて頒布されるソフトウェアは、明示黙示を問わず、いか\r
+ なる保証も条件もなしに「現状のまま」頒布されます。本ライセンスで\r
+ の権利と制限を規定した文言については、本ライセンスを参照してくだ\r
+ さい。
\ No newline at end of file
--- /dev/null
+jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractorService
+jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractorService
+jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractorService
+jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractorService
+jp.sourceforge.stigmata.birthmarks.fmc.FrequencyMethodCallBirthmarkExtractorService
+jp.sourceforge.stigmata.birthmarks.fuc.FrequencyUsedClassesBirthmarkExtractorService
+++ /dev/null
-jp.sourceforge.stigmata.birthmarks.extractors.ConstantValueOfFieldVariableBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.InheritanceStructureBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.SequentialMethodCallBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.UsedClassesBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.KGramBasedBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.FrequencyMethodCallBirthmarkExtractorService
-jp.sourceforge.stigmata.birthmarks.extractors.FrequencyUsedClassesBirthmarkExtractorService
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
<?xml version="1.0" encoding="euc-jp"?>\r
\r
-<!--\r
- $Id$\r
--->\r
-\r
<!ELEMENT classpath (#PCDATA)>\r
\r
<!ELEMENT type (#PCDATA)>\r
Stigmata version: ${implementation.version}\r
</p><p>\r
Copyright (C) by Haruaki Tamada, Ph.D.,\r
-${implementation.vendor} 2004-2008,\r
+${implementation.vendor} 2004-2011,\r
All right reserved.\r
</p><p>\r
Latest version is available at\r
</p>\r
<h2>Dependencies</h2>\r
<p>\r
-Stigmata uses ASM 3.1 for engineering Java bytecode.<br>\r
+Stigmata uses ASM 3.3 for engineering Java bytecode.<br>\r
<a href="http://asm.objectweb.org/">http://asm.objectweb.org/</a>\r
</p><p>\r
Stigmata uses following libraries developed by Apache Software Foundation.<br>\r
\r
<h2>License & Copyright</h2>\r
<p>\r
-Copyright 2004-2007 Haruaki Tamada\r
+Copyright 2004-2011 Haruaki Tamada\r
</p><p>\r
Licensed under the Apache License, Version 2.0 (the "License");\r
you may not use this file except in compliance with the License.\r
<html>\r
<body>\r
<p>\r
-Stigmata \83o\81[\83W\83\87\83\93: ${implementation.version}\r
+Stigmata バージョン: ${implementation.version}\r
</p><p>\r
Copyright (C) by Haruaki Tamada, Ph.D.,\r
-${implementation.vendor} 2004-2008,\r
+${implementation.vendor} 2004-2011,\r
All right reserved.\r
</p><p>\r
-Stigmata \82Ì\8dÅ\90V\83o\81[\83W\83\87\83\93\82Í\r
+Stigmata の最新バージョンは\r
<a href="http://stigmata.sourceforge.jp/">http://stigmata.sourceforge.jp/</a>\r
-\82©\82ç\8eæ\93¾\89Â\94\\82Å\82·\81D\82Ü\82½\81CStigmata \82Í Java SE 6 \82Å\8aJ\94\82³\82ê\82Ä\82¢\82Ü\82·\81D\r
+から取得可能です.また,Stigmata は Java SE 6 で開発されています.\r
</p>\r
-<h2>\88Ë\91¶\83\89\83C\83u\83\89\83\8a</h2>\r
-Stigmata\82Í Java \83o\83C\83g\83R\81[\83h\82ð\88µ\82¤\82½\82ß\81CASM 3.1\82ð\97\98\97p\82µ\82Ä\82¢\82Ü\82·\81D<br>\r
+<h2>依存ライブラリ</h2>\r
+Stigmataは Java バイトコードを扱うため,ASM 3.3を利用しています.<br>\r
<a href="http://asm.objectweb.org/">http://asm.objectweb.org/</a>\r
</p><p>\r
-Stigmata\82ÍApache Software Foundation\82ª\8aJ\94\82µ\82½\88È\89º\82Ì\83\89\83C\83u\83\89\83\8a\82ð\97\98\97p\82µ\82Ä\82¢\82Ü\82·\81D<br>\r
+StigmataはApache Software Foundationが開発した以下のライブラリを利用しています.<br>\r
<a href="http://www.apache.org/">http://www.apache.org/</a>\r
</p>\r
<ul>\r
</ul>\r
<p>\r
<p>\r
-Stigmata\82ÍMDS(Multi-Dimensional Scaling)\82Ì\8cv\8eZ\82Ì\82½\82ß\82ÉJama (Java matrix package)\82ð\97\98\97p\82µ\82Ä\82¢\82Ü\82·\81D<br>\r
+StigmataはMDS(Multi-Dimensional Scaling)の計算のためにJama (Java matrix package)を利用しています.<br>\r
<a href="http://math.nist.gov/javanumerics/jama/">http://math.nist.gov/javanumerics/jama/</a>\r
</p><p>\r
-Stigmata\82ÍFAMFAMFAM\82ª\92ñ\8b\9f\82µ\82Ä\82¢\82é\83A\83C\83R\83\93\82ð\97\98\97p\82µ\82Ä\82¢\82Ü\82·\81D<br>\r
+StigmataはFAMFAMFAMが提供しているアイコンを利用しています.<br>\r
<a href="http://www.famfamfam.com/">http://www.famfamfam.com/</a>\r
</p>\r
\r
-<h2>\83\89\83C\83Z\83\93\83X&\92\98\8dì\8c </h2>\r
+<h2>ライセンス&著作権</h2>\r
<p>\r
-Copyright 2004-2008 \8bÊ\93c \8ft\8fº (Haruaki Tamada)\r
+Copyright 2004-2011 玉田 春昭 (Haruaki Tamada)\r
</p><p>\r
-Apache License Version 2.0\81i\81u\96{\83\89\83C\83Z\83\93\83X\81v\81j\82É\8aî\82Ã\82¢\82Ä\83\89\83C\83Z\83\93\83X\82³\82ê\82Ü\82·\81B\82 \82È\82½\82ª\82±\82Ì\83t\83@\83C\83\8b\82ð\8eg\97p\82·\82é\82½\82ß\82É\82Í\81A\96{\83\89\83C\83Z\83\93\83X\82É\8f]\82í\82È\82¯\82ê\82Î\82È\82è\82Ü\82¹\82ñ\81B\96{\83\89\83C\83Z\83\93\83X\82Ì\83R\83s\81[\82Í\89º\8bL\82Ì\8fê\8f\8a\82©\82ç\93ü\8eè\82Å\82«\82Ü\82·\81B\r
+Apache License Version 2.0(「本ライセンス」)に基づいてライセンスされます。あなたがこのファイルを使用するためには、本ライセンスに従わなければなりません。本ライセンスのコピーは下記の場所から入手できます。\r
</p><p>\r
<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>\r
</p><p>\r
-\93K\97p\82³\82ê\82é\96@\97¥\82Ü\82½\82Í\8f\91\96Ê\82Å\82Ì\93¯\88Ó\82É\82æ\82Á\82Ä\96½\82¶\82ç\82ê\82È\82¢\8cÀ\82è\81A\96{\83\89\83C\83Z\83\93\83X\82É\8aî\82Ã\82¢\82Ä\94Ð\95z\82³\82ê\82é\83\\83t\83g\83E\83F\83A\82Í\81A\96¾\8e¦\96Ù\8e¦\82ð\96â\82í\82¸\81A\82¢\82©\82È\82é\95Û\8fØ\82à\8fð\8c\8f\82à\82È\82µ\82É\81u\8c»\8fó\82Ì\82Ü\82Ü\81v\94Ð\95z\82³\82ê\82Ü\82·\81B\96{\83\89\83C\83Z\83\93\83X\82Å\82Ì\8c \97\98\82Æ\90§\8cÀ\82ð\8bK\92è\82µ\82½\95¶\8c¾\82É\82Â\82¢\82Ä\82Í\81A\96{\83\89\83C\83Z\83\93\83X\82ð\8eQ\8fÆ\82µ\82Ä\82\82¾\82³\82¢\81B\r
+適用される法律または書面での同意によって命じられない限り、本ライセンスに基づいて頒布されるソフトウェアは、明示黙示を問わず、いかなる保証も条件もなしに「現状のまま」頒布されます。本ライセンスでの権利と制限を規定した文言については、本ライセンスを参照してください。\r
</p>\r
\r
</body>\r
-# $Id$\r
-# $Revision$\r
-\r
stigmata.version=${pom.version}\r
\r
icon.directory=/resources/images/\r
-# $Id$\r
-# $Revision$ $Date$\r
-\r
about.message.file=/resources/about.html.ja\r
license.file=/META-INF/license.txt.ja\r
\r
\r
apply.licenses=\83\89\83C\83Z\83\93\83X\8fð\8d\80\82ð\8eó\82¯\93ü\82ê\82Ü\82·\81D\r
discard.licenses=\83\89\83C\83Z\83\93\83X\8fð\8d\80\82ð\8eó\82¯\93ü\82ê\82Ü\82¹\82ñ\81D\r
-no.valid.licenses=\83\89\83C\83Z\83\93\83X\82ª\92è\8b`\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81D
\ No newline at end of file
+no.valid.licenses=\83\89\83C\83Z\83\93\83X\82ª\92è\8b`\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81D\r
<birthmark-services>
<birthmark-service>
<type>uc_seq</type>
- <display-name>Used Classes (compare as sequence)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor
<birthmark-service>
<type>uc_dp</type>
- <display-name>Used Classes (DP matching)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor
<birthmark-service>
<type>uc_ed</type>
- <display-name>Used Classes (Edit distance)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.uc.UsedClassesBirthmarkExtractor
<birthmark-service>
<type>is_ed</type>
- <display-name>Inheritance Structure (Edit distance)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor
<birthmark-service>
<type>is_dp</type>
- <display-name>Inheritance Structure (DP matching)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.is.InheritanceStructureBirthmarkExtractor
<birthmark-service>
<type>smc_dp</type>
- <display-name>Sequence of Method Calls (DP matching)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor
<birthmark-service>
<type>smc_ed</type>
- <display-name>Sequence of Method Calls (Edit distance)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractor
<birthmark-service>
<type>cvfv_ed</type>
- <display-name>Constant Value of Field Variable (Edit distance)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor
<birthmark-service>
<type>cvfv_dp</type>
- <display-name>Constant Value of Field Variable (DP matching)</display-name>
<description></description>
<extractor>
jp.sourceforge.stigmata.birthmarks.cvfv.ConstantValueOfFieldVariableBirthmarkExtractor
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
import static org.junit.Assert.assertNotNull;
import org.junit.Before;
/**
* @author Haruaki Tamada
- * @version $Revision$
*/
public class ServiceListTest{
private BirthmarkEnvironment env;
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"));
package jp.sourceforge.stigmata;
-/*
- * $Id$
- */
-
-import jp.sourceforge.stigmata.spi.BirthmarkSpi;
+import jp.sourceforge.stigmata.spi.BirthmarkService;
import org.junit.Assert;
import org.junit.Before;
/**
* test case.
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class StigmataTest{
private BirthmarkContext context;
Assert.assertNotNull(environment.getService("cvfv"));
Assert.assertNotNull(environment.getService("is"));
Assert.assertNotNull(environment.getService("uc"));
- Assert.assertNotNull(environment.getService("kgram"));
}
@Test
public void checkSmcBirthmarkService() throws Exception{
- BirthmarkSpi service = environment.getService("smc");
+ BirthmarkService service = environment.getService("smc");
Assert.assertNotNull(service.getComparator());
Assert.assertNotNull(service.getExtractor());
@Test
public void checkCvfvBirthmarkService() throws Exception{
- BirthmarkSpi service = environment.getService("cvfv");
+ BirthmarkService service = environment.getService("cvfv");
Assert.assertNotNull(service.getComparator());
Assert.assertNotNull(service.getExtractor());
@Test
public void checkIsBirthmarkService() throws Exception{
- BirthmarkSpi service = environment.getService("is");
+ BirthmarkService service = environment.getService("is");
Assert.assertNotNull(service.getComparator());
Assert.assertNotNull(service.getExtractor());
@Test
public void checkUcBirthmarkService() throws Exception{
- BirthmarkSpi service = environment.getService("uc");
+ BirthmarkService service = environment.getService("uc");
Assert.assertNotNull(service.getComparator());
Assert.assertNotNull(service.getExtractor());
service.getExtractor().getClass().getName()
);
}
-
- @Test
- public void checkKgramBirthmarkService() throws Exception{
- BirthmarkSpi 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()
- );
- }
}
package jp.sourceforge.stigmata.birthmarks;
-/*
- * $Id$
- */
-
import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkEngine;
import jp.sourceforge.stigmata.BirthmarkSet;
/**
*
* @author Haruaki Tamada
- * @version $Revision$
*/
public class BirthmarkCompareTest{
private BirthmarkContext context;
@Before
public void readBirthmarks() throws Exception{
context = Stigmata.getInstance().createContext();
- context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", "kgram", });
+ context.setBirthmarkTypes(new String[] { "cvfv", "smc", "uc", "is", });
engine = new BirthmarkEngine(context.getEnvironment());
ExtractionResultSet ers = engine.extract(
package jp.sourceforge.stigmata.birthmarks.cvfv;
-/*
- * $Id$
- */
+import java.io.FileInputStream;
import jp.sourceforge.stigmata.Birthmark;
-import jp.sourceforge.stigmata.BirthmarkContext;
import jp.sourceforge.stigmata.BirthmarkElement;
-import jp.sourceforge.stigmata.BirthmarkSet;
-import jp.sourceforge.stigmata.ExtractionResultSet;
-import jp.sourceforge.stigmata.Stigmata;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
import org.junit.Assert;
import org.junit.Before;
/**
*
* @author Haruaki TAMADA
- * @version $Revision$
*/
public class CVFVBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
+ private BirthmarkExtractor extractor;
@Before
public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("cvfv");
+ extractor = new ConstantValueOfFieldVariableBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
}
- @Test
- public void checkCVFVBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("cvfv"));
-
- Birthmark birthmark = array[0].getBirthmark("cvfv");
- Assert.assertEquals("cvfv", birthmark.getType());
- Assert.assertEquals(4, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[0].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[1].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[2].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[3].getClass().getName());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/Stigmata;",
- ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[0]).getValue());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/printer/PrinterManager;",
- ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[1]).getValue());
-
- Assert.assertEquals("Ljp/sourceforge/stigmata/BirthmarkEnvironment;",
- ((TypeAndValueBirthmarkElement)elements[2]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[2]).getValue());
-
- Assert.assertEquals("Ljava/util/List;",
- ((TypeAndValueBirthmarkElement)elements[3]).getSignature());
- Assert.assertNull(((TypeAndValueBirthmarkElement)elements[3]).getValue());
- }
@Test
- public void checkCVFVBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
-
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(array.length, 1);
- Assert.assertNotNull(array[0].getBirthmark("cvfv"));
-
- Birthmark birthmark = array[0].getBirthmark("cvfv");
- Assert.assertEquals(birthmark.getType(), "cvfv");
- Assert.assertEquals(3, birthmark.getElementCount());
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("cvfv", birthmark.getType());
BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[0].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[1].getClass().getName());
- Assert.assertEquals("jp.sourceforge.stigmata.birthmarks.cvfv.TypeAndValueBirthmarkElement",
- elements[2].getClass().getName());
+ Assert.assertEquals(2, elements.length);
- Assert.assertEquals("I", ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
- Assert.assertEquals(-1, ((TypeAndValueBirthmarkElement)elements[0]).getValue());
+ Assert.assertTrue(elements[0] instanceof TypeAndValueBirthmarkElement);
+ Assert.assertTrue(elements[1] instanceof TypeAndValueBirthmarkElement);
- Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue());
+ Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[0]).getSignature());
+ Assert.assertEquals("Ljava/lang/String;", ((TypeAndValueBirthmarkElement)elements[1]).getSignature());
- Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature());
- Assert.assertEquals(0, ((TypeAndValueBirthmarkElement)elements[2]).getValue());
+ Assert.assertEquals("Hello World", elements[0].getValue());
+ Assert.assertEquals("Lucida Regular", elements[1].getValue());
}
}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.is;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class ISBirthmarkExtractorTest{
- private BirthmarkEngine engine;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- engine = Stigmata.getInstance().createEngine();
- context = Stigmata.getInstance().createContext();
- context.addBirthmarkType("is");
- }
-
- @Test
- public void checkISBirthmark() throws Exception{
- ExtractionResultSet ers = engine.extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
-
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("is"));
-
- Birthmark birthmark = array[0].getBirthmark("is");
- Assert.assertEquals("is", birthmark.getType());
- Assert.assertEquals(2, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertNull(elements[0].getValue());
- Assert.assertEquals("java.lang.Object", elements[1].getValue());
- }
-
- @Test
- public void checkISBirthmark2() throws Exception{
- ExtractionResultSet ers = engine.extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("is"));
-
- Birthmark birthmark = array[0].getBirthmark("is");
- Assert.assertEquals("is", birthmark.getType());
- Assert.assertEquals(3, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- Assert.assertNull(elements[0].getValue());
- Assert.assertNull(elements[1].getValue());
- Assert.assertEquals("java.lang.Object", elements[2].getValue());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.is;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.birthmarks.NullBirthmarkElement;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class InheritanceStructureBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new InheritanceStructureBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("is", birthmark.getType());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals(2, elements.length);
+
+ Assert.assertTrue(elements[0] instanceof NullBirthmarkElement);
+ Assert.assertEquals("java.lang.Object", elements[1].getValue());
+ }
+}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.kgram;
-
-/*
- * $Id$
- */
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- *
- * @author Haruaki Tamada
- * @version $Revision$
- */
-public class KGramTest{
- private String[] plainValues;
- private String[] complexValues;
-
- @Before
- public void buildKGrams(){
- plainValues = new String[] { "a", "b", "c", "d", "e", "f", "g", };
- complexValues = new String[] { "a", "b", "r", "a", "c", "a", "d", "a", "b", "r", "a", };
- }
-
- @Test
- public void checkPlainKGram(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 4);
- Assert.assertEquals(4, kgrams.length);
-
- Assert.assertEquals(4, kgrams[0].getKValue());
- Assert.assertEquals(4, kgrams[1].getKValue());
- Assert.assertEquals(4, kgrams[2].getKValue());
- Assert.assertEquals(4, kgrams[3].getKValue());
-
- Assert.assertArrayEquals(new String[] { "a", "b", "c", "d", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "c", "d", "e", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "c", "d", "e", "f", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "d", "e", "f", "g", }, kgrams[3].toArray());
- }
-
- @Test
- public void checkPlainKGram2(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(plainValues, 3);
- Assert.assertEquals(5, kgrams.length);
-
- Assert.assertEquals(3, kgrams[0].getKValue());
- Assert.assertEquals(3, kgrams[1].getKValue());
- Assert.assertEquals(3, kgrams[2].getKValue());
- Assert.assertEquals(3, kgrams[3].getKValue());
- Assert.assertEquals(3, kgrams[4].getKValue());
-
- Assert.assertArrayEquals(new String[] { "a", "b", "c", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "c", "d", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "c", "d", "e", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "d", "e", "f", }, kgrams[3].toArray());
- Assert.assertArrayEquals(new String[] { "e", "f", "g", }, kgrams[4].toArray());
- }
-
- @Test
- public void checkComplexKGram(){
- KGram<String>[] kgrams = KGramBuilder.getInstance().buildKGram(complexValues, 3);
-
- Assert.assertEquals(7, kgrams.length);
-
- Assert.assertArrayEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray());
- Assert.assertArrayEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray());
- Assert.assertArrayEquals(new String[] { "r", "a", "c", }, kgrams[2].toArray());
- Assert.assertArrayEquals(new String[] { "a", "c", "a", }, kgrams[3].toArray());
- Assert.assertArrayEquals(new String[] { "c", "a", "d", }, kgrams[4].toArray());
- Assert.assertArrayEquals(new String[] { "a", "d", "a", }, kgrams[5].toArray());
- Assert.assertArrayEquals(new String[] { "d", "a", "b", }, kgrams[6].toArray());
- // following kgram is appeared in above.
- // assertEquals(new String[] { "a", "b", "r", }, kgrams[0].toArray());
- // assertEquals(new String[] { "b", "r", "a", }, kgrams[1].toArray());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.smc;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class SequentialMethodCallBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new SequentialMethodCallBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+ Assert.assertEquals("smc", birthmark.getType());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals(10, elements.length);
+
+ Assert.assertEquals("java.lang.Object#<init>!()V", elements[0].getValue());
+ Assert.assertEquals("javax.swing.JFrame#<init>!()V", elements[1].getValue());
+ Assert.assertEquals("javax.swing.JLabel#<init>!(Ljava/lang/String;)V", elements[2].getValue());
+ Assert.assertEquals("java.awt.Font#<init>!(Ljava/lang/String;II)V", elements[3].getValue());
+ Assert.assertEquals("javax.swing.JLabel#setFont!(Ljava/awt/Font;)V", elements[4].getValue());
+ Assert.assertEquals("javax.swing.JFrame#setDefaultCloseOperation!(I)V", elements[5].getValue());
+ Assert.assertEquals("javax.swing.JFrame#getContentPane!()Ljava/awt/Container;",
+ elements[6].getValue());
+ Assert.assertEquals("java.awt.Container#add!(Ljava/awt/Component;Ljava/lang/Object;)V",
+ elements[7].getValue());
+ Assert.assertEquals("javax.swing.JFrame#pack!()V", elements[8].getValue());
+ Assert.assertEquals("javax.swing.JFrame#setVisible!(Z)V", elements[9].getValue());
+ }
+}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.smc;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class SmcBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("smc");
- }
-
- @Test
- public void checkSmcBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("smc"));
-
- Birthmark birthmark = array[0].getBirthmark("smc");
- Assert.assertEquals("smc", birthmark.getType());
-
- BirthmarkElement[] elements = birthmark.getElements();
- for(int i = 0; i < elements.length; i++){
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement",
- elements[i].getClass().getName()
- );
- }
- /*
- Assert.assertEquals(76, birthmark.getElementCount());
- int index = 0;
- Assert.assertEquals("java.io.FileInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#exists", elements[index++].getValue());
- Assert.assertEquals("java.lang.System#getProperty", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#exists", elements[index++].getValue());
- Assert.assertEquals("java.io.FileInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class#getResourceAsStream", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.File#toURI", elements[index++].getValue());
- Assert.assertEquals("java.net.URI#toURL", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#endsWith", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.net.URL#openStream", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#size", elements[index++].getValue());
- Assert.assertEquals("java.util.List#toArray", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object#getClass", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class#getName", elements[index++].getValue());
- Assert.assertEquals("java.util.logging.Logger#getLogger", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue());
- Assert.assertEquals("java.util.logging.Logger#warning", elements[index++].getValue());
- Assert.assertEquals("java.util.List#size", elements[index++].getValue());
- Assert.assertEquals("java.util.List#toArray", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList#<init>", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#valueOf", elements[index++].getValue());
- Assert.assertEquals("java.util.List#add", elements[index++].getValue());
- Assert.assertEquals("java.util.List#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue());
- Assert.assertEquals("java.lang.Double#doubleValue", elements[index++].getValue());
- Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#describe",
- elements[index++].getValue());
- Assert.assertEquals("java.util.Map#remove", elements[index++].getValue());
- Assert.assertEquals("java.util.Map#remove", elements[index++].getValue());
- Assert.assertEquals("java.util.Map#keySet", elements[index++].getValue());
- Assert.assertEquals("java.util.Set#iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#<init>", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.String#valueOf", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#append", elements[index++].getValue());
- Assert.assertEquals("java.lang.StringBuilder#toString", elements[index++].getValue());
- Assert.assertEquals("org.apache.commons.beanutils.BeanUtils#setProperty",
- elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayInputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#<init>", elements[index++].getValue());
- Assert.assertEquals("java.io.InputStream#read", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#write", elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#toByteArray",
- elements[index++].getValue());
- Assert.assertEquals("java.io.ByteArrayOutputStream#close", elements[index++].getValue());
- Assert.assertEquals("javax.imageio.spi.ServiceRegistry#lookupProviders",
- elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());
- */
- }
-
- @Test
- public void checkSmcBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(array.length, 1);
- Assert.assertNotNull(array[0].getBirthmark("smc"));
-
- Birthmark birthmark = array[0].getBirthmark("smc");
- Assert.assertEquals("smc", birthmark.getType());
- Assert.assertEquals(18, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- for(int i = 0; i < elements.length; i++){
- Assert.assertEquals(
- "jp.sourceforge.stigmata.birthmarks.smc.MethodCallBirthmarkElement",
- elements[i].getClass().getName()
- );
- }
- /*
- int index = 0;
- // <init>(ExtractionResult, BirthmarkEnvironment, boolean)
- Assert.assertEquals("java.lang.Object#<init>", elements[index++].toString());
-
- // getComparisonSources
- Assert.assertEquals("java.util.ArrayArrays#<init>", elements[index++].toString());
- Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());
-
- // setCompareSamePair
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
- Assert.assertEquals("java.util.List#size", elements[index++].toString());
-
- // getComparisonSources
- Assert.assertEquals("java.util.HashMap#<init>", elements[index++].toString());
- Assert.assertEquals("java.util.List#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map#put", elements[index++].toString());
- Assert.assertEquals("java.util.List#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map#put", elements[index++].toString());
- Assert.assertEquals("java.util.Map#size", elements[index++].toString());
- Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString());
- Assert.assertEquals("java.util.Set#iterator", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());
- Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());
- Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString());
- */
- }
-}
+++ /dev/null
-package jp.sourceforge.stigmata.birthmarks.uc;
-
-/*
- * $Id$
- */
-
-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
- * @version $Revision$
- */
-public class UCBirthmarkExtractorTest{
- private Stigmata stigmata;
- private BirthmarkContext context;
-
- @Before
- public void setup(){
- stigmata = Stigmata.getInstance();
- context = stigmata.createContext();
- context.addBirthmarkType("uc");
- }
-
- @Test
- public void checkUCBirthmark() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/Stigmata.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("uc"));
-
- Birthmark birthmark = array[0].getBirthmark("uc");
- Assert.assertEquals("uc", birthmark.getType());
- Assert.assertEquals(18, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- int index = 0;
- Assert.assertEquals("java.io.File", elements[index++].getValue());
- Assert.assertEquals("java.io.FileFilter", elements[index++].getValue());
- Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue());
- Assert.assertEquals("java.io.FileWriter", elements[index++].getValue());
- Assert.assertEquals("java.io.InputStream", elements[index++].getValue());
- Assert.assertEquals("java.io.PrintWriter", elements[index++].getValue());
- Assert.assertEquals("java.io.Writer", elements[index++].getValue());
- Assert.assertEquals("java.lang.Class", elements[index++].getValue());
- Assert.assertEquals("java.lang.ClassLoader", elements[index++].getValue());
- Assert.assertEquals("java.lang.Object", elements[index++].getValue());
- Assert.assertEquals("java.lang.String", elements[index++].getValue());
- Assert.assertEquals("java.lang.System", elements[index++].getValue());
- Assert.assertEquals("java.net.URI", elements[index++].getValue());
- Assert.assertEquals("java.net.URL", elements[index++].getValue());
- Assert.assertEquals("java.net.URLClassLoader", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.List", elements[index++].getValue());
- }
-
- @Test
- public void checkUCBirthmark2() throws Exception{
- ExtractionResultSet ers = stigmata.createEngine().extract(
- new String[] { "target/classes/jp/sourceforge/stigmata/result/RoundRobinComparisonResultSet.class", },
- context
- );
- BirthmarkSet[] array = ers.getBirthmarkSets();
-
- Assert.assertEquals(1, array.length);
- Assert.assertNotNull(array[0].getBirthmark("uc"));
-
- Birthmark birthmark = array[0].getBirthmark("uc");
- Assert.assertEquals("uc", birthmark.getType());
- Assert.assertEquals(9, birthmark.getElementCount());
-
- BirthmarkElement[] elements = birthmark.getElements();
- int index = 0;
- Assert.assertEquals("java.lang.Object", elements[index++].getValue());
- Assert.assertEquals("java.lang.String", elements[index++].getValue());
- Assert.assertEquals("java.net.URL", elements[index++].getValue());
- Assert.assertEquals("java.util.ArrayList", elements[index++].getValue());
- Assert.assertEquals("java.util.Collection", elements[index++].getValue());
- Assert.assertEquals("java.util.HashMap", elements[index++].getValue());
- Assert.assertEquals("java.util.Iterator", elements[index++].getValue());
- Assert.assertEquals("java.util.List", elements[index++].getValue());
- Assert.assertEquals("java.util.Map", elements[index++].getValue());
- }
-}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.uc;
+
+import java.io.FileInputStream;
+
+import jp.sourceforge.stigmata.Birthmark;
+import jp.sourceforge.stigmata.BirthmarkElement;
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.stigmata.BirthmarkExtractor;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchPartType;
+import jp.sourceforge.stigmata.utils.WellknownClassJudgeRule.MatchType;
+import jp.sourceforge.stigmata.utils.WellknownClassManager;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ *
+ * @author Haruaki TAMADA
+ */
+public class UsedClassesBirthmarkExtractorTest{
+ private BirthmarkExtractor extractor;
+
+ @Before
+ public void setup(){
+ extractor = new UsedClassesBirthmarkService().getExtractor();
+ BirthmarkEnvironment env = BirthmarkEnvironment.getDefaultEnvironment();
+ WellknownClassManager manager = env.getWellknownClassManager();
+ manager.add(new WellknownClassJudgeRule("java.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ manager.add(new WellknownClassJudgeRule("javax.", MatchType.PREFIX, MatchPartType.FULLY_NAME));
+ }
+
+ @Test
+ public void checkBirthmark() throws Exception{
+ Birthmark birthmark = extractor.extract(new FileInputStream("target/test-classes/resources/HelloWorldFrame.class"));
+
+ Assert.assertEquals("uc", birthmark.getType());
+ Assert.assertEquals(7, birthmark.getElementCount());
+
+ BirthmarkElement[] elements = birthmark.getElements();
+ Assert.assertEquals("java.awt.Component", elements[0].getValue());
+ Assert.assertEquals("java.awt.Container", elements[1].getValue());
+ Assert.assertEquals("java.awt.Font", elements[2].getValue());
+ Assert.assertEquals("java.lang.Object", elements[3].getValue());
+ Assert.assertEquals("java.lang.String", elements[4].getValue());
+ Assert.assertEquals("javax.swing.JFrame", elements[5].getValue());
+ Assert.assertEquals("javax.swing.JLabel", elements[6].getValue());
+ }
+}
--- /dev/null
+package jp.sourceforge.stigmata.birthmarks.uc;\r
+\r
+import jp.sourceforge.stigmata.birthmarks.comparators.LogicalAndBirthmarkComparator;\r
+import junit.framework.Assert;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+\r
+public class UsedClassesBirthmarkServiceTest{\r
+ private UsedClassesBirthmarkService service;\r
+\r
+ @Before\r
+ public void setUp(){\r
+ service = new UsedClassesBirthmarkService();\r
+ }\r
+\r
+ @Test\r
+ public void testBasic(){\r
+ Assert.assertEquals("uc", service.getType());\r
+ Assert.assertEquals("Used classes birthmark", service.getDescription());\r
+ Assert.assertFalse(service.isExperimental());\r
+ Assert.assertFalse(service.isUserDefined());\r
+ Assert.assertEquals(UsedClassesBirthmarkExtractor.class, service.getExtractor().getClass());\r
+ Assert.assertEquals(LogicalAndBirthmarkComparator.class, service.getComparator().getClass());\r
+ Assert.assertNull(service.getPreprocessor());\r
+ }\r
+}\r
--- /dev/null
+import java.awt.BorderLayout;\r
+import java.awt.Font;\r
+\r
+import javax.swing.JFrame;\r
+import javax.swing.JLabel;\r
+\r
+\r
+public class HelloWorldFrame{\r
+ private String message = "Hello World";\r
+ private String fontName = "Lucida Regular";\r
+\r
+ public HelloWorldFrame(){\r
+ JFrame frame = new JFrame();\r
+ JLabel label = new JLabel(message);\r
+ label.setFont(new Font(fontName, Font.BOLD, 72));\r
+ frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);\r
+ frame.getContentPane().add(label, BorderLayout.CENTER);\r
+ frame.pack();\r
+ frame.setVisible(true);\r
+ }\r
+\r
+ public static void main(String[] args){\r
+ new HelloWorldFrame();\r
+ }\r
+}
\ No newline at end of file