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
{