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