This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-spring-boot.git
The following commit(s) were added to refs/heads/master by this push: new a352d47 CAMEL-16170: Modularize camel-spring a352d47 is described below commit a352d476fd69b08e0b79be57b81ff95e4a0e8aa4 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Thu Feb 11 17:48:13 2021 +0100 CAMEL-16170: Modularize camel-spring --- components-starter/camel-corda-starter/pom.xml | 8 -- .../FileLockClusterServiceAutoConfiguration.java | 3 +- components-starter/camel-iota-starter/pom.xml | 12 -- core/camel-spring-boot/pom.xml | 19 +--- .../camel/spring/boot/CamelAutoConfiguration.java | 4 +- .../boot/CamelSpringBootBeanPostProcessor.java | 2 +- .../boot/SpringBootXmlCamelContextConfigurer.java | 2 +- .../ClusteredRouteControllerAutoConfiguration.java | 1 - .../spring/boot/cluster/TimePatternConverter.java | 122 +++++++++++++++++++++ tooling/camel-spring-boot-dependencies/pom.xml | 5 + 10 files changed, 137 insertions(+), 41 deletions(-) diff --git a/components-starter/camel-corda-starter/pom.xml b/components-starter/camel-corda-starter/pom.xml index 158a2e5..d667b96 100644 --- a/components-starter/camel-corda-starter/pom.xml +++ b/components-starter/camel-corda-starter/pom.xml @@ -41,14 +41,6 @@ <!--START OF GENERATED CODE--> <exclusions> <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </exclusion> - <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </exclusion> - <exclusion> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> </exclusion> diff --git a/components-starter/camel-file-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java b/components-starter/camel-file-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java index c7baf91..fd5756c 100644 --- a/components-starter/camel-file-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java +++ b/components-starter/camel-file-starter/src/main/java/org/apache/camel/component/file/springboot/cluster/FileLockClusterServiceAutoConfiguration.java @@ -16,15 +16,14 @@ */ package org.apache.camel.component.file.springboot.cluster; - import java.util.Optional; import java.util.concurrent.TimeUnit; -import org.apache.camel.catalog.impl.TimePatternConverter; import org.apache.camel.cluster.CamelClusterService; import org.apache.camel.component.file.cluster.FileLockClusterService; import org.apache.camel.spring.boot.CamelAutoConfiguration; import org.apache.camel.spring.boot.cluster.ClusteredRouteControllerAutoConfiguration; +import org.apache.camel.spring.boot.cluster.TimePatternConverter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.boot.autoconfigure.AutoConfigureBefore; diff --git a/components-starter/camel-iota-starter/pom.xml b/components-starter/camel-iota-starter/pom.xml index 758052f..95d1ad5 100644 --- a/components-starter/camel-iota-starter/pom.xml +++ b/components-starter/camel-iota-starter/pom.xml @@ -38,18 +38,6 @@ <groupId>org.apache.camel</groupId> <artifactId>camel-iota</artifactId> <version>${camel-version}</version> - <!--START OF GENERATED CODE--> - <exclusions> - <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-classic</artifactId> - </exclusion> - <exclusion> - <groupId>ch.qos.logback</groupId> - <artifactId>logback-core</artifactId> - </exclusion> - </exclusions> - <!--END OF GENERATED CODE--> </dependency> <!--START OF GENERATED CODE--> <dependency> diff --git a/core/camel-spring-boot/pom.xml b/core/camel-spring-boot/pom.xml index 8cf7b4f..5492ea3 100644 --- a/core/camel-spring-boot/pom.xml +++ b/core/camel-spring-boot/pom.xml @@ -26,7 +26,7 @@ <groupId>org.apache.camel.springboot</groupId> <artifactId>core-modules</artifactId> <version>3.8.0-SNAPSHOT</version> - <relativePath>..</relativePath> + <relativePath>../pom.xml</relativePath> </parent> <name>Camel SB :: Spring Boot</name> @@ -68,28 +68,24 @@ <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-spring</artifactId> + <artifactId>camel-spring-xml</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-cloud</artifactId> + <artifactId>camel-spring-main</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-cluster</artifactId> + <artifactId>camel-cloud</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-core-catalog</artifactId> + <artifactId>camel-cluster</artifactId> </dependency> <dependency> <groupId>org.apache.camel</groupId> <artifactId>camel-health</artifactId> </dependency> - <dependency> - <groupId>org.apache.camel</groupId> - <artifactId>camel-main</artifactId> - </dependency> <!-- Optional Spring web support --> <dependency> @@ -123,11 +119,6 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> - <artifactId>camel-core-xml</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.camel</groupId> <artifactId>camel-management</artifactId> <scope>test</scope> </dependency> diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java index bc5f4c2..b8f1212 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelAutoConfiguration.java @@ -34,9 +34,9 @@ import org.apache.camel.main.RoutesCollector; import org.apache.camel.model.Model; import org.apache.camel.spi.BeanRepository; import org.apache.camel.spi.StartupStepRecorder; -import org.apache.camel.spring.CamelBeanPostProcessor; import org.apache.camel.spring.spi.ApplicationContextBeanRepository; -import org.apache.camel.spring.spi.XmlCamelContextConfigurer; +import org.apache.camel.spring.xml.CamelBeanPostProcessor; +import org.apache.camel.spring.xml.XmlCamelContextConfigurer; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.DefaultRegistry; import org.apache.camel.support.startup.LoggingStartupStepRecorder; diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootBeanPostProcessor.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootBeanPostProcessor.java index 0fcf5a7..6780c00 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootBeanPostProcessor.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/CamelSpringBootBeanPostProcessor.java @@ -16,7 +16,7 @@ */ package org.apache.camel.spring.boot; -import org.apache.camel.spring.CamelBeanPostProcessor; +import org.apache.camel.spring.xml.CamelBeanPostProcessor; import org.springframework.context.ApplicationContext; public final class CamelSpringBootBeanPostProcessor extends CamelBeanPostProcessor { diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootXmlCamelContextConfigurer.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootXmlCamelContextConfigurer.java index 79c75f2..9c38c36 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootXmlCamelContextConfigurer.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/SpringBootXmlCamelContextConfigurer.java @@ -18,7 +18,7 @@ package org.apache.camel.spring.boot; import org.apache.camel.RuntimeCamelException; import org.apache.camel.spring.SpringCamelContext; -import org.apache.camel.spring.spi.XmlCamelContextConfigurer; +import org.apache.camel.spring.xml.XmlCamelContextConfigurer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.ApplicationContext; diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/ClusteredRouteControllerAutoConfiguration.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/ClusteredRouteControllerAutoConfiguration.java index 7002d3d..de025a0 100644 --- a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/ClusteredRouteControllerAutoConfiguration.java +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/ClusteredRouteControllerAutoConfiguration.java @@ -22,7 +22,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import org.apache.camel.catalog.impl.TimePatternConverter; import org.apache.camel.cluster.CamelClusterService; import org.apache.camel.impl.cluster.ClusteredRouteConfiguration; import org.apache.camel.impl.cluster.ClusteredRouteController; diff --git a/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/TimePatternConverter.java b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/TimePatternConverter.java new file mode 100644 index 0000000..40f0da7 --- /dev/null +++ b/core/camel-spring-boot/src/main/java/org/apache/camel/spring/boot/cluster/TimePatternConverter.java @@ -0,0 +1,122 @@ +/* + * 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.spring.boot.cluster; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * This class is a copy from camel-core so we do not have direct dependency on internal classes + */ +public final class TimePatternConverter { + private static final Pattern NUMBERS_ONLY_STRING_PATTERN = Pattern.compile("^[-]?(\\d)+$", Pattern.CASE_INSENSITIVE); + private static final Pattern HOUR_REGEX_PATTERN = Pattern.compile("((\\d)*(\\d))h(our(s)?)?", Pattern.CASE_INSENSITIVE); + private static final Pattern MINUTES_REGEX_PATTERN + = Pattern.compile("((\\d)*(\\d))m(in(ute(s)?)?)?", Pattern.CASE_INSENSITIVE); + private static final Pattern SECONDS_REGEX_PATTERN + = Pattern.compile("((\\d)*(\\d))s(ec(ond)?(s)?)?", Pattern.CASE_INSENSITIVE); + + /** + * Utility classes should not have a public constructor. + */ + private TimePatternConverter() { + } + + public static long toMilliSeconds(String source) throws IllegalArgumentException { + long milliseconds = 0; + boolean foundFlag = false; + + checkCorrectnessOfPattern(source); + Matcher matcher; + + matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source); + if (matcher.find()) { + // Note: This will also be used for regular numeric strings. + // This String -> long converter will be used for all strings. + milliseconds = Long.valueOf(source); + } else { + matcher = createMatcher(HOUR_REGEX_PATTERN, source); + if (matcher.find()) { + milliseconds = milliseconds + (3600000 * Long.valueOf(matcher.group(1))); + foundFlag = true; + } + + matcher = createMatcher(MINUTES_REGEX_PATTERN, source); + if (matcher.find()) { + long minutes = Long.valueOf(matcher.group(1)); + if ((minutes > 59) && foundFlag) { + throw new IllegalArgumentException("Minutes should contain a valid value between 0 and 59: " + source); + } + foundFlag = true; + milliseconds = milliseconds + (60000 * minutes); + } + + matcher = createMatcher(SECONDS_REGEX_PATTERN, source); + if (matcher.find()) { + long seconds = Long.valueOf(matcher.group(1)); + if ((seconds > 59) && foundFlag) { + throw new IllegalArgumentException("Seconds should contain a valid value between 0 and 59: " + source); + } + foundFlag = true; + milliseconds = milliseconds + (1000 * seconds); + } + + // No pattern matched... initiating fallback check and conversion (if required). + // The source at this point may contain illegal values or special characters + if (!foundFlag) { + milliseconds = Long.valueOf(source); + } + } + + return milliseconds; + } + + private static void checkCorrectnessOfPattern(String source) { + //replace only numbers once + Matcher matcher = createMatcher(NUMBERS_ONLY_STRING_PATTERN, source); + String replaceSource = matcher.replaceFirst(""); + + //replace hour string once + matcher = createMatcher(HOUR_REGEX_PATTERN, replaceSource); + if (matcher.find() && matcher.find()) { + throw new IllegalArgumentException("Hours should not be specified more then once: " + source); + } + replaceSource = matcher.replaceFirst(""); + + //replace minutes once + matcher = createMatcher(MINUTES_REGEX_PATTERN, replaceSource); + if (matcher.find() && matcher.find()) { + throw new IllegalArgumentException("Minutes should not be specified more then once: " + source); + } + replaceSource = matcher.replaceFirst(""); + + //replace seconds once + matcher = createMatcher(SECONDS_REGEX_PATTERN, replaceSource); + if (matcher.find() && matcher.find()) { + throw new IllegalArgumentException("Seconds should not be specified more then once: " + source); + } + replaceSource = matcher.replaceFirst(""); + + if (replaceSource.length() > 0) { + throw new IllegalArgumentException("Illegal characters: " + source); + } + } + + private static Matcher createMatcher(Pattern pattern, String source) { + return pattern.matcher(source); + } +} diff --git a/tooling/camel-spring-boot-dependencies/pom.xml b/tooling/camel-spring-boot-dependencies/pom.xml index f8428ac..c5f05df 100644 --- a/tooling/camel-spring-boot-dependencies/pom.xml +++ b/tooling/camel-spring-boot-dependencies/pom.xml @@ -3769,6 +3769,11 @@ </dependency> <dependency> <groupId>org.apache.camel</groupId> + <artifactId>camel-spring-xml</artifactId> + <version>3.8.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.camel</groupId> <artifactId>camel-sql</artifactId> <version>3.8.0-SNAPSHOT</version> </dependency>