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);
+        }
+    }
+
 }

Reply via email to