From 714d48695c6bce1487e643118302bad50da1770b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Sun, 17 Jun 2018 17:01:26 +0200 Subject: [PATCH 01/13] build UserContext non-static (bunq/sdk_java#93) UserContext building without static references, backwards compatible --- .../com/bunq/sdk/context/BunqContext.java | 3 +- .../com/bunq/sdk/context/SessionContext.java | 1 - .../com/bunq/sdk/context/UserContext.java | 48 +++++++------------ .../sdk/model/core/UserContextHelper.java | 47 ++++++++++++++++++ .../com/bunq/sdk/context/UserContextTest.java | 19 ++++++++ 5 files changed, 85 insertions(+), 33 deletions(-) create mode 100644 src/main/java/com/bunq/sdk/model/core/UserContextHelper.java create mode 100644 src/test/java/com/bunq/sdk/context/UserContextTest.java diff --git a/src/main/java/com/bunq/sdk/context/BunqContext.java b/src/main/java/com/bunq/sdk/context/BunqContext.java index 2f758c42..b6ddbffe 100644 --- a/src/main/java/com/bunq/sdk/context/BunqContext.java +++ b/src/main/java/com/bunq/sdk/context/BunqContext.java @@ -15,8 +15,7 @@ public final class BunqContext { public static void loadApiContext(ApiContext apiContext) { BunqContext.apiContext = apiContext; - BunqContext.userContext = new UserContext(apiContext.getSessionContext().getUserId()); - BunqContext.userContext.initMainMonetaryAccount(); + BunqContext.userContext = new UserContext(apiContext); } public static ApiContext getApiContext() { diff --git a/src/main/java/com/bunq/sdk/context/SessionContext.java b/src/main/java/com/bunq/sdk/context/SessionContext.java index d44b1f05..fb43dee0 100644 --- a/src/main/java/com/bunq/sdk/context/SessionContext.java +++ b/src/main/java/com/bunq/sdk/context/SessionContext.java @@ -101,5 +101,4 @@ Date getExpiryTime() { public Integer getUserId() { return userId; } - } diff --git a/src/main/java/com/bunq/sdk/context/UserContext.java b/src/main/java/com/bunq/sdk/context/UserContext.java index a5c18777..087297bc 100644 --- a/src/main/java/com/bunq/sdk/context/UserContext.java +++ b/src/main/java/com/bunq/sdk/context/UserContext.java @@ -2,6 +2,7 @@ import com.bunq.sdk.exception.BunqException; import com.bunq.sdk.model.core.BunqModel; +import com.bunq.sdk.model.core.UserContextHelper; import com.bunq.sdk.model.generated.endpoint.MonetaryAccountBank; import com.bunq.sdk.model.generated.endpoint.User; import com.bunq.sdk.model.generated.endpoint.UserCompany; @@ -18,54 +19,41 @@ public class UserContext { private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND = "No active monetary account found."; private static final String ERROR_PRIMARY_MONETARY_ACCOUNT_IS_NOT_SET = "Primary monetaryAccount is not set."; - private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; - private static final int INDEX_FIRST = 0; - + private final ApiContext apiContext; private UserCompany userCompany; private UserPerson userPerson; private MonetaryAccountBank primaryMonetaryAccountBank; - private Integer userId; - - public UserContext(Integer userId) { - this.setUser(this.getUserObject()); - this.userId = userId; - } - private BunqModel getUserObject() { - return User.list().getValue().get(INDEX_FIRST).getReferencedObject(); + public UserContext(ApiContext apiContext) { + this.apiContext = apiContext; + refreshContext(); } - private void setUser(BunqModel user) { - if (user instanceof UserPerson) { - this.userPerson = (UserPerson) user; - } else if (user instanceof UserCompany) { - this.userCompany = (UserCompany) user; + private void initUser(User user) { + if (user!=null && user.getUserPerson()!=null) { + this.userPerson = user.getUserPerson(); + } else if (user!=null && user.getUserCompany()!=null) { + this.userCompany = user.getUserCompany(); } else { throw new BunqException(ERROR_UNEXPECTED_USER_INSTANCE); } } - public void initMainMonetaryAccount() { - List allMonetaryAccount = MonetaryAccountBank.list().getValue(); - - for (MonetaryAccountBank monetaryAccountBank : allMonetaryAccount) { - if (monetaryAccountBank.getStatus().equals(MONETARY_ACCOUNT_STATUS_ACTIVE)) { - this.primaryMonetaryAccountBank = monetaryAccountBank; - - return; - } + private void initMainMonetaryAccount(MonetaryAccountBank monetaryAccountBank) { + if(monetaryAccountBank==null) { + throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); } - - throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); + this.primaryMonetaryAccountBank = monetaryAccountBank; } public void refreshContext() { - this.setUser(this.getUserObject()); - this.initMainMonetaryAccount(); + UserContextHelper helper = new UserContextHelper(this.apiContext); + this.initUser(helper.getFirstUser()); + this.initMainMonetaryAccount(helper.getFirstActiveMonetaryAccountBank(getUserId())); } public Integer getUserId() { - return this.userId; + return this.apiContext.getSessionContext().getUserId(); } public boolean isOnlyUserPersonSet() { diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java new file mode 100644 index 00000000..83221c3f --- /dev/null +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -0,0 +1,47 @@ +package com.bunq.sdk.model.core; + +import com.bunq.sdk.context.ApiContext; +import com.bunq.sdk.http.ApiClient; +import com.bunq.sdk.http.BunqResponse; +import com.bunq.sdk.http.BunqResponseRaw; +import com.bunq.sdk.model.generated.endpoint.MonetaryAccountBank; +import com.bunq.sdk.model.generated.endpoint.User; + +import java.util.List; + +public class UserContextHelper extends BunqModel { + private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; + private static final int INDEX_FIRST = 0; + + private final ApiClient apiClient; + + public UserContextHelper(ApiContext apiContext) { + this.apiClient = new ApiClient(apiContext); + } + + private BunqResponseRaw getRawResponse(String url) { + return this.apiClient.get(url, null, null); + } + + public User getFirstUser() { + BunqResponseRaw responseRaw = getRawResponse("user"); + BunqResponse> response = fromJsonList(User.class, responseRaw); + return response.getValue().get(INDEX_FIRST); + } + + public MonetaryAccountBank getFirstActiveMonetaryAccountBank(Integer userId) { + BunqResponseRaw responseRaw = getRawResponse(String.format("user/%s/monetary-account-bank", userId)); + BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, MonetaryAccountBank.class.getSimpleName()); + for (MonetaryAccountBank monetaryAccountBank : response.getValue()) { + if (monetaryAccountBank.getStatus().equals(MONETARY_ACCOUNT_STATUS_ACTIVE)) { + return monetaryAccountBank; + } + } + return null; + } + + @Override + public boolean isAllFieldNull() { + return true; + } +} diff --git a/src/test/java/com/bunq/sdk/context/UserContextTest.java b/src/test/java/com/bunq/sdk/context/UserContextTest.java new file mode 100644 index 00000000..2c631976 --- /dev/null +++ b/src/test/java/com/bunq/sdk/context/UserContextTest.java @@ -0,0 +1,19 @@ +package com.bunq.sdk.context; + +import com.bunq.sdk.BunqSdkTestBase; +import org.junit.Test; + +import static org.junit.Assert.*; + +public class UserContextTest extends BunqSdkTestBase { + + @Test + public void testConstruct() { + ApiContext context = getApiContext(); + + UserContext sut = new UserContext(context); + + assertNotNull(sut.getUserId()); + assertNotNull(sut.getMainMonetaryAccountId()); + } +} \ No newline at end of file From 20c7811bcfbf1e566f730dcb11f1366152309ec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Sun, 17 Jun 2018 21:43:29 +0200 Subject: [PATCH 02/13] processed review feedback (bunq/sdk_java#93) --- .../com/bunq/sdk/context/UserContext.java | 2 +- .../sdk/model/core/UserContextHelper.java | 22 ++++++++++--------- .../com/bunq/sdk/context/UserContextTest.java | 4 ++-- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/bunq/sdk/context/UserContext.java b/src/main/java/com/bunq/sdk/context/UserContext.java index 087297bc..98084e2d 100644 --- a/src/main/java/com/bunq/sdk/context/UserContext.java +++ b/src/main/java/com/bunq/sdk/context/UserContext.java @@ -40,7 +40,7 @@ private void initUser(User user) { } private void initMainMonetaryAccount(MonetaryAccountBank monetaryAccountBank) { - if(monetaryAccountBank==null) { + if(monetaryAccountBank == null) { throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); } this.primaryMonetaryAccountBank = monetaryAccountBank; diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 83221c3f..abd6a273 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -11,7 +11,8 @@ public class UserContextHelper extends BunqModel { private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; - private static final int INDEX_FIRST = 0; + private static final String USER_ENDPOINT_URL_LISTING = "user"; + private static final String MONETARY_ENDPOINT_URL_READ = "user/%s/monetary-account-bank/%s"; private final ApiClient apiClient; @@ -24,20 +25,21 @@ private BunqResponseRaw getRawResponse(String url) { } public User getFirstUser() { - BunqResponseRaw responseRaw = getRawResponse("user"); + BunqResponseRaw responseRaw = getRawResponse(USER_ENDPOINT_URL_LISTING); BunqResponse> response = fromJsonList(User.class, responseRaw); - return response.getValue().get(INDEX_FIRST); + + + return response.getValue().stream().findFirst().orElse(null); } public MonetaryAccountBank getFirstActiveMonetaryAccountBank(Integer userId) { - BunqResponseRaw responseRaw = getRawResponse(String.format("user/%s/monetary-account-bank", userId)); + BunqResponseRaw responseRaw = getRawResponse(String.format(MONETARY_ENDPOINT_URL_READ, userId)); BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, MonetaryAccountBank.class.getSimpleName()); - for (MonetaryAccountBank monetaryAccountBank : response.getValue()) { - if (monetaryAccountBank.getStatus().equals(MONETARY_ACCOUNT_STATUS_ACTIVE)) { - return monetaryAccountBank; - } - } - return null; + + return response.getValue().stream() + .filter(monetaryAccountBank->monetaryAccountBank.getStatus().equals(MONETARY_ACCOUNT_STATUS_ACTIVE)) + .findFirst() + .orElse(null); } @Override diff --git a/src/test/java/com/bunq/sdk/context/UserContextTest.java b/src/test/java/com/bunq/sdk/context/UserContextTest.java index 2c631976..2304d9e9 100644 --- a/src/test/java/com/bunq/sdk/context/UserContextTest.java +++ b/src/test/java/com/bunq/sdk/context/UserContextTest.java @@ -3,7 +3,7 @@ import com.bunq.sdk.BunqSdkTestBase; import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertNotNull; public class UserContextTest extends BunqSdkTestBase { @@ -16,4 +16,4 @@ public void testConstruct() { assertNotNull(sut.getUserId()); assertNotNull(sut.getMainMonetaryAccountId()); } -} \ No newline at end of file +} From aa9aae0d4c6824cda2723e5bc8099495e485203b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Mon, 18 Jun 2018 08:44:03 +0200 Subject: [PATCH 03/13] fix tests on missing arg (bunq/sdk_java#93) --- src/main/java/com/bunq/sdk/model/core/UserContextHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index abd6a273..2400afca 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -12,7 +12,7 @@ public class UserContextHelper extends BunqModel { private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; private static final String USER_ENDPOINT_URL_LISTING = "user"; - private static final String MONETARY_ENDPOINT_URL_READ = "user/%s/monetary-account-bank/%s"; + private static final String MONETARY_ENDPOINT_URL_READ = "user/%s/monetary-account-bank"; private final ApiClient apiClient; From 20304a2c4005e81238748a69f899d80c74b6f15a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Mon, 18 Jun 2018 10:09:31 +0200 Subject: [PATCH 04/13] feedback, removed null-checks (bunq/sdk_java#93) less complexity, risk for nullpointers is the same as before --- src/main/java/com/bunq/sdk/context/UserContext.java | 4 ++-- src/main/java/com/bunq/sdk/model/core/UserContextHelper.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/bunq/sdk/context/UserContext.java b/src/main/java/com/bunq/sdk/context/UserContext.java index 98084e2d..6115e370 100644 --- a/src/main/java/com/bunq/sdk/context/UserContext.java +++ b/src/main/java/com/bunq/sdk/context/UserContext.java @@ -30,9 +30,9 @@ public UserContext(ApiContext apiContext) { } private void initUser(User user) { - if (user!=null && user.getUserPerson()!=null) { + if (user.getUserPerson()!=null) { this.userPerson = user.getUserPerson(); - } else if (user!=null && user.getUserCompany()!=null) { + } else if (user.getUserCompany()!=null) { this.userCompany = user.getUserCompany(); } else { throw new BunqException(ERROR_UNEXPECTED_USER_INSTANCE); diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 2400afca..2cd0919d 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -28,7 +28,6 @@ public User getFirstUser() { BunqResponseRaw responseRaw = getRawResponse(USER_ENDPOINT_URL_LISTING); BunqResponse> response = fromJsonList(User.class, responseRaw); - return response.getValue().stream().findFirst().orElse(null); } From 3f93d18456e4eb6c0b16b23ec895287b8b0b35a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Mon, 18 Jun 2018 10:24:35 +0200 Subject: [PATCH 05/13] feedback, error handling, spacing (bunq/sdk_java#93) --- .../com/bunq/sdk/context/UserContext.java | 12 +++------ .../sdk/model/core/UserContextHelper.java | 25 +++++++++++-------- 2 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/bunq/sdk/context/UserContext.java b/src/main/java/com/bunq/sdk/context/UserContext.java index 6115e370..d24439ba 100644 --- a/src/main/java/com/bunq/sdk/context/UserContext.java +++ b/src/main/java/com/bunq/sdk/context/UserContext.java @@ -16,8 +16,7 @@ public class UserContext { * Error constants. */ private static final String ERROR_UNEXPECTED_USER_INSTANCE = "\"%s\" is unexpected user instance."; - private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND = "No active monetary account found."; - private static final String ERROR_PRIMARY_MONETARY_ACCOUNT_IS_NOT_SET = "Primary monetaryAccount is not set."; + private static final String ERROR_PRIMARY_MONETARY_ACCOUNT_IS_NOT_SET = "Primary monetaryAccount is not set"; private final ApiContext apiContext; private UserCompany userCompany; @@ -30,9 +29,9 @@ public UserContext(ApiContext apiContext) { } private void initUser(User user) { - if (user.getUserPerson()!=null) { + if (user.getUserPerson() != null) { this.userPerson = user.getUserPerson(); - } else if (user.getUserCompany()!=null) { + } else if (user.getUserCompany() != null) { this.userCompany = user.getUserCompany(); } else { throw new BunqException(ERROR_UNEXPECTED_USER_INSTANCE); @@ -40,16 +39,13 @@ private void initUser(User user) { } private void initMainMonetaryAccount(MonetaryAccountBank monetaryAccountBank) { - if(monetaryAccountBank == null) { - throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); - } this.primaryMonetaryAccountBank = monetaryAccountBank; } public void refreshContext() { UserContextHelper helper = new UserContextHelper(this.apiContext); this.initUser(helper.getFirstUser()); - this.initMainMonetaryAccount(helper.getFirstActiveMonetaryAccountBank(getUserId())); + this.initMainMonetaryAccount(helper.getFirstActiveMonetaryAccountBankByUserId(getUserId())); } public Integer getUserId() { diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 2cd0919d..17f54845 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -1,6 +1,7 @@ package com.bunq.sdk.model.core; import com.bunq.sdk.context.ApiContext; +import com.bunq.sdk.exception.BunqException; import com.bunq.sdk.http.ApiClient; import com.bunq.sdk.http.BunqResponse; import com.bunq.sdk.http.BunqResponseRaw; @@ -11,8 +12,10 @@ public class UserContextHelper extends BunqModel { private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; - private static final String USER_ENDPOINT_URL_LISTING = "user"; - private static final String MONETARY_ENDPOINT_URL_READ = "user/%s/monetary-account-bank"; + private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND = "No active monetary account found."; + private static final String USER_URL = "user"; + private static final String MONETARY_URL = "user/%s/monetary-account-bank"; + private static final Integer FIRST = 0; private final ApiClient apiClient; @@ -25,20 +28,22 @@ private BunqResponseRaw getRawResponse(String url) { } public User getFirstUser() { - BunqResponseRaw responseRaw = getRawResponse(USER_ENDPOINT_URL_LISTING); + BunqResponseRaw responseRaw = getRawResponse(USER_URL); BunqResponse> response = fromJsonList(User.class, responseRaw); - return response.getValue().stream().findFirst().orElse(null); + return !response.getValue().isEmpty()?response.getValue().get(FIRST):null; } - public MonetaryAccountBank getFirstActiveMonetaryAccountBank(Integer userId) { - BunqResponseRaw responseRaw = getRawResponse(String.format(MONETARY_ENDPOINT_URL_READ, userId)); + public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { + BunqResponseRaw responseRaw = getRawResponse(String.format(MONETARY_URL, userId)); BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, MonetaryAccountBank.class.getSimpleName()); - return response.getValue().stream() - .filter(monetaryAccountBank->monetaryAccountBank.getStatus().equals(MONETARY_ACCOUNT_STATUS_ACTIVE)) - .findFirst() - .orElse(null); + for(MonetaryAccountBank monetaryAccountBank:response.getValue()) { + if (MONETARY_ACCOUNT_STATUS_ACTIVE.equals(monetaryAccountBank.getStatus())) { + return monetaryAccountBank; + } + } + throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); } @Override From d77e23d56659df2662ff732b2cf97e91dad0eb78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Mon, 18 Jun 2018 10:36:10 +0200 Subject: [PATCH 06/13] feedback, line-length, spacing (bunq/sdk_java#93) --- .../java/com/bunq/sdk/context/SessionContext.java | 1 + .../com/bunq/sdk/model/core/UserContextHelper.java | 13 +++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/bunq/sdk/context/SessionContext.java b/src/main/java/com/bunq/sdk/context/SessionContext.java index fb43dee0..e704d5fd 100644 --- a/src/main/java/com/bunq/sdk/context/SessionContext.java +++ b/src/main/java/com/bunq/sdk/context/SessionContext.java @@ -102,3 +102,4 @@ public Integer getUserId() { return userId; } } + diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 17f54845..7fd1c286 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -11,8 +11,8 @@ import java.util.List; public class UserContextHelper extends BunqModel { - private static final String MONETARY_ACCOUNT_STATUS_ACTIVE = "ACTIVE"; - private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND = "No active monetary account found."; + private static final String STATUS_ACTIVE = "ACTIVE"; + private static final String ERROR_NO_ACTIVE_MONETARY = "No active monetary account found."; private static final String USER_URL = "user"; private static final String MONETARY_URL = "user/%s/monetary-account-bank"; private static final Integer FIRST = 0; @@ -36,14 +36,15 @@ public User getFirstUser() { public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { BunqResponseRaw responseRaw = getRawResponse(String.format(MONETARY_URL, userId)); - BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, MonetaryAccountBank.class.getSimpleName()); + String wrapper = MonetaryAccountBank.class.getSimpleName(); + BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, wrapper); - for(MonetaryAccountBank monetaryAccountBank:response.getValue()) { - if (MONETARY_ACCOUNT_STATUS_ACTIVE.equals(monetaryAccountBank.getStatus())) { + for (MonetaryAccountBank monetaryAccountBank:response.getValue()) { + if (STATUS_ACTIVE.equals(monetaryAccountBank.getStatus())) { return monetaryAccountBank; } } - throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_FOUND); + throw new BunqException(ERROR_NO_ACTIVE_MONETARY); } @Override From 0bc198764cd527e97b1d42d7c23e53d32040fe17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Tue, 19 Jun 2018 08:03:38 +0200 Subject: [PATCH 07/13] feedback formatting, test, avoid inline if (bunq/sdk_java#93) at the cost of risk for index-out-of-bounds (prior code) --- .../java/com/bunq/sdk/model/core/UserContextHelper.java | 2 +- src/test/java/com/bunq/sdk/context/UserContextTest.java | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 7fd1c286..036726b7 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -31,7 +31,7 @@ public User getFirstUser() { BunqResponseRaw responseRaw = getRawResponse(USER_URL); BunqResponse> response = fromJsonList(User.class, responseRaw); - return !response.getValue().isEmpty()?response.getValue().get(FIRST):null; + return response.getValue().get(FIRST); } public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { diff --git a/src/test/java/com/bunq/sdk/context/UserContextTest.java b/src/test/java/com/bunq/sdk/context/UserContextTest.java index 2304d9e9..3aba594b 100644 --- a/src/test/java/com/bunq/sdk/context/UserContextTest.java +++ b/src/test/java/com/bunq/sdk/context/UserContextTest.java @@ -8,12 +8,13 @@ public class UserContextTest extends BunqSdkTestBase { @Test - public void testConstruct() { + public void buildUserContext() { ApiContext context = getApiContext(); - UserContext sut = new UserContext(context); + UserContext userContext = new UserContext(context); - assertNotNull(sut.getUserId()); - assertNotNull(sut.getMainMonetaryAccountId()); + assertNotNull(userContext.getUserId()); + assertNotNull(userContext.getMainMonetaryAccountId()); } } + From 676819236003933d16543842bee9b939d0d4d553 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Tue, 19 Jun 2018 09:12:30 +0200 Subject: [PATCH 08/13] feedback formatting (bunq/sdk_java#93) --- .../bunq/sdk/model/core/UserContextHelper.java | 18 ++++++++++++------ .../com/bunq/sdk/context/UserContextTest.java | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 036726b7..49bb7a9b 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -11,11 +11,13 @@ import java.util.List; public class UserContextHelper extends BunqModel { - private static final String STATUS_ACTIVE = "ACTIVE"; private static final String ERROR_NO_ACTIVE_MONETARY = "No active monetary account found."; + private static final String USER_URL = "user"; - private static final String MONETARY_URL = "user/%s/monetary-account-bank"; - private static final Integer FIRST = 0; + private static final Integer INDEX_FIRST = 0; + + private static final String STATUS_ACTIVE = "ACTIVE"; + private static final String ENDPOINT_MONETARY_ACCOUNT_BANK = "user/%s/monetary-account-bank"; private final ApiClient apiClient; @@ -31,19 +33,22 @@ public User getFirstUser() { BunqResponseRaw responseRaw = getRawResponse(USER_URL); BunqResponse> response = fromJsonList(User.class, responseRaw); - return response.getValue().get(FIRST); + return response.getValue().get(INDEX_FIRST); } public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { - BunqResponseRaw responseRaw = getRawResponse(String.format(MONETARY_URL, userId)); + BunqResponseRaw responseRaw = getRawResponse(String.format(ENDPOINT_MONETARY_ACCOUNT_BANK, userId)); String wrapper = MonetaryAccountBank.class.getSimpleName(); - BunqResponse> response = fromJsonList(MonetaryAccountBank.class, responseRaw, wrapper); + BunqResponse> response = fromJsonList( + MonetaryAccountBank.class, responseRaw, wrapper + ); for (MonetaryAccountBank monetaryAccountBank:response.getValue()) { if (STATUS_ACTIVE.equals(monetaryAccountBank.getStatus())) { return monetaryAccountBank; } } + throw new BunqException(ERROR_NO_ACTIVE_MONETARY); } @@ -52,3 +57,4 @@ public boolean isAllFieldNull() { return true; } } + diff --git a/src/test/java/com/bunq/sdk/context/UserContextTest.java b/src/test/java/com/bunq/sdk/context/UserContextTest.java index 3aba594b..198b3311 100644 --- a/src/test/java/com/bunq/sdk/context/UserContextTest.java +++ b/src/test/java/com/bunq/sdk/context/UserContextTest.java @@ -18,3 +18,4 @@ public void buildUserContext() { } } + From 8491b9eae6064123d732d96eb046f3272e3eab53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Tue, 19 Jun 2018 10:45:50 +0200 Subject: [PATCH 09/13] feedback formatting (bunq/sdk_java#93) --- src/main/java/com/bunq/sdk/model/core/UserContextHelper.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 49bb7a9b..3e2096d8 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -37,7 +37,9 @@ public User getFirstUser() { } public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { - BunqResponseRaw responseRaw = getRawResponse(String.format(ENDPOINT_MONETARY_ACCOUNT_BANK, userId)); + BunqResponseRaw responseRaw = getRawResponse( + String.format(ENDPOINT_MONETARY_ACCOUNT_BANK, userId) + ); String wrapper = MonetaryAccountBank.class.getSimpleName(); BunqResponse> response = fromJsonList( MonetaryAccountBank.class, responseRaw, wrapper From 0d7cae43489f8b765226b77cab5a2c53920825aa Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Wed, 20 Jun 2018 09:14:25 +0200 Subject: [PATCH 10/13] Grouped header constants accordingly. (bunq/sdk_java#93) --- .../sdk/model/core/UserContextHelper.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 3e2096d8..665de6ca 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -11,13 +11,26 @@ import java.util.List; public class UserContextHelper extends BunqModel { + /** + * Error constants. + */ private static final String ERROR_NO_ACTIVE_MONETARY = "No active monetary account found."; - private static final String USER_URL = "user"; + /** + * Endpoint constants. + */ + private static final String ENDPOINT_USER = "user"; + private static final String ENDPOINT_MONETARY_ACCOUNT_BANK = "user/%s/monetary-account-bank"; + + /** + * The index of the first item in an array. + */ private static final Integer INDEX_FIRST = 0; + /** + * Status constants. + */ private static final String STATUS_ACTIVE = "ACTIVE"; - private static final String ENDPOINT_MONETARY_ACCOUNT_BANK = "user/%s/monetary-account-bank"; private final ApiClient apiClient; @@ -30,7 +43,7 @@ private BunqResponseRaw getRawResponse(String url) { } public User getFirstUser() { - BunqResponseRaw responseRaw = getRawResponse(USER_URL); + BunqResponseRaw responseRaw = getRawResponse(ENDPOINT_USER); BunqResponse> response = fromJsonList(User.class, responseRaw); return response.getValue().get(INDEX_FIRST); From 61dee09fc5d52bdae1cb1a0f54c54bb9a14d1b72 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Wed, 20 Jun 2018 09:14:48 +0200 Subject: [PATCH 11/13] Some minor formatting changes. (bunq/sdk_java#93) --- .../com/bunq/sdk/context/SessionContext.java | 2 +- .../java/com/bunq/sdk/context/UserContext.java | 4 +--- .../bunq/sdk/model/core/UserContextHelper.java | 8 ++++---- .../com/bunq/sdk/context/UserContextTest.java | 17 ++++++++--------- 4 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/bunq/sdk/context/SessionContext.java b/src/main/java/com/bunq/sdk/context/SessionContext.java index e704d5fd..d44b1f05 100644 --- a/src/main/java/com/bunq/sdk/context/SessionContext.java +++ b/src/main/java/com/bunq/sdk/context/SessionContext.java @@ -101,5 +101,5 @@ Date getExpiryTime() { public Integer getUserId() { return userId; } -} +} diff --git a/src/main/java/com/bunq/sdk/context/UserContext.java b/src/main/java/com/bunq/sdk/context/UserContext.java index d24439ba..3f67b0de 100644 --- a/src/main/java/com/bunq/sdk/context/UserContext.java +++ b/src/main/java/com/bunq/sdk/context/UserContext.java @@ -1,15 +1,12 @@ package com.bunq.sdk.context; import com.bunq.sdk.exception.BunqException; -import com.bunq.sdk.model.core.BunqModel; import com.bunq.sdk.model.core.UserContextHelper; import com.bunq.sdk.model.generated.endpoint.MonetaryAccountBank; import com.bunq.sdk.model.generated.endpoint.User; import com.bunq.sdk.model.generated.endpoint.UserCompany; import com.bunq.sdk.model.generated.endpoint.UserPerson; -import java.util.List; - public class UserContext { /** @@ -83,4 +80,5 @@ public UserCompany getUserCompany() { public MonetaryAccountBank getPrimaryMonetaryAccountBank() { return this.primaryMonetaryAccountBank; } + } diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 665de6ca..e4dfabd2 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -51,14 +51,14 @@ public User getFirstUser() { public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer userId) { BunqResponseRaw responseRaw = getRawResponse( - String.format(ENDPOINT_MONETARY_ACCOUNT_BANK, userId) + String.format(ENDPOINT_MONETARY_ACCOUNT_BANK, userId) ); String wrapper = MonetaryAccountBank.class.getSimpleName(); BunqResponse> response = fromJsonList( - MonetaryAccountBank.class, responseRaw, wrapper + MonetaryAccountBank.class, responseRaw, wrapper ); - for (MonetaryAccountBank monetaryAccountBank:response.getValue()) { + for (MonetaryAccountBank monetaryAccountBank : response.getValue()) { if (STATUS_ACTIVE.equals(monetaryAccountBank.getStatus())) { return monetaryAccountBank; } @@ -71,5 +71,5 @@ public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer use public boolean isAllFieldNull() { return true; } -} +} diff --git a/src/test/java/com/bunq/sdk/context/UserContextTest.java b/src/test/java/com/bunq/sdk/context/UserContextTest.java index 198b3311..9312b79f 100644 --- a/src/test/java/com/bunq/sdk/context/UserContextTest.java +++ b/src/test/java/com/bunq/sdk/context/UserContextTest.java @@ -6,16 +6,15 @@ import static org.junit.Assert.assertNotNull; public class UserContextTest extends BunqSdkTestBase { - - @Test - public void buildUserContext() { - ApiContext context = getApiContext(); - UserContext userContext = new UserContext(context); + @Test + public void buildUserContext() { + ApiContext context = getApiContext(); - assertNotNull(userContext.getUserId()); - assertNotNull(userContext.getMainMonetaryAccountId()); - } -} + UserContext userContext = new UserContext(context); + assertNotNull(userContext.getUserId()); + assertNotNull(userContext.getMainMonetaryAccountId()); + } +} From be155d7ecada87c737773c21f0fa73c4fb658edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michae=CC=88l=20van=20de=20Giessen?= Date: Wed, 20 Jun 2018 09:43:50 +0200 Subject: [PATCH 12/13] feedback error constant name (bunq/sdk_java#93) --- src/main/java/com/bunq/sdk/model/core/UserContextHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index e4dfabd2..585d117f 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -14,7 +14,8 @@ public class UserContextHelper extends BunqModel { /** * Error constants. */ - private static final String ERROR_NO_ACTIVE_MONETARY = "No active monetary account found."; + private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_BANK = + "No active monetary account found."; /** * Endpoint constants. @@ -64,7 +65,7 @@ public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer use } } - throw new BunqException(ERROR_NO_ACTIVE_MONETARY); + throw new BunqException(ERROR_NO_ACTIVE_MONETARY_ACCOUNT_BANK); } @Override From c416a86d9a842391479ff1b49db45a826d34a080 Mon Sep 17 00:00:00 2001 From: Kevin Hellemun Date: Fri, 22 Jun 2018 08:48:05 +0200 Subject: [PATCH 13/13] Minor formatting refactor. (bunq/sdk_java#93) --- .../java/com/bunq/sdk/model/core/UserContextHelper.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java index 585d117f..27360782 100644 --- a/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java +++ b/src/main/java/com/bunq/sdk/model/core/UserContextHelper.java @@ -11,11 +11,12 @@ import java.util.List; public class UserContextHelper extends BunqModel { + /** * Error constants. */ private static final String ERROR_NO_ACTIVE_MONETARY_ACCOUNT_BANK = - "No active monetary account found."; + "No active monetary account found."; /** * Endpoint constants. @@ -56,7 +57,9 @@ public MonetaryAccountBank getFirstActiveMonetaryAccountBankByUserId(Integer use ); String wrapper = MonetaryAccountBank.class.getSimpleName(); BunqResponse> response = fromJsonList( - MonetaryAccountBank.class, responseRaw, wrapper + MonetaryAccountBank.class, + responseRaw, + wrapper ); for (MonetaryAccountBank monetaryAccountBank : response.getValue()) {