You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2021/08/04 10:09:49 UTC
[camel] branch main updated (22883ba -> 6d3febd)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git.
from 22883ba Regen
new cf74942 CAMEL-16757: Polished logging
new 6d3febd CAMEL-16757: Route now stores correctly which route configuration it has been applied with.
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../src/main/java/org/apache/camel/Route.java | 2 +-
.../org/apache/camel/model/RouteDefinition.java | 36 ++++++++++++++++++++--
.../org/apache/camel/model/RoutesDefinition.java | 27 +++++++++-------
.../org/apache/camel/reifier/RouteReifier.java | 5 +--
.../core/xml/AbstractCamelContextFactoryBean.java | 26 ++++++++++------
.../RoutesConfigurationBuilderIdOrPatternTest.java | 21 ++++++++++---
6 files changed, 86 insertions(+), 31 deletions(-)
[camel] 01/02: CAMEL-16757: Polished logging
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit cf74942da43d008aea33943b1fc7253cc1f4e6ac
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 4 11:20:13 2021 +0200
CAMEL-16757: Polished logging
---
.../src/main/java/org/apache/camel/Route.java | 2 +-
.../org/apache/camel/model/RouteDefinition.java | 29 +++++++++++++++++++---
.../org/apache/camel/model/RoutesDefinition.java | 12 ++++-----
.../org/apache/camel/reifier/RouteReifier.java | 5 ++--
.../core/xml/AbstractCamelContextFactoryBean.java | 11 ++++----
5 files changed, 40 insertions(+), 19 deletions(-)
diff --git a/core/camel-api/src/main/java/org/apache/camel/Route.java b/core/camel-api/src/main/java/org/apache/camel/Route.java
index 27e5e84..5c0dddf 100644
--- a/core/camel-api/src/main/java/org/apache/camel/Route.java
+++ b/core/camel-api/src/main/java/org/apache/camel/Route.java
@@ -117,7 +117,7 @@ public interface Route extends RuntimeConfiguration {
String getDescription();
/**
- * Gets the route configuration id(s) (if any has been configured).
+ * Gets the route configuration id(s) the route has been applied with. Multiple ids is separated by comma.
* <p/>
* The configuration ids is configured using the {@link #CONFIGURATION_ID_PROPERTY} as key in the
* {@link #getProperties()}.
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
index 40ef2e1..6373a26 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -18,8 +18,10 @@ package org.apache.camel.model;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Supplier;
@@ -58,6 +60,7 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition> implement
private final AtomicBoolean prepared = new AtomicBoolean();
private FromDefinition input;
private String routeConfigurationId;
+ private transient Set<String> appliedRouteConfigurationIds;
private String group;
private String streamCache;
private String trace;
@@ -130,9 +133,6 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition> implement
/**
* Marks the route definition as un-prepared.
- * <p/>
- * This is needed if routes have been created by components such as <tt>camel-scala</tt>. To unset the prepare so
- * the routes can be prepared at a later stage when scala has build the routes completely.
*/
public void markUnprepared() {
prepared.set(false);
@@ -748,6 +748,29 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition> implement
}
/**
+ * This is used internally by Camel to keep track which route configurations is applied when creating a route from
+ * this model.
+ *
+ * This method is not intended for Camel end users.
+ */
+ public void addAppliedRouteConfigurationId(String routeConfigurationId) {
+ if (appliedRouteConfigurationIds == null) {
+ appliedRouteConfigurationIds = new LinkedHashSet<>();
+ }
+ appliedRouteConfigurationIds.add(routeConfigurationId);
+ }
+
+ /**
+ * This is used internally by Camel to keep track which route configurations is applied when creating a route from
+ * this model.
+ *
+ * This method is not intended for Camel end users.
+ */
+ public Set<String> getAppliedRouteConfigurationIds() {
+ return appliedRouteConfigurationIds;
+ }
+
+ /**
* The group that this route belongs to; could be the name of the RouteBuilder class or be explicitly configured in
* the XML.
* <p/>
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 3a2ff21..f764bc6 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
@@ -17,9 +17,7 @@
package org.apache.camel.model;
import java.util.ArrayList;
-import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Set;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
@@ -226,7 +224,6 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
List<InterceptFromDefinition> ifrom = new ArrayList<>(interceptFroms);
List<InterceptSendToEndpointDefinition> ito = new ArrayList<>(interceptSendTos);
List<OnCompletionDefinition> oc = new ArrayList<>(onCompletions);
- Set<String> matchedIds = new LinkedHashSet<>();
if (getCamelContext() != null) {
List<RouteConfigurationDefinition> globalConfigurations
= getCamelContext().adapt(ModelCamelContext.class).getRouteConfigurationDefinitions();
@@ -238,8 +235,8 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
|| (PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId())))
.forEach(g -> {
if (g.getId() != null && !g.getId().equals("*")) {
- // remember the id that was used
- matchedIds.add(g.getId());
+ // remember the id that was used on the route
+ route.addAppliedRouteConfigurationId(g.getId());
}
oe.addAll(g.getOnExceptions());
icp.addAll(g.getIntercepts());
@@ -253,8 +250,9 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
// must prepare the route before we can add it to the routes list
RouteDefinitionHelper.prepareRoute(getCamelContext(), route, oe, icp, ifrom, ito, oc);
- if (LOG.isDebugEnabled() && route.getRouteConfigurationId() != null) {
- LOG.debug("Route: {} is using route configurations ids: {}", route.getId(), matchedIds);
+ if (LOG.isDebugEnabled() && route.getAppliedRouteConfigurationIds() != null) {
+ LOG.debug("Route: {} is using route configurations ids: {}", route.getId(),
+ route.getAppliedRouteConfigurationIds());
}
// mark this route as prepared
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
index f921817..d55b699 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/RouteReifier.java
@@ -373,8 +373,9 @@ public class RouteReifier extends ProcessorReifier<RouteDefinition> {
routeProperties.put(Route.REST_PROPERTY, rest);
String template = Boolean.toString(definition.isTemplate() != null && definition.isTemplate());
routeProperties.put(Route.TEMPLATE_PROPERTY, template);
- if (definition.getRouteConfigurationId() != null) {
- routeProperties.put(Route.CONFIGURATION_ID_PROPERTY, definition.getRouteConfigurationId());
+ if (definition.getAppliedRouteConfigurationIds() != null) {
+ routeProperties.put(Route.CONFIGURATION_ID_PROPERTY,
+ String.join(",", definition.getAppliedRouteConfigurationIds()));
}
List<PropertyDefinition> properties = definition.getRouteProperties();
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 91731bc..7516f2a 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
@@ -19,7 +19,6 @@ package org.apache.camel.core.xml;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -559,7 +558,6 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
List<InterceptFromDefinition> ifrom = new ArrayList<>(getInterceptFroms());
List<InterceptSendToEndpointDefinition> ito = new ArrayList<>(getInterceptSendToEndpoints());
List<OnCompletionDefinition> oc = new ArrayList<>(getOnCompletions());
- Set<String> matchedIds = new LinkedHashSet<>();
if (getContext() != null) {
List<RouteConfigurationDefinition> globalConfigurations
= getContext().adapt(ModelCamelContext.class).getRouteConfigurationDefinitions();
@@ -571,8 +569,8 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
|| (PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId())))
.forEach(g -> {
if (g.getId() != null && !g.getId().equals("*")) {
- // remember the id that was used
- matchedIds.add(g.getId());
+ // remember the id that was used on the route
+ route.addAppliedRouteConfigurationId(g.getId());
}
oe.addAll(g.getOnExceptions());
icp.addAll(g.getIntercepts());
@@ -586,8 +584,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
// must prepare the route before we can add it to the routes list
RouteDefinitionHelper.prepareRoute(getContext(), route, oe, icp, ifrom, ito, oc);
- if (LOG.isDebugEnabled() && route.getRouteConfigurationId() != null) {
- LOG.debug("Route: {} is using route configurations ids: {}", route.getId(), matchedIds);
+ if (LOG.isDebugEnabled() && route.getAppliedRouteConfigurationIds() != null) {
+ LOG.debug("Route: {} is using route configurations ids: {}", route.getId(),
+ route.getAppliedRouteConfigurationIds());
}
// mark the route as prepared now
[camel] 02/02: CAMEL-16757: Route now stores correctly which route
configuration it has been applied with.
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 6d3febd08495bfe85bf5b550e499f8069d55a66f
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 4 11:46:46 2021 +0200
CAMEL-16757: Route now stores correctly which route configuration it has been applied with.
---
.../org/apache/camel/model/RouteDefinition.java | 7 +++++++
.../org/apache/camel/model/RoutesDefinition.java | 19 +++++++++++++------
.../core/xml/AbstractCamelContextFactoryBean.java | 19 +++++++++++++------
.../RoutesConfigurationBuilderIdOrPatternTest.java | 21 +++++++++++++++++----
4 files changed, 50 insertions(+), 16 deletions(-)
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
index 6373a26..d546772 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/model/RouteDefinition.java
@@ -138,6 +138,13 @@ public class RouteDefinition extends OutputDefinition<RouteDefinition> implement
prepared.set(false);
}
+ /**
+ * Reset internal state before preparing route
+ */
+ public void resetPrepare() {
+ appliedRouteConfigurationIds = null;
+ }
+
@Override
public String toString() {
if (getId() != null) {
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 f764bc6..1df5154 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
@@ -218,6 +218,9 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
return;
}
+ // reset before preparing route
+ route.resetPrepare();
+
// merge global and route scoped together
List<OnExceptionDefinition> oe = new ArrayList<>(onExceptions);
List<InterceptDefinition> icp = new ArrayList<>(intercepts);
@@ -231,13 +234,17 @@ public class RoutesDefinition extends OptionalIdentifiedDefinition<RoutesDefinit
globalConfigurations.stream()
// global configurations have no id assigned or is a wildcard
// if the route has a route configuration assigned then use pattern matching
- .filter(g -> (g.getId() == null || g.getId().equals("*"))
- || (PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId())))
- .forEach(g -> {
- if (g.getId() != null && !g.getId().equals("*")) {
- // remember the id that was used on the route
- route.addAppliedRouteConfigurationId(g.getId());
+ .filter(g -> {
+ if (route.getRouteConfigurationId() != null) {
+ return PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId());
+ } else {
+ return g.getId() == null || g.getId().equals("*");
}
+ })
+ .forEach(g -> {
+ String id = g.getId() == null ? "<default>" : g.getId();
+ // remember the id that was used on the route
+ route.addAppliedRouteConfigurationId(id);
oe.addAll(g.getOnExceptions());
icp.addAll(g.getIntercepts());
ifrom.addAll(g.getInterceptFroms());
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 7516f2a..ab8857b 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
@@ -552,6 +552,9 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
// sanity check first as the route is created using XML
RouteDefinitionHelper.sanityCheckRoute(route);
+ // reset before preparing route
+ route.resetPrepare();
+
// merge global and route scoped together
List<OnExceptionDefinition> oe = new ArrayList<>(getOnExceptions());
List<InterceptDefinition> icp = new ArrayList<>(getIntercepts());
@@ -565,13 +568,17 @@ public abstract class AbstractCamelContextFactoryBean<T extends ModelCamelContex
globalConfigurations.stream()
// global configurations have no id assigned or is a wildcard
// if the route has a route configuration assigned then use pattern matching
- .filter(g -> (g.getId() == null || g.getId().equals("*"))
- || (PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId())))
- .forEach(g -> {
- if (g.getId() != null && !g.getId().equals("*")) {
- // remember the id that was used on the route
- route.addAppliedRouteConfigurationId(g.getId());
+ .filter(g -> {
+ if (route.getRouteConfigurationId() != null) {
+ return PatternHelper.matchPattern(g.getId(), route.getRouteConfigurationId());
+ } else {
+ return g.getId() == null || g.getId().equals("*");
}
+ })
+ .forEach(g -> {
+ String id = g.getId() == null ? "<default>" : g.getId();
+ // remember the id that was used on the route
+ route.addAppliedRouteConfigurationId(id);
oe.addAll(g.getOnExceptions());
icp.addAll(g.getIntercepts());
ifrom.addAll(g.getInterceptFroms());
diff --git a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderIdOrPatternTest.java b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderIdOrPatternTest.java
index d79b4d0..809d5cd 100644
--- a/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderIdOrPatternTest.java
+++ b/core/camel-core/src/test/java/org/apache/camel/model/RoutesConfigurationBuilderIdOrPatternTest.java
@@ -30,6 +30,7 @@ import org.apache.camel.support.OrderedComparator;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.fail;
public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSupport {
@@ -46,14 +47,14 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
routes.add(new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start")
+ from("direct:start").routeId("foo")
.throwException(new IllegalArgumentException("Foo"));
}
});
routes.add(new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start2")
+ from("direct:start2").routeId("foo2")
.routeConfigurationId("handleError")
.throwException(new IllegalArgumentException("Foo2"));
}
@@ -93,6 +94,9 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
template.sendBody("direct:start2", "Bye World");
assertMockEndpointsSatisfied();
+
+ assertNull(context.getRoute("foo").getConfigurationId());
+ assertEquals("handleError", context.getRoute("foo2").getConfigurationId());
}
@Test
@@ -102,7 +106,7 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
routes.add(new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start")
+ from("direct:start").routeId("foo")
.routeConfigurationId("general*")
.throwException(new IllegalArgumentException("Foo"));
}
@@ -110,7 +114,7 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
routes.add(new RouteBuilder() {
@Override
public void configure() throws Exception {
- from("direct:start2")
+ from("direct:start2").routeId("foo2")
.routeConfigurationId("io*")
.throwException(new IOException("Foo2"));
}
@@ -148,6 +152,9 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
template.sendBody("direct:start2", "Bye World");
assertMockEndpointsSatisfied();
+
+ assertEquals("generalError", context.getRoute("foo").getConfigurationId());
+ assertEquals("ioError", context.getRoute("foo2").getConfigurationId());
}
@Test
@@ -201,6 +208,9 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
template.sendBody("direct:start2", "Bye World");
assertMockEndpointsSatisfied();
+ assertEquals("<default>", context.getRoute("foo").getConfigurationId());
+ assertEquals("<default>", context.getRoute("foo2").getConfigurationId());
+
context.removeRoute("foo2");
// now re-configure route2 to use ioError route configuration
@@ -219,6 +229,9 @@ public class RoutesConfigurationBuilderIdOrPatternTest extends ContextTestSuppor
template.sendBody("direct:start", "Hello World");
template.sendBody("direct:start2", "Bye World");
assertMockEndpointsSatisfied();
+
+ assertEquals("<default>", context.getRoute("foo").getConfigurationId());
+ assertEquals("ioError", context.getRoute("foo2").getConfigurationId());
}
@Test