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/08/20 07:52:07 UTC
[camel-quarkus] 01/02: Basic impl for #147
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
commit 596eb4c75ee8096cbd2e8559a258ee1abf4795ed
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Tue Aug 20 01:12:36 2019 +0200
Basic impl for #147
---
build-parent/pom.xml | 3 -
extensions/core/deployment/pom.xml | 2 -
.../core/deployment/CamelInitProcessor.java | 82 +++++++++++++++++-----
.../core/deployment/CamelRegistryBuildItem.java | 51 ++++++++++++++
.../camel/quarkus/core/runtime/CamelRecorder.java | 9 +++
integration-tests/core-support/deployment/pom.xml | 49 +++++++++++++
.../quarkus/core/support/deployment/Feature.java | 29 ++++++++
.../core/support/deployment/SupportBuildStep.java | 30 ++++++++
.../core/support/deployment/SupportRecorder.java | 40 +++++++++++
integration-tests/core-support/pom.xml | 21 ++++++
.../core-support/runtime}/pom.xml | 43 ++++--------
integration-tests/core/pom.xml | 11 ++-
.../apache/camel/quarkus/core/CamelServlet.java | 20 ++++++
.../org/apache/camel/quarkus/core/CamelTest.java | 14 ++++
integration-tests/pom.xml | 2 +
15 files changed, 352 insertions(+), 54 deletions(-)
diff --git a/build-parent/pom.xml b/build-parent/pom.xml
index 3585b8c..f5f0f58 100644
--- a/build-parent/pom.xml
+++ b/build-parent/pom.xml
@@ -71,19 +71,16 @@
<artifactId>camel-quarkus-core-deployment</artifactId>
<version>${project.version}</version>
</dependency>
-
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-http-common-deployment</artifactId>
<version>${project.version}</version>
</dependency>
-
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-jetty-common-deployment</artifactId>
<version>${project.version}</version>
</dependency>
-
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-xml-common-deployment</artifactId>
diff --git a/extensions/core/deployment/pom.xml b/extensions/core/deployment/pom.xml
index c52249c..e06445f 100644
--- a/extensions/core/deployment/pom.xml
+++ b/extensions/core/deployment/pom.xml
@@ -52,8 +52,6 @@
<scope>test</scope>
</dependency>
-
-
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelInitProcessor.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelInitProcessor.java
index c890819..ab6aaf3 100644
--- a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelInitProcessor.java
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelInitProcessor.java
@@ -20,12 +20,13 @@ import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Properties;
import java.util.Set;
-import java.util.function.BiConsumer;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.inject.Inject;
@@ -56,9 +57,11 @@ import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.jboss.jandex.ClassInfo;
import org.jboss.jandex.DotName;
+import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
class CamelInitProcessor {
+ private static final Logger LOGGER = LoggerFactory.getLogger(CamelInitProcessor.class);
@Inject
ApplicationArchivesBuildItem applicationArchivesBuildItem;
@@ -69,8 +72,12 @@ class CamelInitProcessor {
@Record(ExecutionTime.STATIC_INIT)
@BuildStep(applicationArchiveMarkers = { CamelSupport.CAMEL_SERVICE_BASE_PATH, CamelSupport.CAMEL_ROOT_PACKAGE_DIRECTORY })
- CamelRuntimeBuildItem createInitTask(RecorderContext recorderContext, CamelRecorder recorder,
+ CamelRuntimeBuildItem createInitTask(
+ RecorderContext recorderContext,
+ CamelRecorder recorder,
+ List<CamelRegistryBuildItem> registryItems,
BuildProducer<RuntimeBeanBuildItem> runtimeBeans) {
+
Properties properties = new Properties();
Config configProvider = ConfigProvider.getConfig();
for (String property : configProvider.getPropertyNames()) {
@@ -85,22 +92,37 @@ class CamelInitProcessor {
RuntimeRegistry registry = new RuntimeRegistry();
final List<RuntimeValue<?>> builders;
if (buildTimeConfig.deferInitPhase) {
- builders = getBuildTimeRouteBuilderClasses().map(recorderContext::newInstance)
- .collect(Collectors.toList());
+ builders = getBuildTimeRouteBuilderClasses()
+ .map(recorderContext::newInstance)
+ .collect(Collectors.toList());
} else {
builders = new ArrayList<>();
}
- visitServices((name, type) -> {
- LoggerFactory.getLogger(CamelInitProcessor.class).debug("Binding camel service {} with type {}", name, type);
- registry.bind(name, type,
- recorderContext.newInstance(type.getName()));
- });
+ services().filter(
+ si -> registryItems.stream().noneMatch(
+ c -> Objects.equals(si.name, c.getName()) && c.getType().isAssignableFrom(si.type)
+ )
+ ).forEach(
+ si -> {
+ LOGGER.debug("Binding camel service {} with type {}", si.name, si.type);
+
+ registry.bind(
+ si.name,
+ si.type,
+ recorderContext.newInstance(si.type.getName())
+ );
+ }
+ );
RuntimeValue<CamelRuntime> camelRuntime = recorder.create(registry, properties, builders, buildTimeConfig);
- runtimeBeans
- .produce(RuntimeBeanBuildItem.builder(CamelRuntime.class).setRuntimeValue(camelRuntime).build());
+ runtimeBeans.produce(RuntimeBeanBuildItem.builder(CamelRuntime.class).setRuntimeValue(camelRuntime).build());
+
+ for (CamelRegistryBuildItem item: registryItems) {
+ LOGGER.debug("Binding item with name: {}, type {}", item.getName(), item.getType());
+ recorder.bind(camelRuntime, item.getName(), item.getType(), item.getValue());
+ }
return new CamelRuntimeBuildItem(camelRuntime);
}
@@ -113,8 +135,7 @@ class CamelInitProcessor {
CamelRecorder recorder,
BuildProducer<BeanContainerListenerBuildItem> listeners) {
- listeners
- .produce(new BeanContainerListenerBuildItem(recorder.initRuntimeInjection(runtime.getRuntime())));
+ listeners.produce(new BeanContainerListenerBuildItem(recorder.initRuntimeInjection(runtime.getRuntime())));
return AdditionalBeanBuildItem.unremovableOf(CamelProducers.class);
}
@@ -163,12 +184,15 @@ class CamelInitProcessor {
.map(ClassInfo::toString);
}
- protected void visitServices(BiConsumer<String, Class<?>> consumer) {
- CamelSupport.resources(applicationArchivesBuildItem, CamelSupport.CAMEL_SERVICE_BASE_PATH)
- .forEach(p -> visitService(p, consumer));
+ protected Stream<ServiceInfo> services() {
+ return CamelSupport.resources(applicationArchivesBuildItem, CamelSupport.CAMEL_SERVICE_BASE_PATH)
+ .map(this::services)
+ .flatMap(Collection::stream);
}
- protected void visitService(Path p, BiConsumer<String, Class<?>> consumer) {
+ protected List<ServiceInfo> services(Path p) {
+ List<ServiceInfo> answer = new ArrayList<>();
+
String name = p.getFileName().toString();
try (InputStream is = Files.newInputStream(p)) {
Properties props = new Properties();
@@ -179,11 +203,33 @@ class CamelInitProcessor {
String clazz = entry.getValue().toString();
Class<?> cl = Class.forName(clazz);
- consumer.accept(name, cl);
+ answer.add(new ServiceInfo(name, cl));
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
+
+ return answer;
+ }
+
+ static class ServiceInfo {
+ final String name;
+ final Class<?> type;
+
+ public ServiceInfo(String name, Class<?> type) {
+ this.name = name;
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return "ServiceInfo{" +
+ "name='" + name + '\'' +
+ ", type=" + type +
+ '}';
+ }
}
+
+
}
diff --git a/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryBuildItem.java b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryBuildItem.java
new file mode 100644
index 0000000..17e556f
--- /dev/null
+++ b/extensions/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelRegistryBuildItem.java
@@ -0,0 +1,51 @@
+/*
+ * 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 java.util.Objects;
+
+import io.quarkus.builder.item.MultiBuildItem;
+
+public final class CamelRegistryBuildItem extends MultiBuildItem {
+ private final String name;
+ private final Class<?> type;
+ private final Object value;
+
+ public CamelRegistryBuildItem(String name, Object value) {
+ this.name = Objects.requireNonNull(name);
+ this.value = Objects.requireNonNull(value);
+ this.type = Objects.requireNonNull(value).getClass();
+ }
+
+ public CamelRegistryBuildItem(String name, Class<?> type, Object value) {
+ this.name = Objects.requireNonNull(name);
+ this.type = Objects.requireNonNull(type);
+ this.value = Objects.requireNonNull(value);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public Class<?> getType() {
+ return type;
+ }
+
+ public Object getValue() {
+ return value;
+ }
+}
diff --git a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/CamelRecorder.java b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/CamelRecorder.java
index 9a9acf5..43a2217 100644
--- a/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/CamelRecorder.java
+++ b/extensions/core/runtime/src/main/java/org/apache/camel/quarkus/core/runtime/CamelRecorder.java
@@ -49,6 +49,15 @@ public class CamelRecorder {
return new RuntimeValue<>(runtime);
}
+ public void bind(
+ RuntimeValue<CamelRuntime> runtime,
+ String name,
+ Class<?> type,
+ Object instance) {
+
+ runtime.getValue().getRegistry().bind(name, type, instance);
+ }
+
public void init(
BeanContainer beanContainer,
RuntimeValue<CamelRuntime> runtime,
diff --git a/integration-tests/core-support/deployment/pom.xml b/integration-tests/core-support/deployment/pom.xml
new file mode 100644
index 0000000..b6b5dcd
--- /dev/null
+++ b/integration-tests/core-support/deployment/pom.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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-test-core-support-parent</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>camel-quarkus-integration-test-core-support-deployment</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Core :: Support :: Deployment</name>
+ <description>The camel integration tests</description>
+
+ <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-log-deployment</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-core-support</artifactId>
+ <version>${project.version}</version>
+ </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/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/Feature.java b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/Feature.java
new file mode 100644
index 0000000..922fb0d
--- /dev/null
+++ b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/Feature.java
@@ -0,0 +1,29 @@
+/*
+ * 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.support.deployment;
+
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.FeatureBuildItem;
+
+public class Feature {
+ private static final String FEATURE = "camel-core-support";
+
+ @BuildStep
+ FeatureBuildItem feature() {
+ return new FeatureBuildItem(FEATURE);
+ }
+}
diff --git a/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportBuildStep.java b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportBuildStep.java
new file mode 100644
index 0000000..329bbf7
--- /dev/null
+++ b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportBuildStep.java
@@ -0,0 +1,30 @@
+/*
+ * 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.support.deployment;
+
+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.CamelRegistryBuildItem;
+
+public class SupportBuildStep {
+ @Record(ExecutionTime.STATIC_INIT)
+ @BuildStep
+ CamelRegistryBuildItem logComponent(SupportRecorder recorder) {
+ return recorder.logComponent();
+ }
+}
diff --git a/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportRecorder.java b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportRecorder.java
new file mode 100644
index 0000000..2340b21
--- /dev/null
+++ b/integration-tests/core-support/deployment/src/main/java/org/apache/camel/quarkus/core/support/deployment/SupportRecorder.java
@@ -0,0 +1,40 @@
+/*
+ * 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.support.deployment;
+
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.component.log.LogComponent;
+import org.apache.camel.quarkus.core.deployment.CamelRegistryBuildItem;
+import org.apache.camel.support.processor.DefaultExchangeFormatter;
+
+@Recorder
+public class SupportRecorder {
+ CamelRegistryBuildItem logComponent() {
+ DefaultExchangeFormatter def = new DefaultExchangeFormatter();
+ def.setShowAll(true);
+ def.setMultiline(true);
+
+ LogComponent component = new LogComponent();
+ component.setExchangeFormatter(def);
+
+ return new CamelRegistryBuildItem(
+ "log",
+ LogComponent.class,
+ component
+ );
+ }
+}
diff --git a/integration-tests/core-support/pom.xml b/integration-tests/core-support/pom.xml
new file mode 100644
index 0000000..7c702ff
--- /dev/null
+++ b/integration-tests/core-support/pom.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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-build-parent</artifactId>
+ <version>0.1.1-SNAPSHOT</version>
+ <relativePath>../../build-parent/pom.xml</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <packaging>pom</packaging>
+
+ <artifactId>camel-quarkus-integration-test-core-support-parent</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Core :: Support</name>
+
+ <modules>
+ <module>deployment</module>
+ <module>runtime</module>
+ </modules>
+
+</project>
diff --git a/extensions/core/deployment/pom.xml b/integration-tests/core-support/runtime/pom.xml
similarity index 67%
copy from extensions/core/deployment/pom.xml
copy to integration-tests/core-support/runtime/pom.xml
index c52249c..76f29cf 100644
--- a/extensions/core/deployment/pom.xml
+++ b/integration-tests/core-support/runtime/pom.xml
@@ -20,50 +20,33 @@
<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-core-parent</artifactId>
+ <artifactId>camel-quarkus-integration-test-core-support-parent</artifactId>
<version>0.1.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
- <artifactId>camel-quarkus-core-deployment</artifactId>
- <name>Camel Quarkus :: Core :: Deployment</name>
+
+ <artifactId>camel-quarkus-integration-test-core-support</artifactId>
+ <name>Camel Quarkus :: Integration Tests :: Core :: Support</name>
+ <description>The camel integration tests</description>
+
<dependencies>
- <!-- quarkus -->
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-core-deployment</artifactId>
- </dependency>
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-arc-deployment</artifactId>
- </dependency>
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-jaxb-deployment</artifactId>
- </dependency>
- <!-- camel -->
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-core</artifactId>
</dependency>
-
- <dependency>
- <groupId>io.quarkus</groupId>
- <artifactId>quarkus-junit5-internal</artifactId>
- <scope>test</scope>
- </dependency>
-
-
-
<dependency>
- <groupId>org.assertj</groupId>
- <artifactId>assertj-core</artifactId>
- <version>${assertj.version}</version>
- <scope>test</scope>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-log</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>
diff --git a/integration-tests/core/pom.xml b/integration-tests/core/pom.xml
index c67e2c1..4af1826 100644
--- a/integration-tests/core/pom.xml
+++ b/integration-tests/core/pom.xml
@@ -42,10 +42,19 @@
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-timer</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.camel.quarkus</groupId>
+ <artifactId>camel-quarkus-integration-test-core-support</artifactId>
+ <version>${project.version}</version>
+ </dependency>
<dependency>
<groupId>io.quarkus</groupId>
- <artifactId>quarkus-resteasy</artifactId>
+ <artifactId>quarkus-jsonb</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.quarkus</groupId>
+ <artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
<!-- test dependencies -->
diff --git a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
index fe7d1be..2e3728a 100644
--- a/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
+++ b/integration-tests/core/src/main/java/org/apache/camel/quarkus/core/CamelServlet.java
@@ -21,6 +21,8 @@ import java.util.Set;
import java.util.stream.Collectors;
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.PathParam;
@@ -28,9 +30,11 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.apache.camel.Route;
+import org.apache.camel.component.log.LogComponent;
import org.apache.camel.component.timer.TimerComponent;
import org.apache.camel.quarkus.core.runtime.CamelConfig;
import org.apache.camel.quarkus.core.runtime.CamelRuntime;
+import org.apache.camel.support.processor.DefaultExchangeFormatter;
@Path("/test")
@ApplicationScoped
@@ -62,6 +66,22 @@ public class CamelServlet {
return runtime.getContext().getComponent("timer", TimerComponent.class).isResolvePropertyPlaceholders();
}
+
+ @Path("/registry/log/exchange-formatter")
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public JsonObject exchangeFormatterConfig() {
+ LogComponent component = runtime.getRegistry().lookupByNameAndType("log", LogComponent.class);
+ DefaultExchangeFormatter def = (DefaultExchangeFormatter)component.getExchangeFormatter();
+
+ JsonObject result = Json.createObjectBuilder()
+ .add("show-all", def.isShowAll())
+ .add("multi-line", def.isMultiline())
+ .build();
+
+ return result;
+ }
+
@Path("/registry/produces-config-build")
@GET
@Produces(MediaType.TEXT_PLAIN)
diff --git a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
index d3e1325..4c6673d 100644
--- a/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
+++ b/integration-tests/core/src/test/java/org/apache/camel/quarkus/core/CamelTest.java
@@ -16,12 +16,17 @@
*/
package org.apache.camel.quarkus.core;
+import java.net.HttpURLConnection;
+
import io.quarkus.test.junit.QuarkusTest;
import io.restassured.RestAssured;
+import io.restassured.response.Response;
import org.junit.jupiter.api.Test;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
@QuarkusTest
public class CamelTest {
@@ -47,4 +52,13 @@ public class CamelTest {
RestAssured.when().get("/test/registry/produces-config-build").then().body(is("true"));
RestAssured.when().get("/test/registry/produces-config-runtime").then().body(is("true"));
}
+
+ @Test
+ public void testRegistryBuildItem() {
+ Response response = RestAssured.get("/test/registry/log/exchange-formatter").andReturn();
+
+ assertEquals(HttpURLConnection.HTTP_OK, response.getStatusCode());
+ assertTrue(response.jsonPath().getBoolean("show-all"));
+ assertTrue(response.jsonPath().getBoolean("multi-line"));
+ }
}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index bbbcdb6..29fa011 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -32,8 +32,10 @@
<name>Camel Quarkus :: Integration Tests</name>
+
<modules>
<!-- build those first -->
+ <module>core-support</module>
<module>core</module>
<module>core-impl</module>
<module>core-cdi</module>