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();