<name>Stigmata Maven2 Repository in sourceforge.jp</name>
<url>http://stigmata.sourceforge.jp/maven2</url>
</repository>
+ <repository>
+ <id>talisman.sourceforge.jp</id>
+ <name>Talisman Maven2 Repository in sourceforge.jp</name>
+ <url>http://talisman.sourceforge.jp/maven2</url>
+ </repository>
</repositories>
<developers>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>jp.cafebabe.commons</groupId>
+ <groupId>jp.sourceforge.talisman</groupId>
<artifactId>xmlcli</artifactId>
- <version>1.2</version>
+ <version>1.2.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<version>1.0.2</version>
<scope>compile</scope>
</dependency>
+<!--
<dependency>
<groupId>edu.stanford.ejalbert</groupId>
<artifactId>browserlauncher</artifactId>
<version>1.2</version>
<scope>compile</scope>
</dependency>
+-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
import java.util.ArrayList;\r
import java.util.List;\r
\r
-import jp.cafebabe.commons.xmlcli.CommandLinePlus;\r
-import jp.cafebabe.commons.xmlcli.HelpFormatterPlus;\r
-import jp.cafebabe.commons.xmlcli.OptionsBuilder;\r
-import jp.cafebabe.commons.xmlcli.builder.OptionsBuilderFactory;\r
import jp.naist.se.stigmata.format.BirthmarkComparisonResultFormat;\r
import jp.naist.se.stigmata.format.BirthmarkExtractionResultFormat;\r
import jp.naist.se.stigmata.format.BirthmarkServiceListFormat;\r
import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
import jp.naist.se.stigmata.ui.swing.StigmataFrame;\r
import jp.naist.se.stigmata.utils.ConfigFileExporter;\r
+import jp.sourceforge.talisman.xmlcli.CommandLinePlus;\r
+import jp.sourceforge.talisman.xmlcli.OptionsBuilder;\r
+import jp.sourceforge.talisman.xmlcli.builder.OptionsBuilderFactory;\r
\r
import org.apache.commons.cli.CommandLineParser;\r
import org.apache.commons.cli.HelpFormatter;\r
\r
private void printHelp(Options options){\r
Package p = getClass().getPackage();\r
- HelpFormatter formatter = new HelpFormatterPlus();\r
+ HelpFormatter formatter = new HelpFormatter();\r
System.out.println(options.getClass().getName());\r
formatter.printHelp(\r
String.format(\r
filePath = null;\r
}\r
}\r
-\r
- if(filePath == null){\r
+ else{\r
File file = new File("stigmata.xml");\r
if(!file.exists()){\r
file = new File(System.getProperty("user.home"), ".stigmata.xml");\r
return list.toArray(new BirthmarkExtractor[list.size()]);\r
}\r
\r
+ @SuppressWarnings("unchecked")\r
private BirthmarkExtractor createExtractor(String birthmarkType, BirthmarkEnvironment environment){\r
BirthmarkSpi spi = environment.getService(birthmarkType);\r
if(spi != null){\r
BirthmarkExtractor[] extractors = createExtractors(birthmarks, environment);\r
ExtractionUnit unit = environment.getExtractionUnit();\r
\r
- if(unit == ExtractionUnit.CLASS){\r
- return extractFromClass(archives, extractors, environment);\r
- }\r
- else if(unit == ExtractionUnit.PACKAGE){\r
+ if(unit == ExtractionUnit.PACKAGE){\r
return extractFromPackage(archives, extractors, environment);\r
}\r
else if(unit == ExtractionUnit.ARCHIVE){\r
return extractFromProduct(archives, extractors, environment);\r
}\r
- return null;\r
+ else{\r
+ return extractFromClass(archives, extractors, environment);\r
+ }\r
}\r
\r
private BirthmarkSet[] extractFromPackage(ClassFileArchive[] archives, BirthmarkExtractor[] extractors, BirthmarkEnvironment environment) throws IOException, BirthmarkExtractionFailedException{\r
public void visit(int version, int access, String name, String signature,\r
String superName, String[] interfaces){\r
try {\r
- Class c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.'));\r
+ Class<?> c = getEnvironment().getClasspathContext().findClass(name.replace('/', '.'));\r
if(c != null && !c.isInterface()){\r
addISBirthmark(c);\r
}\r
}\r
}\r
\r
- private void addISBirthmark(Class c){\r
+ private void addISBirthmark(Class<?> c){\r
WellknownClassManager wcm = getEnvironment().getWellknownClassManager();\r
do{\r
String className = c.getName();\r
out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");\r
out.println("<birthmark>");\r
out.println(" <extracted-birthmarks>");\r
- list.printBirthmarkHolder(out, pair.getTarget1());\r
- list.printBirthmarkHolder(out, pair.getTarget2());\r
+ list.printBirthmarkSet(out, pair.getTarget1());\r
+ list.printBirthmarkSet(out, pair.getTarget2());\r
out.println(" </extracted-birthmarks>");\r
- out.println(" <birthmark-compare-result-set>");\r
+ out.println(" <comparison-result-set>");\r
printComparisonPair(out, pair);\r
- out.println(" </birthmark-compare-result-set>");\r
+ out.println(" </comparison-result-set>");\r
out.println("</birthmark>");\r
}\r
\r
out.println("<birthmark>");\r
out.println(" <extracted-birthmarks>");\r
for(int i = 0; i < holders.length; i++){\r
- printBirthmarkHolder(out, holders[i]);\r
+ printBirthmarkSet(out, holders[i]);\r
}\r
out.println(" </extracted-birthmarks>");\r
out.println("</birthmark>");\r
}\r
\r
- protected void printBirthmarkHolder(PrintWriter out, BirthmarkSet set){\r
+ protected void printBirthmarkSet(PrintWriter out, BirthmarkSet set){\r
out.println(" <extracted-birthmark>");\r
out.printf(" <class-name>%s</class-name>%n", escapeToXmlString(set.getName()));\r
out.printf(" <location>%s</location>%n", escapeToXmlString(set.getLocation()));\r
for(BirthmarkSpi spi: spilist){\r
out.println(" <birthmark-service>");\r
out.printf(" <type>%s</type>%n", spi.getType());\r
- out.printf(" <display-type>%s</display-type>%n", spi.getDisplayType());\r
+ out.printf(" <display-name>%s</display-name>%n", spi.getDisplayType());\r
out.printf(" <description>%s</description>%n", spi.getDescription());\r
out.printf(" <class-name>%s</class-name>%n", spi.getClass().getName());\r
+ out.printf(" <extractor>%s</extractor>%n", spi.getExtractorClassName());\r
+ out.printf(" <comparator>%s</comparator>%n", spi.getComparatorClassName());\r
out.println(" </birthmark-service>");\r
}\r
out.println(" </birthmark-services>");\r
}\r
};\r
\r
+ @SuppressWarnings("unchecked")\r
private class TargetSelectionDropTarget extends DropTarget{\r
private static final long serialVersionUID = 3204457621345L;\r
\r
}\r
\r
private void browse(URL url) throws Exception{\r
- Class c = Class.forName("edu.stanford.ejalbert.BrowserLauncher");\r
+ Class<?> c = Class.forName("edu.stanford.ejalbert.BrowserLauncher");\r
Object o = c.newInstance();\r
Method m = c.getMethod("openURLinBrowser", String.class);\r
m.invoke(o, url.toString());\r
out.println(" </wellknown-classes>");\r
}\r
\r
+ @SuppressWarnings("unchecked")\r
private void exportFilters(PrintWriter out) throws IOException{\r
out.println(" <filterset-list>");\r
for(ComparisonPairFilterSet filterset: environment.getFilterManager().getFilterSets()){\r
return false;
}
- for(Iterator i = systemClassesList.iterator(); i.hasNext(); ){
- WellknownClassJudgeRule section = (WellknownClassJudgeRule)i.next();
+ for(Iterator<WellknownClassJudgeRule> i = systemClassesList.iterator(); i.hasNext(); ){
+ WellknownClassJudgeRule section = i.next();
String target = fully;
if(section.isClassNameType()){
target = cn;
}
private boolean isExcludes(String fully){
- for(Iterator i = excludes.iterator(); i.hasNext(); ){
- WellknownClassJudgeRule s = (WellknownClassJudgeRule)i.next();
+ for(Iterator<WellknownClassJudgeRule> i = excludes.iterator(); i.hasNext(); ){
+ WellknownClassJudgeRule s = i.next();
switch(s.getMatchType()){
case WellknownClassJudgeRule.PREFIX_TYPE:
if(fully.startsWith(s.getName())){
}
/**
- * \88È\89º\82Ì\82Ç\82ê\82©\82Ì\83\81\83\\83b\83h\82Å\82 \82ê\82Î true \82ð\95Ô\82·\81D
+ * check system defined methods, which are following methods.
* <ul>
* <li><code>public static void main(String[])</code></li>
- * <li><code>static void <clinit>(void)</code>(static \83C\83j\83V\83\83\83\89\83C\83U)</li>
- * <li><code>void <init></code>(\83R\83\93\83X\83g\83\89\83N\83^)</li>
+ * <li><code>static void <clinit>(void)</code>(static initializer)</li>
+ * <li><code>void <init></code>(constructor)</li>
* </ul>
*/
private boolean checkSystemMethod(int access, String methodName, String signature){
}
/**
- * <code>static final long serialVersionUID</code> \82©\82Ç\82¤\82©\82ð\94»\92è\82·\82é\81D
+ * check system defined field, which is following field.
+ * <ul>
+ * <code>static final long serialVersionUID</code>
+ * </ul>
*/
private boolean checkSystemField(int access, String fieldName, String signature){
if(fieldName.equals("serialVersionUID")){
return checkSystemMethod(access, methodName, signature);
}
- /**
- * <code>static final long serialVersionUID</code> \82©\82Ç\82¤\82©\82ð\94»\92è\82·\82é\81D
- */
public boolean isSystemField(int access, String fieldName, String signature){
return checkSystemField(access, fieldName, signature);
}
--- /dev/null
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="birthmark"/>
+ </start>
+
+ <define name="birthmark">
+ <element name="birthmark">
+ <optional>
+ <ref name="birthmark-services"/>
+ </optional>
+ <optional>
+ <ref name="extracted-birthmarks"/>
+ </optional>
+ <optional>
+ <ref name="comparison-result-set"/>
+ </optional>
+ </element>
+ </define>
+
+ <define name="birthmark-services">
+ <element name="birthmark-services">
+ <zeroOrMore>
+ <ref name="birthmark-service"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="birthmark-service">
+ <element name="birthmark-service">
+ <element name="type">
+ <data type="type"/>
+ </element>
+ <interleaves>
+ <optional>
+ <element name="display-name">
+ <data type="token"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="description">
+ <data type="string"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="class-name">
+ <data type="token"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="extractor">
+ <data type="token"/>
+ </element>
+ </optional>
+ <optional>
+ <element name="comparator">
+ <data type="token"/>
+ </element>
+ </optional>
+ </element>
+ </interleaves>
+ </define>
+
+ <define name="extracted-birthmarks">
+ <element name="extracted-birthmarks">
+ <zeroOrMore>
+ <ref name="extracted-birthmark"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="extracted-birthmark">
+ <element name="extracted-birthmark">
+ <element name="class-name">
+ <data type="string"/>
+ </element>
+ <element name="location">
+ <data type="string"/>
+ </element>
+ <ref name="birthmark" />
+ </element>
+ </define>
+
+ <define name="birthmark">
+ <element name="birthmark">
+ <attribute name="type">
+ <data type="string"/>
+ </attribute>
+ <attribute name="count">
+ <data type="nonNegativeInteger"/>
+ </attribute>
+ <zeroOrMore>
+ <element name="element">
+ <data type="string"/>
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="comparison-result-set">
+ <element name="comparison-result-set">
+ <zeroOrMore>
+ <ref name="comparison-result" />
+ </zeroOrMore>
+ </element>
+ </define>
+ <define name="comparison-result">
+ <element name="comparison-result">
+ <element name="target1">
+ <ref name="target" />
+ </element>
+ <element name="target2">
+ <ref name="target" />
+ </element>
+ <element name="birthmark-similarities">
+ <zeroOrMore>
+ <ref name="birthmark-similarity">
+ </zeroOrMore>
+ </element>
+ <element name="similarity">
+ <data type="double" />
+ </element>
+ </element>
+ </define>
+
+ <define name="target">
+ <element name="class-name">
+ <data type="string" />
+ </element>
+ <element name="location">
+ <data type="string" />
+ </element>
+ </define>
+
+ <define name="birthmark-similarity">
+ <element name="birthmark-similarity">
+ <attribute name="type">
+ <data type="string" />
+ </attribute>
+ <attribute name="comparison-count">
+ <data type="nonNegativeInteger" />
+ </attribute>
+ <data type="double" />
+ </element>
+ </define>
+</grammar>
--- /dev/null
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="stigmata"/>
+ </start>
+
+ <define name="stigmata">
+ <element name="stigmata">
+ <interleave>
+ <optional>
+ <ref name="birthmark-services"/>
+ </optional>
+ <optional>
+ <ref name="filterset-list"/>
+ </optional>
+ <optional>
+ <ref name="wellknown-classes"/>
+ </optional>
+ <optional>
+ <ref name="classpath-list"/>
+ </optional>
+ <optional>
+ <ref name="properties"/>
+ </optional>
+ </interleave>
+ </element>
+ </define>
+
+ <define name="birthmark-services">
+ <element name="birthmark-services">
+ <zeroOrMore>
+ <ref name="birthmark-service"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="birthmark-service">
+ <element name="birthmark-service">
+ <element name="type">
+ <data type="type"/>
+ </element>
+ <element name="display-name">
+ <data type="token"/>
+ </element>
+ <optional>
+ <element name="description">
+ <data type="string"/>
+ </element>
+ </optional>
+ <element name="extractor">
+ <data type="token"/>
+ </element>
+ <element name="comparator">
+ <data type="token"/>
+ </element>
+ </element>
+ </define>
+
+ <define name="filterset-list">
+ <element name="filterset-list">
+ <zeroOrMore>
+ <ref name="filterset"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="filterset">
+ <element name="filterset">
+ <element name="name">
+ <data type="token"/>
+ </element>
+ <element name="match">
+ <choice>
+ <value>any</value>
+ <value>all</value>
+ <choice>
+ </element>
+ <ref name="filter-list"/>
+ </element>
+ </define>
+
+ <define name="filter-list">
+ <element name="filter-list">
+ <zeroOrMore>
+ <ref name="filter"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="filter">
+ <element name="filter">
+ <element name="filter-type">
+ <data type="token"/>
+ </element>
+ <element name="criterion">
+ <choice>
+ <value>LESS_THAN</value>
+ <value>LESS_EQUALS</value>
+ <value>GREATER_THAN</value>
+ <value>GREATER_EQUALS</value>
+ <value>EQUALS_AS</value>
+ <value>NOT_EQUALS_AS</value>
+ <value>STARTS_WITH</value>
+ <value>NOT_STARTS_WITH</value>
+ <value>ENDS_WITH</value>
+ <value>NOT_ENDS_WITH</value>
+ <value>MATCH</value>
+ <value>NOT_MATCH</value>
+ </choice>
+ </element>
+ <ref name="attributes"/>
+ </element>
+ </define>
+
+ <define name="attributes">
+ <element name="attributes">
+ <zeroOrMore>
+ <ref name="attribute"/>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="attribute">
+ <element name="attribute">
+ <element name="name">
+ <data type="string"/>
+ </element>
+ <element name="value">
+ <data type="string"/>
+ </element>
+ </element>
+ </define>
+
+ <define name="wellknown-classes">
+ <element name="wellknown-classes">
+ <zeroOrMore>
+ <choice>
+ <ref name="exclude"/>
+ <ref name="package"/>
+ <ref name="class-name"/>
+ <ref name="fully-name"/>
+ </choice>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="classpath-list">
+ <element name="classpath-list">
+ <zeroOrMore>
+ <element name="classpath">
+ <data type="string" />
+ </element>
+ </zeroOrMore>
+ </element>
+ </define>
+
+ <define name="exclude">
+ <element name="exclude">
+ <ref name="match-type"/>
+ </element>
+ </define>
+ <define name="package">
+ <element name="package">
+ <ref name="match-type"/>
+ </element>
+ </define>
+ <define name="class-name">
+ <element name="class-name">
+ <ref name="match-type"/>
+ </element>
+ </define>
+ <define name="fully-name">
+ <element name="fully-name">
+ <ref name="match-type"/>
+ </element>
+ </define>
+
+ <define name="match-type">
+ <choice>
+ <ref name="prefix"/>
+ <ref name="match"/>
+ <ref name="suffix"/>
+ </choice>
+ </define>
+
+ <define name="match">
+ <element name="match">
+ <data type="string"/>
+ </element>
+ </define>
+ <define name="suffix">
+ <element name="suffix">
+ <data type="string"/>
+ </element>
+ </define>
+ <define name="prefix">
+ <element name="prefix">
+ <data type="string"/>
+ </element>
+ </define>
+
+ <define name="properties">
+ <element name="properties">
+ <ref name="property"/>
+ </element>
+ </define>
+
+ <define name="property">
+ <element name="property">
+ <element name="name">
+ <data type="token"/>
+ </element>
+ <element name="value">
+ <data type="string"/>
+ </element>
+ </element>
+ </define>
+</grammar>
<argument>REQUIRED</argument>
<argument-name>CLASSPATH</argument-name>
<value-separator>,</value-separator>
- <multiple-arg />
+ <multiple-args />
</definition>
<definition name="birthmark">
<argument>REQUIRED</argument>
<argument-name>BIRTHMARKS</argument-name>
<value-separator>,</value-separator>
- <multiple-arg />
+ <multiple-args />
</definition>
<definition name="mode">
new String[] {\r
"target/classes/jp/naist/se/stigmata/Stigmata.class",\r
"target/classes/jp/naist/se/stigmata/Main.class",\r
- "target/classes/jp/naist/se/stigmata/BirthmarkContext.class",\r
+ "target/classes/jp/naist/se/stigmata/BirthmarkEnvironment.class",\r
}\r
);\r
}\r
Assert.assertEquals("Ljp/naist/se/stigmata/Stigmata;",\r
((TypeAndValueBirthmarkElement)elements[0]).getSignature());\r
Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[0]).getValue());\r
- Assert.assertEquals("Ljp/naist/se/stigmata/BirthmarkContext;",\r
+ Assert.assertEquals("Ljp/naist/se/stigmata/BirthmarkEnvironment;",\r
((TypeAndValueBirthmarkElement)elements[1]).getSignature());\r
Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue());\r
Assert.assertEquals("Z", ((TypeAndValueBirthmarkElement)elements[2]).getSignature());\r
Assert.assertEquals("Ljava/util/List;",\r
((TypeAndValueBirthmarkElement)elements[1]).getSignature());\r
Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[1]).getValue());\r
- Assert.assertEquals("Ljp/naist/se/stigmata/BirthmarkContext;",\r
+ Assert.assertEquals("Ljp/naist/se/stigmata/BirthmarkEnvironment;",\r
((TypeAndValueBirthmarkElement)elements[2]).getSignature());\r
Assert.assertEquals(null, ((TypeAndValueBirthmarkElement)elements[2]).getValue());\r
\r
\r
Birthmark birthmark = array[0].getBirthmark("uc");\r
Assert.assertEquals("uc", birthmark.getType());\r
- Assert.assertEquals(24, birthmark.getElementCount());\r
+ Assert.assertEquals(23, birthmark.getElementCount());\r
\r
BirthmarkElement[] elements = birthmark.getElements();\r
int index = 0;\r
Assert.assertEquals("java.io.FileInputStream", elements[index++].getValue());\r
Assert.assertEquals("java.io.InputStream", elements[index++].getValue());\r
Assert.assertEquals("java.lang.Class", elements[index++].getValue());\r
- Assert.assertEquals("java.lang.Double", elements[index++].getValue());\r
Assert.assertEquals("java.lang.Object", elements[index++].getValue());\r
Assert.assertEquals("java.lang.String", elements[index++].getValue());\r
Assert.assertEquals("java.lang.StringBuilder", elements[index++].getValue());\r