You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2019/12/19 10:43:34 UTC
[camel-quarkus] branch master updated: Modular RoutesCollector
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/master by this push:
new f3e6fce Modular RoutesCollector
f3e6fce is described below
commit f3e6fce8cd727f577914cd43f03c486326079350
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Wed Dec 18 21:30:06 2019 +0100
Modular RoutesCollector
The aim here is to make the RoutesCollector more flexible so platform
such as camel-k can fine tune the behavior of the collector i.e. by
providing am ad-hoc way of discovery certain routes from the registry
---
.../component/xml/deployment/XmlProcessor.java | 13 +--
...tXmlLoader.java => DefaultXmlRoutesLoader.java} | 4 +-
.../camel/quarkus/component/xml/XmlRecorder.java | 12 +--
.../quarkus/core/deployment/BuildProcessor.java | 31 ++++--
.../deployment/CamelRoutesLoaderBuildItems.java | 57 +++++++++++
.../camel/quarkus/core/CamelMainRecorder.java | 8 +-
.../apache/camel/quarkus/core/CamelRecorder.java | 10 +-
.../camel/quarkus/core/CamelRoutesCollector.java | 104 +++++++++++++++++++++
...XmlLoader.java => DisabledXmlRoutesLoader.java} | 2 +-
.../org/apache/camel/quarkus/core/FastModel.java | 4 +-
.../{XmlLoader.java => RegistryRoutesLoader.java} | 13 +--
.../camel/quarkus/core/RegistryRoutesLoaders.java | 103 ++++++++++++++++++++
.../core/{XmlLoader.java => XmlRoutesLoader.java} | 2 +-
integration-tests/core-main-collector/pom.xml | 94 +++++++++++++++++++
.../apache/camel/quarkus/core/CamelServlet.java | 38 +++++---
.../src/main/resources/application.properties | 22 -----
.../org/apache/camel/quarkus/core/CamelTest.java | 33 ++++---
.../{core-main => core-main-xml}/pom.xml | 26 +-----
.../apache/camel/quarkus/core/CamelServlet.java | 72 ++++++++++++++
.../src/main/resources/application.properties | 18 ----
.../org/apache/camel/quarkus/core/CamelTest.java | 53 +++++++++++
.../src/test/resources/my-routes.xml | 0
integration-tests/core-main/pom.xml | 4 -
.../apache/camel/quarkus/core/CamelServlet.java | 9 ++
.../src/main/resources/application.properties | 1 -
.../org/apache/camel/quarkus/core/CamelTest.java | 29 +-----
integration-tests/pom.xml | 7 ++
.../support/core-main-collector/deployment/pom.xml | 73 +++++++++++++++
.../core/runtime/support/deployment/Feature.java | 20 ++--
.../support/deployment/SupportBuildStep.java | 32 +++----
.../support/{ => core-main-collector}/pom.xml | 16 +---
.../support/core-main-collector/runtime/pom.xml | 71 ++++++++++++++
.../core/runtime/support/SupportRecorder.java | 24 ++---
.../runtime/support/SupportRoutesCollector.java | 23 +++--
integration-tests/support/pom.xml | 1 +
35 files changed, 797 insertions(+), 232 deletions(-)
diff --git a/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java b/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
index f43af15..ec99180 100644
--- a/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
+++ b/extensions/core-xml/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
@@ -23,9 +23,8 @@ import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.jaxb.deployment.JaxbFileRootBuildItem;
import org.apache.camel.quarkus.component.xml.XmlRecorder;
import org.apache.camel.quarkus.core.deployment.CamelModelJAXBContextFactoryBuildItem;
-import org.apache.camel.quarkus.core.deployment.CamelRoutesCollectorBuildItem;
+import org.apache.camel.quarkus.core.deployment.CamelRoutesLoaderBuildItems;
import org.apache.camel.quarkus.core.deployment.CamelSupport;
-import org.apache.camel.quarkus.core.deployment.CamelXmlLoaderBuildItem;
import org.apache.camel.quarkus.support.common.CamelCapabilities;
class XmlProcessor {
@@ -50,14 +49,8 @@ class XmlProcessor {
@BuildStep
@Record(value = ExecutionTime.STATIC_INIT, optional = true)
- CamelXmlLoaderBuildItem xmlLoader(XmlRecorder recorder) {
- return new CamelXmlLoaderBuildItem(recorder.newDefaultXmlLoader());
- }
-
- @BuildStep
- @Record(value = ExecutionTime.STATIC_INIT, optional = true)
- public CamelRoutesCollectorBuildItem routesCollector(XmlRecorder recorder) {
- return new CamelRoutesCollectorBuildItem(recorder.newDefaultRoutesCollector());
+ CamelRoutesLoaderBuildItems.Xml xmlLoader(XmlRecorder recorder) {
+ return new CamelRoutesLoaderBuildItems.Xml(recorder.newDefaultXmlLoader());
}
@BuildStep
diff --git a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
similarity index 92%
copy from extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java
copy to extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
index 67a329d..c9e1455 100644
--- a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java
+++ b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlRoutesLoader.java
@@ -22,9 +22,9 @@ import org.apache.camel.CamelContext;
import org.apache.camel.model.ModelHelper;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
-import org.apache.camel.quarkus.core.XmlLoader;
+import org.apache.camel.quarkus.core.XmlRoutesLoader;
-public class DefaultXmlLoader implements XmlLoader {
+public class DefaultXmlRoutesLoader implements XmlRoutesLoader {
@Override
public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream is) throws Exception {
diff --git a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
index dd5acc0..0170587 100644
--- a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
+++ b/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
@@ -22,11 +22,9 @@ import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultModelJAXBContextFactory;
-import org.apache.camel.main.DefaultRoutesCollector;
-import org.apache.camel.main.RoutesCollector;
import org.apache.camel.model.ValidateDefinition;
import org.apache.camel.model.validator.PredicateValidatorDefinition;
-import org.apache.camel.quarkus.core.XmlLoader;
+import org.apache.camel.quarkus.core.XmlRoutesLoader;
import org.apache.camel.reifier.ProcessorReifier;
import org.apache.camel.reifier.ValidateReifier;
import org.apache.camel.reifier.validator.PredicateValidatorReifier;
@@ -49,12 +47,8 @@ public class XmlRecorder {
return new RuntimeValue<>(factory);
}
- public RuntimeValue<XmlLoader> newDefaultXmlLoader() {
- return new RuntimeValue<>(new DefaultXmlLoader());
- }
-
- public RuntimeValue<RoutesCollector> newDefaultRoutesCollector() {
- return new RuntimeValue<>(new DefaultRoutesCollector());
+ public RuntimeValue<XmlRoutesLoader> newDefaultXmlLoader() {
+ return new RuntimeValue<>(new DefaultXmlRoutesLoader());
}
public void initXmlReifiers() {
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
index fb83ff4..8fd37d3 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/BuildProcessor.java
@@ -57,7 +57,6 @@ import org.apache.camel.quarkus.core.CoreAttachmentsRecorder;
import org.apache.camel.quarkus.core.Flags;
import org.apache.camel.quarkus.core.UploadAttacher;
import org.apache.camel.quarkus.support.common.CamelCapabilities;
-import org.apache.camel.spi.Registry;
import org.apache.camel.spi.TypeConverterLoader;
import org.apache.camel.spi.TypeConverterRegistry;
import org.jboss.jandex.ClassInfo;
@@ -187,7 +186,7 @@ class BuildProcessor {
List<CamelBeanBuildItem> registryItems,
List<CamelServiceFilterBuildItem> serviceFilters) {
- final RuntimeValue<Registry> registry = recorder.createRegistry();
+ final RuntimeValue<org.apache.camel.spi.Registry> registry = recorder.createRegistry();
CamelSupport.services(applicationArchives)
.filter(si -> !containerBeans.getBeans().contains(si))
@@ -238,8 +237,8 @@ class BuildProcessor {
@Overridable
@BuildStep
@Record(value = ExecutionTime.STATIC_INIT, optional = true)
- public CamelXmlLoaderBuildItem createXmlLoader(CamelRecorder recorder) {
- return new CamelXmlLoaderBuildItem(recorder.newDisabledXmlLoader());
+ public CamelRoutesLoaderBuildItems.Xml createXmlLoader(CamelRecorder recorder) {
+ return new CamelRoutesLoaderBuildItems.Xml(recorder.newDisabledXmlRoutesLoader());
}
@BuildStep
@@ -258,14 +257,14 @@ class BuildProcessor {
CamelRegistryBuildItem registry,
CamelTypeConverterRegistryBuildItem typeConverterRegistry,
CamelModelJAXBContextFactoryBuildItem contextFactory,
- CamelXmlLoaderBuildItem xmlLoader,
+ CamelRoutesLoaderBuildItems.Xml xmlLoader,
BeanContainerBuildItem beanContainer) {
RuntimeValue<CamelContext> context = recorder.createContext(
registry.getRegistry(),
typeConverterRegistry.getRegistry(),
contextFactory.getContextFactory(),
- xmlLoader.getXmlLoader(),
+ xmlLoader.getLoader(),
beanContainer.getValue());
return new CamelContextBuildItem(context);
@@ -301,6 +300,12 @@ class BuildProcessor {
* disabled by setting quarkus.camel.disable-main = true
*/
public static class Main {
+ @Overridable
+ @BuildStep
+ @Record(value = ExecutionTime.STATIC_INIT, optional = true)
+ public CamelRoutesLoaderBuildItems.Registry createRegistryLoader(CamelRecorder recorder) {
+ return new CamelRoutesLoaderBuildItems.Registry(recorder.newDefaultRegistryRoutesLoader());
+ }
@BuildStep(onlyIf = { Flags.MainEnabled.class, Flags.RoutesDiscoveryEnabled.class })
public List<CamelRoutesBuilderClassBuildItem> discoverRoutesBuilderClassNames(
@@ -330,8 +335,13 @@ class BuildProcessor {
@Overridable
@BuildStep
@Record(value = ExecutionTime.STATIC_INIT, optional = true)
- public CamelRoutesCollectorBuildItem createRoutesCollector(CamelMainRecorder recorder) {
- return new CamelRoutesCollectorBuildItem(recorder.newDisabledXmlRoutesCollector());
+ public CamelRoutesCollectorBuildItem createRoutesCollector(
+ CamelMainRecorder recorder,
+ CamelRoutesLoaderBuildItems.Registry registryRoutesLoader,
+ CamelRoutesLoaderBuildItems.Xml xmlRoutesLoader) {
+
+ return new CamelRoutesCollectorBuildItem(
+ recorder.newRoutesCollector(registryRoutesLoader.getLoader(), xmlRoutesLoader.getLoader()));
}
@BuildStep(onlyIf = Flags.MainEnabled.class)
@@ -399,8 +409,9 @@ class BuildProcessor {
*
* @param recorder the recorder.
* @param main a reference to a {@link CamelMain}.
- * @param registry a reference to a {@link Registry}; note that this parameter is here as placeholder to
- * ensure the {@link Registry} is fully configured before starting camel-main.
+ * @param registry a reference to a {@link org.apache.camel.spi.Registry}; note that this parameter is here as
+ * placeholder to
+ * ensure the {@link org.apache.camel.spi.Registry} is fully configured before starting camel-main.
* @param executor the {@link org.apache.camel.spi.ReactiveExecutor} to be configured on camel-main, this
* happens during {@link ExecutionTime#RUNTIME_INIT} because the executor may need to start
* threads and so on.
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java
new file mode 100644
index 0000000..815cff7
--- /dev/null
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesLoaderBuildItems.java
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.core.deployment;
+
+import io.quarkus.builder.item.SimpleBuildItem;
+import io.quarkus.runtime.RuntimeValue;
+import org.apache.camel.quarkus.core.RegistryRoutesLoader;
+import org.apache.camel.quarkus.core.XmlRoutesLoader;
+
+public final class CamelRoutesLoaderBuildItems {
+ private CamelRoutesLoaderBuildItems() {
+ }
+
+ /**
+ * Holds the {@link RegistryRoutesLoader} instance.
+ */
+ public static final class Registry extends SimpleBuildItem {
+ private final RuntimeValue<RegistryRoutesLoader> value;
+
+ public Registry(RuntimeValue<RegistryRoutesLoader> value) {
+ this.value = value;
+ }
+
+ public RuntimeValue<RegistryRoutesLoader> getLoader() {
+ return value;
+ }
+ }
+
+ /**
+ * Holds the {@link XmlRoutesLoader} instance.
+ */
+ public static final class Xml extends SimpleBuildItem {
+ private final RuntimeValue<XmlRoutesLoader> value;
+
+ public Xml(RuntimeValue<XmlRoutesLoader> value) {
+ this.value = value;
+ }
+
+ public RuntimeValue<XmlRoutesLoader> getLoader() {
+ return value;
+ }
+ }
+}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
index 7d4c906..484a300 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelMainRecorder.java
@@ -95,7 +95,11 @@ public class CamelMainRecorder {
}
}
- public RuntimeValue<RoutesCollector> newDisabledXmlRoutesCollector() {
- return new RuntimeValue<>(new DisabledXmlRoutesCollector());
+ public RuntimeValue<RoutesCollector> newRoutesCollector(
+ RuntimeValue<RegistryRoutesLoader> registryRoutesLoader,
+ RuntimeValue<XmlRoutesLoader> xmlRoutesLoader) {
+
+ return new RuntimeValue<>(new CamelRoutesCollector(registryRoutesLoader.getValue(), xmlRoutesLoader.getValue()));
}
+
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
index c22926f..56e6304 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRecorder.java
@@ -49,7 +49,7 @@ public class CamelRecorder {
RuntimeValue<Registry> registry,
RuntimeValue<TypeConverterRegistry> typeConverterRegistry,
RuntimeValue<ModelJAXBContextFactory> contextFactory,
- RuntimeValue<XmlLoader> xmlLoader,
+ RuntimeValue<XmlRoutesLoader> xmlLoader,
BeanContainer beanContainer) {
FastCamelContext context = new FastCamelContext();
context.setRegistry(registry.getValue());
@@ -106,7 +106,11 @@ public class CamelRecorder {
return new RuntimeValue<>(new DisabledModelJAXBContextFactory());
}
- public RuntimeValue<XmlLoader> newDisabledXmlLoader() {
- return new RuntimeValue<>(new DisabledXmlLoader());
+ public RuntimeValue<XmlRoutesLoader> newDisabledXmlRoutesLoader() {
+ return new RuntimeValue<>(new DisabledXmlRoutesLoader());
+ }
+
+ public RuntimeValue<RegistryRoutesLoader> newDefaultRegistryRoutesLoader() {
+ return new RuntimeValue<>(new RegistryRoutesLoaders.Default());
}
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java
new file mode 100644
index 0000000..8f63cea
--- /dev/null
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelRoutesCollector.java
@@ -0,0 +1,104 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.core;
+
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.model.rest.RestsDefinition;
+import org.apache.camel.spi.PackageScanResourceResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class CamelRoutesCollector implements RoutesCollector {
+ private static final Logger LOGGER = LoggerFactory.getLogger(CamelRoutesCollector.class);
+
+ private final RegistryRoutesLoader registryRoutesLoader;
+ private final XmlRoutesLoader xmlRoutesLoader;
+
+ public CamelRoutesCollector(RegistryRoutesLoader registryRoutesLoader, XmlRoutesLoader xmlRoutesLoader) {
+ this.registryRoutesLoader = registryRoutesLoader;
+ this.xmlRoutesLoader = xmlRoutesLoader;
+ }
+
+ public RegistryRoutesLoader getRegistryRoutesLoader() {
+ return registryRoutesLoader;
+ }
+
+ public XmlRoutesLoader getXmlRoutesLoader() {
+ return xmlRoutesLoader;
+ }
+
+ @Override
+ public List<RoutesBuilder> collectRoutesFromRegistry(
+ CamelContext camelContext,
+ String excludePattern,
+ String includePattern) {
+
+ return registryRoutesLoader.collectRoutesFromRegistry(camelContext, excludePattern, includePattern);
+ }
+
+ @Override
+ public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelContext, String directory) {
+ List<RoutesDefinition> answer = new ArrayList<>();
+ PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
+
+ for (String part : directory.split(",")) {
+ LOGGER.info("Loading additional Camel XML routes from: {}", part);
+ try {
+ for (InputStream is : resolver.findResources(part)) {
+ answer.add(xmlRoutesLoader.loadRoutesDefinition(camelContext, is));
+ }
+ } catch (FileNotFoundException e) {
+ LOGGER.debug("No XML routes found in {}. Skipping XML routes detection.", part);
+ } catch (Exception e) {
+ throw RuntimeCamelException.wrapRuntimeException(e);
+ }
+ }
+
+ return answer;
+ }
+
+ @Override
+ public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
+ List<RestsDefinition> answer = new ArrayList<>();
+ PackageScanResourceResolver resolver = camelContext.adapt(ExtendedCamelContext.class).getPackageScanResourceResolver();
+
+ for (String part : directory.split(",")) {
+ LOGGER.info("Loading additional Camel XML rests from: {}", part);
+ try {
+ for (InputStream is : resolver.findResources(part)) {
+ answer.add(xmlRoutesLoader.loadRestsDefinition(camelContext, is));
+ }
+ } catch (FileNotFoundException e) {
+ LOGGER.debug("No XML rests found in {}. Skipping XML rests detection.", part);
+ } catch (Exception e) {
+ throw RuntimeCamelException.wrapRuntimeException(e);
+ }
+ }
+
+ return answer;
+ }
+}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java
similarity index 95%
copy from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
copy to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java
index 3b2e4de..b470294 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesLoader.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
-public class DisabledXmlLoader implements XmlLoader {
+public class DisabledXmlRoutesLoader implements XmlRoutesLoader {
@Override
public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception {
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
index 05f5aa4..182f252 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
@@ -41,9 +41,9 @@ import org.apache.camel.support.CamelContextHelper;
public class FastModel extends BaseModel {
- private final XmlLoader xmlLoader;
+ private final XmlRoutesLoader xmlLoader;
- public FastModel(CamelContext camelContext, XmlLoader xmlLoader) {
+ public FastModel(CamelContext camelContext, XmlRoutesLoader xmlLoader) {
super(camelContext);
this.xmlLoader = xmlLoader;
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoader.java
similarity index 70%
copy from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
copy to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoader.java
index 09ed32e..58f45dc 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoader.java
@@ -16,16 +16,11 @@
*/
package org.apache.camel.quarkus.core;
-import java.io.InputStream;
+import java.util.List;
import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-
-public interface XmlLoader {
-
- RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception;
-
- RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception;
+import org.apache.camel.RoutesBuilder;
+public interface RegistryRoutesLoader {
+ List<RoutesBuilder> collectRoutesFromRegistry(CamelContext camelContext, String excludePattern, String includePattern);
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java
new file mode 100644
index 0000000..2167689
--- /dev/null
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/RegistryRoutesLoaders.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.core;
+
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.util.AntPathMatcher;
+import org.apache.camel.util.ObjectHelper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public final class RegistryRoutesLoaders {
+ private RegistryRoutesLoaders() {
+ }
+
+ public static final class Disabled implements RegistryRoutesLoader {
+ @Override
+ public List<RoutesBuilder> collectRoutesFromRegistry(
+ CamelContext camelContext,
+ String excludePattern,
+ String includePattern) {
+
+ return Collections.emptyList();
+ }
+ }
+
+ public static final class Default implements RegistryRoutesLoader {
+ private static final Logger LOGGER = LoggerFactory.getLogger(Default.class);
+
+ @Override
+ public List<RoutesBuilder> collectRoutesFromRegistry(
+ CamelContext camelContext,
+ String excludePattern,
+ String includePattern) {
+
+ final List<RoutesBuilder> routes = new ArrayList<>();
+ final AntPathMatcher matcher = new AntPathMatcher();
+
+ Set<RoutesBuilder> builders = camelContext.getRegistry().findByType(RoutesBuilder.class);
+ for (RoutesBuilder routesBuilder : builders) {
+ // filter out abstract classes
+ boolean abs = Modifier.isAbstract(routesBuilder.getClass().getModifiers());
+ if (!abs) {
+ String name = routesBuilder.getClass().getName();
+ // make name as path so we can use ant path matcher
+ name = name.replace('.', '/');
+
+ boolean match = !"false".equals(includePattern);
+ // exclude take precedence over include
+ if (match && ObjectHelper.isNotEmpty(excludePattern)) {
+ // there may be multiple separated by comma
+ String[] parts = excludePattern.split(",");
+ for (String part : parts) {
+ // must negate when excluding, and hence !
+ match = !matcher.match(part, name);
+ LOGGER.trace("Java RoutesBuilder: {} exclude filter: {} -> {}", name, part, match);
+ if (!match) {
+ break;
+ }
+ }
+ }
+ if (match && ObjectHelper.isNotEmpty(includePattern)) {
+ // there may be multiple separated by comma
+ String[] parts = includePattern.split(",");
+ for (String part : parts) {
+ match = matcher.match(part, name);
+ LOGGER.trace("Java RoutesBuilder: {} include filter: {} -> {}", name, part, match);
+ if (match) {
+ break;
+ }
+ }
+ }
+ LOGGER.debug("Java RoutesBuilder: {} accepted by include/exclude filter: {}", name, match);
+ if (match) {
+ routes.add(routesBuilder);
+ }
+ }
+ }
+
+ return routes;
+ }
+ }
+}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
similarity index 97%
copy from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
copy to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
index 09ed32e..36a2c1d 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlRoutesLoader.java
@@ -22,7 +22,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
-public interface XmlLoader {
+public interface XmlRoutesLoader {
RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception;
diff --git a/integration-tests/core-main-collector/pom.xml b/integration-tests/core-main-collector/pom.xml
new file mode 100644
index 0000000..72746c0
--- /dev/null
+++ b/integration-tests/core-main-collector/pom.xml
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-tests</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>camel-quarkus-integration-test-core-main-collector</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Core Main Collector :: Tests</name>
+ <description>The camel integration tests</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-support-core-main-collector-ext</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-direct</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-timer</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-jsonb</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-resteasy-jsonb</artifactId>
+ </dependency>
+
+ <!-- test dependencies -->
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-junit5</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.rest-assured</groupId>
+ <artifactId>rest-assured</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.assertj</groupId>
+ <artifactId>assertj-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>build</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java b/integration-tests/core-main-collector/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
similarity index 54%
copy from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
copy to integration-tests/core-main-collector/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index 3b2e4de..9f57961 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
+++ b/integration-tests/core-main-collector/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -16,22 +16,34 @@
*/
package org.apache.camel.quarkus.core;
-import java.io.InputStream;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
+import org.apache.camel.spi.Registry;
-public class DisabledXmlLoader implements XmlLoader {
+@Path("/test")
+@ApplicationScoped
+public class CamelServlet {
+ @Inject
+ CamelMain main;
+ @Inject
+ Registry registry;
+ @Inject
+ CamelContext context;
- @Override
- public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
+ @Path("/main/describe")
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public JsonObject describeMain() {
+ return Json.createObjectBuilder()
+ .add("routes-collector-type", main.getRoutesCollector().getClass().getName())
+ .build();
}
-
- @Override
- public RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
- }
-
}
diff --git a/integration-tests/core-main/src/main/resources/application.properties b/integration-tests/core-main-collector/src/main/resources/application.properties
similarity index 75%
copy from integration-tests/core-main/src/main/resources/application.properties
copy to integration-tests/core-main-collector/src/main/resources/application.properties
index 23a94b0..70c6501 100644
--- a/integration-tests/core-main/src/main/resources/application.properties
+++ b/integration-tests/core-main-collector/src/main/resources/application.properties
@@ -20,29 +20,7 @@
quarkus.log.file.enable = false
#
-# Quarkus :: Camel
-#
-quarkus.camel.main.routes-discovery.exclude-patterns = org/**/*Filtered
-
-#
# Camel
#
camel.context.name=quarkus-camel-example
-#
-# Timer
-#
-camel.component.timer.basic-property-binding = true
-
-#
-# Main
-#
-camel.main.auto-configuration-log-summary = false
-camel.main.xml-routes = file:src/test/resources/my-routes.xml
-
-
-#
-# Other
-#
-the.message = default
-%staging.the.message = test
\ No newline at end of file
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java b/integration-tests/core-main-collector/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
similarity index 53%
rename from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
rename to integration-tests/core-main-collector/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index 3b2e4de..a301353 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlLoader.java
+++ b/integration-tests/core-main-collector/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -16,22 +16,29 @@
*/
package org.apache.camel.quarkus.core;
-import java.io.InputStream;
+import javax.ws.rs.core.MediaType;
-import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.path.json.JsonPath;
+import org.apache.camel.quarkus.core.runtime.support.SupportRoutesCollector;
+import org.junit.jupiter.api.Test;
-public class DisabledXmlLoader implements XmlLoader {
+import static org.assertj.core.api.Assertions.assertThat;
- @Override
- public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
- }
+@QuarkusTest
+public class CamelTest {
+ @Test
+ public void testMainInstanceWithCustomCollector() {
+ JsonPath p = RestAssured.given()
+ .accept(MediaType.APPLICATION_JSON)
+ .get("/test/main/describe")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .jsonPath();
- @Override
- public RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
+ assertThat(p.getString("routes-collector-type")).isEqualTo(SupportRoutesCollector.class.getName());
}
-
}
diff --git a/integration-tests/core-main/pom.xml b/integration-tests/core-main-xml/pom.xml
similarity index 82%
copy from integration-tests/core-main/pom.xml
copy to integration-tests/core-main-xml/pom.xml
index bb0a336..79ee762 100644
--- a/integration-tests/core-main/pom.xml
+++ b/integration-tests/core-main-xml/pom.xml
@@ -25,8 +25,8 @@
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>camel-quarkus-integration-test-core-main</artifactId>
- <name>Camel Quarkus :: Integration Tests :: Core Main :: Tests</name>
+ <artifactId>camel-quarkus-integration-test-core-main-xml</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Core Main XML :: Tests</name>
<description>The camel integration tests</description>
<dependencies>
@@ -36,14 +36,6 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-endpointdsl</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-reactive-executor</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-direct</artifactId>
</dependency>
<dependency>
@@ -54,10 +46,6 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-integration-test-support-core-main-ext</artifactId>
- </dependency>
<dependency>
<groupId>io.quarkus</groupId>
@@ -100,15 +88,6 @@
</execution>
</executions>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <systemPropertyVariables>
- <quarkus.test.profile>staging</quarkus.test.profile>
- </systemPropertyVariables>
- </configuration>
- </plugin>
</plugins>
</build>
@@ -134,7 +113,6 @@
<configuration>
<systemProperties>
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
- <quarkus.test.native-image-profile>staging</quarkus.test.native-image-profile>
</systemProperties>
</configuration>
</execution>
diff --git a/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
new file mode 100644
index 0000000..bab7f56
--- /dev/null
+++ b/integration-tests/core-main-xml/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -0,0 +1,72 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.core;
+
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonArrayBuilder;
+import javax.json.JsonObject;
+import javax.json.JsonObjectBuilder;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.Registry;
+
+@Path("/test")
+@ApplicationScoped
+public class CamelServlet {
+ @Inject
+ CamelMain main;
+ @Inject
+ Registry registry;
+ @Inject
+ CamelContext context;
+
+ @Path("/main/describe")
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public JsonObject describeMain() {
+ JsonArrayBuilder listeners = Json.createArrayBuilder();
+ main.getMainListeners().forEach(listener -> listeners.add(listener.getClass().getName()));
+
+ JsonArrayBuilder routeBuilders = Json.createArrayBuilder();
+ main.getRoutesBuilders().forEach(builder -> routeBuilders.add(builder.getClass().getName()));
+
+ JsonArrayBuilder routes = Json.createArrayBuilder();
+ main.getCamelContext().getRoutes().forEach(route -> routes.add(route.getId()));
+
+ JsonObjectBuilder collector = Json.createObjectBuilder();
+ collector.add("type", main.getRoutesCollector().getClass().getName());
+ if (main.getRoutesCollector() instanceof CamelRoutesCollector) {
+ CamelRoutesCollector crc = (CamelRoutesCollector) main.getRoutesCollector();
+ collector.add("type-registry", crc.getRegistryRoutesLoader().getClass().getName());
+ collector.add("type-xml", crc.getXmlRoutesLoader().getClass().getName());
+ }
+
+ return Json.createObjectBuilder()
+ .add("routes-collector", collector)
+ .add("listeners", listeners)
+ .add("routeBuilders", routeBuilders)
+ .add("routes", routes)
+ .add("autoConfigurationLogSummary", main.getMainConfigurationProperties().isAutoConfigurationLogSummary())
+ .build();
+ }
+}
diff --git a/integration-tests/core-main/src/main/resources/application.properties b/integration-tests/core-main-xml/src/main/resources/application.properties
similarity index 80%
copy from integration-tests/core-main/src/main/resources/application.properties
copy to integration-tests/core-main-xml/src/main/resources/application.properties
index 23a94b0..80ead8d 100644
--- a/integration-tests/core-main/src/main/resources/application.properties
+++ b/integration-tests/core-main-xml/src/main/resources/application.properties
@@ -20,29 +20,11 @@
quarkus.log.file.enable = false
#
-# Quarkus :: Camel
-#
-quarkus.camel.main.routes-discovery.exclude-patterns = org/**/*Filtered
-
-#
# Camel
#
camel.context.name=quarkus-camel-example
#
-# Timer
-#
-camel.component.timer.basic-property-binding = true
-
-#
# Main
#
-camel.main.auto-configuration-log-summary = false
camel.main.xml-routes = file:src/test/resources/my-routes.xml
-
-
-#
-# Other
-#
-the.message = default
-%staging.the.message = test
\ No newline at end of file
diff --git a/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
new file mode 100644
index 0000000..3d60e95
--- /dev/null
+++ b/integration-tests/core-main-xml/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.quarkus.core;
+
+import javax.ws.rs.core.MediaType;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import io.restassured.path.json.JsonPath;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+@QuarkusTest
+public class CamelTest {
+ /*
+ * This test is tagged with quarkus-platform-ignore as it needs to be
+ * ignored when running camel test from the quarkus-platform as the
+ * test relies on a local route file being loaded.
+ */
+ @Test
+ @Tag("quarkus-platform-ignore")
+ public void testMainInstanceWithXmlRoutes() {
+ JsonPath p = RestAssured.given()
+ .accept(MediaType.APPLICATION_JSON)
+ .get("/test/main/describe")
+ .then()
+ .statusCode(200)
+ .extract()
+ .body()
+ .jsonPath();
+
+ assertThat(p.getList("routeBuilders", String.class))
+ .isEmpty();
+ assertThat(p.getList("routes", String.class))
+ .contains("my-xml-route");
+ }
+}
diff --git a/integration-tests/core-main/src/test/resources/my-routes.xml b/integration-tests/core-main-xml/src/test/resources/my-routes.xml
similarity index 100%
rename from integration-tests/core-main/src/test/resources/my-routes.xml
rename to integration-tests/core-main-xml/src/test/resources/my-routes.xml
diff --git a/integration-tests/core-main/pom.xml b/integration-tests/core-main/pom.xml
index bb0a336..6c03c8d 100644
--- a/integration-tests/core-main/pom.xml
+++ b/integration-tests/core-main/pom.xml
@@ -32,10 +32,6 @@
<dependencies>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-core-xml</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-endpointdsl</artifactId>
</dependency>
<dependency>
diff --git a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index 52bc7db..b1081a0 100644
--- a/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core-main/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -113,7 +113,16 @@ public class CamelServlet {
JsonArrayBuilder routes = Json.createArrayBuilder();
main.getCamelContext().getRoutes().forEach(route -> routes.add(route.getId()));
+ JsonObjectBuilder collector = Json.createObjectBuilder();
+ collector.add("type", main.getRoutesCollector().getClass().getName());
+ if (main.getRoutesCollector() instanceof CamelRoutesCollector) {
+ CamelRoutesCollector crc = (CamelRoutesCollector) main.getRoutesCollector();
+ collector.add("type-registry", crc.getRegistryRoutesLoader().getClass().getName());
+ collector.add("type-xml", crc.getXmlRoutesLoader().getClass().getName());
+ }
+
return Json.createObjectBuilder()
+ .add("routes-collector", collector)
.add("listeners", listeners)
.add("routeBuilders", routeBuilders)
.add("routes", routes)
diff --git a/integration-tests/core-main/src/main/resources/application.properties b/integration-tests/core-main/src/main/resources/application.properties
index 23a94b0..1cae6b3 100644
--- a/integration-tests/core-main/src/main/resources/application.properties
+++ b/integration-tests/core-main/src/main/resources/application.properties
@@ -38,7 +38,6 @@ camel.component.timer.basic-property-binding = true
# Main
#
camel.main.auto-configuration-log-summary = false
-camel.main.xml-routes = file:src/test/resources/my-routes.xml
#
diff --git a/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index 0109b68..8248b1c 100644
--- a/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core-main/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -17,6 +17,7 @@
package org.apache.camel.quarkus.core;
import java.net.HttpURLConnection;
+
import javax.ws.rs.core.MediaType;
import io.quarkus.test.junit.QuarkusTest;
@@ -26,7 +27,6 @@ import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
import org.apache.camel.quarkus.core.runtime.support.SupportListener;
import org.apache.camel.reactive.vertx.VertXReactiveExecutor;
-import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -61,29 +61,6 @@ public class CamelTest {
.then().body(is("my-ctx-name"));
}
- /*
- * This test is tagged with quarkus-platform-ignore as it needs to be
- * ignored when running camel test from the quarkus-platform as the
- * test relies on a local route file being loaded.
- */
- @Test
- @Tag("quarkus-platform-ignore")
- public void testMainInstanceWithXmlRoutes() {
- JsonPath p = RestAssured.given()
- .accept(MediaType.APPLICATION_JSON)
- .get("/test/main/describe")
- .then()
- .statusCode(200)
- .extract()
- .body()
- .jsonPath();
-
- assertThat(p.getList("routeBuilders", String.class))
- .contains(SupportListener.MyBuilder.class.getName());
- assertThat(p.getList("routes", String.class))
- .contains("my-xml-route");
- }
-
@Test
public void testMainInstance() {
JsonPath p = RestAssured.given()
@@ -95,6 +72,10 @@ public class CamelTest {
.body()
.jsonPath();
+ assertThat(p.getString("routes-collector.type")).isEqualTo(CamelRoutesCollector.class.getName());
+ assertThat(p.getString("routes-collector.type-registry")).isEqualTo(RegistryRoutesLoaders.Default.class.getName());
+ assertThat(p.getString("routes-collector.type-xml")).isEqualTo(DisabledXmlRoutesLoader.class.getName());
+
assertThat(p.getList("listeners", String.class))
.containsOnly(CamelMainEventDispatcher.class.getName(), SupportListener.class.getName());
assertThat(p.getList("routeBuilders", String.class))
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index 5fc84e5..4cbf371 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -62,6 +62,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-support-core-main-collector-ext</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-integration-test-support</artifactId>
<version>${project.version}</version>
</dependency>
@@ -147,6 +152,8 @@
<module>support</module>
<module>core</module>
<module>core-main</module>
+ <module>core-main-xml</module>
+ <module>core-main-collector</module>
<module>core-impl</module>
<!-- extensions a..z; do not remove this comment, it is important when sorting via mvn process-resources -Pformat -->
diff --git a/integration-tests/support/core-main-collector/deployment/pom.xml b/integration-tests/support/core-main-collector/deployment/pom.xml
new file mode 100644
index 0000000..598e7e9
--- /dev/null
+++ b/integration-tests/support/core-main-collector/deployment/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-tests-support-core-main-collector-parent</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>camel-quarkus-integration-test-support-core-main-collector-ext-deployment</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Support :: Core Main Collector :: Extension :: Deployment</name>
+ <description>A test extension</description>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bom-deployment</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-core-deployment</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-support-core-main-collector-ext</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java b/integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/Feature.java
similarity index 64%
rename from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
rename to integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/Feature.java
index 09ed32e..82fa65c 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/XmlLoader.java
+++ b/integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/Feature.java
@@ -14,18 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.core;
+package org.apache.camel.quarkus.core.runtime.support.deployment;
-import java.io.InputStream;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
-import org.apache.camel.CamelContext;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-
-public interface XmlLoader {
-
- RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream inputStream) throws Exception;
-
- RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception;
+public class Feature {
+ private static final String FEATURE = "camel-main-collector-support";
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
}
diff --git a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java b/integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/SupportBuildStep.java
similarity index 51%
rename from extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java
rename to integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/SupportBuildStep.java
index 67a329d..2558d38 100644
--- a/extensions/core-xml/runtime/src/main/java/org/apache/camel/quarkus/component/xml/DefaultXmlLoader.java
+++ b/integration-tests/support/core-main-collector/deployment/src/main/java/org/apache/camel/quarkus/core/runtime/support/deployment/SupportBuildStep.java
@@ -14,26 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.component.xml;
+package org.apache.camel.quarkus.core.runtime.support.deployment;
-import java.io.InputStream;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.annotations.ExecutionTime;
+import io.quarkus.deployment.annotations.Record;
+import org.apache.camel.quarkus.core.deployment.CamelMainListenerBuildItem;
+import org.apache.camel.quarkus.core.deployment.CamelRoutesCollectorBuildItem;
+import org.apache.camel.quarkus.core.deployment.CamelTypeConverterLoaderBuildItem;
+import org.apache.camel.quarkus.core.runtime.support.SupportRecorder;
-import org.apache.camel.CamelContext;
-import org.apache.camel.model.ModelHelper;
-import org.apache.camel.model.RoutesDefinition;
-import org.apache.camel.model.rest.RestsDefinition;
-import org.apache.camel.quarkus.core.XmlLoader;
-
-public class DefaultXmlLoader implements XmlLoader {
-
- @Override
- public RoutesDefinition loadRoutesDefinition(CamelContext context, InputStream is) throws Exception {
- return ModelHelper.loadRoutesDefinition(context, is);
+public class SupportBuildStep {
+ @Record(ExecutionTime.STATIC_INIT)
+ @BuildStep
+ CamelRoutesCollectorBuildItem listener(SupportRecorder recorder) {
+ return new CamelRoutesCollectorBuildItem(recorder.createSupportCollector());
}
-
- @Override
- public RestsDefinition loadRestsDefinition(CamelContext context, InputStream is) throws Exception {
- return ModelHelper.loadRestsDefinition(context, is);
- }
-
}
diff --git a/integration-tests/support/pom.xml b/integration-tests/support/core-main-collector/pom.xml
similarity index 69%
copy from integration-tests/support/pom.xml
copy to integration-tests/support/core-main-collector/pom.xml
index 0103cc6..7e09d4e 100644
--- a/integration-tests/support/pom.xml
+++ b/integration-tests/support/core-main-collector/pom.xml
@@ -18,28 +18,22 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-integration-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
+ <artifactId>camel-quarkus-integration-tests-support-parent</artifactId>
<relativePath>../pom.xml</relativePath>
</parent>
- <artifactId>camel-quarkus-integration-tests-support-parent</artifactId>
+ <artifactId>camel-quarkus-integration-tests-support-core-main-collector-parent</artifactId>
<packaging>pom</packaging>
- <name>Camel Quarkus :: Integration Tests :: Support :: Parent</name>
- <description>Ancillary modules required by some integration tests. Hosted outside the integration-tests directory
- so that we can keep a flat hierarchy in the integration-tests directory.
- </description>
+ <name>Camel Quarkus :: Integration Tests :: Support :: Core Main Collector:: Parent</name>
<modules>
- <module>test-support</module>
- <module>testcontainers-support</module>
- <module>core</module>
- <module>core-main</module>
+ <module>runtime</module>
+ <module>deployment</module>
</modules>
</project>
diff --git a/integration-tests/support/core-main-collector/runtime/pom.xml b/integration-tests/support/core-main-collector/runtime/pom.xml
new file mode 100644
index 0000000..cabd394
--- /dev/null
+++ b/integration-tests/support/core-main-collector/runtime/pom.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-tests-support-core-main-collector-parent</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>camel-quarkus-integration-test-support-core-main-collector-ext</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Support :: Core Main Collector :: Extension :: Runtime</name>
+ <description>A test extension</description>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-bom</artifactId>
+ <version>${project.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-core</artifactId>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-bootstrap-maven-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <annotationProcessorPaths>
+ <path>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-extension-processor</artifactId>
+ <version>${quarkus.version}</version>
+ </path>
+ </annotationProcessorPaths>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelXmlLoaderBuildItem.java b/integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRecorder.java
similarity index 60%
rename from extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelXmlLoaderBuildItem.java
rename to integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRecorder.java
index 06703ec..4122733 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelXmlLoaderBuildItem.java
+++ b/integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRecorder.java
@@ -14,24 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.core.deployment;
+package org.apache.camel.quarkus.core.runtime.support;
-import io.quarkus.builder.item.SimpleBuildItem;
import io.quarkus.runtime.RuntimeValue;
-import org.apache.camel.quarkus.core.XmlLoader;
-import org.apache.camel.spi.ModelJAXBContextFactory;
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.main.RoutesCollector;
+import org.apache.camel.quarkus.core.CamelRoutesCollector;
-/**
- * Holds the {@link ModelJAXBContextFactory} instance.
- */
-public final class CamelXmlLoaderBuildItem extends SimpleBuildItem {
- private final RuntimeValue<XmlLoader> value;
-
- public CamelXmlLoaderBuildItem(RuntimeValue<XmlLoader> value) {
- this.value = value;
- }
-
- public RuntimeValue<XmlLoader> getXmlLoader() {
- return value;
+@Recorder
+public class SupportRecorder {
+ public RuntimeValue<RoutesCollector> createSupportCollector() {
+ return new RuntimeValue<>(new SupportRoutesCollector());
}
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java b/integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRoutesCollector.java
similarity index 62%
rename from extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java
rename to integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRoutesCollector.java
index 7cd582c..d3ef48e 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java
+++ b/integration-tests/support/core-main-collector/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/support/SupportRoutesCollector.java
@@ -14,24 +14,33 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.camel.quarkus.core;
+package org.apache.camel.quarkus.core.runtime.support;
+import java.util.Collections;
import java.util.List;
import org.apache.camel.CamelContext;
-import org.apache.camel.main.DefaultRoutesCollector;
+import org.apache.camel.RoutesBuilder;
+import org.apache.camel.main.RoutesCollector;
import org.apache.camel.model.RoutesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
-public class DisabledXmlRoutesCollector extends DefaultRoutesCollector {
+public class SupportRoutesCollector implements RoutesCollector {
+ @Override
+ public List<RoutesBuilder> collectRoutesFromRegistry(
+ CamelContext camelContext,
+ String excludePattern,
+ String includePattern) {
+ return Collections.emptyList();
+ }
@Override
- public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelContext, String directory) {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
+ public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelContext, String directory) throws Exception {
+ return Collections.emptyList();
}
@Override
- public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
- throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-core-xml");
+ public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) throws Exception {
+ return Collections.emptyList();
}
}
diff --git a/integration-tests/support/pom.xml b/integration-tests/support/pom.xml
index 0103cc6..5d1576b 100644
--- a/integration-tests/support/pom.xml
+++ b/integration-tests/support/pom.xml
@@ -40,6 +40,7 @@
<module>testcontainers-support</module>
<module>core</module>
<module>core-main</module>
+ <module>core-main-collector</module>
</modules>
</project>