Last active
December 20, 2015 03:09
-
-
Save kaspersorensen/6061171 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| From 10b5b77b3643782bcf240375d4ed82ac3b1e2a96 Mon, 22 Jul 2013 12:04:30 +0200 | |
| From: kaspers <[email protected]> | |
| Date: Mon, 22 Jul 2013 12:03:37 +0200 | |
| Subject: [PATCH] Fixed Salesforce.com UPDATE semantics error when updated ID does not exist. | |
| diff --git a/salesforce/pom.xml b/salesforce/pom.xml | |
| index 1dcd83a..8ebdce8 100644 | |
| --- a/salesforce/pom.xml | |
| +++ b/salesforce/pom.xml | |
| @@ -41,7 +41,7 @@ | |
| <!-- test --> | |
| <dependency> | |
| <groupId>org.slf4j</groupId> | |
| - <artifactId>slf4j-nop</artifactId> | |
| + <artifactId>slf4j-log4j12</artifactId> | |
| <scope>test</scope> | |
| </dependency> | |
| <dependency> | |
| diff --git a/salesforce/src/main/java/org/apache/metamodel/salesforce/SalesforceUpdateCallback.java b/salesforce/src/main/java/org/apache/metamodel/salesforce/SalesforceUpdateCallback.java | |
| index 281276a..21669d3 100644 | |
| --- a/salesforce/src/main/java/org/apache/metamodel/salesforce/SalesforceUpdateCallback.java | |
| +++ b/salesforce/src/main/java/org/apache/metamodel/salesforce/SalesforceUpdateCallback.java | |
| @@ -135,9 +135,26 @@ | |
| logger.debug("Succesfully {}ed record with id={}", action, saveResult.getId()); | |
| successes++; | |
| } else { | |
| + final com.sforce.soap.partner.Error[] errorArray = saveResult.getErrors(); | |
| + | |
| + if (!"insert".equals(action)) { | |
| + boolean onlyMalformedId = true; | |
| + for (com.sforce.soap.partner.Error error : errorArray) { | |
| + if (com.sforce.soap.partner.StatusCode.MALFORMED_ID == error.getStatusCode()) { | |
| + logger.debug("Encountered MALFORMED_ID error for {} action. Ignoring.", action); | |
| + } else { | |
| + onlyMalformedId = false; | |
| + break; | |
| + } | |
| + } | |
| + | |
| + if (onlyMalformedId) { | |
| + return; | |
| + } | |
| + } | |
| + | |
| errors++; | |
| - final com.sforce.soap.partner.Error[] errorArray = saveResult.getErrors(); | |
| for (com.sforce.soap.partner.Error error : errorArray) { | |
| if (firstError == null) { | |
| firstError = error; | |
| diff --git a/salesforce/src/test/java/org/apache/metamodel/salesforce/SalesforceDataContextTest.java b/salesforce/src/test/java/org/apache/metamodel/salesforce/SalesforceDataContextTest.java | |
| index edc911f..361174b 100644 | |
| --- a/salesforce/src/test/java/org/apache/metamodel/salesforce/SalesforceDataContextTest.java | |
| +++ b/salesforce/src/test/java/org/apache/metamodel/salesforce/SalesforceDataContextTest.java | |
| @@ -244,6 +244,15 @@ | |
| assertEquals("Another test value", ds.getRow().getValue(0)); | |
| assertFalse(ds.next()); | |
| ds.close(); | |
| + | |
| + // UPDATE (a record that does not exist) | |
| + | |
| + dc.executeUpdate(new UpdateScript() { | |
| + @Override | |
| + public void run(UpdateCallback callback) { | |
| + callback.update(tableName).where("id").eq("fooooooobaaaaaaaar").value("name", "A test value that should never occur").execute(); | |
| + } | |
| + }); | |
| // DELETE | |
| diff --git a/salesforce/src/test/resources/log4j.xml b/salesforce/src/test/resources/log4j.xml | |
| new file mode 100644 | |
| index 0000000..d46c4d4 | |
| --- /dev/null | |
| +++ b/salesforce/src/test/resources/log4j.xml | |
| @@ -0,0 +1,21 @@ | |
| +<?xml version="1.0" encoding="UTF-8" ?> | |
| +<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> | |
| +<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> | |
| + | |
| + <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> | |
| + <param name="Target" value="System.out" /> | |
| + <layout class="org.apache.log4j.PatternLayout"> | |
| + <param name="ConversionPattern" value="%-5p %d{HH:mm:ss} %c{1} - %m%n" /> | |
| + </layout> | |
| + </appender> | |
| + | |
| + <logger name="org.apache.metamodel"> | |
| + <level value="info" /> | |
| + </logger> | |
| + | |
| + <root> | |
| + <priority value="warn" /> | |
| + <appender-ref ref="consoleAppender" /> | |
| + </root> | |
| + | |
| +</log4j:configuration> | |
| \ No newline at end of file |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment