From 92370cfc54002d6ec3c9ef6c66642e6a6ccc6577 Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Mon, 26 Jan 2026 15:26:35 +0000 Subject: [PATCH 1/6] feature: add type adapter for gson deserialization of the address properties of the order Previously, address order was a string, and some objects might be parsed as such instead of the new list of addresses --- .../adapters/AddressListAdapter.java | 60 +++++ .../java/com/riskified/models/BaseOrder.java | 4 + .../adapters/AddressListAdapterTest.java | 209 ++++++++++++++++++ 3 files changed, 273 insertions(+) create mode 100644 riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapter.java create mode 100644 riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java diff --git a/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapter.java b/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapter.java new file mode 100644 index 00000000..7ecd75a2 --- /dev/null +++ b/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapter.java @@ -0,0 +1,60 @@ +package com.riskified.adapters; + +import com.google.gson.*; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.riskified.models.Address; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.List; + +/** + * Gson TypeAdapter for List<Address> that handles backward compatibility. + * + *

+ * Supports two JSON formats: + *

+ * + *

+ * During deserialization, single address objects are automatically wrapped in a + * list. + * Serialization always outputs the current array format. + */ +public class AddressListAdapter extends TypeAdapter> { + private static final Type ADDRESS_LIST_TYPE = new TypeToken>() { + }.getType(); + private final Gson gson = new GsonBuilder() + .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) + .create(); + + @Override + public void write(JsonWriter out, List

value) throws IOException { + gson.toJson(value, ADDRESS_LIST_TYPE, out); + } + + @Override + public List
read(JsonReader reader) throws IOException, JsonParseException { + JsonElement element = JsonParser.parseReader(reader); + + if (element.isJsonNull()) { + return null; + } + + if (element.isJsonArray()) { + return gson.fromJson(element, ADDRESS_LIST_TYPE); + } else if (element.isJsonObject()) { + return Collections.singletonList(gson.fromJson(element, Address.class)); + } + + throw new JsonParseException( + "Expected array or object for address field, got: " + element.getClass().getSimpleName()); + + } +} diff --git a/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java b/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java index 73d15c6c..d7c606b3 100644 --- a/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java +++ b/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java @@ -2,6 +2,8 @@ import java.util.*; +import com.google.gson.annotations.JsonAdapter; +import com.riskified.adapters.AddressListAdapter; import com.riskified.validations.*; public abstract class BaseOrder implements IValidated { @@ -54,7 +56,9 @@ public abstract class BaseOrder implements IValidated { private String vendorId; private String vendorName; private String vendorIntegrationType; + @JsonAdapter(AddressListAdapter.class) private List
shippingAddress; + @JsonAdapter(AddressListAdapter.class) private List
billingAddress; private List paymentDetails; private ClientDetails clientDetails; diff --git a/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java new file mode 100644 index 00000000..e96e54c7 --- /dev/null +++ b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java @@ -0,0 +1,209 @@ +package com.riskified.adapters; + +import com.google.gson.*; +import com.riskified.models.Address; +import com.riskified.models.Order; +import org.junit.Before; +import org.junit.Test; + +import java.util.Arrays; + +import static org.junit.Assert.*; + +/** + * Unit tests for AddressListAdapter to verify backward compatibility handling. + */ +public class AddressListAdapterTest { + + private Gson gson; + + @Before + public void setUp() { + gson = new GsonBuilder() + .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) + .create(); + } + + @Test + public void testLegacyFormatSingleObject() { + // Legacy JSON with single address object + String json = "{\"id\":\"order-123\",\"email\":\"customer@example.com\"," + + "\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\"," + + "\"address1\":\"123 Main St\",\"city\":\"New York\",\"country\":\"US\",\"phone\":\"555-1234\"}}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should have exactly 1 element", 1, order.getShippingAddress().size()); + + Address address = order.getShippingAddress().get(0); + assertEquals("First name should match", "John", address.getFirstName()); + assertEquals("Last name should match", "Doe", address.getLastName()); + assertEquals("Address1 should match", "123 Main St", address.getAddress1()); + assertEquals("City should match", "New York", address.getCity()); + assertEquals("Country should match", "US", address.getCountry()); + assertEquals("Phone should match", "555-1234", address.getPhone()); + } + + @Test + public void testCurrentFormatArray() { + // Current JSON with address array + String json = "{\"id\":\"order-456\",\"email\":\"customer@example.com\"," + + "\"shipping_address\":[{\"first_name\":\"Jane\",\"last_name\":\"Smith\"," + + "\"address1\":\"456 Oak Ave\",\"city\":\"Los Angeles\",\"country\":\"US\",\"phone\":\"555-5678\"}]}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should have exactly 1 element", 1, order.getShippingAddress().size()); + + Address address = order.getShippingAddress().get(0); + assertEquals("First name should match", "Jane", address.getFirstName()); + assertEquals("Last name should match", "Smith", address.getLastName()); + assertEquals("Address1 should match", "456 Oak Ave", address.getAddress1()); + assertEquals("City should match", "Los Angeles", address.getCity()); + assertEquals("Country should match", "US", address.getCountry()); + assertEquals("Phone should match", "555-5678", address.getPhone()); + } + + @Test + public void testCurrentFormatMultipleAddresses() { + // Current JSON with multiple addresses + String json = "{\"id\":\"order-789\",\"email\":\"customer@example.com\"," + + "\"shipping_address\":[" + + "{\"first_name\":\"Alice\",\"last_name\":\"Johnson\",\"address1\":\"789 Pine Rd\",\"city\":\"Chicago\",\"country\":\"US\",\"phone\":\"555-1111\"}," + + "{\"first_name\":\"Bob\",\"last_name\":\"Williams\",\"address1\":\"321 Elm St\",\"city\":\"Boston\",\"country\":\"US\",\"phone\":\"555-2222\"}" + + "]}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should have exactly 2 elements", 2, order.getShippingAddress().size()); + + Address address1 = order.getShippingAddress().get(0); + assertEquals("First address first name should match", "Alice", address1.getFirstName()); + assertEquals("First address address1 should match", "789 Pine Rd", address1.getAddress1()); + + Address address2 = order.getShippingAddress().get(1); + assertEquals("Second address first name should match", "Bob", address2.getFirstName()); + assertEquals("Second address address1 should match", "321 Elm St", address2.getAddress1()); + } + + @Test + public void testNullShippingAddress() { + // JSON with null shipping address + String json = "{\"id\":\"order-999\",\"email\":\"customer@example.com\",\"shipping_address\":null}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNull("Shipping address should be null", order.getShippingAddress()); + } + + @Test + public void testMissingShippingAddress() { + // JSON without shipping_address field + String json = "{\"id\":\"order-888\",\"email\":\"customer@example.com\"}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNull("Shipping address should be null when field is missing", order.getShippingAddress()); + } + + @Test + public void testMixedShippingAndbillingAddresses() { + // JSON with both shipping and billing addresses in different formats + String json = "{\"id\":\"order-777\",\"email\":\"customer@example.com\"," + + "\"shipping_address\":{\"first_name\":\"Charlie\",\"last_name\":\"Brown\",\"address1\":\"111 Maple Dr\",\"city\":\"Seattle\",\"country\":\"US\",\"phone\":\"555-3333\"}," + + "\"billing_address\":[{\"first_name\":\"Diana\",\"last_name\":\"Davis\",\"address1\":\"222 Birch Ln\",\"city\":\"Portland\",\"country\":\"US\",\"phone\":\"555-4444\"}]}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + + // Verify shipping address (legacy format - single object) + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should have exactly 1 element", 1, order.getShippingAddress().size()); + assertEquals("Shipping address first name should match", "Charlie", order.getShippingAddress().get(0).getFirstName()); + + // Verify billing address (current format - array) + assertNotNull("Billing address should not be null", order.getBillingAddress()); + assertEquals("Billing address should have exactly 1 element", 1, order.getBillingAddress().size()); + assertEquals("Billing address first name should match", "Diana", order.getBillingAddress().get(0).getFirstName()); + } + + @Test + public void testRoundTripSerialization() { + // Create an order with addresses + Order order = new Order(); + order.setId("order-555"); + order.setEmail("test@example.com"); + + Address address = new Address("Test", "User", "999 Test St", "Testville", "555-9999", "US"); + + order.setShippingAddress(Arrays.asList(address)); + + // Serialize to JSON + String json = gson.toJson(order); + + // Verify it's in array format (not object format) + assertTrue("Serialized JSON should contain shipping_address as array", json.contains("\"shipping_address\":[{")); + assertFalse("Serialized JSON should NOT have shipping_address as direct object", + json.matches(".*\"shipping_address\":\\{\"first_name\".*")); + + // Deserialize back + Order deserialized = gson.fromJson(json, Order.class); + + assertNotNull("Deserialized order should not be null", deserialized); + assertNotNull("Deserialized shipping address should not be null", deserialized.getShippingAddress()); + assertEquals("Deserialized shipping address should have 1 element", 1, deserialized.getShippingAddress().size()); + assertEquals("First name should match after round-trip", "Test", deserialized.getShippingAddress().get(0).getFirstName()); + } + + @Test(expected = JsonParseException.class) + public void testInvalidTypeThrowsException() { + // JSON with invalid type for shipping_address (string instead of object/array) + String json = "{\"id\":\"order-666\",\"email\":\"customer@example.com\",\"shipping_address\":\"invalid\"}"; + + // This should throw JsonParseException due to invalid format + gson.fromJson(json, Order.class); + } + + @Test(expected = JsonParseException.class) + public void testInvalidNumberTypeThrowsException() { + // JSON with invalid type for shipping_address (number instead of object/array) + String json = "{\"id\":\"order-333\",\"email\":\"customer@example.com\",\"shipping_address\":12345}"; + + // This should throw JsonParseException due to invalid format + gson.fromJson(json, Order.class); + } + + @Test + public void testEmptyArray() { + // JSON with empty array for shipping_address + String json = "{\"id\":\"order-444\",\"email\":\"customer@example.com\",\"shipping_address\":[]}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should be empty list", 0, order.getShippingAddress().size()); + } + + @Test + public void testEmptyObjectInArray() { + // JSON with empty address object in array + String json = "{\"id\":\"order-222\",\"email\":\"customer@example.com\",\"shipping_address\":[{}]}"; + + Order order = gson.fromJson(json, Order.class); + + assertNotNull("Order should not be null", order); + assertNotNull("Shipping address should not be null", order.getShippingAddress()); + assertEquals("Shipping address should have 1 element", 1, order.getShippingAddress().size()); + assertNotNull("Address object should not be null", order.getShippingAddress().get(0)); + } +} From b93ae847869fa58c627ee454e30defe7b41f72d5 Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Mon, 26 Jan 2026 15:27:12 +0000 Subject: [PATCH 2/6] upkeep: update version for test --- riskified-sdk/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riskified-sdk/pom.xml b/riskified-sdk/pom.xml index 269afe51..6af68b3b 100644 --- a/riskified-sdk/pom.xml +++ b/riskified-sdk/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.riskified riskified-sdk - v5.0.0 + v5.0.1-SNAPHOT Riskified SDK Riskified rest api SDK for java https://www.riskified.com From 086553260dd82b55810f6e59cc20a07f6b2a578b Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Mon, 26 Jan 2026 16:11:44 +0000 Subject: [PATCH 3/6] refactor: change type adaper to be generated by factory to integrate gson configurations --- .../adapters/AddressListAdapterFactory.java | 85 +++++++++++++++++++ .../java/com/riskified/models/BaseOrder.java | 6 +- .../adapters/AddressListAdapterTest.java | 3 +- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapterFactory.java diff --git a/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapterFactory.java b/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapterFactory.java new file mode 100644 index 00000000..ebf138d5 --- /dev/null +++ b/riskified-sdk/src/main/java/com/riskified/adapters/AddressListAdapterFactory.java @@ -0,0 +1,85 @@ +package com.riskified.adapters; + +import com.google.gson.*; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.riskified.models.Address; + +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.List; + +/** + * Gson TypeAdapterFactory for List<Address> that handles backward compatibility. + * + *

+ * This factory creates TypeAdapters that inherit the parent Gson's configuration, + * including field naming policies and custom type adapters. This ensures compatibility + * with user-configured Gson instances. + * + *

+ * Supports two JSON formats: + *

    + *
  • Current: Array of addresses: {@code [{"address1":"..."}, ...]}
  • + *
  • Legacy: Single address object: {@code {"address1":"..."}}
  • + *
+ * + *

+ * During deserialization, single address objects are automatically wrapped in a list. + * Serialization always outputs the current array format. + * + * @since 5.1.0 + */ +public class AddressListAdapterFactory implements TypeAdapterFactory { + + private static final Type ADDRESS_LIST_TYPE = new TypeToken>() { + }.getType(); + + @Override + @SuppressWarnings("unchecked") + public TypeAdapter create(Gson gson, TypeToken type) { + // Only handle List

type + if (!type.equals(TypeToken.get(ADDRESS_LIST_TYPE))) { + return null; + } + + // Return adapter that uses parent Gson configuration + return (TypeAdapter) new AddressListTypeAdapter(gson); + } + + /** + * TypeAdapter for List<Address> that uses parent Gson configuration. + */ + private static class AddressListTypeAdapter extends TypeAdapter> { + private final Gson gson; + + AddressListTypeAdapter(Gson gson) { + this.gson = gson; + } + + @Override + public void write(JsonWriter out, List
value) throws IOException { + gson.toJson(value, ADDRESS_LIST_TYPE, out); + } + + @Override + public List
read(JsonReader in) throws IOException { + JsonElement element = JsonParser.parseReader(in); + + if (element.isJsonNull()) { + return null; + } + + if (element.isJsonArray()) { + return gson.fromJson(element, ADDRESS_LIST_TYPE); + } else if (element.isJsonObject()) { + return Collections.singletonList(gson.fromJson(element, Address.class)); + } + + throw new JsonParseException( + "Expected array or object for address field, got: " + element.getClass().getSimpleName()); + } + } +} diff --git a/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java b/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java index d7c606b3..083663fe 100644 --- a/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java +++ b/riskified-sdk/src/main/java/com/riskified/models/BaseOrder.java @@ -3,7 +3,7 @@ import java.util.*; import com.google.gson.annotations.JsonAdapter; -import com.riskified.adapters.AddressListAdapter; +import com.riskified.adapters.AddressListAdapterFactory; import com.riskified.validations.*; public abstract class BaseOrder implements IValidated { @@ -56,9 +56,9 @@ public abstract class BaseOrder implements IValidated { private String vendorId; private String vendorName; private String vendorIntegrationType; - @JsonAdapter(AddressListAdapter.class) + @JsonAdapter(AddressListAdapterFactory.class) private List
shippingAddress; - @JsonAdapter(AddressListAdapter.class) + @JsonAdapter(AddressListAdapterFactory.class) private List
billingAddress; private List paymentDetails; private ClientDetails clientDetails; diff --git a/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java index e96e54c7..be02438a 100644 --- a/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java +++ b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java @@ -11,7 +11,8 @@ import static org.junit.Assert.*; /** - * Unit tests for AddressListAdapter to verify backward compatibility handling. + * Unit tests for AddressListAdapterFactory to verify backward compatibility handling. + * Tests the factory-created adapter through Order deserialization. */ public class AddressListAdapterTest { From 2d7b43ca200cf83c8673a0841c629f3600e4035b Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Mon, 26 Jan 2026 16:55:13 +0000 Subject: [PATCH 4/6] fix: version typo --- riskified-sdk/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/riskified-sdk/pom.xml b/riskified-sdk/pom.xml index 6af68b3b..4ed0adbd 100644 --- a/riskified-sdk/pom.xml +++ b/riskified-sdk/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.riskified riskified-sdk - v5.0.1-SNAPHOT + 5.0.1-SNAPSHOT Riskified SDK Riskified rest api SDK for java https://www.riskified.com From 35aae2292865a1b05bdf4b6b8160815939723703 Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Mon, 26 Jan 2026 17:00:00 +0000 Subject: [PATCH 5/6] refactor: remove unnecessary comments --- .../adapters/AddressListAdapterTest.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java index be02438a..d013a47f 100644 --- a/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java +++ b/riskified-sdk/src/test/java/com/riskified/adapters/AddressListAdapterTest.java @@ -27,7 +27,6 @@ public void setUp() { @Test public void testLegacyFormatSingleObject() { - // Legacy JSON with single address object String json = "{\"id\":\"order-123\",\"email\":\"customer@example.com\"," + "\"shipping_address\":{\"first_name\":\"John\",\"last_name\":\"Doe\"," + "\"address1\":\"123 Main St\",\"city\":\"New York\",\"country\":\"US\",\"phone\":\"555-1234\"}}"; @@ -49,7 +48,6 @@ public void testLegacyFormatSingleObject() { @Test public void testCurrentFormatArray() { - // Current JSON with address array String json = "{\"id\":\"order-456\",\"email\":\"customer@example.com\"," + "\"shipping_address\":[{\"first_name\":\"Jane\",\"last_name\":\"Smith\"," + "\"address1\":\"456 Oak Ave\",\"city\":\"Los Angeles\",\"country\":\"US\",\"phone\":\"555-5678\"}]}"; @@ -71,7 +69,6 @@ public void testCurrentFormatArray() { @Test public void testCurrentFormatMultipleAddresses() { - // Current JSON with multiple addresses String json = "{\"id\":\"order-789\",\"email\":\"customer@example.com\"," + "\"shipping_address\":[" + "{\"first_name\":\"Alice\",\"last_name\":\"Johnson\",\"address1\":\"789 Pine Rd\",\"city\":\"Chicago\",\"country\":\"US\",\"phone\":\"555-1111\"}," + @@ -95,7 +92,6 @@ public void testCurrentFormatMultipleAddresses() { @Test public void testNullShippingAddress() { - // JSON with null shipping address String json = "{\"id\":\"order-999\",\"email\":\"customer@example.com\",\"shipping_address\":null}"; Order order = gson.fromJson(json, Order.class); @@ -106,7 +102,6 @@ public void testNullShippingAddress() { @Test public void testMissingShippingAddress() { - // JSON without shipping_address field String json = "{\"id\":\"order-888\",\"email\":\"customer@example.com\"}"; Order order = gson.fromJson(json, Order.class); @@ -117,7 +112,6 @@ public void testMissingShippingAddress() { @Test public void testMixedShippingAndbillingAddresses() { - // JSON with both shipping and billing addresses in different formats String json = "{\"id\":\"order-777\",\"email\":\"customer@example.com\"," + "\"shipping_address\":{\"first_name\":\"Charlie\",\"last_name\":\"Brown\",\"address1\":\"111 Maple Dr\",\"city\":\"Seattle\",\"country\":\"US\",\"phone\":\"555-3333\"}," + "\"billing_address\":[{\"first_name\":\"Diana\",\"last_name\":\"Davis\",\"address1\":\"222 Birch Ln\",\"city\":\"Portland\",\"country\":\"US\",\"phone\":\"555-4444\"}]}"; @@ -126,12 +120,10 @@ public void testMixedShippingAndbillingAddresses() { assertNotNull("Order should not be null", order); - // Verify shipping address (legacy format - single object) assertNotNull("Shipping address should not be null", order.getShippingAddress()); assertEquals("Shipping address should have exactly 1 element", 1, order.getShippingAddress().size()); assertEquals("Shipping address first name should match", "Charlie", order.getShippingAddress().get(0).getFirstName()); - // Verify billing address (current format - array) assertNotNull("Billing address should not be null", order.getBillingAddress()); assertEquals("Billing address should have exactly 1 element", 1, order.getBillingAddress().size()); assertEquals("Billing address first name should match", "Diana", order.getBillingAddress().get(0).getFirstName()); @@ -139,7 +131,6 @@ public void testMixedShippingAndbillingAddresses() { @Test public void testRoundTripSerialization() { - // Create an order with addresses Order order = new Order(); order.setId("order-555"); order.setEmail("test@example.com"); @@ -148,15 +139,12 @@ public void testRoundTripSerialization() { order.setShippingAddress(Arrays.asList(address)); - // Serialize to JSON String json = gson.toJson(order); - // Verify it's in array format (not object format) assertTrue("Serialized JSON should contain shipping_address as array", json.contains("\"shipping_address\":[{")); assertFalse("Serialized JSON should NOT have shipping_address as direct object", json.matches(".*\"shipping_address\":\\{\"first_name\".*")); - // Deserialize back Order deserialized = gson.fromJson(json, Order.class); assertNotNull("Deserialized order should not be null", deserialized); @@ -167,7 +155,6 @@ public void testRoundTripSerialization() { @Test(expected = JsonParseException.class) public void testInvalidTypeThrowsException() { - // JSON with invalid type for shipping_address (string instead of object/array) String json = "{\"id\":\"order-666\",\"email\":\"customer@example.com\",\"shipping_address\":\"invalid\"}"; // This should throw JsonParseException due to invalid format @@ -176,7 +163,6 @@ public void testInvalidTypeThrowsException() { @Test(expected = JsonParseException.class) public void testInvalidNumberTypeThrowsException() { - // JSON with invalid type for shipping_address (number instead of object/array) String json = "{\"id\":\"order-333\",\"email\":\"customer@example.com\",\"shipping_address\":12345}"; // This should throw JsonParseException due to invalid format @@ -185,7 +171,6 @@ public void testInvalidNumberTypeThrowsException() { @Test public void testEmptyArray() { - // JSON with empty array for shipping_address String json = "{\"id\":\"order-444\",\"email\":\"customer@example.com\",\"shipping_address\":[]}"; Order order = gson.fromJson(json, Order.class); @@ -197,7 +182,6 @@ public void testEmptyArray() { @Test public void testEmptyObjectInArray() { - // JSON with empty address object in array String json = "{\"id\":\"order-222\",\"email\":\"customer@example.com\",\"shipping_address\":[{}]}"; Order order = gson.fromJson(json, Order.class); From 04be8d5fa31311c4a14c81dcded197a3f697cce6 Mon Sep 17 00:00:00 2001 From: David Ribeiro Date: Tue, 27 Jan 2026 11:29:00 +0000 Subject: [PATCH 6/6] refactor: remove redundant distribution configuration --- riskified-sdk/pom.xml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/riskified-sdk/pom.xml b/riskified-sdk/pom.xml index 4ed0adbd..aab04d24 100644 --- a/riskified-sdk/pom.xml +++ b/riskified-sdk/pom.xml @@ -9,17 +9,6 @@ Riskified rest api SDK for java https://www.riskified.com - - - central - https://central.sonatype.com/api/v1/publisher/deployments/ - - - central - https://central.sonatype.com/api/v1/publisher/deployments/ - - -