You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/12/21 10:17:07 UTC

(camel-spring-boot) 01/02: CAMEL-20262: camel-spring-boot - Fix fatjar scan classresolver to work with SB nested JARs in fat-jar

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git

commit c29471908469aef48df3296100e0ad2c5fbd8d3d
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Dec 21 11:15:36 2023 +0100

    CAMEL-20262: camel-spring-boot - Fix fatjar scan classresolver to work with SB nested JARs in fat-jar
---
 .../boot/FatJarPackageScanClassResolver.java       | 32 ++++++++++++++++++++++
 .../boot/FatJarPackageScanResourceResolver.java    | 10 +++----
 2 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanClassResolver.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanClassResolver.java
index 0fcede943e3..63aeca3ee98 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanClassResolver.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanClassResolver.java
@@ -18,6 +18,11 @@ package org.apache.camel.spring.boot;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLDecoder;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.jar.JarEntry;
@@ -25,6 +30,7 @@ import java.util.jar.JarInputStream;
 
 import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
 import org.apache.camel.util.IOHelper;
+import org.apache.camel.util.StringHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -46,6 +52,32 @@ public class FatJarPackageScanClassResolver extends DefaultPackageScanClassResol
         return doLoadJarClassEntries(stream, urlPath, true, true);
     }
 
+    @Override
+    protected String parseUrlPath(URL url) {
+        String urlPath = url.getFile();
+
+        urlPath = URLDecoder.decode(urlPath, StandardCharsets.UTF_8);
+        if (LOG.isTraceEnabled()) {
+            LOG.trace("Decoded urlPath: {} with protocol: {}", urlPath, url.getProtocol());
+        }
+
+        String nested = "nested:";
+        if (urlPath.startsWith(nested)) {
+            try {
+                urlPath = (new URI(url.getFile())).getPath();
+                return StringHelper.before(urlPath, "!", urlPath);
+            } catch (URISyntaxException e) {
+                // ignore
+            }
+            if (urlPath.startsWith(nested)) {
+                urlPath = urlPath.substring(nested.length());
+                return StringHelper.before(urlPath, "!", urlPath);
+            }
+        }
+
+        return super.parseUrlPath(url);
+    }
+
     protected List<String> doLoadJarClassEntries(InputStream stream, String urlPath, boolean inspectNestedJars, boolean closeStream) {
         List<String> entries = new ArrayList<>();
 
diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanResourceResolver.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanResourceResolver.java
index e0675813306..f661c5d3902 100644
--- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanResourceResolver.java
+++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/FatJarPackageScanResourceResolver.java
@@ -88,26 +88,25 @@ public class FatJarPackageScanResourceResolver extends DefaultPackageScanResourc
         return entries;
     }
 
+    @Override
     protected String parseUrlPath(URL url) {
         String urlPath = url.getFile();
+
         urlPath = URLDecoder.decode(urlPath, StandardCharsets.UTF_8);
         if (LOG.isTraceEnabled()) {
             LOG.trace("Decoded urlPath: {} with protocol: {}", urlPath, url.getProtocol());
         }
 
         String nested = "nested:";
-
         if (urlPath.startsWith(nested)) {
             try {
                 urlPath = (new URI(url.getFile())).getPath();
-
                 return StringHelper.before(urlPath, "!", urlPath);
-            } catch (URISyntaxException var4) {
+            } catch (URISyntaxException e) {
+                // ignore
             }
-
             if (urlPath.startsWith(nested)) {
                 urlPath = urlPath.substring(nested.length());
-
                 return StringHelper.before(urlPath, "!", urlPath);
             }
         }
@@ -131,5 +130,4 @@ public class FatJarPackageScanResourceResolver extends DefaultPackageScanResourc
         return name;
     }
 
-
 }