This is an automated email from the ASF dual-hosted git repository. github-bot pushed a commit to branch camel-master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 09094a0c14a0f8c0a133a397fbc07a44d3b8f29f Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Mon Oct 19 07:16:38 2020 +0100 Upgrade to Camel 3.7.0 --- .../ROOT/pages/reference/extensions/leveldb.adoc | 12 +++- .../partials/reference/components/atlasmap.adoc | 1 + .../partials/reference/dataformats/json-jsonb.adoc | 1 + .../ROOT/partials/reference/languages/joor.adoc | 1 + .../partials/reference/others/leveldb-legacy.adoc | 1 + extensions-core/core/runtime/pom.xml | 16 +++-- .../org/apache/camel/quarkus/core/BaseModel.java | 13 ++++ .../camel/quarkus/core/FastCamelContext.java | 68 ++++++++++++++++----- .../org/apache/camel/quarkus/core/FastModel.java | 1 - .../leveldb/runtime/src/main/doc/limitations.adoc | 12 +++- .../component/leveldb/ObjectCodecSubstitute.java | 64 ------------------- .../QuarkusLevelDBAggregationRepository.java | 71 ++++++++++++++++++++++ .../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 +---- pom.xml | 2 +- poms/bom/pom.xml | 5 ++ 19 files changed, 185 insertions(+), 119 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc b/docs/modules/ROOT/pages/reference/extensions/leveldb.adoc index 6d1a5e8..e85afba 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/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/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 3facae2..5f37b72 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 @@ -22,11 +22,13 @@ 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.*; 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.CollectionStringBuffer; @@ -34,6 +36,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<>(); @@ -429,6 +432,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..d60d5f4 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; @@ -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(); } @@ -327,6 +351,16 @@ public class FastCamelContext extends AbstractCamelContext implements CatalogCam } @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()) @@ -425,14 +459,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(); } @@ -804,6 +830,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 +896,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/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/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/pom.xml b/pom.xml index 892e91d..d621f04 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 --> diff --git a/poms/bom/pom.xml b/poms/bom/pom.xml index 3b4ddb4..ec53030 100644 --- a/poms/bom/pom.xml +++ b/poms/bom/pom.xml @@ -651,6 +651,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>