Repository: camel Updated Branches: refs/heads/master 91ae7be43 -> 33912cf79
CAMEL-10716 Salesforce Composite API wrongly ch... ...ecks for minimum supported version Fixes an issue when the Batch request and the configured component version is version 34.0. Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/33912cf7 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/33912cf7 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/33912cf7 Branch: refs/heads/master Commit: 33912cf79c126640dc2e6d2556f783af66a5a84c Parents: 91ae7be Author: Zoran Regvart <zo...@regvart.com> Authored: Tue Jan 17 11:33:42 2017 +0100 Committer: Claus Ibsen <davscl...@apache.org> Committed: Tue Jan 17 12:07:39 2017 +0100 ---------------------------------------------------------------------- .../client/DefaultCompositeApiClient.java | 16 +++++-- .../client/DefaultCompositeApiClientTest.java | 49 ++++++++++++++++++++ 2 files changed, 60 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/33912cf7/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java index 17fc7fb..24a8e77 100644 --- a/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java +++ b/components/camel-salesforce/camel-salesforce-component/src/main/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClient.java @@ -117,11 +117,7 @@ public class DefaultCompositeApiClient extends AbstractClientBase implements Com @Override public void submitCompositeBatch(final SObjectBatch batch, final ResponseCallback<SObjectBatchResponse> callback) throws SalesforceException { - final Version batchVersion = batch.getVersion(); - if (Version.create(version).compareTo(batchVersion) <= 0) { - throw new SalesforceException("Component is configured with Salesforce API version " + version - + ", but the Composite API batch operation requires at least " + batchVersion, 0); - } + checkCompositeBatchVersion(version, batch.getVersion()); final String url = versionUrl() + "composite/batch"; @@ -148,6 +144,16 @@ public class DefaultCompositeApiClient extends AbstractClientBase implements Com .onResponse(tryToReadResponse(SObjectTreeResponse.class, response), exception)); } + static void checkCompositeBatchVersion(final String configuredVersion, final Version batchVersion) + throws SalesforceException { + if (Version.create(configuredVersion).compareTo(batchVersion) < 0) { + throw new SalesforceException("Component is configured with Salesforce API version " + + configuredVersion + + ", but the payload of the Composite API batch operation requires at least " + + batchVersion, 0); + } + } + Request createRequest(final HttpMethod method, final String url) { final Request request = getRequest(method, url); http://git-wip-us.apache.org/repos/asf/camel/blob/33912cf7/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClientTest.java ---------------------------------------------------------------------- diff --git a/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClientTest.java b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClientTest.java new file mode 100644 index 0000000..049c164 --- /dev/null +++ b/components/camel-salesforce/camel-salesforce-component/src/test/java/org/apache/camel/component/salesforce/internal/client/DefaultCompositeApiClientTest.java @@ -0,0 +1,49 @@ +/** + * 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 org.apache.camel.component.salesforce.api.SalesforceException; +import org.apache.camel.component.salesforce.api.dto.composite.SObjectBatch; +import org.junit.Test; + +public class DefaultCompositeApiClientTest { + + private static final String V34_0 = "34.0"; + + private static final String V35_0 = "35.0"; + + @Test + public void shouldAllowNewerPayloadsWhenConfiguredWithNewerVersion() throws SalesforceException { + final SObjectBatch batch = new SObjectBatch(V34_0); + + DefaultCompositeApiClient.checkCompositeBatchVersion(V35_0, batch.getVersion()); + } + + @Test(expected = SalesforceException.class) + public void shouldNotAllowNewerPayloadsWhenConfiguredWithOlderVersion() throws SalesforceException { + final SObjectBatch batch = new SObjectBatch(V35_0); + + DefaultCompositeApiClient.checkCompositeBatchVersion(V34_0, batch.getVersion()); + } + + @Test + public void shouldUseCompositeApiFromVersion34Onwards() throws SalesforceException { + final SObjectBatch batch = new SObjectBatch(V34_0); + + DefaultCompositeApiClient.checkCompositeBatchVersion(V34_0, batch.getVersion()); + } +}