Skip to content

Commit e8bbb11

Browse files
Fix parsing custom fields (#51)
1 parent 73929e5 commit e8bbb11

File tree

5 files changed

+27
-6
lines changed

5 files changed

+27
-6
lines changed

src/main/java/com/darksci/pardot/api/request/prospect/ProspectModifyRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public T withProspect(final Prospect prospect) {
6565

6666
// Loop through and set custom fields
6767
if (prospect.getCustomFields() != null) {
68-
for (Map.Entry<String, String> entry: prospect.getCustomFields().entrySet()) {
68+
for (Map.Entry<String, Object> entry: prospect.getCustomFields().entrySet()) {
6969
setParam(entry.getKey(), entry.getValue());
7070
}
7171
}

src/main/java/com/darksci/pardot/api/response/prospect/Prospect.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package com.darksci.pardot.api.response.prospect;
1919

20+
import com.darksci.pardot.api.ParserException;
2021
import com.darksci.pardot.api.parser.PardotBooleanSerializer;
2122
import com.darksci.pardot.api.response.campaign.Campaign;
2223
import com.darksci.pardot.api.response.list.ListSubscription;
@@ -122,7 +123,7 @@ public class Prospect {
122123
private LastActivity lastActivity;
123124

124125
// Custom fields
125-
private Map<String, String> customFields = new HashMap<>();
126+
private Map<String, Object> customFields = new HashMap<>();
126127

127128
// Related Objects
128129
private Campaign campaign;
@@ -347,7 +348,7 @@ public VisitorActivity getLastActivity() {
347348

348349
// Custom fields
349350
@JsonAnyGetter
350-
public Map<String, String> getCustomFields() {
351+
public Map<String, Object> getCustomFields() {
351352
return customFields;
352353
}
353354

@@ -358,11 +359,15 @@ public Map<String, String> getCustomFields() {
358359
* @return Value of the custom field.
359360
*/
360361
public String getCustomField(final String customFieldName) {
361-
return getCustomFields().get(customFieldName);
362+
return String.valueOf(customFields.get(customFieldName));
363+
}
364+
365+
public Map<String, String> getCustomFieldValues(final String customFieldName) {
366+
return (Map<String, String>) customFields.get(customFieldName);
362367
}
363368

364369
@JsonAnySetter
365-
public void setCustomField(final String fieldName, final String fieldValue) {
370+
public void setCustomField(final String fieldName, final Object fieldValue) {
366371
customFields.put(fieldName, fieldValue);
367372
}
368373

src/test/java/com/darksci/pardot/api/PardotClientIntegrationTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@
128128

129129
import java.io.IOException;
130130
import java.io.InputStream;
131+
import java.util.ArrayList;
132+
import java.util.HashMap;
133+
import java.util.Map;
131134
import java.util.Properties;
132135

133136
import static org.junit.Assert.assertEquals;
@@ -1065,6 +1068,14 @@ public void prospectUpsertTest() {
10651068
prospect.setLastName("User");
10661069
prospect.setCity("Some City");
10671070

1071+
java.util.List<String> values = new ArrayList<>();
1072+
values.add("val1");
1073+
values.add("val2");
1074+
Map<String, Object> customFields = new HashMap<>();
1075+
customFields.put("custom", values);
1076+
1077+
prospect.setCustomField("custom", customFields);
1078+
10681079
final ProspectUpsertRequest request = new ProspectUpsertRequest()
10691080
.withProspect(prospect);
10701081

src/test/java/com/darksci/pardot/api/parser/prospect/ProspectReadResponseParserTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,11 @@ private void validateProspect1(final Prospect prospect) {
7474

7575
// Validate custom fields
7676
assertNotNull("Should have non-null custom fields", prospect.getCustomFields());
77-
assertEquals("Should have 2 custom fields", 2, prospect.getCustomFields().size());
77+
assertEquals("Should have 3 custom fields", 3, prospect.getCustomFields().size());
7878
assertEquals("Should have first custom field value", "my custom field value", prospect.getCustomField("MyCustom_Field"));
7979
assertEquals("Should have second custom field value", "my other custom field value", prospect.getCustomField("MyOtherCustom_Field"));
80+
assertEquals("Should have object custom field value", "{value=abc}", prospect.getCustomField("Add_Prospect01"));
81+
assertEquals("Should have object custom field values", "abc", prospect.getCustomFieldValues("Add_Prospect01").get("value"));
8082

8183
// Validate assigned To user
8284
assertNotNull("Assigned To is not null", prospect.getAssignedTo());

src/test/resources/mockResponses/prospectRead.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@
4646
<is_starred></is_starred>
4747
<created_at>2017-08-11 21:40:25</created_at>
4848
<updated_at>2017-08-11 21:40:25</updated_at>
49+
<Add_Prospect01>
50+
<value>abc</value>
51+
</Add_Prospect01>
4952
<campaign>
5053
<id>423</id>
5154
<name>Website Tracking</name>

0 commit comments

Comments
 (0)