You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by pe...@apache.org on 2015/11/27 07:17:12 UTC

svn commit: r1716798 - /river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java

Author: peter_firmstone
Date: Fri Nov 27 06:17:11 2015
New Revision: 1716798

URL: http://svn.apache.org/viewvc?rev=1716798&view=rev
Log:
The classpath wasn't complete for HTTPD, ensured that all required classes were visible on the classpath.  This is a codebase server required by a number of tests.

Modified:
    river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java

Modified: river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java
URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java?rev=1716798&r1=1716797&r2=1716798&view=diff
==============================================================================
--- river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java (original)
+++ river/jtsk/skunk/qa-refactor-namespace/trunk/qa/jtreg/testlibrary/HTTPD.java Fri Nov 27 06:17:11 2015
@@ -26,12 +26,12 @@ import java.net.InetAddress;
 import java.net.MalformedURLException;
 import java.net.Socket;
 import java.net.SocketPermission;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.security.AccessController;
 import java.security.CodeSource;
 import java.security.PermissionCollection;
-import java.security.Permissions;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
 
@@ -84,7 +84,18 @@ public class HTTPD {
 	String jsklibJar = libDir + File.separator + "jsk-lib.jar";
 	System.err.println("HTTPD: using " + toolsJar +
 			   " on port " + port + " serving " + dir);
-	ClassLoader ld = new Loader0(toolsJar, jsklibJar, port, dir);
+        
+	URLClassLoader ld = new Loader0(toolsJar, jsklibJar, port, dir);
+        StringBuilder sb = new StringBuilder(200);
+        URL[] urls = ld.getURLs();
+        for (int i = 0, l = urls.length; i < l; i++){
+            try {
+                sb.append(urls[i].toURI().toString());
+            } catch (URISyntaxException ex) {
+                System.err.println(HTTPD.class.getName() + ": " + ex.getMessage());
+            }
+        }
+        System.err.println("ClassLoader: " + sb.toString());
 	try {
 	    Class cl = Class.forName("HTTPD$Daemon", false, ld);
 	    Method m = cl.getMethod("create",
@@ -210,7 +221,7 @@ public class HTTPD {
 	    this.port = port;
 	    this.dir = dir;
 	}
-
+        
 	protected PermissionCollection getPermissions(CodeSource cs) {
 	    PermissionCollection perms = super.getPermissions(cs);
 	    perms.add(new SocketPermission("localhost:" + port, "listen"));
@@ -225,18 +236,39 @@ public class HTTPD {
      * permission to read toolsJar.
      */
     private static class Loader0 extends Loader {
-	private String toolsJar;
-	private String jsklibJar;
+	private final String toolsJar;
+	private final String jsklibJar;
+        
+        /**
+         * This was added because the test class path wasn't available for this
+         * loader, which meant that Daemon wasn't on the loaders class path,
+         * preventing the test from running.  Not sure why this change was
+         * necessary, whether something has changed in jtreg or Java 8.
+         * 
+         * These tests unfortunately are not run often enough by developers.
+         * 
+         * @return
+         * @throws MalformedURLException 
+         */
+        private static URL[] getPath() throws MalformedURLException{
+            String classpath = TestLibrary.getProperty("test.class.path", TestParams.testClasses);
+            String [] cp = classpath.split(File.pathSeparator);
+            int len = cp.length;
+            URL[] path = new URL[len];
+            for (int i = 0; i < len; i++){
+                path[i] = new File(cp[i]).toURI().toURL();
+            }
+            return path;
+        }
 
         Loader0(String toolsJar, String jsklibJar, int port, String dir)
 	    throws MalformedURLException
 	{
-	    super(new URL[]{new File(TestParams.testClasses).toURI().toURL()},
-		  port, dir);
+	    super(getPath(), port, dir);
 	    this.toolsJar = toolsJar;
 	    this.jsklibJar = jsklibJar;
 	}
-	
+        
 	protected synchronized Class loadClass(String name, boolean resolve)
 	    throws ClassNotFoundException
 	{