private SourceSepaDebitData() { super(); addStandardFields( FIELD_BANK_CODE, FIELD_BRANCH_CODE, FIELD_COUNTRY, FIELD_FINGERPRINT, FIELD_LAST4, FIELD_MANDATE_REFERENCE, FIELD_MANDATE_URL); }
@Nullable public static SourceSepaDebitData fromJson(JSONObject jsonObject) { if (jsonObject == null) { return null; } SourceSepaDebitData sepaData = new SourceSepaDebitData(); sepaData.setBankCode(optString(jsonObject, FIELD_BANK_CODE)) .setBranchCode(optString(jsonObject, FIELD_BRANCH_CODE)) .setCountry(optString(jsonObject, FIELD_COUNTRY)) .setFingerPrint(optString(jsonObject, FIELD_FINGERPRINT)) .setLast4(optString(jsonObject, FIELD_LAST4)) .setMandateReference(optString(jsonObject, FIELD_MANDATE_REFERENCE)) .setMandateUrl(optString(jsonObject, FIELD_MANDATE_URL)); Map<String, Object> nonStandardFields = jsonObjectToMapWithoutKeys(jsonObject, sepaData.mStandardFields); if (nonStandardFields != null) { sepaData.setAdditionalFields(nonStandardFields); } return sepaData; }
@Test public void fromJson_withExampleData_returnsExpectedObject() { SourceSepaDebitData sepaData = SourceSepaDebitData.fromString(EXAMPLE_SEPA_JSON_DATA); assertNotNull(sepaData); assertEquals("37040044", sepaData.getBankCode()); assertEquals("R8MJxzkSUv1Kv07L", sepaData.getFingerPrint()); assertEquals("CK4K2GFVPOVR4T5B", sepaData.getMandateReference()); assertEquals("DE", sepaData.getCountry()); assertEquals("3000", sepaData.getLast4()); assertEquals(MANDATE_URL, sepaData.getMandateUrl()); assertNull(sepaData.getBranchCode()); } }
@Nullable @VisibleForTesting static SourceSepaDebitData fromString(String jsonString) { try { return fromJson(new JSONObject(jsonString)); } catch (JSONException badJson) { return null; } }
case SEPA_DEBIT: return type.cast( SourceSepaDebitData.fromJson(jsonObject.optJSONObject(SEPA_DEBIT))); default: return null;