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

Reply via email to