OSDN Git Service

テストケースの充実.
authorHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Fri, 6 May 2011 08:24:46 +0000 (17:24 +0900)
committerHaruaki Tamada <tamada@cc.kyoto-su.ac.jp>
Fri, 6 May 2011 08:26:13 +0000 (17:26 +0900)
.gitignore [new file with mode: 0644]
pom.xml
src/main/java/jp/sourceforge/stigmata/digger/util/WarClassLoader.java
src/test/java/jp/sourceforge/stigmata/digger/ClassFileEntryTest.java
src/test/java/jp/sourceforge/stigmata/digger/ClasspathContextTest.java
src/test/java/jp/sourceforge/stigmata/digger/util/WarClassLoaderTest.java [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..fb5e61d
--- /dev/null
@@ -0,0 +1,6 @@
+.classpath
+.settings
+.project
+.djunitplugin
+target
+jcoverage.ser
diff --git a/pom.xml b/pom.xml
index cdad674..8193aab 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -1,10 +1,12 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
+<project xmlns="http://maven.apache.org/POM/4.0.0"\r
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">\r
 \r
   <modelVersion>4.0.0</modelVersion>\r
   <groupId>jp.sourceforge.stigmata</groupId>\r
   <artifactId>digger</artifactId>\r
   <packaging>jar</packaging>\r
-  <version>3.0.0-SNAPSHOT</version>\r
+  <version>3.0.0</version>\r
   <name>digger</name>\r
   <description>Dig up class files</description>\r
   <url>http://stigmata.sourceforge.jp/digger/</url>\r
index 34cbed1..54e9a42 100644 (file)
@@ -25,10 +25,18 @@ public class WarClassLoader extends URLClassLoader{
         super(urls, parent);
     }
 
-    public WarClassLoader(URL[] urls){
+    public WarClassLoader(URL... urls){
         super(urls);
     }
 
+    public WarClassLoader(ClassLoader parent, URL... urls){
+        this(urls, parent);
+    }
+
+    public WarClassLoader(ClassLoader parent, URLStreamHandlerFactory factory, URL... urls){
+        this(urls, parent, factory);
+    }
+
     @Override
     protected Class<?> findClass(String name) throws ClassNotFoundException{
         Class<?> clazz = null;
@@ -40,26 +48,16 @@ public class WarClassLoader extends URLClassLoader{
                 if(url.toString().endsWith(".war")){
                     try{
                         URL newurl = new URL("jar:" + url + "!/" + path);
-                        InputStream in = null;
-                        ByteArrayOutputStream out = null;
-                        byte[] classdata = null;
-                        try{
-                            in = newurl.openStream();
-                            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);
-                            }
-                            classdata = out.toByteArray();
-                        } finally{
-                            if(in != null){
-                                in.close();
-                            }
-                            if(out != null){
-                                out.close();
-                            }
+                        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;
index 7c563e8..9e0271c 100644 (file)
@@ -1,9 +1,5 @@
 package jp.sourceforge.stigmata.digger;
 
-/*
- * $Id$
- */
-
 import java.io.File;
 import java.net.MalformedURLException;
 
@@ -14,7 +10,6 @@ import org.junit.Test;
 /**
  * 
  * @author Haruaki Tamada
- * @version $Revision$
  */
 public class ClassFileEntryTest{
     private ClasspathContext context;
index dde0e20..55267b4 100644 (file)
@@ -1,9 +1,5 @@
 package jp.sourceforge.stigmata.digger;
 
-/*
- * $Id$
- */
-
 import java.io.File;
 import java.net.URL;
 
@@ -15,7 +11,6 @@ import org.junit.Test;
  * test for ClasspathContext class.
  * 
  * @author Haruaki Tamada
- * @version $Revision$ 
  */
 public class ClasspathContextTest{
     private static final String ASM_FILE = "target/asm-3.3.jar";
diff --git a/src/test/java/jp/sourceforge/stigmata/digger/util/WarClassLoaderTest.java b/src/test/java/jp/sourceforge/stigmata/digger/util/WarClassLoaderTest.java
new file mode 100644 (file)
index 0000000..590bf69
--- /dev/null
@@ -0,0 +1,33 @@
+package jp.sourceforge.stigmata.digger.util;\r
+\r
+import java.io.File;\r
+import java.net.URL;\r
+\r
+import junit.framework.Assert;\r
+\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+\r
+public class WarClassLoaderTest{\r
+    private WarClassLoader loader;\r
+    private URL url;\r
+\r
+    @Before\r
+    public void setUp() throws Exception{\r
+        url = new File("target/test-classes/resources/samplewar.war").toURI().toURL();\r
+    }\r
+\r
+    @Test\r
+    public void testBasic() throws Exception{\r
+        loader = new WarClassLoader(url);\r
+\r
+        URL url1 = loader.findResource("META-INF/MANIFEST.MF");\r
+        Assert.assertNotNull(url1);\r
+\r
+        URL url2 = loader.findResource("src/HelloWorld.java");\r
+        Assert.assertNotNull(url2);\r
+\r
+        Class<?> helloWorld = loader.loadClass("HelloWorld");\r
+        Assert.assertEquals("HelloWorld", helloWorld.getName());\r
+    }\r
+}\r