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/11/13 15:32:29 UTC

[1/9] camel git commit: [CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.

Repository: camel
Updated Branches:
  refs/heads/camel-2.15.x 933a24508 -> f07a33c46
  refs/heads/camel-2.16.x 439299b39 -> 2d1375060
  refs/heads/master 741d0dadb -> 9c6bf4689


[CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.


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

Branch: refs/heads/master
Commit: 8386d8f7260143802553bc6dbae2880d6c0bafda
Parents: 741d0da
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:17:07 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:17:24 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/builder/DataFormatClause.java  | 55 +++++++++++++++++---
 .../camel/model/dataformat/JsonDataFormat.java  | 47 +++++++++++++++++
 .../model/dataformat/XStreamDataFormat.java     | 40 +++++++++++---
 .../xstream/MarshalDomainObjectJSONTest.java    |  5 +-
 .../xstream/MarshalDomainObjectTest.java        | 18 ++-----
 .../xstream/UnmarshalThenMarshalJSONTest.java   |  5 +-
 .../xstream/UnmarshalThenMarshalTest.java       | 16 +-----
 .../xstream/XStreamConcurrencyTest.java         | 16 +-----
 .../xstream/XStreamConfigurationTest.java       | 17 ++----
 .../dataformat/xstream/XStreamTestUtils.java    |  1 -
 .../src/test/resources/log4j.properties         |  3 +-
 .../SpringMarshalDomainObjectJSONTest.xml       |  4 +-
 .../xstream/SpringMarshalListTest.xml           |  4 +-
 .../xstream/SpringMarshalOmitFieldsTest.xml     |  2 +-
 .../xstream/SpringXStreamConfigurationTest.xml  |  4 +-
 15 files changed, 154 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/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 e87195c..ffadcdf 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
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.builder;
 
+import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
-import org.w3c.dom.Node;
-
-
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -55,7 +53,9 @@ import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.model.dataformat.XmlJsonDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
+import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
@@ -720,17 +720,60 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
     }
 
     /**
-     * Uses the XStream data format
+     * Uses the XStream data format.
+     * <p/>
+     * Favor using {@link #xstream(String)} to pass in a permission
      */
     public T xstream() {
         return dataFormat(new XStreamDataFormat());
     }
 
     /**
+     * Uses the xstream by setting the encoding or permission
+     *
+     * @param encodingOrPermission is either an encoding or permission syntax
+     */
+    public T xstream(String encodingOrPermission) {
+        // is it an encoding? if not we assume its a permission
+        if (Charset.isSupported(encodingOrPermission)) {
+            return xstream(encodingOrPermission, (String) null);
+        } else {
+            return xstream(null, encodingOrPermission);
+        }
+    }
+
+    /**
      * Uses the xstream by setting the encoding
      */
-    public T xstream(String encoding) {
-        return dataFormat(new XStreamDataFormat(encoding));
+    public T xstream(String encoding, String permission) {
+        XStreamDataFormat xdf = new XStreamDataFormat();
+        xdf.setPermissions(permission);
+        xdf.setEncoding(encoding);
+        return dataFormat(xdf);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param type the pojo xstream should use as allowed permission
+     */
+    public T xstream(Class<?> type) {
+        return xstream(null, type);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param encoding encoding to use
+     * @param type the pojo class(es) xstream should use as allowed permission
+     */
+    public T xstream(String encoding, Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        return xstream(encoding, csb.toString());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index c0127eb..f20aa41 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -27,6 +27,7 @@ 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.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -68,6 +69,8 @@ public class JsonDataFormat extends DataFormatDefinition {
     private String enableFeatures;
     @XmlAttribute
     private String disableFeatures;
+    @XmlAttribute
+    private String permissions;
 
     public JsonDataFormat() {
         super("json");
@@ -253,6 +256,42 @@ public class JsonDataFormat extends DataFormatDefinition {
         this.disableFeatures = disableFeatures;
     }
 
+    public String getPermissions() {
+        return permissions;
+    }
+
+    /**
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
+     */
+    public void setPermissions(String permissions) {
+        this.permissions = permissions;
+    }
+
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     public String getDataFormatName() {
         // json data format is special as the name can be from different bundles
@@ -325,6 +364,14 @@ public class JsonDataFormat extends DataFormatDefinition {
         if (disableFeatures != null) {
             setProperty(camelContext, dataFormat, "disableFeatures", disableFeatures);
         }
+        if (permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", permissions);
+        }
+        // if we have the unmarshal type, but no permission set, then use it to be allowed
+        if (permissions == null && unmarshalType != null) {
+            String allow = "+" + unmarshalType.getName();
+            setProperty(camelContext, dataFormat, "permissions", allow);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
index 4d433d2..a7a22f3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
@@ -38,6 +38,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -50,6 +51,8 @@ import org.apache.camel.util.ObjectHelper;
 @XmlAccessorType(XmlAccessType.NONE)
 public class XStreamDataFormat extends DataFormatDefinition {
     @XmlAttribute
+    private String permissions;
+    @XmlAttribute
     private String encoding;
     @XmlAttribute
     private String driver;
@@ -57,9 +60,7 @@ public class XStreamDataFormat extends DataFormatDefinition {
     private String driverRef;
     @XmlAttribute
     private String mode;
-    @XmlAttribute
-    private String permissions;
-    
+
     @XmlJavaTypeAdapter(ConvertersAdapter.class)
     @XmlElement(name = "converters")
     private List<String> converters;
@@ -187,12 +188,37 @@ public class XStreamDataFormat extends DataFormatDefinition {
     }
 
     /**
-     * Adds permissionsList
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
      */
     public void setPermissions(String permissions) {
         this.permissions = permissions;
     }
 
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     protected DataFormat createDataFormat(RouteContext routeContext) {
         if ("json".equals(this.driver)) {
@@ -208,6 +234,9 @@ public class XStreamDataFormat extends DataFormatDefinition {
 
     @Override
     protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+        if (this.permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", this.permissions);
+        }
         if (encoding != null) {
             setProperty(camelContext, dataFormat, "encoding", encoding);
         }
@@ -223,9 +252,6 @@ public class XStreamDataFormat extends DataFormatDefinition {
         if (this.implicitCollections != null) {
             setProperty(camelContext, dataFormat, "implicitCollections", this.implicitCollections);
         }
-        if (this.permissions != null) {
-            setProperty(camelContext, dataFormat, "permissions", this.permissions);
-        }
         if (this.mode != null) {
             setProperty(camelContext, dataFormat, "mode", mode);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
index 55fbdf0..e676c66 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.dataformat.xstream;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.dataformat.JsonLibrary;
 import org.junit.Test;
 
 public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
@@ -57,10 +58,10 @@ public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
                 // just used for helping to marshal
                 from("direct:marshal").marshal().json();
 
-                from("direct:reverse").unmarshal().json().to("mock:reverse");
+                from("direct:reverse").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).to("mock:reverse");
 
                 from("direct:inPretty").marshal().json(true);
-                from("direct:backPretty").unmarshal().json().to("mock:reverse");
+                from("direct:backPretty").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class, true).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
index 63bc534..53bebb6 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
@@ -19,8 +19,6 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -28,16 +26,6 @@ import org.junit.Test;
  */
 public class MarshalDomainObjectTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testMarshalDomainObject() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
@@ -96,12 +84,12 @@ public class MarshalDomainObjectTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("direct:in").marshal().xstream().to("mock:result");
+                from("direct:in").marshal().xstream(PurchaseOrder.class).to("mock:result");
 
                 // just used for helping to marshal
-                from("direct:marshal").marshal().xstream("UTF-8");
+                from("direct:marshal").marshal().xstream("UTF-8", PurchaseOrder.class);
 
-                from("direct:reverse").unmarshal().xstream("UTF-8").to("mock:reverse");
+                from("direct:reverse").unmarshal().xstream("UTF-8", PurchaseOrder.class).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
index 53ad1e6..1dd9d12 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
@@ -19,19 +19,20 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.dataformat.JsonLibrary;
 
 public class UnmarshalThenMarshalJSONTest extends UnmarshalThenMarshalTest {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().json().
+                        marshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().json().
+                        unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
index 6e936a5..a5e26bb 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
@@ -23,8 +23,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -32,16 +30,6 @@ import org.junit.Test;
  */
 public class UnmarshalThenMarshalTest extends CamelTestSupport {
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testSendXmlAndUnmarshal() throws Exception {
 
@@ -69,13 +57,13 @@ public class UnmarshalThenMarshalTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
index b0e6aa2..1f08626 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
@@ -22,8 +22,6 @@ import java.util.concurrent.Executors;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -31,16 +29,6 @@ import org.junit.Test;
  */
 public class XStreamConcurrencyTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testNoConcurrentProducers() throws Exception {
         doSendMessages(1, 1);
@@ -79,11 +67,11 @@ public class XStreamConcurrencyTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         to("direct:marshalled");
 
                 from("direct:marshalled").
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
index b411abe..5fc8858 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
@@ -28,13 +28,10 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -45,16 +42,6 @@ public class XStreamConfigurationTest extends CamelTestSupport {
     private static volatile boolean constructorInjected;
     private static volatile boolean methodInjected;
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Override
     public void setUp() throws Exception {
         super.setUp();
@@ -152,6 +139,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 Map<String, String> aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 List<String> converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -172,6 +160,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -182,6 +171,8 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 org.apache.camel.dataformat.xstream.XStreamDataFormat xStreamDataFormat 
                     = new org.apache.camel.dataformat.xstream.XStreamDataFormat();
                 xStreamDataFormat.setXstreamDriver(new JsonHierarchicalStreamDriver());
+                xStreamDataFormat.setPermissions("+6org.apache.camel.dataformat.xstream.*");
+
                 from("direct:myDriver").marshal(xStreamDataFormat).to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
index ff6cf35..7601f43 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.dataformat.xstream;
 
 /**

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/log4j.properties b/components/camel-xstream/src/test/resources/log4j.properties
index 034f615..af8bba9 100644
--- a/components/camel-xstream/src/test/resources/log4j.properties
+++ b/components/camel-xstream/src/test/resources/log4j.properties
@@ -20,7 +20,7 @@
 #
 log4j.rootLogger=INFO, out
 
-log4j.logger.org.apache.activemq.spring=WARN
+#log4j.logger.org.apache.camel=DEBUG
 
 # CONSOLE appender not used by default
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
@@ -34,4 +34,3 @@ log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%
 log4j.appender.out.file=target/camel-xstream-test.log
 log4j.appender.out.append=true
 
-log4j.logger.org.apache.camel=DEBUG

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
index d44d587..ecc0d0f 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
@@ -27,8 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <json id="json"/>
-            <json id="pretty" prettyPrint="true"/>
+            <json id="json" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
+            <json id="pretty" prettyPrint="true" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
index 412f0e0..d04a881 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
@@ -27,8 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <xstream id="xstream-utf8" encoding="UTF-8"/>
-            <xstream id="xstream-default"/>
+            <xstream id="xstream-utf8" encoding="UTF-8" permissions="org.apache.camel.dataformat.stream.*"/>
+            <xstream id="xstream-default" permissions="org.apache.camel.dataformat.stream.*"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
index f0a1880..a085de0 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
@@ -26,7 +26,7 @@
         
         <!-- START SNIPPET: e1 -->
         <dataFormats>
-            <xstream id="xstream">
+            <xstream id="xstream" permissions="org.apache.camel.dataformat.stream.*">
                 <!-- omit the price file from the PurchaseOrder class -->
                 <omitFields>
                     <omitField class="org.apache.camel.dataformat.xstream.PurchaseOrder">

http://git-wip-us.apache.org/repos/asf/camel/blob/8386d8f7/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
index 97a5e80..3b9deb8 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
@@ -44,7 +44,7 @@
                 </implicitCollections>
             </xstream>
             
-           <xstream id="xstream-json" driver="json">
+           <xstream id="xstream-json" driver="json" permissions="org.apache.camel.dataformat.xstream.*">
                 <converters>
                     <converter class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter" />
                 </converters>
@@ -58,7 +58,7 @@
                 </implicitCollections>
             </xstream>
             
-            <xstream id="xstream-driver" driverRef="myDriver"/>            
+            <xstream id="xstream-driver" driverRef="myDriver" permissions="org.apache.camel.dataformat.xstream.*"/>
         </dataFormats>
 
         <route>


[6/9] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/camel-2.16.x
Commit: 55d9ba8f9a0893422835e98f7501a5f5e5db01e3
Parents: b7afb37
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:22:31 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:23:33 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/builder/DataFormatClause.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/55d9ba8f/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 ffadcdf..9495f4c 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
@@ -20,6 +20,8 @@ import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
+import org.w3c.dom.Node;
+
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -55,7 +57,6 @@ import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
 import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
-import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}


[4/9] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/master
Commit: 70b0057e390c1e60047585c656ebd84eb65f74c8
Parents: 8386d8f
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:22:31 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:22:31 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/builder/DataFormatClause.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/70b0057e/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 ffadcdf..9495f4c 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
@@ -20,6 +20,8 @@ import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
+import org.w3c.dom.Node;
+
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -55,7 +57,6 @@ import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
 import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
-import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}


[9/9] camel git commit: [CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.

Posted by da...@apache.org.
[CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.


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

Branch: refs/heads/camel-2.15.x
Commit: f07a33c467adb3d37aa8192698caadfee43a17dc
Parents: dfdc11d
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:30:50 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:30:50 2015 +0100

----------------------------------------------------------------------
 .../camel/dataformat/xstream/MarshalDomainObjectJSONTest.java     | 3 ---
 1 file changed, 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/f07a33c4/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
index 752a9f6..c321d54 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
@@ -30,9 +30,6 @@ public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
                 from("direct:marshal").marshal().json();
 
                 from("direct:reverse").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).to("mock:reverse");
-
-                from("direct:inPretty").marshal().json(true);
-                from("direct:backPretty").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class, true).to("mock:reverse");
             }
         };
     }


[3/9] camel git commit: [CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.

Posted by da...@apache.org.
[CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.

Conflicts:
	camel-core/src/main/java/org/apache/camel/builder/DataFormatClause.java
	components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
	components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml


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

Branch: refs/heads/camel-2.15.x
Commit: 4cdc6b177ee7391eedc9f0b695c05d56f84b0812
Parents: 933a245
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:17:07 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:20:21 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/builder/DataFormatClause.java  | 54 ++++++++++++++++++--
 .../camel/model/dataformat/JsonDataFormat.java  | 47 +++++++++++++++++
 .../model/dataformat/XStreamDataFormat.java     | 40 ++++++++++++---
 .../xstream/MarshalDomainObjectJSONTest.java    |  6 ++-
 .../xstream/MarshalDomainObjectTest.java        | 18 ++-----
 .../xstream/UnmarshalThenMarshalJSONTest.java   |  5 +-
 .../xstream/UnmarshalThenMarshalTest.java       | 16 +-----
 .../xstream/XStreamConcurrencyTest.java         | 16 +-----
 .../xstream/XStreamConfigurationTest.java       | 17 ++----
 .../dataformat/xstream/XStreamTestUtils.java    |  1 -
 .../src/test/resources/log4j.properties         |  3 +-
 .../SpringMarshalDomainObjectJSONTest.xml       |  3 +-
 .../xstream/SpringMarshalListTest.xml           |  4 +-
 .../xstream/SpringMarshalOmitFieldsTest.xml     |  2 +-
 .../xstream/SpringXStreamConfigurationTest.xml  |  4 +-
 15 files changed, 156 insertions(+), 80 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/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 f839d58..b706602 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
@@ -16,11 +16,10 @@
  */
 package org.apache.camel.builder;
 
+import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
-import org.w3c.dom.Node;
-
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -52,7 +51,9 @@ import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.model.dataformat.XmlJsonDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
+import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
@@ -531,17 +532,60 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
     }
 
     /**
-     * Uses the XStream data format
+     * Uses the XStream data format.
+     * <p/>
+     * Favor using {@link #xstream(String)} to pass in a permission
      */
     public T xstream() {
         return dataFormat(new XStreamDataFormat());
     }
 
     /**
+     * Uses the xstream by setting the encoding or permission
+     *
+     * @param encodingOrPermission is either an encoding or permission syntax
+     */
+    public T xstream(String encodingOrPermission) {
+        // is it an encoding? if not we assume its a permission
+        if (Charset.isSupported(encodingOrPermission)) {
+            return xstream(encodingOrPermission, (String) null);
+        } else {
+            return xstream(null, encodingOrPermission);
+        }
+    }
+
+    /**
      * Uses the xstream by setting the encoding
      */
-    public T xstream(String encoding) {
-        return dataFormat(new XStreamDataFormat(encoding));
+    public T xstream(String encoding, String permission) {
+        XStreamDataFormat xdf = new XStreamDataFormat();
+        xdf.setPermissions(permission);
+        xdf.setEncoding(encoding);
+        return dataFormat(xdf);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param type the pojo xstream should use as allowed permission
+     */
+    public T xstream(Class<?> type) {
+        return xstream(null, type);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param encoding encoding to use
+     * @param type the pojo class(es) xstream should use as allowed permission
+     */
+    public T xstream(String encoding, Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        return xstream(encoding, csb.toString());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index 3aceb18..0d03b6d 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -27,6 +27,7 @@ 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.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -68,6 +69,8 @@ public class JsonDataFormat extends DataFormatDefinition {
     private String enableFeatures;
     @XmlAttribute
     private String disableFeatures;
+    @XmlAttribute
+    private String permissions;
 
     public JsonDataFormat() {
         super("json");
@@ -253,6 +256,42 @@ public class JsonDataFormat extends DataFormatDefinition {
         this.disableFeatures = disableFeatures;
     }
 
+    public String getPermissions() {
+        return permissions;
+    }
+
+    /**
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
+     */
+    public void setPermissions(String permissions) {
+        this.permissions = permissions;
+    }
+
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     public String getDataFormatName() {
         // json data format is special as the name can be from different bundles
@@ -325,6 +364,14 @@ public class JsonDataFormat extends DataFormatDefinition {
         if (disableFeatures != null) {
             setProperty(camelContext, dataFormat, "disableFeatures", disableFeatures);
         }
+        if (permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", permissions);
+        }
+        // if we have the unmarshal type, but no permission set, then use it to be allowed
+        if (permissions == null && unmarshalType != null) {
+            String allow = "+" + unmarshalType.getName();
+            setProperty(camelContext, dataFormat, "permissions", allow);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
index e89bc7b..dd9d966 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
@@ -38,6 +38,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -50,6 +51,8 @@ import org.apache.camel.util.ObjectHelper;
 @XmlAccessorType(XmlAccessType.NONE)
 public class XStreamDataFormat extends DataFormatDefinition {
     @XmlAttribute
+    private String permissions;
+    @XmlAttribute
     private String encoding;
     @XmlAttribute
     private String driver;
@@ -57,9 +60,7 @@ public class XStreamDataFormat extends DataFormatDefinition {
     private String driverRef;
     @XmlAttribute
     private String mode;
-    @XmlAttribute
-    private String permissions;
-    
+
     @XmlJavaTypeAdapter(ConvertersAdapter.class)
     @XmlElement(name = "converters")
     private List<String> converters;
@@ -187,12 +188,37 @@ public class XStreamDataFormat extends DataFormatDefinition {
     }
 
     /**
-     * Adds permissionsList
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
      */
     public void setPermissions(String permissions) {
         this.permissions = permissions;
     }
 
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     protected DataFormat createDataFormat(RouteContext routeContext) {
         if ("json".equals(this.driver)) {
@@ -208,6 +234,9 @@ public class XStreamDataFormat extends DataFormatDefinition {
 
     @Override
     protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+        if (this.permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", this.permissions);
+        }
         if (encoding != null) {
             setProperty(camelContext, dataFormat, "encoding", encoding);
         }
@@ -223,9 +252,6 @@ public class XStreamDataFormat extends DataFormatDefinition {
         if (this.implicitCollections != null) {
             setProperty(camelContext, dataFormat, "implicitCollections", this.implicitCollections);
         }
-        if (this.permissions != null) {
-            setProperty(camelContext, dataFormat, "permissions", this.permissions);
-        }
         if (this.mode != null) {
             setProperty(camelContext, dataFormat, "mode", mode);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
index 3c5da94..752a9f6 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
@@ -17,6 +17,7 @@
 package org.apache.camel.dataformat.xstream;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.dataformat.JsonLibrary;
 
 public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
     
@@ -28,7 +29,10 @@ public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
                 // just used for helping to marhsal
                 from("direct:marshal").marshal().json();
 
-                from("direct:reverse").unmarshal().json().to("mock:reverse");
+                from("direct:reverse").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).to("mock:reverse");
+
+                from("direct:inPretty").marshal().json(true);
+                from("direct:backPretty").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class, true).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
index 63bc534..53bebb6 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
@@ -19,8 +19,6 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -28,16 +26,6 @@ import org.junit.Test;
  */
 public class MarshalDomainObjectTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testMarshalDomainObject() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
@@ -96,12 +84,12 @@ public class MarshalDomainObjectTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("direct:in").marshal().xstream().to("mock:result");
+                from("direct:in").marshal().xstream(PurchaseOrder.class).to("mock:result");
 
                 // just used for helping to marshal
-                from("direct:marshal").marshal().xstream("UTF-8");
+                from("direct:marshal").marshal().xstream("UTF-8", PurchaseOrder.class);
 
-                from("direct:reverse").unmarshal().xstream("UTF-8").to("mock:reverse");
+                from("direct:reverse").unmarshal().xstream("UTF-8", PurchaseOrder.class).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
index 53ad1e6..1dd9d12 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
@@ -19,19 +19,20 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.dataformat.JsonLibrary;
 
 public class UnmarshalThenMarshalJSONTest extends UnmarshalThenMarshalTest {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().json().
+                        marshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().json().
+                        unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
index 6e936a5..a5e26bb 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
@@ -23,8 +23,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -32,16 +30,6 @@ import org.junit.Test;
  */
 public class UnmarshalThenMarshalTest extends CamelTestSupport {
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testSendXmlAndUnmarshal() throws Exception {
 
@@ -69,13 +57,13 @@ public class UnmarshalThenMarshalTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
index b0e6aa2..1f08626 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
@@ -22,8 +22,6 @@ import java.util.concurrent.Executors;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -31,16 +29,6 @@ import org.junit.Test;
  */
 public class XStreamConcurrencyTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testNoConcurrentProducers() throws Exception {
         doSendMessages(1, 1);
@@ -79,11 +67,11 @@ public class XStreamConcurrencyTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         to("direct:marshalled");
 
                 from("direct:marshalled").
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
index b411abe..5fc8858 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
@@ -28,13 +28,10 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -45,16 +42,6 @@ public class XStreamConfigurationTest extends CamelTestSupport {
     private static volatile boolean constructorInjected;
     private static volatile boolean methodInjected;
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Override
     public void setUp() throws Exception {
         super.setUp();
@@ -152,6 +139,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 Map<String, String> aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 List<String> converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -172,6 +160,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -182,6 +171,8 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 org.apache.camel.dataformat.xstream.XStreamDataFormat xStreamDataFormat 
                     = new org.apache.camel.dataformat.xstream.XStreamDataFormat();
                 xStreamDataFormat.setXstreamDriver(new JsonHierarchicalStreamDriver());
+                xStreamDataFormat.setPermissions("+6org.apache.camel.dataformat.xstream.*");
+
                 from("direct:myDriver").marshal(xStreamDataFormat).to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
index ff6cf35..7601f43 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.dataformat.xstream;
 
 /**

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/log4j.properties b/components/camel-xstream/src/test/resources/log4j.properties
index 034f615..af8bba9 100644
--- a/components/camel-xstream/src/test/resources/log4j.properties
+++ b/components/camel-xstream/src/test/resources/log4j.properties
@@ -20,7 +20,7 @@
 #
 log4j.rootLogger=INFO, out
 
-log4j.logger.org.apache.activemq.spring=WARN
+#log4j.logger.org.apache.camel=DEBUG
 
 # CONSOLE appender not used by default
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
@@ -34,4 +34,3 @@ log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%
 log4j.appender.out.file=target/camel-xstream-test.log
 log4j.appender.out.append=true
 
-log4j.logger.org.apache.camel=DEBUG

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
index 0e9f7e4..4a4765c 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
@@ -27,7 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <json id="json"/>
+            <json id="json" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
+            <json id="pretty" prettyPrint="true" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
index 412f0e0..d04a881 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
@@ -27,8 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <xstream id="xstream-utf8" encoding="UTF-8"/>
-            <xstream id="xstream-default"/>
+            <xstream id="xstream-utf8" encoding="UTF-8" permissions="org.apache.camel.dataformat.stream.*"/>
+            <xstream id="xstream-default" permissions="org.apache.camel.dataformat.stream.*"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
index f0a1880..a085de0 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
@@ -26,7 +26,7 @@
         
         <!-- START SNIPPET: e1 -->
         <dataFormats>
-            <xstream id="xstream">
+            <xstream id="xstream" permissions="org.apache.camel.dataformat.stream.*">
                 <!-- omit the price file from the PurchaseOrder class -->
                 <omitFields>
                     <omitField class="org.apache.camel.dataformat.xstream.PurchaseOrder">

http://git-wip-us.apache.org/repos/asf/camel/blob/4cdc6b17/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
index 97a5e80..3b9deb8 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
@@ -44,7 +44,7 @@
                 </implicitCollections>
             </xstream>
             
-           <xstream id="xstream-json" driver="json">
+           <xstream id="xstream-json" driver="json" permissions="org.apache.camel.dataformat.xstream.*">
                 <converters>
                     <converter class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter" />
                 </converters>
@@ -58,7 +58,7 @@
                 </implicitCollections>
             </xstream>
             
-            <xstream id="xstream-driver" driverRef="myDriver"/>            
+            <xstream id="xstream-driver" driverRef="myDriver" permissions="org.apache.camel.dataformat.xstream.*"/>
         </dataFormats>
 
         <route>


[7/9] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/camel-2.16.x
Commit: 2d13750605eb1bc02a08d21b3546abe8052b9a78
Parents: 55d9ba8
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:23:18 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:23:39 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/camel/component/bean/BeanEndpoint.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2d137506/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index 34516e4..5a7c880 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -42,7 +42,8 @@ public class BeanEndpoint extends DefaultEndpoint {
     private String beanName;
     @UriParam(description = "Sets the name of the method to invoke on the bean")
     private String method;
-    @UriParam(label = "advanced", description = "If enabled, Camel will cache the result of the first Registry look-up. Cache can be enabled if the bean in the Registry is defined as a singleton scope.")
+    @UriParam(label = "advanced", description = "If enabled, Camel will cache the result of the first Registry look-up."
+            + " Cache can be enabled if the bean in the Registry is defined as a singleton scope.")
     private boolean cache;
     @UriParam(label = "advanced", description = "How to treat the parameters which are passed from the message body."
             + "true means the message body should be an array of parameters. Note: This option is used internally by Camel, and is not intended for end users to use.")


[5/9] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/master
Commit: 9c6bf46898bd634affe504f1eec7f343e9166c14
Parents: 70b0057
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:23:18 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:23:18 2015 +0100

----------------------------------------------------------------------
 .../main/java/org/apache/camel/component/bean/BeanEndpoint.java   | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/9c6bf468/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
index 34516e4..5a7c880 100644
--- a/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
+++ b/camel-core/src/main/java/org/apache/camel/component/bean/BeanEndpoint.java
@@ -42,7 +42,8 @@ public class BeanEndpoint extends DefaultEndpoint {
     private String beanName;
     @UriParam(description = "Sets the name of the method to invoke on the bean")
     private String method;
-    @UriParam(label = "advanced", description = "If enabled, Camel will cache the result of the first Registry look-up. Cache can be enabled if the bean in the Registry is defined as a singleton scope.")
+    @UriParam(label = "advanced", description = "If enabled, Camel will cache the result of the first Registry look-up."
+            + " Cache can be enabled if the bean in the Registry is defined as a singleton scope.")
     private boolean cache;
     @UriParam(label = "advanced", description = "How to treat the parameters which are passed from the message body."
             + "true means the message body should be an array of parameters. Note: This option is used internally by Camel, and is not intended for end users to use.")


[2/9] camel git commit: [CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.

Posted by da...@apache.org.
[CAMEL-9297] Expose more configuration options from Camel's XStream. Allow to configure the types/permissions in the Java DSL. Updated the unit tests to do it like the end user would do it.


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

Branch: refs/heads/camel-2.16.x
Commit: b7afb3769a38b8e526f8046414d4a71430d77df0
Parents: 439299b
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:17:07 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:17:44 2015 +0100

----------------------------------------------------------------------
 .../apache/camel/builder/DataFormatClause.java  | 55 +++++++++++++++++---
 .../camel/model/dataformat/JsonDataFormat.java  | 47 +++++++++++++++++
 .../model/dataformat/XStreamDataFormat.java     | 40 +++++++++++---
 .../xstream/MarshalDomainObjectJSONTest.java    |  5 +-
 .../xstream/MarshalDomainObjectTest.java        | 18 ++-----
 .../xstream/UnmarshalThenMarshalJSONTest.java   |  5 +-
 .../xstream/UnmarshalThenMarshalTest.java       | 16 +-----
 .../xstream/XStreamConcurrencyTest.java         | 16 +-----
 .../xstream/XStreamConfigurationTest.java       | 17 ++----
 .../dataformat/xstream/XStreamTestUtils.java    |  1 -
 .../src/test/resources/log4j.properties         |  3 +-
 .../SpringMarshalDomainObjectJSONTest.xml       |  4 +-
 .../xstream/SpringMarshalListTest.xml           |  4 +-
 .../xstream/SpringMarshalOmitFieldsTest.xml     |  2 +-
 .../xstream/SpringXStreamConfigurationTest.xml  |  4 +-
 15 files changed, 154 insertions(+), 83 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/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 e87195c..ffadcdf 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
@@ -16,12 +16,10 @@
  */
 package org.apache.camel.builder;
 
+import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
-import org.w3c.dom.Node;
-
-
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -55,7 +53,9 @@ import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.model.dataformat.XmlJsonDataFormat;
 import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
+import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}
@@ -720,17 +720,60 @@ public class DataFormatClause<T extends ProcessorDefinition<?>> {
     }
 
     /**
-     * Uses the XStream data format
+     * Uses the XStream data format.
+     * <p/>
+     * Favor using {@link #xstream(String)} to pass in a permission
      */
     public T xstream() {
         return dataFormat(new XStreamDataFormat());
     }
 
     /**
+     * Uses the xstream by setting the encoding or permission
+     *
+     * @param encodingOrPermission is either an encoding or permission syntax
+     */
+    public T xstream(String encodingOrPermission) {
+        // is it an encoding? if not we assume its a permission
+        if (Charset.isSupported(encodingOrPermission)) {
+            return xstream(encodingOrPermission, (String) null);
+        } else {
+            return xstream(null, encodingOrPermission);
+        }
+    }
+
+    /**
      * Uses the xstream by setting the encoding
      */
-    public T xstream(String encoding) {
-        return dataFormat(new XStreamDataFormat(encoding));
+    public T xstream(String encoding, String permission) {
+        XStreamDataFormat xdf = new XStreamDataFormat();
+        xdf.setPermissions(permission);
+        xdf.setEncoding(encoding);
+        return dataFormat(xdf);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param type the pojo xstream should use as allowed permission
+     */
+    public T xstream(Class<?> type) {
+        return xstream(null, type);
+    }
+
+    /**
+     * Uses the xstream by permitting the java type
+     *
+     * @param encoding encoding to use
+     * @param type the pojo class(es) xstream should use as allowed permission
+     */
+    public T xstream(String encoding, Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        return xstream(encoding, csb.toString());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
index c0127eb..f20aa41 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/JsonDataFormat.java
@@ -27,6 +27,7 @@ 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.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -68,6 +69,8 @@ public class JsonDataFormat extends DataFormatDefinition {
     private String enableFeatures;
     @XmlAttribute
     private String disableFeatures;
+    @XmlAttribute
+    private String permissions;
 
     public JsonDataFormat() {
         super("json");
@@ -253,6 +256,42 @@ public class JsonDataFormat extends DataFormatDefinition {
         this.disableFeatures = disableFeatures;
     }
 
+    public String getPermissions() {
+        return permissions;
+    }
+
+    /**
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
+     */
+    public void setPermissions(String permissions) {
+        this.permissions = permissions;
+    }
+
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     public String getDataFormatName() {
         // json data format is special as the name can be from different bundles
@@ -325,6 +364,14 @@ public class JsonDataFormat extends DataFormatDefinition {
         if (disableFeatures != null) {
             setProperty(camelContext, dataFormat, "disableFeatures", disableFeatures);
         }
+        if (permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", permissions);
+        }
+        // if we have the unmarshal type, but no permission set, then use it to be allowed
+        if (permissions == null && unmarshalType != null) {
+            String allow = "+" + unmarshalType.getName();
+            setProperty(camelContext, dataFormat, "permissions", allow);
+        }
     }
 
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
----------------------------------------------------------------------
diff --git a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
index 4d433d2..a7a22f3 100644
--- a/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
+++ b/camel-core/src/main/java/org/apache/camel/model/dataformat/XStreamDataFormat.java
@@ -38,6 +38,7 @@ import org.apache.camel.spi.DataFormat;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.RouteContext;
 import org.apache.camel.util.CamelContextHelper;
+import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.ObjectHelper;
 
 /**
@@ -50,6 +51,8 @@ import org.apache.camel.util.ObjectHelper;
 @XmlAccessorType(XmlAccessType.NONE)
 public class XStreamDataFormat extends DataFormatDefinition {
     @XmlAttribute
+    private String permissions;
+    @XmlAttribute
     private String encoding;
     @XmlAttribute
     private String driver;
@@ -57,9 +60,7 @@ public class XStreamDataFormat extends DataFormatDefinition {
     private String driverRef;
     @XmlAttribute
     private String mode;
-    @XmlAttribute
-    private String permissions;
-    
+
     @XmlJavaTypeAdapter(ConvertersAdapter.class)
     @XmlElement(name = "converters")
     private List<String> converters;
@@ -187,12 +188,37 @@ public class XStreamDataFormat extends DataFormatDefinition {
     }
 
     /**
-     * Adds permissionsList
+     * Adds permissions that controls which Java packages and classes XStream is allowed to use during
+     * unmarshal from xml/json to Java beans.
+     * <p/>
+     * A permission must be configured either here or globally using a JVM system property. The permission
+     * can be specified in a syntax where a plus sign is allow, and minus sign is deny.
+     * <br/>
+     * Wildcards is supported by using <tt>.*</tt> as prefix. For example to allow <tt>com.foo</tt> and all subpackages
+     * then specfy <tt>+com.foo.*</tt>. Multiple permissions can be configured separated by comma, such as
+     * <tt>+com.foo.*,-com.foo.bar.MySecretBean</tt>.
+     * <br/>
+     * The following default permission is always included: <tt>"-*,java.lang.*,java.util.*"</tt> unless
+     * its overridden by specifying a JVM system property with they key <tt>org.apache.camel.xstream.permissions</tt>.
      */
     public void setPermissions(String permissions) {
         this.permissions = permissions;
     }
 
+    /**
+     * To add permission for the given pojo classes.
+     * @param type the pojo class(es) xstream should use as allowed permission
+     * @see #setPermissions(String)
+     */
+    public void setPermissions(Class<?>... type) {
+        CollectionStringBuffer csb = new CollectionStringBuffer(",");
+        for (Class<?> clazz : type) {
+            csb.append("+");
+            csb.append(clazz.getName());
+        }
+        setPermissions(csb.toString());
+    }
+
     @Override
     protected DataFormat createDataFormat(RouteContext routeContext) {
         if ("json".equals(this.driver)) {
@@ -208,6 +234,9 @@ public class XStreamDataFormat extends DataFormatDefinition {
 
     @Override
     protected void configureDataFormat(DataFormat dataFormat, CamelContext camelContext) {
+        if (this.permissions != null) {
+            setProperty(camelContext, dataFormat, "permissions", this.permissions);
+        }
         if (encoding != null) {
             setProperty(camelContext, dataFormat, "encoding", encoding);
         }
@@ -223,9 +252,6 @@ public class XStreamDataFormat extends DataFormatDefinition {
         if (this.implicitCollections != null) {
             setProperty(camelContext, dataFormat, "implicitCollections", this.implicitCollections);
         }
-        if (this.permissions != null) {
-            setProperty(camelContext, dataFormat, "permissions", this.permissions);
-        }
         if (this.mode != null) {
             setProperty(camelContext, dataFormat, "mode", mode);
         }

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
index 55fbdf0..e676c66 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectJSONTest.java
@@ -18,6 +18,7 @@ package org.apache.camel.dataformat.xstream;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.model.dataformat.JsonLibrary;
 import org.junit.Test;
 
 public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
@@ -57,10 +58,10 @@ public class MarshalDomainObjectJSONTest extends MarshalDomainObjectTest {
                 // just used for helping to marshal
                 from("direct:marshal").marshal().json();
 
-                from("direct:reverse").unmarshal().json().to("mock:reverse");
+                from("direct:reverse").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).to("mock:reverse");
 
                 from("direct:inPretty").marshal().json(true);
-                from("direct:backPretty").unmarshal().json().to("mock:reverse");
+                from("direct:backPretty").unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class, true).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
index 63bc534..53bebb6 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/MarshalDomainObjectTest.java
@@ -19,8 +19,6 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -28,16 +26,6 @@ import org.junit.Test;
  */
 public class MarshalDomainObjectTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testMarshalDomainObject() throws Exception {
         MockEndpoint mock = getMockEndpoint("mock:result");
@@ -96,12 +84,12 @@ public class MarshalDomainObjectTest extends CamelTestSupport {
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
             public void configure() throws Exception {
-                from("direct:in").marshal().xstream().to("mock:result");
+                from("direct:in").marshal().xstream(PurchaseOrder.class).to("mock:result");
 
                 // just used for helping to marshal
-                from("direct:marshal").marshal().xstream("UTF-8");
+                from("direct:marshal").marshal().xstream("UTF-8", PurchaseOrder.class);
 
-                from("direct:reverse").unmarshal().xstream("UTF-8").to("mock:reverse");
+                from("direct:reverse").unmarshal().xstream("UTF-8", PurchaseOrder.class).to("mock:reverse");
             }
         };
     }

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
index 53ad1e6..1dd9d12 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalJSONTest.java
@@ -19,19 +19,20 @@ package org.apache.camel.dataformat.xstream;
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.model.dataformat.JsonLibrary;
 
 public class UnmarshalThenMarshalJSONTest extends UnmarshalThenMarshalTest {
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().json().
+                        marshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().json().
+                        unmarshal().json(JsonLibrary.XStream, PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
index 6e936a5..a5e26bb 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/UnmarshalThenMarshalTest.java
@@ -23,8 +23,6 @@ import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -32,16 +30,6 @@ import org.junit.Test;
  */
 public class UnmarshalThenMarshalTest extends CamelTestSupport {
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testSendXmlAndUnmarshal() throws Exception {
 
@@ -69,13 +57,13 @@ public class UnmarshalThenMarshalTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         process(new Processor() {
                             public void process(Exchange exchange) throws Exception {
                                 log.debug("marshalled: " + exchange.getIn().getBody(String.class));
                             }
                         }).
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
index b0e6aa2..1f08626 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConcurrencyTest.java
@@ -22,8 +22,6 @@ import java.util.concurrent.Executors;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -31,16 +29,6 @@ import org.junit.Test;
  */
 public class XStreamConcurrencyTest extends CamelTestSupport {
 
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Test
     public void testNoConcurrentProducers() throws Exception {
         doSendMessages(1, 1);
@@ -79,11 +67,11 @@ public class XStreamConcurrencyTest extends CamelTestSupport {
         return new RouteBuilder() {
             public void configure() {
                 from("direct:start").
-                        marshal().xstream().
+                        marshal().xstream(PurchaseOrder.class).
                         to("direct:marshalled");
 
                 from("direct:marshalled").
-                        unmarshal().xstream().
+                        unmarshal().xstream(PurchaseOrder.class).
                         to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
index b411abe..5fc8858 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamConfigurationTest.java
@@ -28,13 +28,10 @@ import com.thoughtworks.xstream.converters.UnmarshallingContext;
 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
 import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
 import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
-
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.model.dataformat.XStreamDataFormat;
 import org.apache.camel.test.junit4.CamelTestSupport;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 import org.junit.Test;
 
 /**
@@ -45,16 +42,6 @@ public class XStreamConfigurationTest extends CamelTestSupport {
     private static volatile boolean constructorInjected;
     private static volatile boolean methodInjected;
     
-    @BeforeClass
-    public static void setup() {
-        XStreamTestUtils.setPermissionSystemProperty("");
-    }
-
-    @AfterClass
-    public static void cleanup() {
-        XStreamTestUtils.revertPermissionSystemProperty();
-    }
-
     @Override
     public void setUp() throws Exception {
         super.setUp();
@@ -152,6 +139,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 Map<String, String> aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 List<String> converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -172,6 +160,7 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 aliases = new HashMap<String, String>();
                 aliases.put("purchase-order", PurchaseOrder.class.getName());
                 xstreamDefinition.setAliases(aliases);
+                xstreamDefinition.setPermissions(PurchaseOrder.class, PurchaseHistory.class);
 
                 converters = new ArrayList<String>();
                 converters.add(PurchaseOrderConverter.class.getName());
@@ -182,6 +171,8 @@ public class XStreamConfigurationTest extends CamelTestSupport {
                 org.apache.camel.dataformat.xstream.XStreamDataFormat xStreamDataFormat 
                     = new org.apache.camel.dataformat.xstream.XStreamDataFormat();
                 xStreamDataFormat.setXstreamDriver(new JsonHierarchicalStreamDriver());
+                xStreamDataFormat.setPermissions("+6org.apache.camel.dataformat.xstream.*");
+
                 from("direct:myDriver").marshal(xStreamDataFormat).to("mock:result");
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
index ff6cf35..7601f43 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamTestUtils.java
@@ -14,7 +14,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.camel.dataformat.xstream;
 
 /**

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/log4j.properties b/components/camel-xstream/src/test/resources/log4j.properties
index 034f615..af8bba9 100644
--- a/components/camel-xstream/src/test/resources/log4j.properties
+++ b/components/camel-xstream/src/test/resources/log4j.properties
@@ -20,7 +20,7 @@
 #
 log4j.rootLogger=INFO, out
 
-log4j.logger.org.apache.activemq.spring=WARN
+#log4j.logger.org.apache.camel=DEBUG
 
 # CONSOLE appender not used by default
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
@@ -34,4 +34,3 @@ log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%
 log4j.appender.out.file=target/camel-xstream-test.log
 log4j.appender.out.append=true
 
-log4j.logger.org.apache.camel=DEBUG

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
index d44d587..ecc0d0f 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalDomainObjectJSONTest.xml
@@ -27,8 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <json id="json"/>
-            <json id="pretty" prettyPrint="true"/>
+            <json id="json" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
+            <json id="pretty" prettyPrint="true" unmarshalTypeName="org.apache.camel.dataformat.xstream.PurchaseOrder"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
index 412f0e0..d04a881 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalListTest.xml
@@ -27,8 +27,8 @@
         
         <!-- we define the json xstream data formats to be used (xstream is default) -->
         <dataFormats>
-            <xstream id="xstream-utf8" encoding="UTF-8"/>
-            <xstream id="xstream-default"/>
+            <xstream id="xstream-utf8" encoding="UTF-8" permissions="org.apache.camel.dataformat.stream.*"/>
+            <xstream id="xstream-default" permissions="org.apache.camel.dataformat.stream.*"/>
         </dataFormats>
 
         <route>

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
index f0a1880..a085de0 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringMarshalOmitFieldsTest.xml
@@ -26,7 +26,7 @@
         
         <!-- START SNIPPET: e1 -->
         <dataFormats>
-            <xstream id="xstream">
+            <xstream id="xstream" permissions="org.apache.camel.dataformat.stream.*">
                 <!-- omit the price file from the PurchaseOrder class -->
                 <omitFields>
                     <omitField class="org.apache.camel.dataformat.xstream.PurchaseOrder">

http://git-wip-us.apache.org/repos/asf/camel/blob/b7afb376/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
index 97a5e80..3b9deb8 100644
--- a/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
+++ b/components/camel-xstream/src/test/resources/org/apache/camel/dataformat/xstream/SpringXStreamConfigurationTest.xml
@@ -44,7 +44,7 @@
                 </implicitCollections>
             </xstream>
             
-           <xstream id="xstream-json" driver="json">
+           <xstream id="xstream-json" driver="json" permissions="org.apache.camel.dataformat.xstream.*">
                 <converters>
                     <converter class="org.apache.camel.dataformat.xstream.XStreamConfigurationTest$PurchaseOrderConverter" />
                 </converters>
@@ -58,7 +58,7 @@
                 </implicitCollections>
             </xstream>
             
-            <xstream id="xstream-driver" driverRef="myDriver"/>            
+            <xstream id="xstream-driver" driverRef="myDriver" permissions="org.apache.camel.dataformat.xstream.*"/>
         </dataFormats>
 
         <route>


[8/9] camel git commit: Fixed CS

Posted by da...@apache.org.
Fixed CS


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

Branch: refs/heads/camel-2.15.x
Commit: dfdc11ddb1ad640306786123010df9b64f57a9bb
Parents: 4cdc6b1
Author: Claus Ibsen <da...@apache.org>
Authored: Fri Nov 13 15:22:31 2015 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Fri Nov 13 15:23:51 2015 +0100

----------------------------------------------------------------------
 .../src/main/java/org/apache/camel/builder/DataFormatClause.java  | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/dfdc11dd/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 b706602..196329b 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
@@ -20,6 +20,8 @@ import java.nio.charset.Charset;
 import java.util.Map;
 import java.util.zip.Deflater;
 
+import org.w3c.dom.Node;
+
 import org.apache.camel.model.DataFormatDefinition;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.dataformat.AvroDataFormat;
@@ -53,7 +55,6 @@ import org.apache.camel.model.dataformat.ZipDataFormat;
 import org.apache.camel.model.dataformat.ZipFileDataFormat;
 import org.apache.camel.util.CollectionStringBuffer;
 import org.apache.camel.util.jsse.KeyStoreParameters;
-import org.w3c.dom.Node;
 
 /**
  * An expression for constructing the different possible {@link org.apache.camel.spi.DataFormat}