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

Reply via email to