OSDN Git Service

jp.sourceforge.stigmata.reader package is moved to sub project, which named digger
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 12 Sep 2008 04:58:42 +0000 (04:58 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 12 Sep 2008 04:58:42 +0000 (04:58 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@298 acee48c3-7b26-0410-bdac-b3d0e5314bbc

14 files changed:
pom.xml
src/main/java/jp/sourceforge/stigmata/BirthmarkEngine.java
src/main/java/jp/sourceforge/stigmata/BirthmarkEnvironment.java
src/main/java/jp/sourceforge/stigmata/Main.java
src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java [deleted file]
src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java [deleted file]
src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java [deleted file]
src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java [deleted file]
src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java [deleted file]
src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java [deleted file]
src/main/java/jp/sourceforge/stigmata/ui/swing/ClasspathSettingsPane.java
src/main/java/jp/sourceforge/stigmata/ui/swing/ControlPane.java
src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java [deleted file]
src/site/site.xml

diff --git a/pom.xml b/pom.xml
index 60218c2..7016e26 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -61,7 +61,7 @@
     <dependency>
       <groupId>jp.sourceforge.talisman</groupId>
       <artifactId>mds</artifactId>
-      <version>1.0.0-SNAPSHOT</version>
+      <version>1.0.1-SNAPSHOT</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
       <scope>compile</scope>
     </dependency>
     <dependency>
+      <groupId>jp.sourceforge.talisman</groupId>
+      <artifactId>i18n</artifactId>
+      <version>1.0.1-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>jp.sourceforge.stigmata</groupId>
+      <artifactId>digger</artifactId>
+      <version>1.0.0-SNAPSHOT</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.1</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>jp.sourceforge.talisman</groupId>
-      <artifactId>i18n</artifactId>
-      <version>1.0.1</version>
-    </dependency>
   </dependencies>
 
   <licenses>
         </configuration>
       </plugin>
     </plugins>
-
   </build>
 
   <reporting>
         <configuration>
           <linkXref>true</linkXref>
           <sourceEncoding>utf-8</sourceEncoding>
-          <targetJdk>1.5</targetJdk>
+          <targetJdk>1.6</targetJdk>
         </configuration>
       </plugin>
       <plugin>
index 2869dc5..067260c 100755 (executable)
@@ -17,6 +17,12 @@ import java.util.Map;
 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.digger.DefaultClassFileArchive;
+import jp.sourceforge.stigmata.digger.JarClassFileArchive;
+import jp.sourceforge.stigmata.digger.WarClassFileArchive;
 import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
 import jp.sourceforge.stigmata.event.BirthmarkEngineListener;
 import jp.sourceforge.stigmata.event.OperationStage;
@@ -26,12 +32,6 @@ import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager;
 import jp.sourceforge.stigmata.filter.FilteredComparisonResultSet;
 import jp.sourceforge.stigmata.hook.Phase;
 import jp.sourceforge.stigmata.hook.StigmataHookManager;
-import jp.sourceforge.stigmata.reader.ClassFileArchive;
-import jp.sourceforge.stigmata.reader.ClassFileEntry;
-import jp.sourceforge.stigmata.reader.ClasspathContext;
-import jp.sourceforge.stigmata.reader.DefaultClassFileArchive;
-import jp.sourceforge.stigmata.reader.JarClassFileArchive;
-import jp.sourceforge.stigmata.reader.WarClassFileArchive;
 import jp.sourceforge.stigmata.result.CertainPairComparisonResultSet;
 import jp.sourceforge.stigmata.result.RoundRobinComparisonResultSet;
 
index 2144cda..4287d2b 100644 (file)
@@ -18,8 +18,8 @@ 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.reader.ClasspathContext;
 import jp.sourceforge.stigmata.result.history.ExtractedBirthmarkServiceManager;
 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
 import jp.sourceforge.stigmata.utils.WellknownClassManager;
index 8f54897..49198fa 100644 (file)
@@ -18,6 +18,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.ResourceBundle;
 
+import jp.sourceforge.stigmata.digger.ClasspathContext;
 import jp.sourceforge.stigmata.event.BirthmarkEngineAdapter;
 import jp.sourceforge.stigmata.event.BirthmarkEngineEvent;
 import jp.sourceforge.stigmata.event.WarningMessages;
@@ -27,7 +28,6 @@ import jp.sourceforge.stigmata.printer.BirthmarkServicePrinter;
 import jp.sourceforge.stigmata.printer.ComparisonResultSetPrinter;
 import jp.sourceforge.stigmata.printer.ExtractionResultSetPrinter;
 import jp.sourceforge.stigmata.printer.PrinterManager;
-import jp.sourceforge.stigmata.reader.ClasspathContext;
 import jp.sourceforge.stigmata.spi.BirthmarkSpi;
 import jp.sourceforge.stigmata.spi.ResultPrinterSpi;
 import jp.sourceforge.stigmata.ui.swing.StigmataFrame;
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileArchive.java
deleted file mode 100644 (file)
index 2ee54ae..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Iterator;
-
-/**
- * abstract presentation of class file archive's location.
- *
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public interface ClassFileArchive extends Iterable<ClassFileEntry>{
-    public URL getLocation();
-
-    public InputStream getInputStream(ClassFileEntry entry) throws IOException;
-
-    public Iterator<ClassFileEntry> iterator();
-
-    public boolean hasEntry(String className);
-
-    public ClassFileEntry getEntry(String className) throws ClassNotFoundException;
-
-    public String getName();
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java b/src/main/java/jp/sourceforge/stigmata/reader/ClassFileEntry.java
deleted file mode 100644 (file)
index 6c3f7e3..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.net.URL;
-
-/**
- * 
- *
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public class ClassFileEntry{
-    private URL location;
-    private String className;
-
-    public ClassFileEntry(String className, URL location){
-        this.className = className;
-        setLocation(location);
-    }
-
-    public String getClassName(){
-        return className;
-    }
-
-    public void setLocation(URL location){
-        this.location = location;
-    }
-
-    public URL getLocation(){
-        return location;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java b/src/main/java/jp/sourceforge/stigmata/reader/ClasspathContext.java
deleted file mode 100644 (file)
index 6bad5a5..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import jp.sourceforge.stigmata.utils.WarClassLoader;
-
-/**
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public class ClasspathContext implements Iterable<URL>{
-    private static ClasspathContext DEFAULT_CONTEXT = new ClasspathContext(false);
-
-    private ClasspathContext parent;
-    private List<URL> classpath = new ArrayList<URL>();
-    private ClassLoader loader = null;
-
-    /**
-     * private constructor for root context.
-     */
-    private ClasspathContext(boolean flag){
-    }
-
-    public ClasspathContext(){
-        this(DEFAULT_CONTEXT);
-    }
-
-    /**
-     * constructor with parent classpath context.
-     */
-    public ClasspathContext(ClasspathContext parent){
-        this.parent = parent;
-    }
-
-    /**
-     * returns parent classpath context.
-     */
-    public ClasspathContext getParent(){
-        return parent;
-    }
-
-    /**
-     * returns default classpath context.
-     */
-    public static final ClasspathContext getDefaultContext(){
-        return DEFAULT_CONTEXT;
-    }
-
-    /**
-     * adds given url to this context.  If this context already has given url or
-     * parent context has given url, this method do nothing.
-     */
-    public synchronized void addClasspath(URL url){
-        if(!contains(url)){
-            classpath.add(url);
-            loader = null;
-        }
-    }
-
-    /**
-     * returns that this context or parent context have given url.
-     */
-    public synchronized boolean contains(URL url){
-        return (parent != null && parent.contains(url)) || classpath.contains(url); 
-    }
-
-    /**
-     * returns a size of classpath list, which this context and parent context have.
-     */
-    public int getClasspathSize(){
-        int count = classpath.size();
-        if(parent != null){
-            count += parent.getClasspathSize();
-        }
-        return count;
-    }
-
-    /**
-     * returns an array of all of classpathes include parent context.
-     */
-    public synchronized URL[] getClasspathList(){
-        List<URL> list = new ArrayList<URL>();
-        for(URL url: this){
-            list.add(url);
-        }
-        return list.toArray(new URL[list.size()]);
-    }
-
-    /**
-     * clears all of classpathes of this context. not clear parent context.
-     * If you want to clear this context and parent context, use {@link #clearAll <code>clearAll</code>} method.
-     * @see clearAll
-     */
-    public void clear(){
-        classpath.clear();
-    }
-
-    /**
-     * clears all of classpathes of this context and parent context.
-     */
-    public void clearAll(){
-        clear();
-        if(parent != null){
-            parent.clearAll();
-        }
-    }
-
-    public Iterator<URL> iterator(){
-        if(parent == null){
-            return classpath.iterator();
-        }
-        else{
-            final Iterator<URL> parentIterator = parent.iterator();
-            final Iterator<URL> thisIterator = classpath.iterator();
-            return new Iterator<URL>(){
-                public boolean hasNext(){
-                    boolean next = parentIterator.hasNext();
-                    if(!next){
-                        next = thisIterator.hasNext();
-                    }
-                    return next;
-                }
-                public URL next(){
-                    URL nextObject = null;
-                    if(parentIterator.hasNext()){
-                        nextObject = parentIterator.next();
-                    }
-                    else{
-                        nextObject = thisIterator.next();
-                    }
-                    return nextObject;
-                }
-                public void remove(){
-                }
-            };
-        }
-    }
-
-    public synchronized ClassLoader createClassLoader(){
-        if(loader == null){
-            List<URL> list = new ArrayList<URL>();
-            for(URL url: this){
-                list.add(url);
-            }
-
-            loader = new WarClassLoader(list.toArray(new URL[list.size()]), getClass().getClassLoader());
-        }
-        return loader;
-    }
-
-    public ClassFileEntry find(String className) throws ClassNotFoundException{
-        ClassLoader loader = createClassLoader();
-
-        URL resource = loader.getResource(className.replace('.', '/') + ".class");
-        if(resource != null){
-            return new ClassFileEntry(className, resource);
-        }
-        return null;
-    }
-
-    public Class<?> findClass(String className) throws ClassNotFoundException{
-        try{
-            ClassLoader loader = createClassLoader();
-
-            return loader.loadClass(className);
-        } catch(NoClassDefFoundError e){
-            throw new ClassNotFoundException(e.getMessage(), e);
-        }
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/DefaultClassFileArchive.java
deleted file mode 100644 (file)
index de57c51..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.commons.EmptyVisitor;
-
-/**
- * 
- * 
- *
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public class DefaultClassFileArchive implements ClassFileArchive{
-    private File file;
-    private String className;
-    
-    public DefaultClassFileArchive(String file){
-        this(new File(file));
-    }
-    
-    public DefaultClassFileArchive(File file){
-        this.file = file;
-        parseClassName();
-    }
-    
-    public DefaultClassFileArchive(String file, String className){
-        this(new File(file), className);
-    }
-    
-    public DefaultClassFileArchive(File file, String className){
-        this.file = file;
-        this.className = className;
-    }
-
-    public URL getLocation(){
-        try {
-            return file.toURI().toURL();
-        } catch (MalformedURLException ex) {
-        }
-        return null;
-    }
-
-    public InputStream getInputStream(ClassFileEntry entry) throws IOException{
-        return new FileInputStream(file);
-    }
-
-    public Iterator<ClassFileEntry> iterator(){
-        List<ClassFileEntry> list = new ArrayList<ClassFileEntry>();
-        list.add(new ClassFileEntry(className, getLocation()));
-
-        return list.iterator();
-    }
-
-    public boolean hasEntry(String className){
-        return this.className.equals(className);
-    }
-
-    public ClassFileEntry getEntry(String className) throws ClassNotFoundException{
-        return new ClassFileEntry(className, getLocation());
-    }
-
-    public String getName(){
-        return className;
-    }
-
-    private void parseClassName(){
-        FileInputStream in = null;
-        try {
-            in = new FileInputStream(file);
-            ClassReader reader = new ClassReader(in);
-            ClassNameExtractVisitor visitor = new ClassNameExtractVisitor();
-            reader.accept(visitor, true);
-
-            this.className = visitor.getClassName();
-        } catch (FileNotFoundException ex) {
-            ex.printStackTrace();
-        } catch (IOException ex) {
-            ex.printStackTrace();
-        } finally{
-            if(in != null){
-                try{
-                    in.close();
-                } catch(IOException e){
-                }
-            }
-        }
-    }
-
-    private static class ClassNameExtractVisitor extends EmptyVisitor{
-        private String className;
-
-        public String getClassName(){
-            return className;
-        }
-
-        @Override
-        public void visit(int version, int access, String name, String signature, 
-                String superClassName, String[] interfaces){
-            className = name;
-        }
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/JarClassFileArchive.java
deleted file mode 100644 (file)
index 03157cc..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-
-/**
- *
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public class JarClassFileArchive implements ClassFileArchive{
-    private File file;
-    private JarFile jarfile;
-    private URL jarfileLocation;
-
-    public JarClassFileArchive(String jarfile) throws IOException{
-        this.file = new File(jarfile);
-        this.jarfile = new JarFile(jarfile);
-        this.jarfileLocation = file.toURI().toURL();
-    }
-
-    public URL getLocation(){
-        return jarfileLocation;
-    }
-
-    public String getName(){
-        return file.getName();
-    }
-
-    public InputStream getInputStream(ClassFileEntry entry) throws IOException{
-        if(hasEntry(entry.getClassName())){
-            return jarfile.getInputStream(jarfile.getEntry(entry.getClassName().replace('.', '/') + ".class"));
-        }
-        return null;
-    }
-
-    public Iterator<ClassFileEntry> iterator(){
-        List<ClassFileEntry> list = new ArrayList<ClassFileEntry>();
-        
-        for(Enumeration<JarEntry> e = jarfile.entries(); e.hasMoreElements(); ){
-            JarEntry entry = e.nextElement();
-            if(entry.getName().endsWith(".class")){
-                URL location = null;
-                try {
-                    location = new URL("jar:" + getLocation() + "!/" + entry.getName());
-                    String className = entry.getName();
-                    className = className.substring(0, className.length() - ".class".length());
-                    className = className.replace('/', '.');
-                    
-                    list.add(new ClassFileEntry(className, location));
-                } catch (MalformedURLException ex) {
-                }
-            }
-        }
-        return list.iterator();
-    }
-
-    public boolean hasEntry(String className){
-        return jarfile.getEntry(className.replace('.', '/') + ".class") != null;
-    }
-
-    public ClassFileEntry getEntry(String className) throws ClassNotFoundException{
-        if(hasEntry(className)){
-            String entryName = className.replace('.', '/') + ".class";
-            try{
-                URL location = new URL("jar:" + jarfile.getName() + "!/" + entryName);
-                
-                return new ClassFileEntry(className, location);
-            } catch(MalformedURLException e){
-            }
-        }
-        return null;
-    }
-
-    Enumeration<JarEntry> jarentries(){
-        return jarfile.entries();
-    }
-
-    boolean hasJarEntry(String entry){
-        return jarfile.getEntry(entry) != null;
-    }
-}
diff --git a/src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java b/src/main/java/jp/sourceforge/stigmata/reader/WarClassFileArchive.java
deleted file mode 100644 (file)
index 2253fa9..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-package jp.sourceforge.stigmata.reader;
-
-/*
- * $Id$
- */
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.jar.JarEntry;
-
-/**
- * 
- * 
- *
- * @author Haruaki TAMADA
- * @version $Revision$ 
- */
-public class WarClassFileArchive extends JarClassFileArchive{
-    public WarClassFileArchive(String jarfile) throws IOException{
-        super(jarfile);
-    }
-
-    public InputStream getInputStream(ClassFileEntry entry) throws IOException{
-        if(hasEntry(entry.getClassName())){
-            return entry.getLocation().openStream();
-        }
-        return null;
-    }
-
-    public Iterator<ClassFileEntry> iterator(){
-        List<ClassFileEntry> list = new ArrayList<ClassFileEntry>();
-
-        for(Enumeration<JarEntry> e = jarentries(); e.hasMoreElements(); ){
-            JarEntry entry = e.nextElement();
-            if(entry.getName().endsWith(".class")){
-                URL location = null;
-                try {
-                    location = new URL("jar:" + getLocation() + "!/" + entry.getName());
-                    String className = entry.getName();
-                    className = className.substring("WEB-INF/classes/".length(), className.length() - ".class".length());
-                    className = className.replace('/', '.');
-
-                    list.add(new ClassFileEntry(className, location));
-                } catch (MalformedURLException ex) {
-                    ex.printStackTrace();
-                }
-            }
-        }
-        return list.iterator();
-    }
-
-    public boolean hasEntry(String className){
-        return hasJarEntry("WEB-INF/classes/" + className.replace('.', '/') + ".class");
-    }
-
-    public ClassFileEntry getEntry(String className) throws ClassNotFoundException{
-        if(hasEntry(className)){
-            String entryName = className.replace('.', '/') + ".class";
-            try{
-                URL location = new URL("jar:" + getLocation() + "!/WEB-INF/classes/" + entryName);
-
-                return new ClassFileEntry(className, location);
-            } catch(MalformedURLException e){
-            }
-        }
-        return null;
-    }
-}
index f52e052..b9ad473 100644 (file)
@@ -25,7 +25,7 @@ import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 
 import jp.sourceforge.stigmata.Stigmata;
-import jp.sourceforge.stigmata.reader.ClasspathContext;
+import jp.sourceforge.stigmata.digger.ClasspathContext;
 import jp.sourceforge.talisman.i18n.Messages;
 
 /**
index fd036a9..51f0966 100644 (file)
@@ -31,8 +31,8 @@ import jp.sourceforge.stigmata.BirthmarkStoreTarget;
 import jp.sourceforge.stigmata.ComparisonMethod;
 import jp.sourceforge.stigmata.ExtractionUnit;
 import jp.sourceforge.stigmata.Stigmata;
+import jp.sourceforge.stigmata.digger.ClasspathContext;
 import jp.sourceforge.stigmata.filter.ComparisonPairFilterManager;
-import jp.sourceforge.stigmata.reader.ClasspathContext;
 import jp.sourceforge.stigmata.utils.ConfigFileExporter;
 import jp.sourceforge.stigmata.utils.WellknownClassManager;
 
diff --git a/src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java b/src/main/java/jp/sourceforge/stigmata/utils/WarClassLoader.java
deleted file mode 100755 (executable)
index 8e986f6..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-package jp.sourceforge.stigmata.utils;
-
-/*
- * $Id$
- */
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.net.URLStreamHandlerFactory;
-
-/**
- * ClassLoader for war file.
- * A war file layouts classes in /WEB-INF/classes directory.
- * Therefore, plain jar class loader cannot load classes included in war file.
- * Because plain jar class loader only loads classes in top directory.
- * Then, this class loader can load classes included in a plain jar file and a war file.
- * 
- * @author Haruaki Tamada
- * @version $Revision$ 
- */
-public class WarClassLoader extends URLClassLoader{
-    public WarClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory){
-        super(urls, parent, factory);
-    }
-
-    public WarClassLoader(URL[] urls, ClassLoader parent){
-        super(urls, parent);
-    }
-
-    public WarClassLoader(URL[] urls){
-        super(urls);
-    }
-
-    @Override
-    protected Class<?> findClass(String name) throws ClassNotFoundException{
-        Class<?> clazz = null;
-        try{
-            clazz = super.findClass(name);
-        } catch(ClassNotFoundException e){
-            String path = "WEB-INF/classes/" + name.replace('.', '/') + ".class";
-            for(URL url: getURLs()){
-                if(url.toString().endsWith(".war")){
-                    try{
-                        URL newurl = new URL("jar:" + url + "!/" + path);
-                        InputStream in = newurl.openStream();
-                        ByteArrayOutputStream out = new ByteArrayOutputStream();
-                        byte[] data = new byte[256];
-                        int read = 0;
-                        while((read = in.read(data, 0, data.length)) != -1){
-                            out.write(data, 0, read);
-                        }
-                        byte[] classdata = out.toByteArray();
-                        in.close();
-                        out.close();
-                    
-                        clazz = defineClass(name, classdata, 0, classdata.length);
-                        break;
-                    } catch(IOException exp){
-                    }
-                }
-            }
-        }
-        if(clazz == null){
-            throw new ClassNotFoundException(name);
-        }
-        return clazz;
-    }
-}
index cc40ce3..53621da 100755 (executable)
@@ -2,15 +2,18 @@
 
 <project name="Stigmata">
   <bannerLeft>
-    <name>sourceforge.jp</name>
-    <href>http://sourceforge.jp/</href>
-    <alt>sourceforge.jp</alt>
+    <name>Stigmata</name>
+    <href>http://stigmata.sourceforge.jp</href>
+    <src>images/logos/stigmata_logo.png</src>
+    <alt>Stigmata: Java birthmark toolkit</alt>
   </bannerLeft>
+
   <bannerRight>
     <name>Stigmata</name>
     <src>images/logos/stigmata_logo.png</src>
     <alt>Stigmata: Java birthmark toolkit</alt>
   </bannerRight>
+
   <poweredBy>
     <logo name="Powered by ASM"
           href="http://asm.objectweb.org/"
@@ -27,6 +30,7 @@
     <links>
       <item name="jbirth 1.x" href="http://se.naist.jp/jbirth/" />
       <item name="Stigmata (jbirth 2.x)" href="http://stigmata.sourceforge.jp/" />
+      <item name="Digger" href="http://stigmata.sourceforge.jp/digger/" />
     </links>
 
     <menu name="Stigmata">