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 2022/04/08 07:53:02 UTC

[camel-karaf] branch main updated: Errorhandler in dsl (#144)

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-karaf.git


The following commit(s) were added to refs/heads/main by this push:
     new a4b9658b Errorhandler in dsl (#144)
a4b9658b is described below

commit a4b9658bb8afc991d0ec514c7a8bfc38a4652f8b
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Apr 8 09:52:58 2022 +0200

    Errorhandler in dsl (#144)
    
    CAMEL-16834: error handler in DSL model
---
 .../camel/blueprint/CamelErrorHandlerFactoryBean.java  | 16 ++++++++--------
 .../org/apache/camel/blueprint/ErrorHandlerType.java   | 18 +++++++++---------
 .../camel/blueprint/handler/CamelNamespaceHandler.java | 14 ++++++++++++++
 3 files changed, 31 insertions(+), 17 deletions(-)

diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
index fd6e7ded..60d459ee 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelErrorHandlerFactoryBean.java
@@ -27,8 +27,8 @@ import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.Processor;
-import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyDefaultErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyErrorHandlerBuilder;
 import org.apache.camel.core.xml.AbstractCamelFactoryBean;
 import org.apache.camel.model.RedeliveryPolicyDefinition;
 import org.apache.camel.processor.errorhandler.RedeliveryPolicy;
@@ -37,7 +37,7 @@ import org.osgi.service.blueprint.container.BlueprintContainer;
 
 @XmlRootElement(name = "errorHandler")
 @XmlAccessorType(XmlAccessType.FIELD)
-public class CamelErrorHandlerFactoryBean extends AbstractCamelFactoryBean<ErrorHandlerBuilder> {
+public class CamelErrorHandlerFactoryBean extends AbstractCamelFactoryBean<LegacyErrorHandlerBuilder> {
 
     @XmlAttribute
     private ErrorHandlerType type = ErrorHandlerType.DefaultErrorHandler;
@@ -67,10 +67,10 @@ public class CamelErrorHandlerFactoryBean extends AbstractCamelFactoryBean<Error
     private BlueprintContainer blueprintContainer;
 
     @Override
-    public ErrorHandlerBuilder getObject() throws Exception {
-        ErrorHandlerBuilder errorHandler = getObjectType().newInstance();
-        if (errorHandler instanceof DefaultErrorHandlerBuilder) {
-            DefaultErrorHandlerBuilder handler = (DefaultErrorHandlerBuilder) errorHandler;
+    public LegacyErrorHandlerBuilder getObject() throws Exception {
+        LegacyErrorHandlerBuilder errorHandler = getObjectType().newInstance();
+        if (errorHandler instanceof LegacyDefaultErrorHandlerBuilder) {
+            LegacyDefaultErrorHandlerBuilder handler = (LegacyDefaultErrorHandlerBuilder) errorHandler;
             if (deadLetterUri != null) {
                 handler.setDeadLetterUri(deadLetterUri);
             }
@@ -109,7 +109,7 @@ public class CamelErrorHandlerFactoryBean extends AbstractCamelFactoryBean<Error
     }
 
     @Override
-    public Class<? extends ErrorHandlerBuilder> getObjectType() {
+    public Class<? extends LegacyErrorHandlerBuilder> getObjectType() {
         return type.getTypeAsClass();
     }
 
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
index 72a0d6f2..6ce9e116 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerType.java
@@ -19,16 +19,16 @@ package org.apache.camel.blueprint;
 import javax.xml.bind.annotation.XmlEnum;
 import javax.xml.bind.annotation.XmlType;
 
-import org.apache.camel.builder.DeadLetterChannelBuilder;
-import org.apache.camel.builder.DefaultErrorHandlerBuilder;
-import org.apache.camel.builder.ErrorHandlerBuilder;
-import org.apache.camel.builder.NoErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyDeadLetterChannelBuilder;
+import org.apache.camel.builder.LegacyDefaultErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyNoErrorHandlerBuilder;
 
 /**
  * Used to configure the errorHandler type
  */
 @XmlType
-@XmlEnum(String.class)
+@XmlEnum
 public enum ErrorHandlerType {
 
     DefaultErrorHandler, DeadLetterChannel, NoErrorHandler;
@@ -38,14 +38,14 @@ public enum ErrorHandlerType {
      *
      * @return the class which represents the selected type.
      */
-    public Class<? extends ErrorHandlerBuilder> getTypeAsClass() {
+    public Class<? extends LegacyErrorHandlerBuilder> getTypeAsClass() {
         switch (this) {
             case DefaultErrorHandler:
-                return DefaultErrorHandlerBuilder.class;
+                return LegacyDefaultErrorHandlerBuilder.class;
             case DeadLetterChannel:
-                return DeadLetterChannelBuilder.class;
+                return LegacyDeadLetterChannelBuilder.class;
             case NoErrorHandler:
-                return NoErrorHandlerBuilder.class;
+                return LegacyNoErrorHandlerBuilder.class;
             default:
                 throw new IllegalArgumentException("Unknown error handler: " + this);
         }
diff --git a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
index a84d087a..69f43657 100644
--- a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
+++ b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java
@@ -35,6 +35,13 @@ import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
 import org.apache.camel.blueprint.CamelRouteConfigurationContextFactoryBean;
+import org.apache.camel.builder.LegacyDeadLetterChannelBuilder;
+import org.apache.camel.builder.LegacyDefaultErrorHandlerBuilder;
+import org.apache.camel.builder.LegacyNoErrorHandlerBuilder;
+import org.apache.camel.reifier.errorhandler.ErrorHandlerReifier;
+import org.apache.camel.reifier.errorhandler.LegacyDeadLetterChannelReifier;
+import org.apache.camel.reifier.errorhandler.LegacyDefaultErrorHandlerReifier;
+import org.apache.camel.reifier.errorhandler.LegacyNoErrorHandlerReifier;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.w3c.dom.NamedNodeMap;
@@ -127,6 +134,13 @@ import static org.osgi.service.blueprint.reflect.ServiceReferenceMetadata.AVAILA
  */
 public class CamelNamespaceHandler implements NamespaceHandler {
 
+    static {
+        // legacy camel-blueprint error-handling using its own model and parsers
+        ErrorHandlerReifier.registerReifier(LegacyDeadLetterChannelBuilder.class, LegacyDeadLetterChannelReifier::new);
+        ErrorHandlerReifier.registerReifier(LegacyDefaultErrorHandlerBuilder.class, LegacyDefaultErrorHandlerReifier::new);
+        ErrorHandlerReifier.registerReifier(LegacyNoErrorHandlerBuilder.class, LegacyNoErrorHandlerReifier::new);
+    }
+
     public static final String BLUEPRINT_NS = "http://camel.apache.org/schema/blueprint";
     public static final String SPRING_NS = "http://camel.apache.org/schema/spring";