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}