This is an automated email from the ASF dual-hosted git repository. orpiske pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel.git
commit 2ff4d248290846dc6d423ab8c13e910100c5b986 Author: Otavio Rodolfo Piske <[email protected]> AuthorDate: Tue Apr 9 16:55:18 2024 +0200 (chores) camel-core: cleaned up duplicated code --- .../apache/camel/model/RouteDefinitionHelper.java | 39 ++++++++++++++++++++++ .../org/apache/camel/model/RoutesDefinition.java | 31 +++-------------- .../core/xml/AbstractCamelContextFactoryBean.java | 31 +++-------------- 3 files changed, 49 insertions(+), 52 deletions(-) diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java index 5b9f9b81bdf..973ed26d53b 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java @@ -24,6 +24,9 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Properties; import java.util.Set; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; +import java.util.function.Predicate; import org.apache.camel.CamelContext; import org.apache.camel.ErrorHandlerFactory; @@ -34,6 +37,7 @@ import org.apache.camel.model.rest.VerbDefinition; import org.apache.camel.spi.NodeIdFactory; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.EndpointHelper; +import org.apache.camel.support.PatternHelper; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.URISupport; @@ -794,4 +798,39 @@ public final class RouteDefinitionHelper { route = URISupport.sanitizeUri(route); return route; } + + public static Predicate<RouteConfigurationDefinition> routesByIdOrPattern( + RouteDefinition route, String id) { + return g -> { + if (route.getRouteConfigurationId() != null) { + // if the route has a route configuration assigned then use pattern matching + return PatternHelper.matchPattern(g.getId(), id); + } else { + // global configurations have no id assigned or is a wildcard + return g.getId() == null || g.getId().equals(id); + } + }; + } + + public static Consumer<RouteConfigurationDefinition> getRouteConfigurationDefinitionConsumer( + RouteDefinition route, AtomicReference<ErrorHandlerDefinition> gcErrorHandler, List<OnExceptionDefinition> oe, + List<InterceptDefinition> icp, List<InterceptFromDefinition> ifrom, List<InterceptSendToEndpointDefinition> ito, + List<OnCompletionDefinition> oc) { + return g -> { + // there can only be one global error handler, so override previous, meaning + // that we will pick the last in the sort (take precedence) + if (g.getErrorHandler() != null) { + gcErrorHandler.set(g.getErrorHandler()); + } + + String aid = g.getId() == null ? "<default>" : g.getId(); + // remember the id that was used on the route + route.addAppliedRouteConfigurationId(aid); + oe.addAll(g.getOnExceptions()); + icp.addAll(g.getIntercepts()); + ifrom.addAll(g.getInterceptFroms()); + ito.addAll(g.getInterceptSendTos()); + oc.addAll(g.getOnCompletions()); + }; + } } diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java index f67b702dabb..0caa1e9b2b4 100644 --- a/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java +++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RoutesDefinition.java @@ -37,11 +37,13 @@ import org.apache.camel.spi.Metadata; import org.apache.camel.spi.Resource; import org.apache.camel.spi.ResourceAware; import org.apache.camel.support.OrderedComparator; -import org.apache.camel.support.PatternHelper; import org.apache.camel.util.OrderedLocationProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.camel.model.RouteDefinitionHelper.getRouteConfigurationDefinitionConsumer; +import static org.apache.camel.model.RouteDefinitionHelper.routesByIdOrPattern; + /** * A series of Camel routes */ @@ -314,31 +316,8 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit for (String id : ids) { // sort according to ordered globalConfigurations.stream().sorted(OrderedComparator.get()) - .filter(g -> { - if (route.getRouteConfigurationId() != null) { - // if the route has a route configuration assigned then use pattern matching - return PatternHelper.matchPattern(g.getId(), id); - } else { - // global configurations have no id assigned or is a wildcard - return g.getId() == null || g.getId().equals(id); - } - }) - .forEach(g -> { - // there can only be one global error handler, so override previous, meaning - // that we will pick the last in the sort (take precedence) - if (g.getErrorHandler() != null) { - gcErrorHandler.set(g.getErrorHandler()); - } - - String aid = g.getId() == null ? "<default>" : g.getId(); - // remember the id that was used on the route - route.addAppliedRouteConfigurationId(aid); - oe.addAll(g.getOnExceptions()); - icp.addAll(g.getIntercepts()); - ifrom.addAll(g.getInterceptFroms()); - ito.addAll(g.getInterceptSendTos()); - oc.addAll(g.getOnCompletions()); - }); + .filter(routesByIdOrPattern(route, id)) + .forEach(getRouteConfigurationDefinitionConsumer(route, gcErrorHandler, oe, icp, ifrom, ito, oc)); } // set error handler before prepare diff --git a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java index 27dbd15420a..d31086ce978 100644 --- a/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java +++ b/core/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java @@ -141,13 +141,15 @@ import org.apache.camel.spi.Validator; import org.apache.camel.support.CamelContextHelper; import org.apache.camel.support.ObjectHelper; import org.apache.camel.support.OrderedComparator; -import org.apache.camel.support.PatternHelper; import org.apache.camel.support.PluginHelper; import org.apache.camel.util.StringHelper; import org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.apache.camel.model.RouteDefinitionHelper.getRouteConfigurationDefinitionConsumer; +import static org.apache.camel.model.RouteDefinitionHelper.routesByIdOrPattern; + /** * A factory to create and initialize a {@link CamelContext} and install routes either explicitly configured or found by * searching the classpath for Java classes which extend {@link org.apache.camel.builder.RouteBuilder}. @@ -632,31 +634,8 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex for (String id : ids) { // sort according to ordered globalConfigurations.stream().sorted(OrderedComparator.get()) - .filter(g -> { - if (route.getRouteConfigurationId() != null) { - // if the route has a route configuration assigned then use pattern matching - return PatternHelper.matchPattern(g.getId(), id); - } else { - // global configurations have no id assigned or is a wildcard - return g.getId() == null || g.getId().equals(id); - } - }) - .forEach(g -> { - // there can only be one global error handler, so override previous, meaning - // that we will pick the last in the sort (take precedence) - if (g.getErrorHandler() != null) { - errorHandler.set(g.getErrorHandler()); - } - - String aid = g.getId() == null ? "<default>" : g.getId(); - // remember the id that was used on the route - route.addAppliedRouteConfigurationId(aid); - oe.addAll(g.getOnExceptions()); - icp.addAll(g.getIntercepts()); - ifrom.addAll(g.getInterceptFroms()); - ito.addAll(g.getInterceptSendTos()); - oc.addAll(g.getOnCompletions()); - }); + .filter(routesByIdOrPattern(route, id)) + .forEach(getRouteConfigurationDefinitionConsumer(route, errorHandler, oe, icp, ifrom, ito, oc)); } } }
