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/10/19 11:08:19 UTC
[camel-quarkus] branch master updated: master failing #288
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 f1a6aae master failing #288
f1a6aae is described below
commit f1a6aae060632a65f1e89056a92a6bf394429dc3
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Sat Oct 19 11:39:53 2019 +0200
master failing #288
---
.../quarkus/core/deployment/BuildProcessor.java | 37 +++++++++++----------
...sor.java => CamelRoutesCollectorBuildItem.java} | 28 ++++++++--------
.../core/deployment/HotDeploymentProcessor.java | 9 ++---
.../org/apache/camel/quarkus/core/CamelConfig.java | 13 --------
.../camel/quarkus/core/CamelMainRecorder.java | 38 ++++++++--------------
.../apache/camel/quarkus/core/CamelRecorder.java | 1 +
.../quarkus/core/DisabledXmlRoutesCollector.java} | 29 +++++++++--------
.../component/xml/deployment/XmlProcessor.java | 7 ++++
.../camel/quarkus/component/xml/XmlRecorder.java | 6 ++++
.../test/src/main/resources/application.properties | 3 +-
10 files changed, 80 insertions(+), 91 deletions(-)
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 9e4b6bb..17ee324 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
@@ -40,8 +40,6 @@ import org.apache.camel.quarkus.core.CamelMainProducers;
import org.apache.camel.quarkus.core.CamelMainRecorder;
import org.apache.camel.quarkus.core.CamelProducers;
import org.apache.camel.quarkus.core.CamelRecorder;
-import org.apache.camel.quarkus.core.DisabledModelJAXBContextFactory;
-import org.apache.camel.quarkus.core.DisabledXmlLoader;
import org.apache.camel.quarkus.core.Flags;
import org.apache.camel.spi.Registry;
import org.slf4j.Logger;
@@ -141,9 +139,13 @@ class BuildProcessor {
BeanContainerBuildItem beanContainer,
CamelConfig.BuildTime buildTimeConfig) {
- RuntimeValue<CamelContext> context = recorder.createContext(registry.getRegistry(),
- contextFactory.getContextFactory(), xmlLoader.getXmlLoader(),
- beanContainer.getValue(), buildTimeConfig);
+ RuntimeValue<CamelContext> context = recorder.createContext(
+ registry.getRegistry(),
+ contextFactory.getContextFactory(),
+ xmlLoader.getXmlLoader(),
+ beanContainer.getValue(),
+ buildTimeConfig);
+
return new CamelContextBuildItem(context);
}
@@ -175,6 +177,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 CamelRoutesCollectorBuildItem createRoutesCollector(CamelMainRecorder recorder) {
+ return new CamelRoutesCollectorBuildItem(recorder.newDisabledXmlRoutesCollector());
+ }
@BuildStep(onlyIfNot = Flags.MainDisabled.class)
void beans(BuildProducer<AdditionalBeanBuildItem> beanProducer) {
@@ -203,11 +211,17 @@ class BuildProcessor {
CamelMainRecorder recorder,
RecorderContext recorderContext,
CamelContextBuildItem context,
+ CamelRoutesCollectorBuildItem routesCollector,
List<CamelMainListenerBuildItem> listeners,
List<CamelRoutesBuilderBuildItem> routesBuilders,
BeanContainerBuildItem beanContainer) {
- RuntimeValue<CamelMain> main = recorder.createCamelMain(context.getCamelContext(), beanContainer.getValue());
+ RuntimeValue<CamelMain> main = recorder.createCamelMain(
+ context.getCamelContext(),
+ routesCollector.getValue(),
+ beanContainer.getValue()
+ );
+
for (CamelMainListenerBuildItem listener : listeners) {
recorder.addListener(main, listener.getListener());
}
@@ -229,7 +243,6 @@ class BuildProcessor {
* @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 config runtime configuration.
* @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.
@@ -244,20 +257,10 @@ class BuildProcessor {
CamelMainRecorder recorder,
CamelMainBuildItem main,
CamelRuntimeRegistryBuildItem registry,
- CamelConfig.Runtime config,
CamelReactiveExecutorBuildItem executor,
ShutdownContextBuildItem shutdown,
List<ServiceStartBuildItem> startList) {
- //
- // Note that this functionality may be incorporated by camel-main, see:
- //
- // https://issues.apache.org/jira/browse/CAMEL-14050
- //
- config.routesUris.forEach(location -> {
- recorder.addRoutesFromLocation(main.getInstance(), location);
- });
-
recorder.setReactiveExecutor(main.getInstance(), executor.getInstance());
recorder.start(shutdown, main.getInstance());
}
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesCollectorBuildItem.java
similarity index 57%
copy from extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
copy to extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesCollectorBuildItem.java
index dab20a3..df39049 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRoutesCollectorBuildItem.java
@@ -16,21 +16,21 @@
*/
package org.apache.camel.quarkus.core.deployment;
-import java.util.List;
-import java.util.stream.Collectors;
+import io.quarkus.builder.item.SimpleBuildItem;
+import io.quarkus.runtime.RuntimeValue;
+import org.apache.camel.main.RoutesCollector;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem;
-import org.apache.camel.quarkus.core.CamelConfig;
+/**
+ * Holds the {@link RoutesCollector} {@link RuntimeValue}. *
+ */
+public final class CamelRoutesCollectorBuildItem extends SimpleBuildItem {
+ private final RuntimeValue<RoutesCollector> value;
+
+ public CamelRoutesCollectorBuildItem(RuntimeValue<RoutesCollector> value) {
+ this.value = value;
+ }
-class HotDeploymentProcessor {
- @BuildStep
- List<HotDeploymentWatchedFileBuildItem> configFile(CamelConfig.Runtime config) {
- return config.routesUris.stream()
- .map(String::trim)
- .filter(s -> s.startsWith("file:"))
- .map(s -> s.substring("file:".length()))
- .map(HotDeploymentWatchedFileBuildItem::new)
- .collect(Collectors.toList());
+ public RuntimeValue<RoutesCollector> getValue() {
+ return value;
}
}
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
index dab20a3..60f5b6a 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
@@ -16,8 +16,8 @@
*/
package org.apache.camel.quarkus.core.deployment;
+import java.util.Collections;
import java.util.List;
-import java.util.stream.Collectors;
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem;
@@ -26,11 +26,6 @@ import org.apache.camel.quarkus.core.CamelConfig;
class HotDeploymentProcessor {
@BuildStep
List<HotDeploymentWatchedFileBuildItem> configFile(CamelConfig.Runtime config) {
- return config.routesUris.stream()
- .map(String::trim)
- .filter(s -> s.startsWith("file:"))
- .map(s -> s.substring("file:".length()))
- .map(HotDeploymentWatchedFileBuildItem::new)
- .collect(Collectors.toList());
+ return Collections.emptyList();
}
}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
index d4e796b..a853a1b 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/CamelConfig.java
@@ -16,14 +16,11 @@
*/
package org.apache.camel.quarkus.core;
-import java.util.List;
-
import io.quarkus.runtime.annotations.ConfigItem;
import io.quarkus.runtime.annotations.ConfigPhase;
import io.quarkus.runtime.annotations.ConfigRoot;
public class CamelConfig {
-
@ConfigRoot(name = "camel", phase = ConfigPhase.BUILD_AND_RUN_TIME_FIXED)
public static class BuildTime {
/**
@@ -44,15 +41,5 @@ public class CamelConfig {
*/
@ConfigItem(defaultValue = "false")
public boolean dumpRoutes;
-
- /**
- * A list of URIs containing the camel routes in the XML format to be
- * loaded at runtime. Files can be loaded from either classpath or file
- * system by prefixing the URI with {@code classpath:} or {@code file:}
- * respectively.
- */
- @ConfigItem
- public List<String> routesUris;
}
-
}
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 3b79c45..001a0c7 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
@@ -16,8 +16,6 @@
*/
package org.apache.camel.quarkus.core;
-import java.io.InputStream;
-
import io.quarkus.arc.runtime.BeanContainer;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.ShutdownContext;
@@ -26,12 +24,8 @@ import org.apache.camel.CamelContext;
import org.apache.camel.RoutesBuilder;
import org.apache.camel.impl.engine.DefaultReactiveExecutor;
import org.apache.camel.main.MainListener;
-import org.apache.camel.model.Model;
-import org.apache.camel.model.ModelHelper;
-import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.main.RoutesCollector;
import org.apache.camel.spi.ReactiveExecutor;
-import org.apache.camel.support.ResourceHelper;
-import org.apache.camel.util.ObjectHelper;
@Recorder
public class CamelMainRecorder {
@@ -41,12 +35,20 @@ public class CamelMainRecorder {
public RuntimeValue<CamelMain> createCamelMain(
RuntimeValue<CamelContext> runtime,
+ RuntimeValue<RoutesCollector> routesCollector,
BeanContainer container) {
CamelMain main = new CamelMain();
+ main.setRoutesCollector(routesCollector.getValue());
main.setCamelContext(runtime.getValue());
main.addMainListener(new CamelMainEventDispatcher());
+ // xml rest/routes should be explicitly configured as an
+ // additional dependency is required thus, disable auto
+ // discovery
+ main.configure().setXmlRoutes("false");
+ main.configure().setXmlRests("false");
+
// register to the container
container.instance(CamelMainProducers.class).setMain(main);
@@ -76,23 +78,6 @@ public class CamelMainRecorder {
}
}
- public void addRoutesFromLocation(
- RuntimeValue<CamelMain> main,
- String location) {
-
- if (ObjectHelper.isNotEmpty(location)) {
- // TODO: if pointing to a directory, we should load all xmls in it
- // (maybe with glob support in it to be complete)
- CamelContext camelContext = main.getValue().getCamelContext();
- try (InputStream is = ResourceHelper.resolveMandatoryResourceAsInputStream(camelContext, location)) {
- RoutesDefinition routes = ModelHelper.loadRoutesDefinition(camelContext, is);
- camelContext.getExtension(Model.class).addRouteDefinitions(routes.getRoutes());
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
-
public void addListener(RuntimeValue<CamelMain> main, MainListener listener) {
main.getValue().addMainListener(listener);
}
@@ -100,6 +85,7 @@ public class CamelMainRecorder {
public void setReactiveExecutor(RuntimeValue<CamelMain> main, RuntimeValue<ReactiveExecutor> executor) {
main.getValue().getCamelContext().setReactiveExecutor(executor.getValue());
}
+
public void start(ShutdownContext shutdown, RuntimeValue<CamelMain> main) {
shutdown.addShutdownTask(new Runnable() {
@Override
@@ -119,4 +105,8 @@ public class CamelMainRecorder {
throw new RuntimeException(e);
}
}
+
+ public RuntimeValue<RoutesCollector> newDisabledXmlRoutesCollector() {
+ return new RuntimeValue<>(new DisabledXmlRoutesCollector());
+ }
}
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 1000682..c3a4fb2 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
@@ -20,6 +20,7 @@ import io.quarkus.arc.runtime.BeanContainer;
import io.quarkus.runtime.RuntimeValue;
import io.quarkus.runtime.annotations.Recorder;
import org.apache.camel.CamelContext;
+import org.apache.camel.main.RoutesCollector;
import org.apache.camel.model.ValidateDefinition;
import org.apache.camel.model.validator.PredicateValidatorDefinition;
import org.apache.camel.reifier.ProcessorReifier;
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java
similarity index 52%
copy from extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
copy to extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java
index dab20a3..408aeee 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/HotDeploymentProcessor.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/DisabledXmlRoutesCollector.java
@@ -14,23 +14,24 @@
* 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;
import java.util.List;
-import java.util.stream.Collectors;
-import io.quarkus.deployment.annotations.BuildStep;
-import io.quarkus.deployment.builditem.HotDeploymentWatchedFileBuildItem;
-import org.apache.camel.quarkus.core.CamelConfig;
+import org.apache.camel.CamelContext;
+import org.apache.camel.main.DefaultRoutesCollector;
+import org.apache.camel.model.RoutesDefinition;
+import org.apache.camel.model.rest.RestsDefinition;
-class HotDeploymentProcessor {
- @BuildStep
- List<HotDeploymentWatchedFileBuildItem> configFile(CamelConfig.Runtime config) {
- return config.routesUris.stream()
- .map(String::trim)
- .filter(s -> s.startsWith("file:"))
- .map(s -> s.substring("file:".length()))
- .map(HotDeploymentWatchedFileBuildItem::new)
- .collect(Collectors.toList());
+public class DisabledXmlRoutesCollector extends DefaultRoutesCollector {
+
+ @Override
+ public List<RoutesDefinition> collectXmlRoutesFromDirectory(CamelContext camelContext, String directory) {
+ throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-common");
+ }
+
+ @Override
+ public List<RestsDefinition> collectXmlRestsFromDirectory(CamelContext camelContext, String directory) {
+ throw new UnsupportedOperationException("Please add a dependency to camel-quarkus-xml-common");
}
}
diff --git a/extensions/xml-common/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java b/extensions/xml-common/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
index 849a642..c412bbf 100644
--- a/extensions/xml-common/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
+++ b/extensions/xml-common/deployment/src/main/java/org/apache/camel/quarkus/component/xml/deployment/XmlProcessor.java
@@ -26,6 +26,7 @@ import io.quarkus.jaxb.deployment.JaxbFileRootBuildItem;
import org.apache.camel.converter.jaxp.XmlConverter;
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.CamelSupport;
import org.apache.camel.quarkus.core.deployment.CamelXmlLoaderBuildItem;
@@ -56,6 +57,12 @@ class XmlProcessor {
}
@BuildStep
+ @Record(value = ExecutionTime.STATIC_INIT, optional = true)
+ public CamelRoutesCollectorBuildItem routesCollector(XmlRecorder recorder) {
+ return new CamelRoutesCollectorBuildItem(recorder.newDefaultRoutesCollector());
+ }
+
+ @BuildStep
@Record(value = ExecutionTime.STATIC_INIT)
void initXmlReifiers(XmlRecorder recorder) {
recorder.initXmlReifiers();
diff --git a/extensions/xml-common/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java b/extensions/xml-common/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
index bbe0631..dd5acc0 100644
--- a/extensions/xml-common/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
+++ b/extensions/xml-common/runtime/src/main/java/org/apache/camel/quarkus/component/xml/XmlRecorder.java
@@ -22,6 +22,8 @@ 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;
@@ -51,6 +53,10 @@ public class XmlRecorder {
return new RuntimeValue<>(new DefaultXmlLoader());
}
+ public RuntimeValue<RoutesCollector> newDefaultRoutesCollector() {
+ return new RuntimeValue<>(new DefaultRoutesCollector());
+ }
+
public void initXmlReifiers() {
ProcessorReifier.registerReifier(ValidateDefinition.class, ValidateReifier::new);
ValidatorReifier.registerReifier(PredicateValidatorDefinition.class, PredicateValidatorReifier::new);
diff --git a/integration-tests/core-main/test/src/main/resources/application.properties b/integration-tests/core-main/test/src/main/resources/application.properties
index e20e0d1..ee0a486 100644
--- a/integration-tests/core-main/test/src/main/resources/application.properties
+++ b/integration-tests/core-main/test/src/main/resources/application.properties
@@ -23,12 +23,11 @@ quarkus.log.file.enable = false
# Quarkus :: Camel
#
quarkus.camel.dump-routes=true
-quarkus.camel.routes-uris = file:src/test/resources/my-routes.xml
#
# Camel
#
camel.context.name=quarkus-camel-example
-
+camel.main.xml-routes = file:src/test/resources/my-routes.xml
#
# Timer
#