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();