Author: peter_firmstone Date: Tue Apr 15 12:43:35 2014 New Revision: 1587556
URL: http://svn.apache.org/r1587556 Log: Add synchronization to PreferredListGen Replace use of URLClassLoader with RFC3986URLClassLoader in tools. Add more error handling in test code. Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/CheckConfigurationFile.java river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/PreferredListGen.java river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/classdepend/ClassDepend.java river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/envcheck/EnvCheck.java river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/net/RFC3986URLClassLoader.java Modified: river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/qa/src/com/sun/jini/qa/harness/NonActivatableGroupImpl.java Tue Apr 15 12:43:35 2014 @@ -86,7 +86,10 @@ class NonActivatableGroupImpl { os.flush(); } catch (IOException e) { throw new RuntimeException("WriteObject failed", e); - } + } catch (Throwable e){ + e.printStackTrace(); + System.exit(1); + } } /** Modified: river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/CheckConfigurationFile.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/CheckConfigurationFile.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/CheckConfigurationFile.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/CheckConfigurationFile.java Tue Apr 15 12:43:35 2014 @@ -48,6 +48,7 @@ import net.jini.config.Configuration; import net.jini.config.ConfigurationException; import net.jini.config.ConfigurationFile; import net.jini.config.ConfigurationProvider; +import org.apache.river.api.net.RFC3986URLClassLoader; /** * Checks the format of the source for a {@link ConfigurationFile}. The source @@ -384,7 +385,7 @@ public class CheckConfigurationFile { return false; } } - loader = URLClassLoader.newInstance(urls, loader); + loader = RFC3986URLClassLoader.newInstance(urls, loader); } Properties entries = null; if (entriesPath != null) { Modified: river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/PreferredListGen.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/PreferredListGen.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/PreferredListGen.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/PreferredListGen.java Tue Apr 15 12:43:35 2014 @@ -54,6 +54,7 @@ import java.util.jar.Manifest; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.river.api.net.RFC3986URLClassLoader; /** * Tool used to generate the preferred class information for downloadable JAR @@ -307,19 +308,8 @@ import java.util.regex.Pattern; public class PreferredListGen { /** remember classes processed to avoid redundant work or loops */ - private final Collection seen = new HashSet(); - { - seen.add("int"); // mark primitives as already seen or stack traces fly - seen.add("long"); - seen.add("float"); - seen.add("double"); - seen.add("short"); - seen.add("void"); - seen.add("char"); - seen.add("byte"); - seen.add("boolean"); - } - + private final Collection seen; + /* * NOTE: the Boolean class is used extensively to represent the three * possible states of a preferred value of true/false/undefined @@ -327,44 +317,43 @@ public class PreferredListGen { */ /** Boolean equivalent of true */ - private Boolean TRUE = new Boolean(true); + private final Boolean TRUE; /** Boolean equivalent of false */ - private Boolean FALSE = new Boolean(false); + private final Boolean FALSE; /** the names of proxies supplied by the -proxy option */ - private final Collection proxies = new HashSet(); + private final Collection proxies; /** the set of classes to report based on the -tell options */ - private final Collection tells = new HashSet(); + private final Collection tells; /** the first JAR in the set of files loaded via the -jar option */ private File targetJar; /** replace the first JAR with a copy containing the preferred list */ - private boolean replaceJar = true; + private boolean replaceJar; /** print the preferred list, only meaningful with the -jar option */ - private boolean printResults = false; + private boolean printResults; /** ordered list of JAR files names specified by the -jar options */ - private final Collection jarList = new ArrayList(); + private final Collection jarList; /** the classpath specified by the -cp option */ private String classpath; /** the ordered graph containing the JAR class info */ - private final Graph listGraph = new Graph(); + private final Graph listGraph; /** if true, use defaultToForce for default, otherwise optimize */ - private boolean forceDefault = false; + private boolean forceDefault; /** the default preference value to force */ - private boolean defaultToForce = false; + private boolean defaultToForce; /** the class loader for resolving class names */ - private ClassLoader loader = - (ClassLoader) getClass().getClassLoader(); + private ClassLoader loader; /** I18N resource bundle */ private static ResourceBundle resources; @@ -373,21 +362,21 @@ public class PreferredListGen { private static boolean resinit = false; /** union of the entries in all JAR files for -api/-impl existence check */ - private HashSet jarEntries = new HashSet(); + private final HashSet jarEntries; /** loaded JAR names, to avoid infinite loops due to circular definitions */ - private HashSet jarFiles = new HashSet(); + private final HashSet jarFiles; /** if true, non-public roots are allowed */ - private boolean keepNonPublicRoots = false; + private boolean keepNonPublicRoots; /** if true, load JARs without preferred lists directly into listGraph */ - private boolean doMerge = true; + private boolean doMerge; /** * Get the strings from our resource localization bundle. */ - private static String getString(String key, Object v1, Object v2, Object v3) { + private synchronized static String getString(String key, Object v1, Object v2, Object v3) { String fmt = "no text found: \"" + key + "\""; if (!resinit) { try { @@ -455,6 +444,32 @@ public class PreferredListGen { * @param args the command line arguments */ private PreferredListGen(String[] args) { + this.FALSE = Boolean.FALSE; + this.TRUE = Boolean.TRUE; + this.doMerge = true; + this.keepNonPublicRoots = false; + this.jarFiles = new HashSet(); + this.jarEntries = new HashSet(); + this.loader = getClass().getClassLoader(); + this.defaultToForce = false; + this.forceDefault = false; + this.forceDefault = false; + this.listGraph = new Graph(); + this.jarList = new ArrayList(); + this.printResults = false; + this.replaceJar = true; + this.tells = new HashSet(); + this.proxies = new HashSet(); + this.seen = new HashSet(); + seen.add("int"); // mark primitives as already seen or stack traces fly + seen.add("long"); + seen.add("float"); + seen.add("double"); + seen.add("short"); + seen.add("void"); + seen.add("char"); + seen.add("byte"); + seen.add("boolean"); if (args.length == 0) { throw new IllegalArgumentException(getString("preflistgen.noargs")); } @@ -506,6 +521,32 @@ public class PreferredListGen { * preferred list. */ public PreferredListGen() { + this.doMerge = true; + this.keepNonPublicRoots = false; + this.jarFiles = new HashSet(); + this.jarEntries = new HashSet(); + this.loader = (ClassLoader) getClass().getClassLoader(); + this.defaultToForce = false; + this.forceDefault = false; + this.forceDefault = false; + this.listGraph = new Graph(); + this.jarList = new ArrayList(); + this.printResults = false; + this.replaceJar = true; + this.tells = new HashSet(); + this.proxies = new HashSet(); + this.FALSE = Boolean.FALSE; + this.TRUE = Boolean.TRUE; + this.seen = new HashSet(); + seen.add("int"); // mark primitives as already seen or stack traces fly + seen.add("long"); + seen.add("float"); + seen.add("double"); + seen.add("short"); + seen.add("void"); + seen.add("char"); + seen.add("byte"); + seen.add("boolean"); } /** @@ -516,7 +557,7 @@ public class PreferredListGen { * * @param printResults if <code>true</code>, print the preferred list */ - public void setPrint(boolean printResults) { + public final synchronized void setPrint(boolean printResults) { this.printResults = printResults; } @@ -528,7 +569,7 @@ public class PreferredListGen { * @param keepNonPublicRoots if <code>true</code>, non-public root classes * are retained */ - public void setKeepNonPublicRoots(boolean keepNonPublicRoots) { + public final synchronized void setKeepNonPublicRoots(boolean keepNonPublicRoots) { this.keepNonPublicRoots = keepNonPublicRoots; } @@ -545,7 +586,7 @@ public class PreferredListGen { * * @param doMerge if <code>true</code>, perform the merge */ - public void setMerge(boolean doMerge) { + public final synchronized void setMerge(boolean doMerge) { this.doMerge = doMerge; } @@ -555,7 +596,7 @@ public class PreferredListGen { * * @param replaceJar if <code>true</code>, update the target JAR file */ - public void setReplaceJar(boolean replaceJar) { + public final synchronized void setReplaceJar(boolean replaceJar) { this.replaceJar = replaceJar; } @@ -566,7 +607,7 @@ public class PreferredListGen { * * @param jarName the name of the JAR file to add to the set. */ - public void addJar(String jarName) { + public final void addJar(String jarName) { jarList.add(jarName); } @@ -578,7 +619,7 @@ public class PreferredListGen { * * @param tellName the name of the JAR file to add to the tell set. */ - public void addTell(String tellName) { + public final void addTell(String tellName) { String tellClass = fileToClass(tellName); tells.add(tellClass); } @@ -607,7 +648,7 @@ public class PreferredListGen { * @throws IllegalArgumentException if <code>implName</code> does not match * any of the criteria above. */ - public void addImpl(String implName) { + public final void addImpl(String implName) { listGraph.initialize(implName, true, null); // preferred } @@ -635,7 +676,7 @@ public class PreferredListGen { * @throws IllegalArgumentException if <code>apiName</code> does not match * any of the criteria above. */ - public void addApi(String apiName) { + public final void addApi(String apiName) { listGraph.initialize(apiName, false, null); // not preferred } @@ -647,7 +688,7 @@ public class PreferredListGen { * * @param def the default value to use for the list */ - public void setDefault(boolean def) { + public final synchronized void setDefault(boolean def) { forceDefault = true; defaultToForce = def; } @@ -659,7 +700,7 @@ public class PreferredListGen { * * @param path the classpath for the classes to include in the analysis */ - public void setClasspath(String path) { + public final synchronized void setClasspath(String path) { this.classpath = path; } @@ -669,7 +710,7 @@ public class PreferredListGen { * * @param proxy the name of the proxy class */ - public void addProxy(String proxy) { + public final void addProxy(String proxy) { proxies.add(proxy); } @@ -708,7 +749,7 @@ public class PreferredListGen { * @throws IllegalArgumentException if the JAR file does not exist * or is a directory */ - private void loadJar(File jar) throws IOException { + private synchronized void loadJar(File jar) throws IOException { if (jarFiles.contains(jar)) { return; // short-circuit circular definitions } @@ -1079,8 +1120,8 @@ public class PreferredListGen { * <li>if any component in the classpath does not exist * </ul> */ - public void compute() throws IOException { - if (jarList.size() == 0) { + public synchronized void compute() throws IOException { + if (jarList.isEmpty()) { throw new IllegalArgumentException(getString("preflistgen.nojars")); } ArrayList list = new ArrayList(); @@ -1107,7 +1148,7 @@ public class PreferredListGen { if (cl != null) { cl = cl.getParent(); // the extension classloader } - loader = new URLClassLoader(urls, cl); + loader = new RFC3986URLClassLoader(urls, cl); } loadJars(); Collection roots = getRoots(); @@ -1158,9 +1199,7 @@ public class PreferredListGen { addProxyRoot(proxyClass, roots); } catch (ClassNotFoundException e) { String msg = getString("preflistgen.badproxyclass", proxy); - IllegalArgumentException iae = new IllegalArgumentException(msg); - iae.initCause(e); - throw iae; + throw new IllegalArgumentException(msg, e); } } return roots; @@ -1200,7 +1239,8 @@ public class PreferredListGen { return; } Class[] parents = intFace.getInterfaces(); - for (int i = 0; i < parents.length; i++) { + int l = parents.length; + for (int i = 0; i < l; i++) { addIfPublic(parents[i], roots); } } @@ -1236,7 +1276,7 @@ public class PreferredListGen { * * @throws IOException if an error occurs updating the target JAR file. */ - public void generatePreferredList(PrintWriter writer) throws IOException { + public synchronized void generatePreferredList(PrintWriter writer) throws IOException { if (writer == null && printResults) { writer = new PrintWriter(System.out); } @@ -1244,7 +1284,7 @@ public class PreferredListGen { if (!tells.isEmpty()) { return; } - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append("PreferredResources-Version: 1.0"); sb.append(newLine); Collection entries = new TreeSet(); @@ -1383,7 +1423,10 @@ public class PreferredListGen { } catch (IOException e) { print("preflistgen.ioproblem", e.getMessage()); e.printStackTrace(); - } + } catch (Error e){ + print("preflistgen.error", e.getMessage()); + e.printStackTrace(); + } System.exit(1); } @@ -1397,21 +1440,21 @@ public class PreferredListGen { private class PrefData implements Comparable { /** the preferred list entry name string */ - String name; + final String name; /** the preferred value for this entry */ - boolean preferred; + final boolean preferred; /** the sourceJar, used when merging two graphs */ - File sourceJar; + final File sourceJar; PrefData(String name, boolean preferred) { - this.name = name; - this.preferred = preferred; + this(name, preferred , null); } PrefData(String name, boolean preferred, File sourceJar) { - this(name, preferred); + this.name = name; + this.preferred = preferred; this.sourceJar = sourceJar; } @@ -1479,27 +1522,32 @@ public class PreferredListGen { String name; /** the set of child nodes of this node */ - HashSet nodes = new HashSet(); + HashSet nodes; /** the preferred state, only meaningful to leaf (class) nodes */ - boolean preferred = true; + boolean preferred; /** the parent of this node, or null for the root node */ Graph parent; /** the type of the node */ - int type = INHERIT; + int type; /** the preferred value implied for child nodes */ Boolean impliedPref = null; /** the source JAR causing creation of this node, or null */ - File sourceJar = null; + File sourceJar; /** * Create the root node of the graph, setting implied pref to TRUE */ Graph() { + this.type = INHERIT; + this.sourceJar = null; + this.parent = null; + this.preferred = true; + this.nodes = new HashSet(); name = ""; impliedPref = TRUE; type = DEFAULT; @@ -1522,6 +1570,8 @@ public class PreferredListGen { * through the -api or -impl options */ Graph(Graph parent, String name, int type, File sourceJar) { + this.type = INHERIT; + this.nodes = new HashSet(); if (type != CLASS && type != RESOURCE) { throw new IllegalStateException("type must be CLASS or " + "RESOURCE"); @@ -1580,6 +1630,9 @@ public class PreferredListGen { boolean preferred, File sourceJar) { + this.type = INHERIT; + this.preferred = true; + this.nodes = new HashSet(); if (type == INHERIT) { throw new IllegalStateException("Cannot create a preference " + "node of type INHERIT"); @@ -1593,7 +1646,7 @@ public class PreferredListGen { if (type == CLASS || type == RESOURCE) { this.preferred = preferred; } else { - impliedPref = new Boolean(preferred); + impliedPref = Boolean.valueOf(preferred); } } else { this.name = name.substring(0, firstDot); @@ -1659,7 +1712,7 @@ public class PreferredListGen { * * @param roots the collection to add to */ - void addRoots(Collection roots) { + synchronized void addRoots(Collection roots) { if (type == CLASS && sourceJar == null) { String entryName = getFullName() + ".class"; if (!jarEntries.contains(entryName)) { @@ -1690,7 +1743,7 @@ public class PreferredListGen { * and all child nodes recursively. If this is a leaf node, * do nothing. */ - void reset() { + synchronized void reset() { if (type != CLASS && type != RESOURCE) { type = INHERIT; impliedPref = null; @@ -1711,9 +1764,9 @@ public class PreferredListGen { * * @return the implied preferred value */ - boolean impliedChildPref() { + synchronized boolean impliedChildPref() { if (type == NAMESPACE || type == DEFAULT) { - if (impliedPref == null) { + if (!(impliedPref instanceof Boolean)) { throw new IllegalStateException("impliedPref is null"); } return impliedPref.booleanValue(); @@ -1732,11 +1785,11 @@ public class PreferredListGen { * * @return the implied preferred value */ - boolean childPref() { + synchronized boolean childPref() { if (type == NAMESPACE || type == DEFAULT || type == PKG) { if (impliedPref == null) { throw new IllegalStateException("impliedPref is null"); - } + } return impliedPref.booleanValue(); } if (parent == null) { @@ -1752,12 +1805,12 @@ public class PreferredListGen { * @param value the default preferred value, which may be * <code>null</code> to indicate that no default is defined */ - void setDefaultPref(boolean value) { + synchronized void setDefaultPref(boolean value) { if (name.length() > 0) { throw new IllegalStateException("must set default on root"); } type = DEFAULT; - impliedPref = new Boolean(value); + impliedPref = Boolean.valueOf(value); } // inherit javadoc @@ -1777,7 +1830,7 @@ public class PreferredListGen { * @param type the node type, must be CLASS or RESOURCE * @param sourceJar the JAR file causing this class or resource to be added */ - void add(String name, int type, File sourceJar) { + synchronized void add(String name, int type, File sourceJar) { if (type != CLASS && type != RESOURCE) { throw new IllegalStateException("type must be CLASS or " + "RESOURCE"); @@ -1814,7 +1867,7 @@ public class PreferredListGen { * @param name the name of the node to test for * @return true if the node is found */ - boolean contains(String name) { + synchronized boolean contains(String name) { String nodeName; String childName = null; int firstDot = name.indexOf("."); @@ -1848,7 +1901,7 @@ public class PreferredListGen { * @param name the dot-separate name * @return true if the node is frozen */ - boolean isFrozen(String name) { + synchronized boolean isFrozen(String name) { String nodeName; String childName = null; int firstDot = name.indexOf("."); @@ -1899,7 +1952,7 @@ public class PreferredListGen { * * @param name the name of the child node to add */ - void addWithPreference(String name, + synchronized void addWithPreference(String name, int type, boolean preferred, File sourceJar) @@ -1925,7 +1978,7 @@ public class PreferredListGen { this.preferred = preferred; } } else { - impliedPref = new Boolean(preferred); + impliedPref = Boolean.valueOf(preferred); } } return; @@ -1972,7 +2025,7 @@ public class PreferredListGen { * <code>false</code> if the values don't match and * the node is frozen and force is false. */ - boolean setPreferred(String name, boolean value, boolean force) { + synchronized boolean setPreferred(String name, boolean value, boolean force) { if (name == null) { if (type != CLASS && type != RESOURCE) { throw new IllegalStateException("only leaf node preferred" @@ -2010,7 +2063,7 @@ public class PreferredListGen { * @param value the preferred value to search for * @return the number of leaf nodes having the given value */ - int countPreferred(boolean value) { + synchronized int countPreferred(boolean value) { if (type == CLASS || type == RESOURCE) { // leaf return (value == preferred) ? 1 : 0; } else { @@ -2036,7 +2089,7 @@ public class PreferredListGen { * @return the number of leaf nodes having preferred values which differ * from that implied by its ancestors */ - int countImpliedFailures() { + synchronized int countImpliedFailures() { if (type == CLASS || type == RESOURCE) { // leaf if (type == CLASS) { Graph outer = getOuter(); @@ -2062,7 +2115,7 @@ public class PreferredListGen { * @return the number of leaf nodes which have this node * as an ancestor. */ - int countLeafNodes() { + synchronized int countLeafNodes() { int total = 0; Iterator it = nodes.iterator(); while (it.hasNext()) { @@ -2103,7 +2156,7 @@ public class PreferredListGen { * value. If there is no outer class corresponding to the inner class, * this node is retained. Call this method on all children. */ - void markStaleInnerClasses() { + synchronized void markStaleInnerClasses() { if (type == CLASS) { Graph outer = getOuter(); if (outer != null) { @@ -2128,7 +2181,7 @@ public class PreferredListGen { * @return the graph for the outer class, or <code>null</code> if this is * not a nested class, or if the outer class is not in the graph */ - Graph getOuter() { + final synchronized Graph getOuter() { if (type != CLASS) { throw new IllegalStateException("Attempt to get outer of a non-class"); } @@ -2144,7 +2197,7 @@ public class PreferredListGen { /** * Recursively remove child nodes of type STALE. */ - void deleteStaleNodes() { + synchronized void deleteStaleNodes() { for (Iterator it = nodes.iterator(); it.hasNext(); ) { Graph g = (Graph) it.next(); if (g.type == STALE) { @@ -2178,7 +2231,7 @@ public class PreferredListGen { * * @return <code>true</code> if all a the nodes are leaf nodes */ - boolean containsLeavesOnly() { + synchronized boolean containsLeavesOnly() { Iterator it = nodes.iterator(); while (it.hasNext()) { Graph g = (Graph) it.next(); @@ -2189,7 +2242,7 @@ public class PreferredListGen { return true; } - void addLeaves(Collection leaves) { + synchronized void addLeaves(Collection leaves) { if (type == CLASS) { leaves.add(new PrefData(getFullName() + ".class", preferred, @@ -2208,7 +2261,7 @@ public class PreferredListGen { return; } - void merge(Graph g) { + synchronized void merge(Graph g) { Collection leaves = new HashSet(); g.addLeaves(leaves); Iterator it = leaves.iterator(); @@ -2252,7 +2305,7 @@ public class PreferredListGen { * </ul> * */ - void addEntries(Collection entries) { + synchronized void addEntries(Collection entries) { if (parent == null) { Iterator it = nodes.iterator(); while (it.hasNext()) { @@ -2374,7 +2427,7 @@ public class PreferredListGen { * @param pref the node's implied preference value * @return the number of entries generated by children */ - int countEntries(int type, Boolean pref) { + synchronized int countEntries(int type, Boolean pref) { HashSet test = new HashSet(); this.type = type; impliedPref = pref; Modified: river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/classdepend/ClassDepend.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/classdepend/ClassDepend.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/classdepend/ClassDepend.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/classdepend/ClassDepend.java Tue Apr 15 12:43:35 2014 @@ -34,6 +34,7 @@ import java.util.Map; import java.util.Set; import java.util.StringTokenizer; import java.util.regex.Pattern; +import org.apache.river.api.net.RFC3986URLClassLoader; /** * Provides a utility for computing which classes are depended on by a set of @@ -226,11 +227,11 @@ public class ClassDepend { ClassLoader parent = system.getParent(); loader = (systemClasspath.equals(classpath)) ? system - : new URLClassLoader(getClasspathURLs(classpath), parent); + : new RFC3986URLClassLoader(getClasspathURLs(classpath), parent); packageClasses = new PackageClasses(classpath); platformLoader = (platform == null) ? parent - : new URLClassLoader(getClasspathURLs(platform), parent); + : new RFC3986URLClassLoader(getClasspathURLs(platform), parent); //System.out.println(platformLoader.toString()); } Modified: river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/envcheck/EnvCheck.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/envcheck/EnvCheck.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/envcheck/EnvCheck.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/com/sun/jini/tool/envcheck/EnvCheck.java Tue Apr 15 12:43:35 2014 @@ -48,6 +48,7 @@ import com.sun.jini.start.SharedActivata import com.sun.jini.start.SharedActivationGroupDescriptor; import com.sun.jini.tool.envcheck.Reporter.Message; +import org.apache.river.api.net.RFC3986URLClassLoader; /** * Tool used to perform validity checks on the run-time environment of a client @@ -536,7 +537,7 @@ public class EnvCheck { if (pluginJarList.size() > 0) { URL[] urls = (URL[]) pluginJarList.toArray(new URL[pluginJarList.size()]); - pluginLoader = new URLClassLoader(urls, pluginLoader); + pluginLoader = new RFC3986URLClassLoader(urls, pluginLoader); } loadPlugins(); parseArgs(cmdLine); Modified: river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/net/RFC3986URLClassLoader.java URL: http://svn.apache.org/viewvc/river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/net/RFC3986URLClassLoader.java?rev=1587556&r1=1587555&r2=1587556&view=diff ============================================================================== --- river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/net/RFC3986URLClassLoader.java (original) +++ river/jtsk/skunk/qa_refactor/trunk/src/org/apache/river/api/net/RFC3986URLClassLoader.java Tue Apr 15 12:43:35 2014 @@ -685,7 +685,7 @@ public class RFC3986URLClassLoader exten private final String prefix; public URLFileHandler(URL url, RFC3986URLClassLoader loader) { - super(url, null); + super(url, loader); String baseFile = url.getFile(); String host = url.getHost(); int hostLength = 0;
