Repository: camel Updated Branches: refs/heads/master 5ea0a6f6c -> 5aef07542
CAMEL-9317: camel-salesforce's XStream to use a system property to configure its setting Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/5aef0754 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/5aef0754 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/5aef0754 Branch: refs/heads/master Commit: 5aef07542212dae233f719f064b46dfe175ec6b4 Parents: 5ea0a6f Author: Akitoshi Yoshida <a...@apache.org> Authored: Thu Nov 12 22:47:50 2015 +0100 Committer: Akitoshi Yoshida <a...@apache.org> Committed: Thu Nov 12 23:04:24 2015 +0100 ---------------------------------------------------------------------- .../internal/client/DefaultRestClient.java | 2 + .../internal/client/XStreamUtils.java | 74 ++++++++++++++++++++ .../internal/processor/XmlRestProcessor.java | 2 + 3 files changed, 78 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/5aef0754/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java index 86ee39b..2dade18 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultRestClient.java @@ -67,6 +67,8 @@ public class DefaultRestClient extends AbstractClientBase implements RestClient this.xStream = new XStream(); xStream.processAnnotations(RestErrors.class); xStream.processAnnotations(RestChoices.class); + + XStreamUtils.addDefaultPermissions(xStream); } @Override http://git-wip-us.apache.org/repos/asf/camel/blob/5aef0754/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/XStreamUtils.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/XStreamUtils.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/XStreamUtils.java new file mode 100644 index 0000000..182e411 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/XStreamUtils.java @@ -0,0 +1,74 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.camel.component.salesforce.internal.client; + +import com.thoughtworks.xstream.XStream; +import com.thoughtworks.xstream.security.AnyTypePermission; +import com.thoughtworks.xstream.security.ExplicitTypePermission; +import com.thoughtworks.xstream.security.TypePermission; +import com.thoughtworks.xstream.security.WildcardTypePermission; + +/** + * REVISIT this code is duplicated from camel-xstream and we should + * find another way... + */ +public final class XStreamUtils { + private static final String PERMISSIONS_PROPERTY_KEY = "org.apache.camel.xstream.permissions"; + private static final String PERMISSIONS_PROPERTY_DEFAULT = "-*,java.lang.*,java.util.*"; + + private XStreamUtils() { + } + + public static void addPermissions(XStream xstream, String permissions) { + for (String pterm : permissions.split(",")) { + boolean aod; + pterm = pterm.trim(); + if (pterm.startsWith("-")) { + aod = false; + pterm = pterm.substring(1); + } else { + aod = true; + if (pterm.startsWith("+")) { + pterm = pterm.substring(1); + } + } + TypePermission typePermission = null; + if ("*".equals(pterm)) { + // accept or deny any + typePermission = AnyTypePermission.ANY; + } else if (pterm.indexOf('*') < 0) { + // exact type + typePermission = new ExplicitTypePermission(new String[]{pterm}); + } else if (pterm.length() > 0) { + // wildcard type + typePermission = new WildcardTypePermission(new String[]{pterm}); + } + if (typePermission != null) { + if (aod) { + xstream.addPermission(typePermission); + } else { + xstream.denyPermission(typePermission); + } + } + } + } + + public static void addDefaultPermissions(XStream xstream) { + addPermissions(xstream, System.getProperty(PERMISSIONS_PROPERTY_KEY, PERMISSIONS_PROPERTY_DEFAULT)); + } +} http://git-wip-us.apache.org/repos/asf/camel/blob/5aef0754/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java index 1a31e20..9e29a5d 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/processor/XmlRestProcessor.java @@ -45,6 +45,7 @@ import org.apache.camel.component.salesforce.api.dto.SObjectBasicInfo; import org.apache.camel.component.salesforce.api.dto.SObjectDescription; import org.apache.camel.component.salesforce.api.dto.SearchResults; import org.apache.camel.component.salesforce.api.dto.Versions; +import org.apache.camel.component.salesforce.internal.client.XStreamUtils; import org.eclipse.jetty.util.StringUtil; import static org.apache.camel.component.salesforce.SalesforceEndpointConfig.SOBJECT_NAME; @@ -68,6 +69,7 @@ public class XmlRestProcessor extends AbstractRestProcessor { } }); + XStreamUtils.addDefaultPermissions(result); result.registerConverter(new JodaTimeConverter()); return result; }