diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f019bb923..2914fed69 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -299,6 +299,7 @@ Randy Watler Raphael Pierquin Ray Waldin Remie Bolte +René Krell Richard Evans Richard Steele Rick Beton diff --git a/WHATSNEW b/WHATSNEW index 6ed7b150e..4f2b9f7e4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -36,6 +36,10 @@ Fixed bugs: readers. Bugzilla Report 54672 + * several places where resources are read from jars will now + explicitly disable caching to avoid problems with reloading jars. + Bugzilla Report 54473 + Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index ffb452b43..6c86cd6fd 100644 --- a/contributors.xml +++ b/contributors.xml @@ -1209,6 +1209,10 @@ Remie Bolte + + René + Krell + Richard Evans diff --git a/src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java b/src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java index 286433aa7..f889d501b 100644 --- a/src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java +++ b/src/main/org/apache/tools/ant/ArgumentProcessorRegistry.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; +import java.net.URLConnection; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; @@ -74,7 +75,9 @@ public class ArgumentProcessorRegistry { Enumeration resources = classLoader.getResources(SERVICE_ID); while (resources.hasMoreElements()) { URL resource = resources.nextElement(); - ArgumentProcessor processor = getProcessorByService(resource.openStream()); + URLConnection conn = resource.openConnection(); + conn.setDefaultUseCaches(false); + ArgumentProcessor processor = getProcessorByService(conn.getInputStream()); registerArgumentProcessor(processor); } } diff --git a/src/main/org/apache/tools/ant/ProjectHelperRepository.java b/src/main/org/apache/tools/ant/ProjectHelperRepository.java index f83c97326..75c2476ff 100644 --- a/src/main/org/apache/tools/ant/ProjectHelperRepository.java +++ b/src/main/org/apache/tools/ant/ProjectHelperRepository.java @@ -22,6 +22,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.lang.reflect.Constructor; import java.net.URL; +import java.net.URLConnection; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; @@ -87,8 +88,10 @@ public class ProjectHelperRepository { classLoader.getResources(ProjectHelper.SERVICE_ID); while (resources.hasMoreElements()) { URL resource = resources.nextElement(); + URLConnection conn = resource.openConnection(); + conn.setDefaultUseCaches(false); projectHelper = - getProjectHelperByService(resource.openStream()); + getProjectHelperByService(conn.getInputStream()); registerProjectHelper(projectHelper); } } diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java index dc19512b1..fa48f03a2 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java @@ -48,6 +48,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.net.URL; +import java.net.URLConnection; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; @@ -257,7 +258,9 @@ public class ProjectHelper2 extends ProjectHelper { inputStream = zf.getInputStream(zf.getEntry(uri.substring(pling + 1))); } else { - inputStream = url.openStream(); + URLConnection conn = url.openConnection(); + conn.setDefaultUseCaches(false); + inputStream = conn.getInputStream(); } } diff --git a/src/main/org/apache/tools/ant/taskdefs/Antlib.java b/src/main/org/apache/tools/ant/taskdefs/Antlib.java index d4eb23f13..44aaab272 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Antlib.java +++ b/src/main/org/apache/tools/ant/taskdefs/Antlib.java @@ -20,6 +20,7 @@ package org.apache.tools.ant.taskdefs; import java.io.IOException; import java.net.URL; +import java.net.URLConnection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -63,7 +64,9 @@ public class Antlib extends Task implements TaskContainer { String uri) { // Check if we can contact the URL try { - antlibUrl.openConnection().connect(); + URLConnection conn = antlibUrl.openConnection(); + conn.setDefaultUseCaches(false); + conn.connect(); } catch (IOException ex) { throw new BuildException( "Unable to find " + antlibUrl, ex); diff --git a/src/main/org/apache/tools/ant/types/XMLCatalog.java b/src/main/org/apache/tools/ant/types/XMLCatalog.java index a05305741..e93f6416e 100644 --- a/src/main/org/apache/tools/ant/types/XMLCatalog.java +++ b/src/main/org/apache/tools/ant/types/XMLCatalog.java @@ -26,6 +26,7 @@ import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; +import java.net.URLConnection; import java.util.Stack; import java.util.Vector; import javax.xml.parsers.ParserConfigurationException; @@ -763,7 +764,12 @@ public class XMLCatalog extends DataType if (url != null) { try { - InputStream is = url.openStream(); + InputStream is = null; + URLConnection conn = url.openConnection(); + if (conn != null) { + conn.setDefaultUseCaches(false); + is = conn.getInputStream(); + } if (is != null) { source = new InputSource(is); String sysid = url.toExternalForm();