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 2021/12/06 09:46:30 UTC
[camel-spring-boot] branch main updated: CAMEL-17274: camel-spring-boot - Loading resources/classes in WAR packaging is now supported. This allows Camel to load XML routes from classpath:camel/*
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
The following commit(s) were added to refs/heads/main by this push:
new 0bf124e CAMEL-17274: camel-spring-boot - Loading resources/classes in WAR packaging is now supported. This allows Camel to load XML routes from classpath:camel/*
0bf124e is described below
commit 0bf124e93198ea7fd5da95785751298a487e233c
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Dec 6 10:45:10 2021 +0100
CAMEL-17274: camel-spring-boot - Loading resources/classes in WAR packaging is now supported. This allows Camel to load XML routes from classpath:camel/*
---
.../boot/FatJarPackageScanClassResolver.java | 34 ++++++++++-----------
.../boot/FatJarPackageScanResourceResolver.java | 35 ++++++++++++----------
2 files changed, 34 insertions(+), 35 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 c159487..070eb50 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
@@ -35,14 +35,9 @@ public class FatJarPackageScanClassResolver extends DefaultPackageScanClassResol
private static final String SPRING_BOOT_CLASSIC_LIB_ROOT = "lib/";
private static final String SPRING_BOOT_BOOT_INF_LIB_ROOT = "BOOT-INF/lib/";
private static final String SPRING_BOOT_BOOT_INF_CLASSES_ROOT = "BOOT-INF/classes/";
+ private static final String SPRING_BOOT_WEB_INF_LIB_ROOT = "WEB-INF/lib/";
+ private static final String SPRING_BOOT_WEB_INF_CLASSES_ROOT = "WEB-INF/classes/";
- /**
- * Loads all the class entries from the main JAR and all nested jars.
- *
- * @param stream the inputstream of the jar file to be examined for classes
- * @param urlPath the url of the jar file to be examined for classes
- * @return all the .class entries from the main JAR and all nested jars
- */
@Override
protected List<String> doLoadJarClassEntries(InputStream stream, String urlPath) {
return doLoadJarClassEntries(stream, urlPath, true, true);
@@ -59,17 +54,15 @@ public class FatJarPackageScanClassResolver extends DefaultPackageScanClassResol
while ((entry = jarStream.getNextJarEntry()) != null) {
String name = entry.getName();
- if (name != null) {
- name = name.trim();
- if (!entry.isDirectory() && name.endsWith(".class")) {
- entries.add(cleanupSpringbootClassName(name));
- } else if (inspectNestedJars && !entry.isDirectory() && isSpringBootNestedJar(name)) {
- String nestedUrl = urlPath + "!/" + name;
- log.trace("Inspecting nested jar: {}", nestedUrl);
+ name = name.trim();
+ if (!entry.isDirectory() && name.endsWith(".class")) {
+ entries.add(cleanupSpringBootClassName(name));
+ } else if (inspectNestedJars && !entry.isDirectory() && isSpringBootNestedJar(name)) {
+ String nestedUrl = urlPath + "!/" + name;
+ log.trace("Inspecting nested jar: {}", nestedUrl);
- List<String> nestedEntries = doLoadJarClassEntries(jarStream, nestedUrl, false, false);
- entries.addAll(nestedEntries);
- }
+ List<String> nestedEntries = doLoadJarClassEntries(jarStream, nestedUrl, false, false);
+ entries.addAll(nestedEntries);
}
}
} catch (IOException ioe) {
@@ -86,14 +79,17 @@ public class FatJarPackageScanClassResolver extends DefaultPackageScanClassResol
private boolean isSpringBootNestedJar(String name) {
// Supporting both versions of the packaging model
- return name.endsWith(".jar") && (name.startsWith(SPRING_BOOT_CLASSIC_LIB_ROOT) || name.startsWith(SPRING_BOOT_BOOT_INF_LIB_ROOT));
+ return name.endsWith(".jar") && (name.startsWith(SPRING_BOOT_CLASSIC_LIB_ROOT) || name.startsWith(SPRING_BOOT_BOOT_INF_LIB_ROOT) || name.startsWith(SPRING_BOOT_WEB_INF_LIB_ROOT));
}
- private String cleanupSpringbootClassName(String name) {
+ private String cleanupSpringBootClassName(String name) {
// Classes inside BOOT-INF/classes will be loaded by the new classloader as if they were in the root
if (name.startsWith(SPRING_BOOT_BOOT_INF_CLASSES_ROOT)) {
name = name.substring(SPRING_BOOT_BOOT_INF_CLASSES_ROOT.length());
}
+ if (name.startsWith(SPRING_BOOT_WEB_INF_CLASSES_ROOT)) {
+ name = name.substring(SPRING_BOOT_WEB_INF_CLASSES_ROOT.length());
+ }
return name;
}
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 0a8b32c..760a1a0 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
@@ -35,6 +35,8 @@ public class FatJarPackageScanResourceResolver extends DefaultPackageScanResourc
private static final String SPRING_BOOT_CLASSIC_LIB_ROOT = "lib/";
private static final String SPRING_BOOT_BOOT_INF_LIB_ROOT = "BOOT-INF/lib/";
private static final String SPRING_BOOT_BOOT_INF_CLASSES_ROOT = "BOOT-INF/classes/";
+ private static final String SPRING_BOOT_WEB_INF_LIB_ROOT = "WEB-INF/lib/";
+ private static final String SPRING_BOOT_WEB_INF_CLASSES_ROOT = "WEB-INF/classes/";
@Override
protected List<String> doLoadImplementationsInJar(String packageName, InputStream stream, String urlPath) {
@@ -55,21 +57,19 @@ public class FatJarPackageScanResourceResolver extends DefaultPackageScanResourc
while ((entry = jarStream.getNextJarEntry()) != null) {
String name = entry.getName();
- if (name != null) {
- name = name.trim();
- if (!entry.isDirectory() && !name.endsWith(".class")) {
- name = cleanupSpringbootClassName(name);
- // name is FQN so it must start with package name
- if (name.startsWith(packageName)) {
- entries.add(name);
- }
- } else if (inspectNestedJars && !entry.isDirectory() && isSpringBootNestedJar(name)) {
- String nestedUrl = urlPath + "!/" + name;
- log.trace("Inspecting nested jar: {}", nestedUrl);
-
- List<String> nestedEntries = doLoadImplementationsInJar(packageName, jarStream, nestedUrl, false, false);
- entries.addAll(nestedEntries);
+ name = name.trim();
+ if (!entry.isDirectory() && !name.endsWith(".class")) {
+ name = cleanupSpringBootClassName(name);
+ // name is FQN so it must start with package name
+ if (name.startsWith(packageName)) {
+ entries.add(name);
}
+ } else if (inspectNestedJars && !entry.isDirectory() && isSpringBootNestedJar(name)) {
+ String nestedUrl = urlPath + "!/" + name;
+ log.trace("Inspecting nested jar: {}", nestedUrl);
+
+ List<String> nestedEntries = doLoadImplementationsInJar(packageName, jarStream, nestedUrl, false, false);
+ entries.addAll(nestedEntries);
}
}
} catch (IOException ioe) {
@@ -86,14 +86,17 @@ public class FatJarPackageScanResourceResolver extends DefaultPackageScanResourc
private boolean isSpringBootNestedJar(String name) {
// Supporting both versions of the packaging model
- return name.endsWith(".jar") && (name.startsWith(SPRING_BOOT_CLASSIC_LIB_ROOT) || name.startsWith(SPRING_BOOT_BOOT_INF_LIB_ROOT));
+ return name.endsWith(".jar") && (name.startsWith(SPRING_BOOT_CLASSIC_LIB_ROOT) || name.startsWith(SPRING_BOOT_BOOT_INF_LIB_ROOT) || name.startsWith(SPRING_BOOT_WEB_INF_LIB_ROOT));
}
- private String cleanupSpringbootClassName(String name) {
+ private String cleanupSpringBootClassName(String name) {
// Classes inside BOOT-INF/classes will be loaded by the new classloader as if they were in the root
if (name.startsWith(SPRING_BOOT_BOOT_INF_CLASSES_ROOT)) {
name = name.substring(SPRING_BOOT_BOOT_INF_CLASSES_ROOT.length());
}
+ if (name.startsWith(SPRING_BOOT_WEB_INF_CLASSES_ROOT)) {
+ name = name.substring(SPRING_BOOT_WEB_INF_CLASSES_ROOT.length());
+ }
return name;
}