You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/11/05 15:01:38 UTC
[camel-quarkus] 01/02: Upgrade to Camel 3.7.0
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch camel-master
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 704b03f59eb9683ad1b1b3af7279248e2f2e5cee
Author: James Netherton <ja...@gmail.com>
AuthorDate: Mon Oct 19 07:16:38 2020 +0100
Upgrade to Camel 3.7.0
---
.../pages/reference/extensions/kubernetes.adoc | 1 +
.../ROOT/pages/reference/extensions/leveldb.adoc | 12 ++-
.../partials/reference/components/atlasmap.adoc | 1 +
.../components/kubernetes-custom-resources.adoc | 13 +++
.../partials/reference/dataformats/json-jsonb.adoc | 1 +
.../ROOT/partials/reference/languages/joor.adoc | 1 +
.../partials/reference/others/leveldb-legacy.adoc | 1 +
.../quarkus/core/deployment/CamelProcessor.java | 8 ++
extensions-core/core/runtime/pom.xml | 16 +--
.../org/apache/camel/quarkus/core/BaseModel.java | 31 ++++--
.../camel/quarkus/core/FastCamelContext.java | 117 +++++++++++++++------
.../org/apache/camel/quarkus/core/FastModel.java | 1 -
.../camel/quarkus/core/FastTypeConverter.java | 2 +-
extensions/json-validator/runtime/pom.xml | 4 +
.../leveldb/runtime/src/main/doc/limitations.adoc | 12 ++-
.../component/leveldb/ObjectCodecSubstitute.java | 64 -----------
.../QuarkusLevelDBAggregationRepository.java | 71 +++++++++++++
.../MicroprofileFaultToleranceProcessor.java | 8 ++
.../component/qute/QuteComponentConfigurer.java | 9 ++
.../component/qute/QuteEndpointConfigurer.java | 9 ++
.../component/qute/QuteEndpointUriFactory.java | 4 +-
.../component/foundation/it/mock/MockResource.java | 4 +-
.../component/leveldb/it/LeveldbRouteBuilder.java | 10 +-
.../quarkus/component/leveldb/it/LeveldbIT.java | 4 -
.../quarkus/component/leveldb/it/LeveldbTest.java | 14 +--
.../camel/quarkus/component/saga/it/SagaRoute.java | 2 +-
pom.xml | 3 +-
poms/bom/pom.xml | 10 ++
28 files changed, 285 insertions(+), 148 deletions(-)
diff --git a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
index 03778ed..05cfc34 100644
--- a/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/kubernetes.adoc
@@ -18,6 +18,7 @@ Perform operations against Kubernetes API
== What's inside
* xref:latest@components::kubernetes-config-maps-component.adoc[Kubernetes ConfigMap component], URI syntax: `kubernetes-config-maps:masterUrl`
+* xref:latest@components::kubernetes-custom-resources-component.adoc[Kubernetes Custom Resources component], URI syntax: `kubernetes-custom-resources:masterUrl`
* xref:latest@components::kubernetes-deployments-component.adoc[Kubernetes Deployments component], URI syntax: `kubernetes-deployments:masterUrl`
* xref:latest@components::kubernetes-hpa-component.adoc[Kubernetes HPA component], URI syntax: `kubernetes-hpa:masterUrl`
* xref:latest@components::kubernetes-job-component.adoc[Kubernetes Job component], URI syntax: `kubernetes-job:masterUrl`
diff --git a/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc b/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
index fda4ef0..190fc8d 100644
--- a/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
+++ b/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc
@@ -38,8 +38,14 @@ In native mode the extension uses a port of LevelDB written in Java (https://git
which is within 10% of the performance of the C++ original. Please upvote https://github.com/apache/camel-quarkus/issues/1911[this issue]
if you do not like the present state.
-This extension does not support binary payloads in native mode since object serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. To work around this limitation, the extension instead uses Jackson serializaton / deserialization.
+Serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. Extension has to use serializationization based
+on Jackson. Aggregation repository in native has to be constructed in one of the following ways:
+
+* Use class `QuarkusLevelDBAggregationRepository` instead of `LevelDBAggregationRepository`.
+* Configure jackson serializer on `LevelDBAggregationRepository` by calling `repo.setSerializer(new JacksonLevelDBSerializer());`
+
+Jackson serializer has limitation towards binary content. If payload object contains binary data (does not concern payloads which are completely binary), Jackson serialization and deserialization won't work correctly.
+To avoid this, define your own jackson serializer/deserealizer via `Module` and provide it to the aggragation repository
+(you can use for example the constructor of `QuarkusLevelDBAggregationRepository`).
-The problem will be solved when the camel-leveldb component is refactored to use Jackson and custom
-serializers (see https://issues.apache.org/jira/browse/CAMEL-15679[issue])
diff --git a/docs/modules/ROOT/partials/reference/components/atlasmap.adoc b/docs/modules/ROOT/partials/reference/components/atlasmap.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/atlasmap.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc b/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc
new file mode 100644
index 0000000..07f368a
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/components/kubernetes-custom-resources.adoc
@@ -0,0 +1,13 @@
+// Do not edit directly!
+// This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page
+:cq-artifact-id: camel-quarkus-kubernetes
+:cq-artifact-id-base: kubernetes
+:cq-native-supported: true
+:cq-status: Stable
+:cq-deprecated: false
+:cq-jvm-since: 1.0.0
+:cq-native-since: 1.0.0
+:cq-camel-part-name: kubernetes-custom-resources
+:cq-camel-part-title: Kubernetes Custom Resources
+:cq-camel-part-description: Perform operations on Kubernetes Custom Resources and get notified on Deployment changes.
+:cq-extension-page-title: Kubernetes
diff --git a/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc b/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/dataformats/json-jsonb.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/languages/joor.adoc b/docs/modules/ROOT/partials/reference/languages/joor.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/languages/joor.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc b/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc
new file mode 100644
index 0000000..a509c1d
--- /dev/null
+++ b/docs/modules/ROOT/partials/reference/others/leveldb-legacy.adoc
@@ -0,0 +1 @@
+// Empty partial for a Camel bit unsupported by Camel Quarkus to avoid warnings when this file is included from a Camel page
diff --git a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index 4b542c9..7efea5e 100644
--- a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++ b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
@@ -40,6 +40,7 @@ import io.quarkus.deployment.annotations.Overridable;
import io.quarkus.deployment.annotations.Record;
import io.quarkus.deployment.builditem.ApplicationArchivesBuildItem;
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
import io.quarkus.deployment.recording.RecorderContext;
import io.quarkus.runtime.RuntimeValue;
import org.apache.camel.impl.converter.BaseTypeConverterRegistry;
@@ -346,4 +347,11 @@ class CamelProcessor {
.map(CamelRoutesBuilderClassBuildItem::new)
.collect(Collectors.toList());
}
+
+ @BuildStep
+ NativeImageResourceBuildItem initResources() {
+ return new NativeImageResourceBuildItem(
+ "META-INF/services/org/apache/camel/bean-processor-factory",
+ "META-INF/services/org/apache/camel/rest-registry-factory");
+ }
}
diff --git a/extensions-core/core/runtime/pom.xml b/extensions-core/core/runtime/pom.xml
index 0f2a2c8..9688e0c 100644
--- a/extensions-core/core/runtime/pom.xml
+++ b/extensions-core/core/runtime/pom.xml
@@ -66,27 +66,31 @@
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-core-engine</artifactId>
+ <artifactId>camel-base</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-base</artifactId>
+ <artifactId>camel-componentdsl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-core-languages</artifactId>
+ <artifactId>camel-core-catalog</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-endpointdsl</artifactId>
+ <artifactId>camel-core-engine</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-componentdsl</artifactId>
+ <artifactId>camel-core-languages</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
- <artifactId>camel-core-catalog</artifactId>
+ <artifactId>camel-core-processor</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-endpointdsl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
index 8ee50e0..df3c89a 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/BaseModel.java
@@ -29,6 +29,7 @@ import java.util.function.Function;
import org.apache.camel.CamelContext;
import org.apache.camel.ExtendedCamelContext;
+import org.apache.camel.impl.DefaultModelReifierFactory;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.model.FaultToleranceConfigurationDefinition;
import org.apache.camel.model.HystrixConfigurationDefinition;
@@ -46,6 +47,7 @@ import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.transformer.TransformerDefinition;
import org.apache.camel.model.validator.ValidatorDefinition;
+import org.apache.camel.spi.ModelReifierFactory;
import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.util.AntPathMatcher;
@@ -53,6 +55,7 @@ public abstract class BaseModel implements Model {
private final CamelContext camelContext;
+ private ModelReifierFactory modelReifierFactory = new DefaultModelReifierFactory();
private final List<RouteDefinition> routeDefinitions = new ArrayList<>();
private final List<RouteTemplateDefinition> routeTemplateDefinitions = new ArrayList<>();
private final List<RestDefinition> restDefinitions = new ArrayList<>();
@@ -201,10 +204,11 @@ public abstract class BaseModel implements Model {
throw new IllegalArgumentException("Cannot find RouteTemplate with id " + routeTemplateId);
}
- StringJoiner templatesBuilder = new StringJoiner(", ");
final Map<String, Object> prop = new HashMap<>();
// include default values first from the template (and validate that we have inputs for all required parameters)
if (target.getTemplateParameters() != null) {
+ StringJoiner templatesBuilder = new StringJoiner(", ");
+
for (RouteTemplateParameterDefinition temp : target.getTemplateParameters()) {
if (temp.getDefaultValue() != null) {
prop.put(temp.getName(), temp.getDefaultValue());
@@ -215,18 +219,19 @@ public abstract class BaseModel implements Model {
}
}
}
+ if (templatesBuilder.length() > 0) {
+ throw new IllegalArgumentException(
+ "Route template " + routeTemplateId + " the following mandatory parameters must be provided: "
+ + templatesBuilder.toString());
+ }
}
- if (templatesBuilder.length() > 0) {
- throw new IllegalArgumentException(
- "Route template " + routeTemplateId + " the following mandatory parameters must be provided: "
- + templatesBuilder.toString());
- }
+
// then override with user parameters
if (parameters != null) {
prop.putAll(parameters);
}
- RouteTemplateDefinition.Converter converter = RouteTemplateDefinition::asRouteDefinition;
+ RouteTemplateDefinition.Converter converter = RouteTemplateDefinition.Converter.DEFAULT_CONVERTER;
for (Map.Entry<String, RouteTemplateDefinition.Converter> entry : routeTemplateConverters.entrySet()) {
final String key = entry.getKey();
@@ -244,7 +249,7 @@ public abstract class BaseModel implements Model {
}
}
- RouteDefinition def = converter.apply(target);
+ RouteDefinition def = converter.apply(target, prop);
if (routeId != null) {
def.setId(routeId);
}
@@ -476,6 +481,16 @@ public abstract class BaseModel implements Model {
return modelLifecycleStrategies;
}
+ @Override
+ public ModelReifierFactory getModelReifierFactory() {
+ return modelReifierFactory;
+ }
+
+ @Override
+ public void setModelReifierFactory(ModelReifierFactory modelReifierFactory) {
+ this.modelReifierFactory = modelReifierFactory;
+ }
+
/**
* Should we start newly added routes?
*/
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
index 4ca613e..fd96350 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastCamelContext.java
@@ -22,10 +22,8 @@ import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import java.util.concurrent.ExecutorService;
import java.util.function.Function;
-import org.apache.camel.AsyncProcessor;
import org.apache.camel.CatalogCamelContext;
import org.apache.camel.Component;
import org.apache.camel.Endpoint;
@@ -36,12 +34,12 @@ import org.apache.camel.Processor;
import org.apache.camel.Route;
import org.apache.camel.TypeConverter;
import org.apache.camel.ValueHolder;
+import org.apache.camel.builder.AdviceWith;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.catalog.RuntimeCamelCatalog;
import org.apache.camel.catalog.impl.DefaultRuntimeCamelCatalog;
import org.apache.camel.component.microprofile.config.CamelMicroProfilePropertiesSource;
import org.apache.camel.health.HealthCheckRegistry;
-import org.apache.camel.impl.DefaultExecutorServiceManager;
import org.apache.camel.impl.engine.AbstractCamelContext;
import org.apache.camel.impl.engine.BaseServiceResolver;
import org.apache.camel.impl.engine.DefaultAsyncProcessorAwaitManager;
@@ -54,17 +52,19 @@ import org.apache.camel.impl.engine.DefaultComponentResolver;
import org.apache.camel.impl.engine.DefaultConfigurerResolver;
import org.apache.camel.impl.engine.DefaultDataFormatResolver;
import org.apache.camel.impl.engine.DefaultEndpointRegistry;
+import org.apache.camel.impl.engine.DefaultExecutorServiceManager;
import org.apache.camel.impl.engine.DefaultHeadersMapFactory;
import org.apache.camel.impl.engine.DefaultInflightRepository;
import org.apache.camel.impl.engine.DefaultInjector;
+import org.apache.camel.impl.engine.DefaultInterceptEndpointFactory;
import org.apache.camel.impl.engine.DefaultLanguageResolver;
import org.apache.camel.impl.engine.DefaultMessageHistoryFactory;
import org.apache.camel.impl.engine.DefaultNodeIdFactory;
import org.apache.camel.impl.engine.DefaultPackageScanClassResolver;
import org.apache.camel.impl.engine.DefaultPackageScanResourceResolver;
-import org.apache.camel.impl.engine.DefaultProcessorFactory;
import org.apache.camel.impl.engine.DefaultReactiveExecutor;
import org.apache.camel.impl.engine.DefaultRouteController;
+import org.apache.camel.impl.engine.DefaultRouteFactory;
import org.apache.camel.impl.engine.DefaultStreamCachingStrategy;
import org.apache.camel.impl.engine.DefaultTracer;
import org.apache.camel.impl.engine.DefaultTransformerRegistry;
@@ -73,8 +73,8 @@ import org.apache.camel.impl.engine.DefaultUriFactoryResolver;
import org.apache.camel.impl.engine.DefaultValidatorRegistry;
import org.apache.camel.impl.engine.EndpointKey;
import org.apache.camel.impl.engine.RouteService;
-import org.apache.camel.impl.transformer.TransformerKey;
-import org.apache.camel.impl.validator.ValidatorKey;
+import org.apache.camel.impl.engine.TransformerKey;
+import org.apache.camel.impl.engine.ValidatorKey;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.model.FaultToleranceConfigurationDefinition;
import org.apache.camel.model.HystrixConfigurationDefinition;
@@ -91,12 +91,16 @@ import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.transformer.TransformerDefinition;
import org.apache.camel.model.validator.ValidatorDefinition;
-import org.apache.camel.processor.MulticastProcessor;
+import org.apache.camel.processor.DefaultAnnotationBasedProcessorFactory;
+import org.apache.camel.processor.DefaultDeferServiceFactory;
+import org.apache.camel.processor.DefaultInternalProcessorFactory;
+import org.apache.camel.processor.DefaultProcessorFactory;
import org.apache.camel.reifier.RouteReifier;
import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
import org.apache.camel.reifier.language.ExpressionReifier;
import org.apache.camel.reifier.transformer.TransformerReifier;
import org.apache.camel.reifier.validator.ValidatorReifier;
+import org.apache.camel.spi.AnnotationBasedProcessorFactory;
import org.apache.camel.spi.AsyncProcessorAwaitManager;
import org.apache.camel.spi.BeanIntrospection;
import org.apache.camel.spi.BeanProcessorFactory;
@@ -110,17 +114,21 @@ import org.apache.camel.spi.ConfigurerResolver;
import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.DataFormatResolver;
import org.apache.camel.spi.DataType;
+import org.apache.camel.spi.DeferServiceFactory;
import org.apache.camel.spi.EndpointRegistry;
import org.apache.camel.spi.ExecutorServiceManager;
import org.apache.camel.spi.FactoryFinderResolver;
import org.apache.camel.spi.HeadersMapFactory;
import org.apache.camel.spi.InflightRepository;
import org.apache.camel.spi.Injector;
+import org.apache.camel.spi.InterceptEndpointFactory;
+import org.apache.camel.spi.InternalProcessorFactory;
import org.apache.camel.spi.Language;
import org.apache.camel.spi.LanguageResolver;
import org.apache.camel.spi.ManagementNameStrategy;
import org.apache.camel.spi.MessageHistoryFactory;
import org.apache.camel.spi.ModelJAXBContextFactory;
+import org.apache.camel.spi.ModelReifierFactory;
import org.apache.camel.spi.ModelToXMLDumper;
import org.apache.camel.spi.NodeIdFactory;
import org.apache.camel.spi.PackageScanClassResolver;
@@ -132,6 +140,7 @@ import org.apache.camel.spi.Registry;
import org.apache.camel.spi.RestBindingJaxbDataFormatFactory;
import org.apache.camel.spi.RestRegistryFactory;
import org.apache.camel.spi.RouteController;
+import org.apache.camel.spi.RouteFactory;
import org.apache.camel.spi.ShutdownStrategy;
import org.apache.camel.spi.StreamCachingStrategy;
import org.apache.camel.spi.Tracer;
@@ -150,7 +159,7 @@ import org.apache.camel.util.IOHelper;
import org.apache.camel.util.ObjectHelper;
public class FastCamelContext extends AbstractCamelContext implements CatalogCamelContext, ModelCamelContext {
- private final Model model;
+ private Model model;
private final String version;
private final XMLRoutesDefinitionLoader xmlLoader;
private final ModelToXMLDumper modelDumper;
@@ -275,6 +284,21 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
+ protected InternalProcessorFactory createInternalProcessorFactory() {
+ return new DefaultInternalProcessorFactory();
+ }
+
+ @Override
+ protected InterceptEndpointFactory createInterceptEndpointFactory() {
+ return new DefaultInterceptEndpointFactory();
+ }
+
+ @Override
+ protected RouteFactory createRouteFactory() {
+ return new DefaultRouteFactory();
+ }
+
+ @Override
protected MessageHistoryFactory createMessageHistoryFactory() {
return new DefaultMessageHistoryFactory();
}
@@ -320,18 +344,30 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
@Override
protected BeanProxyFactory createBeanProxyFactory() {
- return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class)
- .resolve(getCamelContextReference())
- .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
- + "Add camel-bean to classpath."));
+ return new BaseServiceResolver<>(BeanProxyFactory.FACTORY, BeanProxyFactory.class,
+ getBootstrapFactoryFinder())
+ .resolve(getCamelContextReference())
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProxyFactory on classpath. "
+ + "Add camel-bean to classpath."));
+ }
+
+ @Override
+ protected AnnotationBasedProcessorFactory createAnnotationBasedProcessorFactory() {
+ return new DefaultAnnotationBasedProcessorFactory();
+ }
+
+ @Override
+ protected DeferServiceFactory createDeferServiceFactory() {
+ return new DefaultDeferServiceFactory();
}
@Override
protected BeanProcessorFactory createBeanProcessorFactory() {
- return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class)
- .resolve(getCamelContextReference())
- .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
- + "Add camel-bean to classpath."));
+ return new BaseServiceResolver<>(BeanProcessorFactory.FACTORY, BeanProcessorFactory.class,
+ getBootstrapFactoryFinder())
+ .resolve(getCamelContextReference())
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find BeanProcessorFactory on classpath. "
+ + "Add camel-bean to classpath."));
}
@Override
@@ -393,10 +429,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
@Override
protected RestRegistryFactory createRestRegistryFactory() {
- return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class)
- .resolve(getCamelContextReference())
- .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
- + "Add camel-rest to classpath."));
+ return new BaseServiceResolver<>(RestRegistryFactory.FACTORY, RestRegistryFactory.class,
+ getBootstrapFactoryFinder())
+ .resolve(getCamelContextReference())
+ .orElseThrow(() -> new IllegalArgumentException("Cannot find RestRegistryFactory on classpath. "
+ + "Add camel-rest to classpath."));
}
@Override
@@ -425,14 +462,6 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
- public AsyncProcessor createMulticast(Collection<Processor> processors, ExecutorService executor,
- boolean shutdownExecutorService) {
- return new MulticastProcessor(getCamelContextReference(), null, processors, null,
- true, executor, shutdownExecutorService, false, false,
- 0, null, false, false);
- }
-
- @Override
protected ConfigurerResolver createConfigurerResolver() {
return new DefaultConfigurerResolver();
}
@@ -444,8 +473,9 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
@Override
protected HealthCheckRegistry createHealthCheckRegistry() {
- return new BaseServiceResolver<>(HealthCheckRegistry.FACTORY, HealthCheckRegistry.class)
- .resolve(getCamelContextReference()).orElse(null);
+ return new BaseServiceResolver<>(HealthCheckRegistry.FACTORY, HealthCheckRegistry.class,
+ getBootstrapFactoryFinder())
+ .resolve(getCamelContextReference()).orElse(null);
}
@Override
@@ -455,10 +485,12 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
@Override
protected RestBindingJaxbDataFormatFactory createRestBindingJaxbDataFormatFactory() {
- return new BaseServiceResolver<>(RestBindingJaxbDataFormatFactory.FACTORY, RestBindingJaxbDataFormatFactory.class)
- .resolve(getCamelContextReference())
- .orElseThrow(() -> new IllegalArgumentException("Cannot find RestBindingJaxbDataFormatFactory on classpath. "
- + "Add camel-jaxb to classpath."));
+ return new BaseServiceResolver<>(RestBindingJaxbDataFormatFactory.FACTORY, RestBindingJaxbDataFormatFactory.class,
+ getBootstrapFactoryFinder())
+ .resolve(getCamelContextReference())
+ .orElseThrow(
+ () -> new IllegalArgumentException("Cannot find RestBindingJaxbDataFormatFactory on classpath. "
+ + "Add camel-jaxb to classpath."));
}
@Override
@@ -576,6 +608,11 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
.createErrorHandler(processor);
}
+ @Override
+ public void disposeModel() {
+ this.model = null;
+ }
+
//
// ModelCamelContext
//
@@ -804,6 +841,16 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
}
@Override
+ public ModelReifierFactory getModelReifierFactory() {
+ return model.getModelReifierFactory();
+ }
+
+ @Override
+ public void setModelReifierFactory(ModelReifierFactory modelReifierFactory) {
+ model.setModelReifierFactory(modelReifierFactory);
+ }
+
+ @Override
public void startRouteDefinitions(List<RouteDefinition> routeDefinitions) throws Exception {
// indicate we are staring the route using this thread so
// we are able to query this if needed
@@ -860,7 +907,7 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam
@Override
public RouteDefinition adviceWith(RouteDefinition definition, AdviceWithRouteBuilder builder) throws Exception {
- return RouteReifier.adviceWith(definition, this, builder);
+ return AdviceWith.adviceWith(definition, this, builder);
}
@SuppressWarnings("unchecked")
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
index fd299a8..f266f57 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastModel.java
@@ -22,5 +22,4 @@ public class FastModel extends BaseModel {
public FastModel(CamelContext camelContext) {
super(camelContext);
}
-
}
diff --git a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
index 6492338..2df9239 100644
--- a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
+++ b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/FastTypeConverter.java
@@ -25,7 +25,7 @@ public class FastTypeConverter extends DefaultTypeConverter {
private static final Logger LOG = LoggerFactory.getLogger(FastTypeConverter.class);
public FastTypeConverter() {
- super(null, null, null, null, false);
+ super(null, null, null, false);
}
@Override
diff --git a/extensions/json-validator/runtime/pom.xml b/extensions/json-validator/runtime/pom.xml
index cb6ee35..d94e66e 100644
--- a/extensions/json-validator/runtime/pom.xml
+++ b/extensions/json-validator/runtime/pom.xml
@@ -56,6 +56,10 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-json-validator</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.jruby.joni</groupId>
+ <artifactId>joni</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/extensions/leveldb/runtime/src/main/doc/limitations.adoc b/extensions/leveldb/runtime/src/main/doc/limitations.adoc
index e7ebff9..9b74c99 100644
--- a/extensions/leveldb/runtime/src/main/doc/limitations.adoc
+++ b/extensions/leveldb/runtime/src/main/doc/limitations.adoc
@@ -2,7 +2,13 @@ In native mode the extension uses a port of LevelDB written in Java (https://git
which is within 10% of the performance of the C++ original. Please upvote https://github.com/apache/camel-quarkus/issues/1911[this issue]
if you do not like the present state.
-This extension does not support binary payloads in native mode since object serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. To work around this limitation, the extension instead uses Jackson serializaton / deserialization.
+Serialization is https://github.com/oracle/graal/issues/460[not supported] on GraalVM. Extension has to use serializationization based
+on Jackson. Aggregation repository in native has to be constructed in one of the following ways:
+
+* Use class `QuarkusLevelDBAggregationRepository` instead of `LevelDBAggregationRepository`.
+* Configure jackson serializer on `LevelDBAggregationRepository` by calling `repo.setSerializer(new JacksonLevelDBSerializer());`
+
+Jackson serializer has limitation towards binary content. If payload object contains binary data (does not concern payloads which are completely binary), Jackson serialization and deserialization won't work correctly.
+To avoid this, define your own jackson serializer/deserealizer via `Module` and provide it to the aggragation repository
+(you can use for example the constructor of `QuarkusLevelDBAggregationRepository`).
-The problem will be solved when the camel-leveldb component is refactored to use Jackson and custom
-serializers (see https://issues.apache.org/jira/browse/CAMEL-15679[issue])
diff --git a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java
deleted file mode 100644
index 8ab38a4..0000000
--- a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/ObjectCodecSubstitute.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.component.leveldb;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.oracle.svm.core.annotate.Inject;
-import com.oracle.svm.core.annotate.Substitute;
-import com.oracle.svm.core.annotate.TargetClass;
-import org.apache.camel.support.DefaultExchangeHolder;
-import org.fusesource.hawtbuf.codec.ObjectCodec;
-
-/**
- * This os workaround for serialization of DefaultExchangeHolder.
- * Once serialization is implemented in graalVM (see https://github.com/oracle/graal/issues/460), this substitution
- * could
- * be removed.
- */
-@TargetClass(value = ObjectCodec.class)
-final class ObjectCodecSubstitute {
-
- @Inject
- private ObjectMapper objectMapper;
-
- @Substitute
- public void encode(Object object, DataOutput dataOut) throws IOException {
- if (objectMapper == null) {
- objectMapper = new ObjectMapper();
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
- objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
- }
- objectMapper.writeValue(dataOut, object);
- }
-
- @Substitute
- public Object decode(DataInput dataIn) throws IOException {
- if (objectMapper == null) {
- objectMapper = new ObjectMapper();
- objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
- objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
- }
- return objectMapper.readValue(dataIn, DefaultExchangeHolder.class);
- }
-
-}
diff --git a/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java
new file mode 100644
index 0000000..7e930ec
--- /dev/null
+++ b/extensions/leveldb/runtime/src/main/java/org/apache/camel/quarkus/component/leveldb/QuarkusLevelDBAggregationRepository.java
@@ -0,0 +1,71 @@
+/*
+ * 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.component.leveldb;
+
+import com.fasterxml.jackson.databind.Module;
+import org.apache.camel.component.leveldb.LevelDBAggregationRepository;
+import org.apache.camel.component.leveldb.LevelDBFile;
+import org.apache.camel.component.leveldb.serializer.JacksonLevelDBSerializer;
+
+public class QuarkusLevelDBAggregationRepository extends LevelDBAggregationRepository {
+
+ public QuarkusLevelDBAggregationRepository() {
+ initSerializer(null);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName) {
+ super(repositoryName);
+ initSerializer(null);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName, String persistentFileName) {
+ super(repositoryName, persistentFileName);
+ initSerializer(null);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName, LevelDBFile levelDBFile) {
+ super(repositoryName, levelDBFile);
+ initSerializer(null);
+ }
+
+ //constructor with module
+
+ public QuarkusLevelDBAggregationRepository(Module module) {
+ JacksonLevelDBSerializer serializer = new JacksonLevelDBSerializer(module);
+ initSerializer(module);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName, Module module) {
+ super(repositoryName);
+ initSerializer(module);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName, String persistentFileName, Module module) {
+ super(repositoryName, persistentFileName);
+ initSerializer(module);
+ }
+
+ public QuarkusLevelDBAggregationRepository(String repositoryName, LevelDBFile levelDBFile, Module module) {
+ super(repositoryName, levelDBFile);
+ initSerializer(module);
+ }
+
+ private void initSerializer(Module module) {
+ JacksonLevelDBSerializer serializer = new JacksonLevelDBSerializer(module);
+ setSerializer(serializer);
+ }
+}
diff --git a/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java b/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
index d5b8b14..05673b1 100644
--- a/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
+++ b/extensions/microprofile-fault-tolerance/deployment/src/main/java/org/apache/camel/quarkus/component/microprofile/fault/tolerance/deployment/MicroprofileFaultToleranceProcessor.java
@@ -18,6 +18,7 @@ package org.apache.camel.quarkus.component.microprofile.fault.tolerance.deployme
import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.FeatureBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
class MicroprofileFaultToleranceProcessor {
@@ -27,4 +28,11 @@ class MicroprofileFaultToleranceProcessor {
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
+
+ @BuildStep
+ NativeImageResourceBuildItem initResources() {
+ return new NativeImageResourceBuildItem(
+ "META-INF/services/org/apache/camel/model/CircuitBreakerDefinition");
+ }
+
}
diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
index 95e6cc2..eb7658e 100644
--- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
+++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteComponentConfigurer.java
@@ -4,6 +4,7 @@ package org.apache.camel.component.qute;
import java.util.Map;
import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ConfigurerStrategy;
import org.apache.camel.spi.GeneratedPropertyConfigurer;
import org.apache.camel.spi.PropertyConfigurerGetter;
import org.apache.camel.util.CaseInsensitiveMap;
@@ -23,6 +24,7 @@ public class QuteComponentConfigurer extends PropertyConfigurerSupport implement
map.put("basicPropertyBinding", boolean.class);
map.put("quteEngine", io.quarkus.qute.Engine.class);
ALL_OPTIONS = map;
+ ConfigurerStrategy.addConfigurerClearer(QuteComponentConfigurer::clearConfigurers);
}
@Override
@@ -46,6 +48,13 @@ public class QuteComponentConfigurer extends PropertyConfigurerSupport implement
return ALL_OPTIONS;
}
+ public static void clearBootstrapConfigurers() {
+ }
+
+ public static void clearConfigurers() {
+ ALL_OPTIONS.clear();
+ }
+
@Override
public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
QuteComponent target = (QuteComponent) obj;
diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
index 983fa1c..7e61ea5 100644
--- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
+++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointConfigurer.java
@@ -4,6 +4,7 @@ package org.apache.camel.component.qute;
import java.util.Map;
import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ConfigurerStrategy;
import org.apache.camel.spi.GeneratedPropertyConfigurer;
import org.apache.camel.spi.PropertyConfigurerGetter;
import org.apache.camel.util.CaseInsensitiveMap;
@@ -27,6 +28,7 @@ public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements
map.put("basicPropertyBinding", boolean.class);
map.put("synchronous", boolean.class);
ALL_OPTIONS = map;
+ ConfigurerStrategy.addConfigurerClearer(QuteEndpointConfigurer::clearConfigurers);
}
@Override
@@ -54,6 +56,13 @@ public class QuteEndpointConfigurer extends PropertyConfigurerSupport implements
return ALL_OPTIONS;
}
+ public static void clearBootstrapConfigurers() {
+ }
+
+ public static void clearConfigurers() {
+ ALL_OPTIONS.clear();
+ }
+
@Override
public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
QuteEndpoint target = (QuteEndpoint) obj;
diff --git a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
index f24c41f..28b192e 100644
--- a/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
+++ b/extensions/qute/component/src/generated/java/org/apache/camel/component/qute/QuteEndpointUriFactory.java
@@ -39,14 +39,14 @@ public class QuteEndpointUriFactory extends org.apache.camel.support.component.E
}
@Override
- public String buildUri(String scheme, Map<String, Object> properties) throws URISyntaxException {
+ public String buildUri(String scheme, Map<String, Object> properties, boolean encode) throws URISyntaxException {
String syntax = scheme + BASE;
String uri = syntax;
Map<String, Object> copy = new HashMap<>(properties);
uri = buildPathParameter(syntax, uri, "resourceUri", null, true, copy);
- uri = buildQueryParameters(uri, copy);
+ uri = buildQueryParameters(uri, copy, encode);
return uri;
}
diff --git a/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
index 6d0e29c..985a507 100644
--- a/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
+++ b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/mock/MockResource.java
@@ -26,10 +26,10 @@ import javax.ws.rs.core.MediaType;
import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
+import org.apache.camel.builder.AdviceWith;
import org.apache.camel.builder.AdviceWithRouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.model.ModelCamelContext;
-import org.apache.camel.reifier.RouteReifier;
import org.jboss.logging.Logger;
import org.wildfly.common.Assert;
@@ -51,7 +51,7 @@ public class MockResource {
// advice the first route using the inlined AdviceWith route builder
// which has extended capabilities than the regular route builder
- RouteReifier.adviceWith(context.adapt(ModelCamelContext.class).getRouteDefinition("forMocking"), context,
+ AdviceWith.adviceWith(context.adapt(ModelCamelContext.class).getRouteDefinition("forMocking"), context,
new AdviceWithRouteBuilder() {
@Override
public void configure() throws Exception {
diff --git a/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java b/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
index ed9674f..a5f7b8b 100644
--- a/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
+++ b/integration-tests/leveldb/src/main/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbRouteBuilder.java
@@ -24,6 +24,7 @@ import org.apache.camel.AggregationStrategy;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.leveldb.LevelDBAggregationRepository;
+import org.apache.camel.quarkus.component.leveldb.QuarkusLevelDBAggregationRepository;
public class LeveldbRouteBuilder extends RouteBuilder {
public static final String DIRECT_START = "direct:start";
@@ -39,21 +40,22 @@ public class LeveldbRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
- LevelDBAggregationRepository repo = new LevelDBAggregationRepository("repo", DATA_FOLDER + "leveldb.dat");
+ LevelDBAggregationRepository repo = new QuarkusLevelDBAggregationRepository("repo", DATA_FOLDER + "leveldb.dat");
from(DIRECT_START)
.aggregate(header("id"), new MyAggregationStrategy())
.completionSize(7).aggregationRepository(repo)
.to(MOCK_RESULT);
- LevelDBAggregationRepository repoBinary = new LevelDBAggregationRepository("repo", DATA_FOLDER + "levelBinarydb.dat");
+ LevelDBAggregationRepository repoBinary = new QuarkusLevelDBAggregationRepository("repo",
+ DATA_FOLDER + "levelBinarydb.dat");
from(DIRECT_BINARY)
.aggregate(header("id"), new BinaryAggregationStrategy())
.completionSize(3).aggregationRepository(repoBinary)
.to(MOCK_RESULT);
- LevelDBAggregationRepository repoWithFailure = new LevelDBAggregationRepository("repoWithFailure",
+ LevelDBAggregationRepository repoWithFailure = new QuarkusLevelDBAggregationRepository("repoWithFailure",
DATA_FOLDER + "leveldbWithFailure.dat");
repoWithFailure.setUseRecovery(true);
@@ -72,7 +74,7 @@ public class LeveldbRouteBuilder extends RouteBuilder {
.to(MOCK_RESULT)
.end();
- LevelDBAggregationRepository repoDeadLetter = new LevelDBAggregationRepository("repoDeadLetter",
+ LevelDBAggregationRepository repoDeadLetter = new QuarkusLevelDBAggregationRepository("repoDeadLetter",
DATA_FOLDER + "leveldbDeadLetter.dat");
repoDeadLetter.setUseRecovery(true);
diff --git a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
index e4fc4ba..743e2ab 100644
--- a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
+++ b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbIT.java
@@ -20,8 +20,4 @@ import io.quarkus.test.junit.NativeImageTest;
@NativeImageTest
class LeveldbIT extends LeveldbTest {
- @Override
- boolean doeasBinaryDataWork() {
- return false;
- }
}
diff --git a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
index 1ffa037..3d473b8 100644
--- a/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
+++ b/integration-tests/leveldb/src/test/java/org/apache/camel/quarkus/component/leveldb/it/LeveldbTest.java
@@ -101,19 +101,7 @@ class LeveldbTest {
.statusCode(201)
.extract().as(Boolean.class);
- if (doeasBinaryDataWork()) {
- assertTrue(theSame);
- } else {
- assertFalse(theSame);
- }
- }
-
- /**
- * Until binary payload is not supported, in native binary test will fail.
- * Needs https://issues.apache.org/jira/browse/CAMEL-15679
- */
- boolean doeasBinaryDataWork() {
- return true;
+ assertTrue(theSame);
}
private Map<String, List<Map<String, Object>>> testAggregate(String path, List<String> messages) {
diff --git a/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java b/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
index 32dc3cb..6196340 100644
--- a/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
+++ b/integration-tests/saga/src/main/java/org/apache/camel/quarkus/component/saga/it/SagaRoute.java
@@ -21,9 +21,9 @@ import javax.inject.Inject;
import org.apache.camel.Exchange;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.impl.saga.InMemorySagaService;
import org.apache.camel.model.SagaPropagation;
import org.apache.camel.saga.CamelSagaService;
+import org.apache.camel.saga.InMemorySagaService;
@ApplicationScoped
public class SagaRoute extends RouteBuilder {
diff --git a/pom.xml b/pom.xml
index 98b7973..7295173 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
<awssdk1-swf-libs.version>1.11.22</awssdk1-swf-libs.version>
<awssdk2.version>2.14.3</awssdk2.version>
<bouncycastle.version>1.66</bouncycastle.version>
- <camel.version>3.6.0</camel.version>
+ <camel.version>3.7.0-SNAPSHOT</camel.version>
<commons-beanutils.version>1.9.4</commons-beanutils.version><!-- keep in sync with Camel -->
<commons-cli.version>1.4</commons-cli.version><!-- keep in sync with Quarkus, via quarkus-bootstrap-core -->
<commons-collections.version>3.2.2</commons-collections.version><!-- used by hbase, should be pretty stable as commons-collections are not developed actively anymore -->
@@ -72,6 +72,7 @@
<jackson-asl.version>1.9.13</jackson-asl.version><!-- Mess in the transitive dependencies of spark and hbase-testing-util -->
<java.xml.ws.version>2.3.1</java.xml.ws.version>
<jcodings.version>1.0.55</jcodings.version><!-- used by hbase -->
+ <joni.version>2.1.31</joni.version><!-- used by json-validator -->
<jaxen.version>1.2.0</jaxen.version>
<javassist.version>3.22.0-CR2</javassist.version><!-- debezium -->
<jersey-sun.version>1.19.4</jersey-sun.version><!-- Spark -->
diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml
index ab3e1e7..6b7003a 100644
--- a/poms/bom/pom.xml
+++ b/poms/bom/pom.xml
@@ -656,6 +656,11 @@
</dependency>
<dependency>
<groupId>org.apache.camel</groupId>
+ <artifactId>camel-core-processor</artifactId>
+ <version>${camel.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.camel</groupId>
<artifactId>camel-couchbase</artifactId>
<version>${camel.version}</version>
</dependency>
@@ -5602,6 +5607,11 @@
<version>${jcodings.version}</version>
</dependency>
<dependency>
+ <groupId>org.jruby.joni</groupId>
+ <artifactId>joni</artifactId>
+ <version>${joni.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>