Skip to content

Commit ac45c6f

Browse files
collect errors for insert and update result; add method to access to them
1 parent f44437f commit ac45c6f

File tree

3 files changed

+56
-1
lines changed

3 files changed

+56
-1
lines changed

src/integration-test/java/com/exacttarget/fuelsdk/ETDataExtensionIntegrationTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.exacttarget.fuelsdk;
22

33
import org.apache.commons.lang.RandomStringUtils;
4+
import org.apache.commons.lang.StringUtils;
45
import org.apache.commons.lang.math.RandomUtils;
56
import org.junit.After;
67
import org.junit.Before;
@@ -23,7 +24,7 @@ public class ETDataExtensionIntegrationTest {
2324
private static final String TARGET_LOCALE = "de-DE";
2425
private static final String LANGUAGE_COLUMN_NAME = "User_Language__c";
2526

26-
private SimpleDateFormat formatter = new SimpleDateFormat("M/dd/yyyy hh:mm:ss a");
27+
private SimpleDateFormat formatter = new SimpleDateFormat("M/dd/yyyy h:mm:ss a");
2728

2829
private ETClient client;
2930

@@ -91,15 +92,18 @@ public void shouldNotInsertRowIfDuplicateKeyIgnoreCase() throws Exception {
9192

9293
ETDataExtensionRow row = new ETDataExtensionRow();
9394
row.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE);
95+
9496
ETResponse<ETDataExtensionRow> response = dataExtension.insert(row);
9597
assertNotNull(response.getRequestId());
9698
assertEquals(OK, response.getStatus());
9799

98100
row = new ETDataExtensionRow();
99101
row.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE.toLowerCase());
102+
100103
response = dataExtension.insert(row);
101104
assertNotNull(response.getRequestId());
102105
assertEquals(ERROR, response.getStatus());
106+
assertTrue(StringUtils.isNotEmpty(response.getResultErrorMessage()));
103107
}
104108

105109
@Test
@@ -121,13 +125,15 @@ public void shouldUpdate() throws Exception {
121125
ETResponse<ETDataExtensionRow> response = dataExtension.insert(insertedRow);
122126
assertNotNull(response.getRequestId());
123127
assertEquals(OK, response.getStatus());
128+
assertTrue(StringUtils.isEmpty(response.getResultErrorMessage()));
124129

125130
insertedRow = new ETDataExtensionRow();
126131
insertedRow.setColumn(LANGUAGE_COLUMN_NAME, TARGET_LOCALE);
127132
insertedRow.setColumn("test column", testColumnValue);
128133
response = dataExtension.insert(insertedRow);
129134
assertNotNull(response.getRequestId());
130135
assertEquals(OK, response.getStatus());
136+
assertTrue(StringUtils.isEmpty(response.getResultErrorMessage()));
131137

132138
List<ETDataExtensionRow> rows = dataExtension.select().getObjects();
133139
assertNotNull(rows);
@@ -157,6 +163,7 @@ public void shouldUpdate() throws Exception {
157163
response = dataExtension.update(originalRow);
158164
assertNotNull(response.getRequestId());
159165
assertEquals(OK, response.getStatus());
166+
assertTrue(StringUtils.isEmpty(response.getResultErrorMessage()));
160167

161168
rows = dataExtension.select().getObjects();
162169
assertNotNull(rows);
@@ -189,6 +196,7 @@ public void shouldNotInsertAndUpdateInvalidDate() throws Exception {
189196
ETResponse<ETDataExtensionRow> response = dataExtension.insert(insertedRow);
190197
assertNotNull(response.getRequestId());
191198
assertEquals(OK, response.getStatus());
199+
assertTrue(StringUtils.isEmpty(response.getResultErrorMessage()));
192200

193201
List<ETDataExtensionRow> rows = dataExtension.select().getObjects();
194202
assertNotNull(rows);
@@ -202,6 +210,7 @@ public void shouldNotInsertAndUpdateInvalidDate() throws Exception {
202210
response = dataExtension.insert(insertedRow);
203211
assertNotNull(response.getRequestId());
204212
assertEquals(ERROR, response.getStatus());
213+
assertTrue(StringUtils.isNotEmpty(response.getResultErrorMessage()));
205214

206215
rows = dataExtension.select().getObjects();
207216
assertNotNull(rows);
@@ -213,6 +222,7 @@ public void shouldNotInsertAndUpdateInvalidDate() throws Exception {
213222
response = dataExtension.update(updatedRow);
214223
assertNotNull(response.getRequestId());
215224
assertEquals(OK, response.getStatus());
225+
assertTrue(StringUtils.isEmpty(response.getResultErrorMessage()));
216226

217227
rows = dataExtension.select().getObjects();
218228
assertNotNull(rows);
@@ -225,6 +235,7 @@ public void shouldNotInsertAndUpdateInvalidDate() throws Exception {
225235
response = dataExtension.update(updatedRow);
226236
assertNotNull(response.getRequestId());
227237
assertEquals(ERROR, response.getStatus());
238+
assertTrue(StringUtils.isNotEmpty(response.getResultErrorMessage()));
228239

229240
rows = dataExtension.select().getObjects();
230241
assertNotNull(rows);

src/main/java/com/exacttarget/fuelsdk/ETResponse.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ public String getErrorMessage() {
112112
return null;
113113
}
114114

115+
public String getResultErrorMessage() {
116+
if (individualResults != null && !individualResults.isEmpty() && individualResults.get(0) != null) {
117+
return individualResults.get(0).getErrorMessage();
118+
}
119+
return null;
120+
}
121+
115122
public void setResponseMessage(String responseMessage) {
116123
if (batchResult == null) {
117124
batchResult = new ETResult<T>();

src/main/java/com/exacttarget/fuelsdk/ETSoapObject.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@
4747
import com.exacttarget.fuelsdk.internal.CreateResponse;
4848
import com.exacttarget.fuelsdk.internal.CreateResult;
4949
import com.exacttarget.fuelsdk.internal.DataExtension;
50+
import com.exacttarget.fuelsdk.internal.DataExtensionCreateResult;
5051
import com.exacttarget.fuelsdk.internal.DataExtensionField;
5152
import com.exacttarget.fuelsdk.internal.DataExtensionFieldType;
5253
import com.exacttarget.fuelsdk.internal.DataExtensionObject;
54+
import com.exacttarget.fuelsdk.internal.DataExtensionUpdateResult;
5355
import com.exacttarget.fuelsdk.internal.DataFolder;
5456
import com.exacttarget.fuelsdk.internal.DeleteOptions;
5557
import com.exacttarget.fuelsdk.internal.DeleteRequest;
@@ -82,6 +84,7 @@
8284
import org.apache.commons.beanutils.ConvertUtilsBean;
8385
import org.apache.commons.beanutils.Converter;
8486
import org.apache.commons.beanutils.PropertyUtils;
87+
import org.apache.commons.lang.StringUtils;
8588
import org.apache.log4j.Logger;
8689

8790
import javax.xml.bind.annotation.XmlElement;
@@ -456,6 +459,7 @@ public static <T extends ETSoapObject> ETResponse<T> create(ETClient client,
456459
result.setResponseCode(createResult.getStatusCode());
457460
result.setResponseMessage(createResult.getStatusMessage());
458461
result.setErrorCode(createResult.getErrorCode());
462+
result.setErrorMessage(buildErrorMessage(createResult));
459463
if (result.getResponseCode().equals("OK")) { // XXX?
460464
result.setObject(externalObject);
461465
}
@@ -465,6 +469,22 @@ public static <T extends ETSoapObject> ETResponse<T> create(ETClient client,
465469
return response;
466470
}
467471

472+
private static String buildErrorMessage(CreateResult createResult) {
473+
StringBuilder errorMessage = new StringBuilder();
474+
475+
if (createResult instanceof DataExtensionCreateResult) {
476+
DataExtensionCreateResult dataExtensionCreateResult = ((DataExtensionCreateResult) createResult);
477+
errorMessage
478+
.append(StringUtils.defaultString(dataExtensionCreateResult.getErrorMessage(), StringUtils.EMPTY))
479+
.append(" ")
480+
.append(dataExtensionCreateResult.getKeyErrors() != null ? dataExtensionCreateResult.getKeyErrors().toString() : StringUtils.EMPTY)
481+
.append(" ")
482+
.append(dataExtensionCreateResult.getValueErrors() != null ? dataExtensionCreateResult.getValueErrors().toString() : StringUtils.EMPTY);
483+
}
484+
485+
return StringUtils.trim(errorMessage.toString());
486+
}
487+
468488
public static <T extends ETSoapObject> ETResponse<T> update(ETClient client,
469489
List<T> objects)
470490
throws ETSdkException
@@ -570,6 +590,7 @@ public static <T extends ETSoapObject> ETResponse<T> update(ETClient client,
570590
result.setResponseCode(updateResult.getStatusCode());
571591
result.setResponseMessage(updateResult.getStatusMessage());
572592
result.setErrorCode(updateResult.getErrorCode());
593+
result.setErrorMessage(buildErrorMessage(updateResult));
573594
if (result.getResponseCode().equals("OK")) { // XXX?
574595
result.setObject(externalObject);
575596
}
@@ -579,6 +600,22 @@ public static <T extends ETSoapObject> ETResponse<T> update(ETClient client,
579600
return response;
580601
}
581602

603+
private static String buildErrorMessage(UpdateResult updateResult) {
604+
StringBuilder errorMessage = new StringBuilder();
605+
606+
if (updateResult instanceof DataExtensionUpdateResult) {
607+
DataExtensionUpdateResult dataExtensionUpdateResult = ((DataExtensionUpdateResult) updateResult);
608+
errorMessage
609+
.append(StringUtils.defaultString(dataExtensionUpdateResult.getErrorMessage(), StringUtils.EMPTY))
610+
.append(" ")
611+
.append(dataExtensionUpdateResult.getKeyErrors() != null ? dataExtensionUpdateResult.getKeyErrors().toString() : StringUtils.EMPTY)
612+
.append(" ")
613+
.append(dataExtensionUpdateResult.getValueErrors() != null ? dataExtensionUpdateResult.getValueErrors().toString() : StringUtils.EMPTY);
614+
}
615+
616+
return StringUtils.trim(errorMessage.toString());
617+
}
618+
582619
public static <T extends ETSoapObject> ETResponse<T> delete(ETClient client,
583620
List<T> objects)
584621
throws ETSdkException

0 commit comments

Comments
 (0)