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/07/07 08:44:14 UTC

[camel] branch CAMEL-16757 updated (a5777f5 -> 020605a)

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a change to branch CAMEL-16757
in repository https://gitbox.apache.org/repos/asf/camel.git.


    from a5777f5  CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
     new 4dde6d8  CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
     new 020605a  CAMEL-16757: camel-core - Global error handling, interceptor in all DSL

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:
 .../java/org/apache/camel/CamelContextAware.java   |  2 +-
 .../org/apache/camel/builder/BuilderSupport.java   | 33 ++++++++++++++++++----
 .../org/apache/camel/builder/RouteBuilder.java     |  4 +--
 .../org/apache/camel/main/RoutesConfigurer.java    |  3 ++
 .../dsl/support/RouteBuilderLoaderSupport.java     |  2 ++
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 12 ++++----
 .../dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java   | 13 ++++-----
 7 files changed, 46 insertions(+), 23 deletions(-)

[camel] 02/02: CAMEL-16757: camel-core - Global error handling, interceptor in all DSL

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-16757
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 020605ae75bc12d302f76a3c983899d6043c67b1
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jul 7 10:42:55 2021 +0200

    CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
---
 .../src/main/java/org/apache/camel/main/RoutesConfigurer.java          | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
index 4440dfb..4d59e2f 100644
--- a/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
+++ b/core/camel-main/src/main/java/org/apache/camel/main/RoutesConfigurer.java
@@ -205,6 +205,9 @@ public class RoutesConfigurer {
         // sort routes according to ordered
         routes.sort(OrderedComparator.get());
 
+        // TODO: 1st-pass for RoutesConfiguration
+        // TODO: 2nd-pass for the routes
+
         // then add the routes
         for (RoutesBuilder builder : routes) {
             LOG.debug("Adding routes into CamelContext from RoutesBuilder: {}", builder);

[camel] 01/02: CAMEL-16757: camel-core - Global error handling, interceptor in all DSL

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-16757
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4dde6d8783f78397236e549ae4d0fbeb7dba7ecb
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Jul 7 10:37:45 2021 +0200

    CAMEL-16757: camel-core - Global error handling, interceptor in all DSL
---
 .../java/org/apache/camel/CamelContextAware.java   |  2 +-
 .../org/apache/camel/builder/BuilderSupport.java   | 33 ++++++++++++++++++----
 .../org/apache/camel/builder/RouteBuilder.java     |  4 +--
 .../dsl/support/RouteBuilderLoaderSupport.java     |  2 ++
 .../camel/dsl/xml/io/XmlRoutesBuilderLoader.java   | 12 ++++----
 .../dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java   | 13 ++++-----
 6 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/core/camel-api/src/main/java/org/apache/camel/CamelContextAware.java b/core/camel-api/src/main/java/org/apache/camel/CamelContextAware.java
index ee565ff..4188fa6 100644
--- a/core/camel-api/src/main/java/org/apache/camel/CamelContextAware.java
+++ b/core/camel-api/src/main/java/org/apache/camel/CamelContextAware.java
@@ -25,7 +25,7 @@ public interface CamelContextAware {
      * Set the {@link CamelContext} context if the object is an instance of {@link CamelContextAware}.
      */
     static <T> T trySetCamelContext(T object, CamelContext camelContext) {
-        if (object instanceof CamelContextAware) {
+        if (camelContext != null && object instanceof CamelContextAware) {
             ((CamelContextAware) object).setCamelContext(camelContext);
         }
 
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
index 2b2bcfc..8aa028e 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/BuilderSupport.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
 import org.apache.camel.NoSuchEndpointException;
@@ -36,15 +37,15 @@ import org.apache.camel.util.ObjectHelper;
  * Base class for implementation inheritance for different clauses in the
  * <a href="http://camel.apache.org/dsl.html">Java DSL</a>
  */
-public abstract class BuilderSupport {
-    private CamelContext context;
+public abstract class BuilderSupport implements CamelContextAware {
+    private CamelContext camelContext;
     private ErrorHandlerBuilder errorHandlerBuilder;
 
     protected BuilderSupport() {
     }
 
     protected BuilderSupport(CamelContext context) {
-        this.context = context;
+        this.camelContext = context;
     }
 
     // Builder methods
@@ -451,13 +452,33 @@ public abstract class BuilderSupport {
     // Properties
     // -------------------------------------------------------------------------
 
+    @Override
+    public CamelContext getCamelContext() {
+        return camelContext;
+    }
+
+    @Override
+    public void setCamelContext(CamelContext camelContext) {
+        if (camelContext != null) {
+            this.camelContext = camelContext;
+        }
+    }
+
+    /**
+     * Get the {@link CamelContext}
+     *
+     * @return camelContext the Camel context
+     */
     public CamelContext getContext() {
-        return context;
+        return getCamelContext();
     }
 
+    /**
+     * @deprecated use {@link #setCamelContext(CamelContext)}
+     */
+    @Deprecated
     public void setContext(CamelContext context) {
-        ObjectHelper.notNull(context, "CamelContext", this);
-        this.context = context;
+        setCamelContext(context);
     }
 
     public boolean hasErrorHandlerBuilder() {
diff --git a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
index b04ad8a..622b225 100644
--- a/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
+++ b/core/camel-core-model/src/main/java/org/apache/camel/builder/RouteBuilder.java
@@ -497,7 +497,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
      * @throws Exception can be thrown during configuration
      */
     public RoutesDefinition configureRoutes(CamelContext context) throws Exception {
-        setContext(context);
+        setCamelContext(context);
         checkInitialized();
         routeCollection.setCamelContext(context);
         return routeCollection;
@@ -511,7 +511,7 @@ public abstract class RouteBuilder extends BuilderSupport implements RoutesBuild
      * @throws Exception can be thrown during configuration
      */
     public RestsDefinition configureRests(CamelContext context) throws Exception {
-        setContext(context);
+        setCamelContext(context);
         restCollection.setCamelContext(context);
         return restCollection;
     }
diff --git a/dsl/camel-dsl-support/src/main/java/org/apache/camel/dsl/support/RouteBuilderLoaderSupport.java b/dsl/camel-dsl-support/src/main/java/org/apache/camel/dsl/support/RouteBuilderLoaderSupport.java
index 021d007..b0b846e 100644
--- a/dsl/camel-dsl-support/src/main/java/org/apache/camel/dsl/support/RouteBuilderLoaderSupport.java
+++ b/dsl/camel-dsl-support/src/main/java/org/apache/camel/dsl/support/RouteBuilderLoaderSupport.java
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.dsl.support;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.ExtendedCamelContext;
 import org.apache.camel.RoutesBuilder;
 import org.apache.camel.StartupStep;
@@ -57,6 +58,7 @@ public abstract class RouteBuilderLoaderSupport extends RoutesBuilderLoaderSuppo
     @Override
     public RoutesBuilder loadRoutesBuilder(Resource resource) throws Exception {
         final RouteBuilder builder = doLoadRouteBuilder(resource);
+        CamelContextAware.trySetCamelContext(builder, getCamelContext());
 
         if (recorder != null) {
             StartupStep step = recorder.beginStep(
diff --git a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
index 816b71a..59abcfd 100644
--- a/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
+++ b/dsl/camel-xml-io-dsl/src/main/java/org/apache/camel/dsl/xml/io/XmlRoutesBuilderLoader.java
@@ -18,11 +18,11 @@ package org.apache.camel.dsl.xml.io;
 
 import java.io.InputStream;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.spi.Resource;
 import org.apache.camel.spi.annotations.RoutesLoader;
@@ -77,13 +77,13 @@ public class XmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
             }
 
             private void addRoutes(RoutesDefinition routes) {
-                // xml routes must be marked as un-prepared as camel-core
-                // must do special handling for XML DSL
+                CamelContextAware.trySetCamelContext(getRouteCollection(), getCamelContext());
+
+                // xml routes must be prepared in the same way java-dsl (via RoutesDefinition)
+                // so create a copy and use the fluent builder to add the route
                 for (RouteDefinition route : routes.getRoutes()) {
-                    RouteDefinitionHelper.prepareRoute(getCamelContext(), route);
-                    route.markPrepared();
+                    getRouteCollection().route(route);
                 }
-                setRouteCollection(routes);
             }
         };
     }
diff --git a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
index c07a26b..024ac43 100644
--- a/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
+++ b/dsl/camel-xml-jaxb-dsl/src/main/java/org/apache/camel/dsl/xml/jaxb/JaxbXmlRoutesBuilderLoader.java
@@ -18,11 +18,11 @@ package org.apache.camel.dsl.xml.jaxb;
 
 import java.io.InputStream;
 
+import org.apache.camel.CamelContextAware;
 import org.apache.camel.api.management.ManagedResource;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.dsl.support.RouteBuilderLoaderSupport;
 import org.apache.camel.model.RouteDefinition;
-import org.apache.camel.model.RouteDefinitionHelper;
 import org.apache.camel.model.RouteTemplatesDefinition;
 import org.apache.camel.model.RoutesDefinition;
 import org.apache.camel.model.rest.RestsDefinition;
@@ -65,15 +65,12 @@ public class JaxbXmlRoutesBuilderLoader extends RouteBuilderLoaderSupport {
                 try (InputStream is = resource.getInputStream()) {
                     RoutesDefinition routes = loadRoutesDefinition(getCamelContext(), is);
                     if (routes != null) {
-                        // xml routes must be marked as un-prepared as camel-core
-                        // must do special handling for XML DSL
+                        CamelContextAware.trySetCamelContext(getRouteCollection(), getCamelContext());
+                        // xml routes must be prepared in the same way java-dsl (via RoutesDefinition)
+                        // so create a copy and use the fluent builder to add the route
                         for (RouteDefinition route : routes.getRoutes()) {
-                            RouteDefinitionHelper.prepareRoute(getCamelContext(), route);
-                            route.markPrepared();
+                            getRouteCollection().route(route);
                         }
-
-                        routes.getRoutes().forEach(RouteDefinition::markUnprepared);
-                        setRouteCollection(routes);
                     }
                 }
             }