This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new ae5888f (chores) camel-rss: fix a resource leak reading from XML
(#6012)
ae5888f is described below
commit ae5888fa8005e2c86f0950882626f1a4057cd233
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Tue Aug 31 11:14:57 2021 +0200
(chores) camel-rss: fix a resource leak reading from XML (#6012)
---
.../org/apache/camel/component/rss/RssUtils.java | 26 +++++++++++++++++-----
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssUtils.java
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssUtils.java
index cca71f9..06851e8 100644
---
a/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssUtils.java
+++
b/components/camel-rss/src/main/java/org/apache/camel/component/rss/RssUtils.java
@@ -16,11 +16,12 @@
*/
package org.apache.camel.component.rss;
-import java.io.InputStream;
+import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.io.FeedException;
import com.rometools.rome.io.SyndFeedInput;
import com.rometools.rome.io.XmlReader;
import org.apache.commons.codec.binary.Base64;
@@ -39,14 +40,19 @@ public final class RssUtils {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
try {
Thread.currentThread().setContextClassLoader(classLoader);
- InputStream in = new URL(feedUri).openStream();
- SyndFeedInput input = new SyndFeedInput();
- return input.build(new XmlReader(in));
+ return createSyndFeed(feedUri);
} finally {
Thread.currentThread().setContextClassLoader(tccl);
}
}
+ private static SyndFeed createSyndFeed(String feedUri) throws IOException,
FeedException {
+ try (XmlReader reader = new XmlReader(new URL(feedUri))) {
+ SyndFeedInput input = new SyndFeedInput();
+ return input.build(reader);
+ }
+ }
+
public static SyndFeed createFeed(String feedUri, String username, String
password) throws Exception {
return createFeed(feedUri, username, password,
Thread.currentThread().getContextClassLoader());
}
@@ -60,10 +66,18 @@ public final class RssUtils {
HttpURLConnection httpcon = (HttpURLConnection)
feedUrl.openConnection();
String encoding =
Base64.encodeBase64String(username.concat(":").concat(password).getBytes());
httpcon.setRequestProperty("Authorization", "Basic " + encoding);
- SyndFeedInput input = new SyndFeedInput();
- return input.build(new XmlReader(httpcon));
+
+ return createSyndFeed(httpcon);
} finally {
Thread.currentThread().setContextClassLoader(tccl);
}
}
+
+ private static SyndFeed createSyndFeed(HttpURLConnection connection)
throws IOException, FeedException {
+ try (XmlReader reader = new XmlReader(connection)) {
+ SyndFeedInput input = new SyndFeedInput();
+ return input.build(reader);
+ }
+ }
+
}