You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2016/12/09 14:54:37 UTC

[3/3] camel git commit: CAMEL-10575: snakeyaml: add an option to filter classes the yaml parser can construct

CAMEL-10575: snakeyaml: add an option to filter classes the yaml parser can construct


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

Branch: refs/heads/camel-2.18.x
Commit: 21c04b635cacd57bf4d438fc2308533ca1babde9
Parents: 2f19ce5
Author: lburgazzoli <lb...@gmail.com>
Authored: Fri Dec 9 15:53:22 2016 +0100
Committer: lburgazzoli <lb...@gmail.com>
Committed: Fri Dec 9 15:53:22 2016 +0100

----------------------------------------------------------------------
 .../SnakeYAMLDataFormatConfiguration.java       | 26 ++++++++++++++++++++
 .../snakeyaml/SnakeYAMLDataFormat.java          | 12 +++++----
 .../camel/component/snakeyaml/TypeFilters.java  |  8 +++---
 3 files changed, 37 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/21c04b63/components-starter/camel-snakeyaml-starter/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-snakeyaml-starter/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatConfiguration.java b/components-starter/camel-snakeyaml-starter/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatConfiguration.java
index ce78189..588a5da 100644
--- a/components-starter/camel-snakeyaml-starter/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatConfiguration.java
+++ b/components-starter/camel-snakeyaml-starter/src/main/java/org/apache/camel/component/snakeyaml/springboot/SnakeYAMLDataFormatConfiguration.java
@@ -16,8 +16,10 @@
  */
 package org.apache.camel.component.snakeyaml.springboot;
 
+import java.util.List;
 import org.apache.camel.component.snakeyaml.SnakeYAMLDataFormat;
 import org.apache.camel.model.dataformat.YAMLLibrary;
+import org.apache.camel.model.dataformat.YAMLTypeFilterDefinition;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -61,6 +63,14 @@ public class SnakeYAMLDataFormatConfiguration {
      * style.
      */
     private Boolean prettyFlow = false;
+    /**
+     * Allow any class to be un-marshaled
+     */
+    private Boolean allowAnyType = false;
+    /**
+     * Set the types SnakeYAML is allowed to un-marshall
+     */
+    private List<YAMLTypeFilterDefinition> typeFilter;
 
     public YAMLLibrary getLibrary() {
         return library;
@@ -126,4 +136,20 @@ public class SnakeYAMLDataFormatConfiguration {
     public void setPrettyFlow(Boolean prettyFlow) {
         this.prettyFlow = prettyFlow;
     }
+
+    public Boolean getAllowAnyType() {
+        return allowAnyType;
+    }
+
+    public void setAllowAnyType(Boolean allowAnyType) {
+        this.allowAnyType = allowAnyType;
+    }
+
+    public List<YAMLTypeFilterDefinition> getTypeFilter() {
+        return typeFilter;
+    }
+
+    public void setTypeFilter(List<YAMLTypeFilterDefinition> typeFilter) {
+        this.typeFilter = typeFilter;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/21c04b63/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/SnakeYAMLDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/SnakeYAMLDataFormat.java b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/SnakeYAMLDataFormat.java
index 24fd0da..449a279 100644
--- a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/SnakeYAMLDataFormat.java
+++ b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/SnakeYAMLDataFormat.java
@@ -51,7 +51,7 @@ import org.yaml.snakeyaml.resolver.Resolver;
  * A <a href="http://camel.apache.org/data-format.html">data format</a> ({@link DataFormat})
  * using <a href="http://www.snakeyaml.org">SnakeYAML</a> to marshal to and from YAML.
  */
-public final class SnakeYAMLDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
+public class SnakeYAMLDataFormat extends ServiceSupport implements DataFormat, DataFormatName {
     private final ThreadLocal<WeakReference<Yaml>> yamlCache;
     private BaseConstructor constructor;
     private Representer representer;
@@ -77,7 +77,9 @@ public final class SnakeYAMLDataFormat extends ServiceSupport implements DataFor
         this.allowAnyType = false;
 
         if (type != null) {
-            setUnmarshalType(type);
+            this.unmarshalType = type;
+            this.typeFilters = new CopyOnWriteArrayList<>();
+            this.typeFilters.add(TypeFilters.types(type));
         }
     }
 
@@ -236,7 +238,7 @@ public final class SnakeYAMLDataFormat extends ServiceSupport implements DataFor
     /**
      * Class of the object to be created
      */
-    public void setUnmarshalType(Class<?> unmarshalType) {
+    public final void setUnmarshalType(Class<?> unmarshalType) {
         this.unmarshalType = unmarshalType;
         addTypeFilters(TypeFilters.types(unmarshalType));
     }
@@ -344,7 +346,7 @@ public final class SnakeYAMLDataFormat extends ServiceSupport implements DataFor
         }
     }
 
-    public void addTypeFilters(Collection<TypeFilter> typeFilters) {
+    public final void addTypeFilters(Collection<TypeFilter> typeFilters) {
         if (this.typeFilters == null) {
             this.typeFilters = new CopyOnWriteArrayList<>();
         }
@@ -352,7 +354,7 @@ public final class SnakeYAMLDataFormat extends ServiceSupport implements DataFor
         this.typeFilters.addAll(typeFilters);
     }
 
-    public void addTypeFilters(TypeFilter... typeFilters) {
+    public final void addTypeFilters(TypeFilter... typeFilters) {
         addTypeFilters(Arrays.asList(typeFilters));
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/21c04b63/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/TypeFilters.java
----------------------------------------------------------------------
diff --git a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/TypeFilters.java b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/TypeFilters.java
index 61f638a..d9cb2d5 100644
--- a/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/TypeFilters.java
+++ b/components/camel-snakeyaml/src/main/java/org/apache/camel/component/snakeyaml/TypeFilters.java
@@ -27,7 +27,7 @@ import java.util.function.Predicate;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import org.apache.camel.util.StringHelper;
+import org.apache.camel.util.ObjectHelper;
 
 public final class TypeFilters {
     private TypeFilters() {
@@ -75,11 +75,11 @@ public final class TypeFilters {
     // ***************************
 
     public static Optional<TypeFilter> valueOf(String definition) {
-        String type = StringHelper.before(definition, ":");
+        String type = ObjectHelper.before(definition, ":");
         if (type == null || "type".equals(type)) {
-            return StringHelper.after(definition, ":", TypeName::new);
+            return ObjectHelper.after(definition, ":", TypeName::new);
         } else if ("regexp".equals(type)) {
-            return StringHelper.after(definition, ":", RegExp::new);
+            return ObjectHelper.after(definition, ":", RegExp::new);
         }
 
         return Optional.empty();