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 2015/03/15 11:06:27 UTC

camel git commit: CAMEL-7808: Add boon data format to the dsl and polished

Repository: camel
Updated Branches:
  refs/heads/master 7852d9906 -> 5ce5a5441


CAMEL-7808: Add boon data format to the dsl and polished


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5ce5a544
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5ce5a544
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5ce5a544

Branch: refs/heads/master
Commit: 5ce5a54417908428ed710b7f5b68756ab7259168
Parents: 7852d99
Author: Claus Ibsen <da...@apache.org>
Authored: Sun Mar 15 11:08:08 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Sun Mar 15 11:08:08 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/builder/DataFormatClause.java  | 12 +++++++
 .../apache/camel/model/MarshalDefinition.java   |  2 ++
 .../apache/camel/model/UnmarshalDefinition.java |  2 ++
 .../camel/model/dataformat/BoonDataFormat.java  | 36 ++++++++++++++++++--
 .../model/dataformat/DataFormatsDefinition.java |  1 +
 5 files changed, 50 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/5ce5a544/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
index 17ff247..48757d1 100644
--- a/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
+++ b/camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import java.util.Map;
 import java.util.zip.Deflater;
 
+import org.apache.camel.model.dataformat.BoonDataFormat;
 import org.w3c.dom.Node;
 
 import org.apache.camel.model.DataFormatDefinition;
@@ -175,6 +176,17 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
     }
 
     /**
+     * Uses the Boon data format
+     *
+     * @param classType the POJO class type
+     */
+    public T boon(Class<?> classType) {
+        BoonDataFormat boon = new BoonDataFormat();
+        boon.setUnmarshalType(classType);
+        return dataFormat(boon);
+    }
+
+    /**
      * Uses the CSV data format
      */
     public T csv() {

http://git-wip-us.apache.org/repos/asf/camel/blob/5ce5a544/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
index 2e5e721..ddd53a4 100644
--- a/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/MarshalDefinition.java
@@ -28,6 +28,7 @@ import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
 import org.apache.camel.model.dataformat.BeanioDataFormat;
 import org.apache.camel.model.dataformat.BindyDataFormat;
+import org.apache.camel.model.dataformat.BoonDataFormat;
 import org.apache.camel.model.dataformat.CastorDataFormat;
 import org.apache.camel.model.dataformat.CryptoDataFormat;
 import org.apache.camel.model.dataformat.CsvDataFormat;
@@ -80,6 +81,7 @@ public class MarshalDefinition extends NoOutputDefinition<MarshalDefinition> {
     @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),
     @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class),
     @XmlElement(required = false, name = "bindy", type = BindyDataFormat.class),
+    @XmlElement(required = false, name = "boon", type = BoonDataFormat.class),
     @XmlElement(required = false, name = "castor", type = CastorDataFormat.class),
     @XmlElement(required = false, name = "crypto", type = CryptoDataFormat.class),
     @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/5ce5a544/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
index b9c9a64..de2684f 100644
--- a/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/UnmarshalDefinition.java
@@ -28,6 +28,7 @@ import org.apache.camel.model.dataformat.AvroDataFormat;
 import org.apache.camel.model.dataformat.Base64DataFormat;
 import org.apache.camel.model.dataformat.BeanioDataFormat;
 import org.apache.camel.model.dataformat.BindyDataFormat;
+import org.apache.camel.model.dataformat.BoonDataFormat;
 import org.apache.camel.model.dataformat.CastorDataFormat;
 import org.apache.camel.model.dataformat.CryptoDataFormat;
 import org.apache.camel.model.dataformat.CsvDataFormat;
@@ -80,6 +81,7 @@ public class UnmarshalDefinition extends NoOutputDefinition<UnmarshalDefinition>
     @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),
     @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class),
     @XmlElement(required = false, name = "bindy", type = BindyDataFormat.class),
+    @XmlElement(required = false, name = "boon", type = BoonDataFormat.class),
     @XmlElement(required = false, name = "castor", type = CastorDataFormat.class),
     @XmlElement(required = false, name = "crypto", type = CryptoDataFormat.class),
     @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),

http://git-wip-us.apache.org/repos/asf/camel/blob/5ce5a544/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java
index a1ba363..38e5d75 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/BoonDataFormat.java
@@ -20,11 +20,14 @@ import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
 
 import org.apache.camel.CamelContext;
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.ObjectHelper;
 
 /**
  * Boon data format
@@ -35,6 +38,8 @@ import org.apache.camel.spi.Metadata;
 public class BoonDataFormat extends DataFormatDefinition {
 
     @XmlAttribute(required = true)
+    private String unmarshalTypeName;
+    @XmlTransient
     private Class<?> unmarshalType;
 
     public BoonDataFormat() {
@@ -50,15 +55,40 @@ public class BoonDataFormat extends DataFormatDefinition {
         return unmarshalType;
     }
 
+    /**
+     * Class name of the java type to use when unarmshalling
+     */
     public void setUnmarshalType(Class<?> unmarshalType) {
         this.unmarshalType = unmarshalType;
     }
 
+    public String getUnmarshalTypeName() {
+        return unmarshalTypeName;
+    }
+
+    /**
+     * Class name of the java type to use when unarmshalling
+     */
+    public void setUnmarshalTypeName(String unmarshalTypeName) {
+        this.unmarshalTypeName = unmarshalTypeName;
+    }
+
+    @Override
+    protected DataFormat createDataFormat(RouteContext routeContext) {
+        if (unmarshalType == null && unmarshalTypeName != null) {
+            try {
+                unmarshalType = routeContext.getCamelContext().getClassResolver().resolveMandatoryClass(unmarshalTypeName);
+            } catch (ClassNotFoundException e) {
+                throw ObjectHelper.wrapRuntimeCamelException(e);
+            }
+        }
+        return super.createDataFormat(routeContext);
+    }
+
     @Override
     protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
-        Class<?> answer = getUnmarshalType();
-        if (answer != null) {
-            setProperty(camelContext, dataFormat, "unmarshalType", answer);
+        if (unmarshalType != null) {
+            setProperty(camelContext, dataFormat, "unmarshalType", unmarshalType);
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/5ce5a544/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
index bb53675..bb9b386 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsDefinition.java
@@ -43,6 +43,7 @@ public class DataFormatsDefinition {
         @XmlElement(required = false, name = "base64", type = Base64DataFormat.class),
         @XmlElement(required = false, name = "beanio", type = BeanioDataFormat.class),
         @XmlElement(required = false, name = "bindy", type = BindyDataFormat.class),
+        @XmlElement(required = false, name = "boon", type = BoonDataFormat.class),
         @XmlElement(required = false, name = "castor", type = CastorDataFormat.class),
         @XmlElement(required = false, name = "crypto", type = CryptoDataFormat.class),
         @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),