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 <davscl...@apache.org> Authored: Wed Sep 27 13:41:56 2017 +0200 Committer: Claus Ibsen <davscl...@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