This is an automated email from the ASF dual-hosted git repository.
ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 5ad13f2 Fixed classpath and no prefix resources that were ignored in
dev mode #2476
5ad13f2 is described below
commit 5ad13f2be3d6d8ccb771dcea4c37a7d0c600b24e
Author: aldettinger <[email protected]>
AuthorDate: Mon Apr 26 17:49:02 2021 +0200
Fixed classpath and no prefix resources that were ignored in dev mode #2476
---
.../core/deployment/main/CamelMainHelper.java | 4 +-
.../main/CamelMainHotDeploymentProcessor.java | 26 ++++++++---
.../main/CamelMainNativeImageProcessor.java | 2 +-
...ePatternWithAbsoluteFilePrefixDevModeTest.java} | 4 +-
...ludePatternWithClasspathPrefixDevModeTest.java} | 50 ++++++----------------
...utesIncludePatternWithNoPrefixDevModeTest.java} | 50 ++++++----------------
.../src/main/resources/application.properties | 2 +-
7 files changed, 53 insertions(+), 85 deletions(-)
diff --git
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java
index 3f740f8..3a8350a 100644
---
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java
+++
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHelper.java
@@ -26,7 +26,7 @@ public final class CamelMainHelper {
private CamelMainHelper() {
}
- public static Stream<String> routesIncludePatter() {
+ public static Stream<String> routesIncludePattern() {
final String[] i1 = CamelSupport.getOptionalConfigValue(
"camel.main.routes-include-pattern", String[].class,
EMPTY_STRING_ARRAY);
final String[] i2 = CamelSupport.getOptionalConfigValue(
@@ -37,7 +37,7 @@ public final class CamelMainHelper {
: Stream.concat(Stream.of(i1), Stream.of(i2)).filter(location
-> !"false".equals(location));
}
- public static Stream<String> routesExcludePatter() {
+ public static Stream<String> routesExcludePattern() {
final String[] i1 = CamelSupport.getOptionalConfigValue(
"camel.main.routes-exclude-pattern", String[].class,
EMPTY_STRING_ARRAY);
final String[] i2 = CamelSupport.getOptionalConfigValue(
diff --git
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java
index 574aeef..424e3d7 100644
---
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java
+++
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainHotDeploymentProcessor.java
@@ -31,17 +31,14 @@ import org.slf4j.LoggerFactory;
class CamelMainHotDeploymentProcessor {
private static final Logger LOGGER =
LoggerFactory.getLogger(CamelMainHotDeploymentProcessor.class);
private static final String FILE_PREFIX = "file:";
+ private static final String CLASSPATH_PREFIX = "classpath:";
@BuildStep(onlyIf = CamelMainEnabled.class)
List<HotDeploymentWatchedFileBuildItem> locations() {
- List<HotDeploymentWatchedFileBuildItem> items =
CamelMainHelper.routesIncludePatter()
- .filter(location -> location.startsWith(FILE_PREFIX))
- .map(location -> location.substring(FILE_PREFIX.length()))
+ List<HotDeploymentWatchedFileBuildItem> items =
CamelMainHelper.routesIncludePattern()
+
.map(CamelMainHotDeploymentProcessor::routesIncludePatternToLocation)
+ .filter(location -> location != null)
.distinct()
- .map(Paths::get)
- .filter(Files::exists)
- .map(Path::toAbsolutePath)
- .map(Path::toString)
.map(HotDeploymentWatchedFileBuildItem::new)
.collect(Collectors.toList());
@@ -54,4 +51,19 @@ class CamelMainHotDeploymentProcessor {
return items;
}
+
+ private static String routesIncludePatternToLocation(String pattern) {
+ if (pattern.startsWith(CLASSPATH_PREFIX)) {
+ return pattern.substring(CLASSPATH_PREFIX.length());
+ } else if (pattern.startsWith(FILE_PREFIX)) {
+ String filePattern = pattern.substring(FILE_PREFIX.length());
+ Path filePatternPath = Paths.get(filePattern);
+ if (Files.exists(filePatternPath)) {
+ return filePatternPath.toAbsolutePath().toString();
+ }
+ } else if (pattern.length() > 0) {
+ return pattern;
+ }
+ return null;
+ }
}
diff --git
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java
index 4d75ffa..4af3d7f 100644
---
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java
+++
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/main/CamelMainNativeImageProcessor.java
@@ -51,7 +51,7 @@ public class CamelMainNativeImageProcessor {
Capabilities capabilities,
BuildProducer<NativeImageResourceBuildItem> nativeResource) {
- for (String path :
CamelMainHelper.routesIncludePatter().collect(Collectors.toList())) {
+ for (String path :
CamelMainHelper.routesIncludePattern().collect(Collectors.toList())) {
String scheme = ResourceHelper.getScheme(path);
// Null scheme is equivalent to classpath scheme
diff --git
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithAbsoluteFilePrefixDevModeTest.java
similarity index 95%
copy from
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
copy to
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithAbsoluteFilePrefixDevModeTest.java
index 80303e9..7cc619a 100644
---
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
+++
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithAbsoluteFilePrefixDevModeTest.java
@@ -42,7 +42,7 @@ import org.junit.jupiter.api.extension.RegisterExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
-public class CamelDevModeTest {
+public class CamelMainRoutesIncludePatternWithAbsoluteFilePrefixDevModeTest {
static Path BASE;
@RegisterExtension
@@ -87,7 +87,7 @@ public class CamelDevModeTest {
public static void copy(String source, String target) throws IOException {
Files.copy(
- CamelDevModeTest.class.getResourceAsStream("/" + source),
+
CamelMainRoutesIncludePatternWithAbsoluteFilePrefixDevModeTest.class.getResourceAsStream("/"
+ source),
BASE.resolve(target),
StandardCopyOption.REPLACE_EXISTING);
}
diff --git
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithClasspathPrefixDevModeTest.java
similarity index 69%
copy from
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
copy to
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithClasspathPrefixDevModeTest.java
index 80303e9..069867d 100644
---
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
+++
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithClasspathPrefixDevModeTest.java
@@ -16,14 +16,9 @@
*/
package org.apache.camel.quarkus.main;
-import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.util.Comparator;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
@@ -34,39 +29,29 @@ import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
-public class CamelDevModeTest {
- static Path BASE;
+public class CamelMainRoutesIncludePatternWithClasspathPrefixDevModeTest {
@RegisterExtension
static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClass(CamelSupportResource.class)
+ .addAsResource(initialRoutesXml(), "routes.xml")
.addAsResource(applicationProperties(),
"application.properties"));
- @BeforeAll
- public static void setUp() {
- try {
- BASE = Files.createTempDirectory("camel-devmode-");
- copy("routes.1", "routes.xml");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
+ public static Asset initialRoutesXml() {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><routes
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ + "xmlns=\"http://camel.apache.org/schema/spring\"
xsi:schemaLocation=\"http://camel.apache.org/schema/spring "
+ +
"http://camel.apache.org/schema/spring/camel-spring.xsd\"><route
id=\"r1-classpath-prefix\">"
+ + "<from uri=\"direct:start\"/>"
+ + "<to uri=\"direct:end\"/></route></routes>";
- @AfterAll
- public static void cleanUp() throws IOException {
- Files.walk(BASE)
- .sorted(Comparator.reverseOrder())
- .map(Path::toFile)
- .forEach(File::delete);
+ return new StringAsset(xml);
}
public static Asset applicationProperties() {
@@ -74,7 +59,7 @@ public class CamelDevModeTest {
Properties props = new Properties();
props.setProperty("quarkus.banner.enabled", "false");
- props.setProperty("camel.main.routes-include-pattern", "file:" +
BASE.toAbsolutePath().toString() + "/routes.xml");
+ props.setProperty("camel.main.routes-include-pattern",
"classpath:routes.xml");
try {
props.store(writer, "");
@@ -85,29 +70,22 @@ public class CamelDevModeTest {
return new StringAsset(writer.toString());
}
- public static void copy(String source, String target) throws IOException {
- Files.copy(
- CamelDevModeTest.class.getResourceAsStream("/" + source),
- BASE.resolve(target),
- StandardCopyOption.REPLACE_EXISTING);
- }
-
@Test
- public void testRoutesDiscovery() throws IOException {
+ public void testRoutesDiscovery() {
await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
Response res =
RestAssured.when().get("/test/describe").thenReturn();
assertThat(res.statusCode()).isEqualTo(200);
- assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r1");
+ assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r1-classpath-prefix");
});
- copy("routes.2", "routes.xml");
+ TEST.modifyResourceFile("routes.xml", xml -> xml.replaceAll("r1",
"r2"));
await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
Response res =
RestAssured.when().get("/test/describe").thenReturn();
assertThat(res.statusCode()).isEqualTo(200);
- assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r2");
+ assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r2-classpath-prefix");
});
}
}
diff --git
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithNoPrefixDevModeTest.java
similarity index 69%
rename from
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
rename to
integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithNoPrefixDevModeTest.java
index 80303e9..79227de 100644
---
a/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelDevModeTest.java
+++
b/integration-tests/main-devmode/src/test/java/org/apache/camel/quarkus/main/CamelMainRoutesIncludePatternWithNoPrefixDevModeTest.java
@@ -16,14 +16,9 @@
*/
package org.apache.camel.quarkus.main;
-import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.StandardCopyOption;
-import java.util.Comparator;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
@@ -34,39 +29,29 @@ import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.Asset;
import org.jboss.shrinkwrap.api.asset.StringAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import static org.assertj.core.api.Assertions.assertThat;
import static org.awaitility.Awaitility.await;
-public class CamelDevModeTest {
- static Path BASE;
+public class CamelMainRoutesIncludePatternWithNoPrefixDevModeTest {
@RegisterExtension
static final QuarkusDevModeTest TEST = new QuarkusDevModeTest()
.setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class)
.addClass(CamelSupportResource.class)
+ .addAsResource(initialRoutesXml(), "routes/routes.xml")
.addAsResource(applicationProperties(),
"application.properties"));
- @BeforeAll
- public static void setUp() {
- try {
- BASE = Files.createTempDirectory("camel-devmode-");
- copy("routes.1", "routes.xml");
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
+ public static Asset initialRoutesXml() {
+ String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><routes
xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ + "xmlns=\"http://camel.apache.org/schema/spring\"
xsi:schemaLocation=\"http://camel.apache.org/schema/spring "
+ +
"http://camel.apache.org/schema/spring/camel-spring.xsd\"><route
id=\"r1-no-prefix\">"
+ + "<from uri=\"direct:start\"/>"
+ + "<to uri=\"direct:end\"/></route></routes>";
- @AfterAll
- public static void cleanUp() throws IOException {
- Files.walk(BASE)
- .sorted(Comparator.reverseOrder())
- .map(Path::toFile)
- .forEach(File::delete);
+ return new StringAsset(xml);
}
public static Asset applicationProperties() {
@@ -74,7 +59,7 @@ public class CamelDevModeTest {
Properties props = new Properties();
props.setProperty("quarkus.banner.enabled", "false");
- props.setProperty("camel.main.routes-include-pattern", "file:" +
BASE.toAbsolutePath().toString() + "/routes.xml");
+ props.setProperty("camel.main.routes-include-pattern",
"routes/routes.xml");
try {
props.store(writer, "");
@@ -85,29 +70,22 @@ public class CamelDevModeTest {
return new StringAsset(writer.toString());
}
- public static void copy(String source, String target) throws IOException {
- Files.copy(
- CamelDevModeTest.class.getResourceAsStream("/" + source),
- BASE.resolve(target),
- StandardCopyOption.REPLACE_EXISTING);
- }
-
@Test
- public void testRoutesDiscovery() throws IOException {
+ public void testRoutesDiscovery() {
await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
Response res =
RestAssured.when().get("/test/describe").thenReturn();
assertThat(res.statusCode()).isEqualTo(200);
- assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r1");
+ assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r1-no-prefix");
});
- copy("routes.2", "routes.xml");
+ TEST.modifyResourceFile("routes/routes.xml", xml ->
xml.replaceAll("r1", "r2"));
await().atMost(10, TimeUnit.SECONDS).untilAsserted(() -> {
Response res =
RestAssured.when().get("/test/describe").thenReturn();
assertThat(res.statusCode()).isEqualTo(200);
- assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r2");
+ assertThat(res.body().jsonPath().getList("routes",
String.class)).containsOnly("r2-no-prefix");
});
}
}
diff --git
a/integration-tests/main-xml-io/src/main/resources/application.properties
b/integration-tests/main-xml-io/src/main/resources/application.properties
index e9d12eb..2ff43c9 100644
--- a/integration-tests/main-xml-io/src/main/resources/application.properties
+++ b/integration-tests/main-xml-io/src/main/resources/application.properties
@@ -28,4 +28,4 @@ camel.rest.component = platform-http
#
# Main
#
-camel.main.routes-include-pattern =
classpath:routes/my-routes.xml,classpath:rests/my-rests.xml,classpath:templates/my-templates.xml
+camel.main.routes-include-pattern =
routes/my-routes.xml,classpath:rests/my-rests.xml,classpath:templates/my-templates.xml