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 2017/09/27 11:42:04 UTC
camel git commit: CAMEL-11821: Fixed camel-xstream to initialize
default permissions correctly so there is no warning.
Repository: camel
Updated Branches:
refs/heads/master d51b48dd3 -> 6efaad4cd
CAMEL-11821: Fixed camel-xstream to initialize default permissions correctly so there is no warning.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/6efaad4c
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/6efaad4c
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/6efaad4c
Branch: refs/heads/master
Commit: 6efaad4cd9a17a4dfb99b1c031f85b0a20188566
Parents: d51b48d
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Sep 27 13:41:56 2017 +0200
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Sep 27 13:41:56 2017 +0200
----------------------------------------------------------------------
.../xstream/AbstractXStreamWrapper.java | 31 ++++++++++++++++----
.../dataformat/xstream/XStreamDataFormat.java | 2 ++
...DataFormatPermissionsSystemPropertyTest.java | 2 +-
3 files changed, 29 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/6efaad4c/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
index c7dd42b..c3b05d7 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/AbstractXStreamWrapper.java
@@ -37,6 +37,7 @@ import com.thoughtworks.xstream.security.ExplicitTypePermission;
import com.thoughtworks.xstream.security.TypePermission;
import com.thoughtworks.xstream.security.WildcardTypePermission;
import org.apache.camel.CamelContext;
+import org.apache.camel.CamelContextAware;
import org.apache.camel.Exchange;
import org.apache.camel.converter.jaxp.StaxConverter;
import org.apache.camel.spi.ClassResolver;
@@ -49,10 +50,10 @@ import org.apache.camel.util.ObjectHelper;
* An abstract class which implement <a href="http://camel.apache.org/data-format.html">data format</a>
* ({@link DataFormat}) interface which leverage the XStream library for XML or JSON's marshaling and unmarshaling
*/
-public abstract class AbstractXStreamWrapper extends ServiceSupport implements DataFormat, DataFormatName {
+public abstract class AbstractXStreamWrapper extends ServiceSupport implements CamelContextAware, DataFormat, DataFormatName {
private static final String PERMISSIONS_PROPERTY_KEY = "org.apache.camel.xstream.permissions";
- private static final String PERMISSIONS_PROPERTY_DEFAULT = "-*,java.lang.*,java.util.*";
-
+
+ private CamelContext camelContext;
private XStream xstream;
private HierarchicalStreamDriver xstreamDriver;
private StaxConverter staxConverter;
@@ -71,6 +72,16 @@ public abstract class AbstractXStreamWrapper extends ServiceSupport implements D
this.xstream = xstream;
}
+ @Override
+ public CamelContext getCamelContext() {
+ return camelContext;
+ }
+
+ @Override
+ public void setCamelContext(CamelContext camelContext) {
+ this.camelContext = camelContext;
+ }
+
/**
* Resolves the XStream instance to be used by this data format. If XStream is not explicitly set, new instance will
* be created and cached.
@@ -231,7 +242,13 @@ public abstract class AbstractXStreamWrapper extends ServiceSupport implements D
}
private static void addDefaultPermissions(XStream xstream) {
- addPermissions(xstream, System.getProperty(PERMISSIONS_PROPERTY_KEY, PERMISSIONS_PROPERTY_DEFAULT));
+ XStream.setupDefaultSecurity(xstream);
+
+ String value = System.getProperty(PERMISSIONS_PROPERTY_KEY);
+ if (value != null) {
+ // using custom permissions
+ addPermissions(xstream, value);
+ }
}
protected int getModeFromString(String modeString) {
@@ -368,7 +385,11 @@ public abstract class AbstractXStreamWrapper extends ServiceSupport implements D
@Override
protected void doStart() throws Exception {
- // noop
+ ObjectHelper.notNull(camelContext, "camelContext");
+ // initialize xstream
+ if (xstream == null) {
+ xstream = createXStream(camelContext.getClassResolver(), camelContext.getApplicationContextClassLoader());
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/camel/blob/6efaad4c/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
index eb2d13b..a6d62eb 100644
--- a/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
+++ b/components/camel-xstream/src/main/java/org/apache/camel/dataformat/xstream/XStreamDataFormat.java
@@ -80,6 +80,7 @@ public class XStreamDataFormat extends AbstractXStreamWrapper {
/**
* A factory method which takes a collection of types to be annotated
*/
+ @Deprecated
public static XStreamDataFormat processAnnotations(ClassResolver resolver, Iterable<Class<?>> types) {
XStreamDataFormat answer = new XStreamDataFormat();
XStream xstream = answer.getXStream(resolver);
@@ -92,6 +93,7 @@ public class XStreamDataFormat extends AbstractXStreamWrapper {
/**
* A factory method which takes a number of types to be annotated
*/
+ @Deprecated
public static XStreamDataFormat processAnnotations(ClassResolver resolver, Class<?>... types) {
XStreamDataFormat answer = new XStreamDataFormat();
XStream xstream = answer.getXStream(resolver);
http://git-wip-us.apache.org/repos/asf/camel/blob/6efaad4c/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatPermissionsSystemPropertyTest.java
----------------------------------------------------------------------
diff --git a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatPermissionsSystemPropertyTest.java b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatPermissionsSystemPropertyTest.java
index 8da946d..9495837 100644
--- a/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatPermissionsSystemPropertyTest.java
+++ b/components/camel-xstream/src/test/java/org/apache/camel/dataformat/xstream/XStreamDataFormatPermissionsSystemPropertyTest.java
@@ -27,7 +27,7 @@ public class XStreamDataFormatPermissionsSystemPropertyTest extends XStreamDataF
public static void setup() {
// clear the default permissions system property
// see AbstractXStreamWrapper.PERMISSIONS_PROPERTY_DEFAULT
- XStreamTestUtils.setPermissionSystemProperty("");
+ XStreamTestUtils.setPermissionSystemProperty("*");
}
@AfterClass