diff --git a/platform/util/src/com/intellij/util/lang/ClassPath.java b/platform/util/src/com/intellij/util/lang/ClassPath.java index 5ca37f0b8f8b..21510b2f4b25 100644 --- a/platform/util/src/com/intellij/util/lang/ClassPath.java +++ b/platform/util/src/com/intellij/util/lang/ClassPath.java @@ -50,7 +50,7 @@ class ClassPath { private static final long NS_THRESHOLD = 10000000L; private static PrintStream ourOrder; - private volatile boolean myAcceptUnescapedUrls; + private final boolean myAcceptUnescapedUrls; @SuppressWarnings({"UnusedDeclaration"}) private static void printOrder(Loader loader, String resource) { @@ -79,8 +79,13 @@ class ClassPath { } public ClassPath(URL[] urls, boolean canLockJars, boolean canUseCache) { + this(urls, canLockJars, canUseCache, false); + } + + public ClassPath(URL[] urls, boolean canLockJars, boolean canUseCache, boolean acceptUnescapedUrls) { myCanLockJars = canLockJars; myCanUseCache = canUseCache; + myAcceptUnescapedUrls = acceptUnescapedUrls; push(urls); } @@ -205,10 +210,6 @@ class ClassPath { } } - public void setAcceptUnescapedUrls(boolean acceptUnescapedUrls) { - myAcceptUnescapedUrls = acceptUnescapedUrls; - } - private class MyEnumeration implements Enumeration { private int myIndex = 0; private Resource myRes = null; diff --git a/platform/util/src/com/intellij/util/lang/UrlClassLoader.java b/platform/util/src/com/intellij/util/lang/UrlClassLoader.java index 5348d0ca526d..b04ebc301b17 100644 --- a/platform/util/src/com/intellij/util/lang/UrlClassLoader.java +++ b/platform/util/src/com/intellij/util/lang/UrlClassLoader.java @@ -46,6 +46,10 @@ public class UrlClassLoader extends ClassLoader { } public UrlClassLoader(List urls, ClassLoader parent, boolean canLockJars, boolean canUseCache) { + this(urls, parent, canLockJars, canUseCache, false); + } + + public UrlClassLoader(List urls, ClassLoader parent, boolean canLockJars, boolean canUseCache, boolean acceptUnescapedUrls) { super(parent); myClassPath = new ClassPath(urls.toArray(new URL[urls.size()]), canLockJars, canUseCache); @@ -57,10 +61,6 @@ public class UrlClassLoader extends ClassLoader { myURLs.add(url); } - public void setAcceptUnescapedUrls(boolean acceptUnescapedUrls) { - myClassPath.setAcceptUnescapedUrls(acceptUnescapedUrls); - } - public List getUrls() { return Collections.unmodifiableList(myURLs); } diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntInstallation.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntInstallation.java index 0084444e6b92..d748495ef6e5 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntInstallation.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntInstallation.java @@ -164,7 +164,7 @@ public class AntInstallation { Properties properties = new Properties(); InputStream stream = null; try { - stream = new UrlClassLoader(Collections.singletonList(antJar.toURL()), null).getResourceAsStream(VERSION_RESOURCE); + stream = new UrlClassLoader(Collections.singletonList(antJar.toURL()), null, false, false, true).getResourceAsStream(VERSION_RESOURCE); properties.load(stream); } catch (MalformedURLException e) { diff --git a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntResourcesClassLoader.java b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntResourcesClassLoader.java index 756583658818..4ff2b85c8b2a 100644 --- a/plugins/ant/src/com/intellij/lang/ant/config/impl/AntResourcesClassLoader.java +++ b/plugins/ant/src/com/intellij/lang/ant/config/impl/AntResourcesClassLoader.java @@ -31,7 +31,7 @@ public class AntResourcesClassLoader extends UrlClassLoader { private final Set myMisses = new HashSet(); public AntResourcesClassLoader(final List urls, final ClassLoader parentLoader, final boolean canLockJars, final boolean canUseCache) { - super(urls, parentLoader, canLockJars, canUseCache); + super(urls, parentLoader, canLockJars, canUseCache, true); } protected Class loadClass(final String name, final boolean resolve) throws ClassNotFoundException { diff --git a/plugins/ant/src/com/intellij/lang/ant/dom/CustomAntElementsRegistry.java b/plugins/ant/src/com/intellij/lang/ant/dom/CustomAntElementsRegistry.java index a1759abe83be..99d175981a5d 100644 --- a/plugins/ant/src/com/intellij/lang/ant/dom/CustomAntElementsRegistry.java +++ b/plugins/ant/src/com/intellij/lang/ant/dom/CustomAntElementsRegistry.java @@ -310,9 +310,7 @@ public class CustomAntElementsRegistry { if (urls.size() == 0) { return parentLoader; } - final AntResourcesClassLoader loader = new AntResourcesClassLoader(urls, parentLoader, false, false); - loader.setAcceptUnescapedUrls(true); - return loader; + return new AntResourcesClassLoader(urls, parentLoader, false, false); } public static List collectUrls(AntDomClasspathElement typedef) { diff --git a/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntTypeDefImpl.java b/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntTypeDefImpl.java index 7be5b5c7a06b..75f63fb3160b 100644 --- a/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntTypeDefImpl.java +++ b/plugins/ant/src/com/intellij/lang/ant/psi/impl/AntTypeDefImpl.java @@ -587,7 +587,6 @@ public class AntTypeDefImpl extends AntTaskImpl implements AntTypeDef { } final AntResourcesClassLoader loader = new AntResourcesClassLoader(urls, parentLoader, false, false); - loader.setAcceptUnescapedUrls(true); LOADERS_CACHE.setClassLoader(urls, loader); return loader; }