From 4a2613fa6e5f1b5e61c7f74ca208e28d7417818f Mon Sep 17 00:00:00 2001 From: Dragomir Todorov Date: Mon, 10 Dec 2018 16:48:46 +0200 Subject: [PATCH 1/2] NY-5999: Add validation to ag grid row parameters --- .../account/grid/ag/AdminServiceImpl.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java index 1b024ac..8b6ffd6 100644 --- a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java +++ b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java @@ -4,6 +4,7 @@ package biz.nynja.account.grid.ag; import java.util.List; +import java.util.Optional; import org.lognet.springboot.grpc.GRpcService; import org.slf4j.Logger; @@ -21,6 +22,8 @@ import biz.nynja.account.grpc.AccountResponse; import biz.nynja.account.grpc.CompletePendingAccountCreationRequest; import biz.nynja.account.grpc.CreatePendingAccountRequest; import biz.nynja.account.grpc.CreatePendingAccountResponse; +import biz.nynja.account.grpc.ErrorResponse; +import biz.nynja.account.grpc.ErrorResponse.Cause; import biz.nynja.account.repositories.AccountRepository; import biz.nynja.account.services.decomposition.AccountCreator; import io.grpc.stub.StreamObserver; @@ -51,6 +54,13 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic logger.info("Getting accounts ..."); logger.debug("Getting accounts: {} ...", request); + Optional errorResponse = validateRowInput(request.getStartRow(), request.getEndRow()); + if (errorResponse.isPresent()) { + responseObserver.onNext(AccountsAdminResponse.newBuilder().setError(errorResponse.get()).build()); + responseObserver.onCompleted(); + return; + } + List accounts = agGridService.getData(request.getEndRow(), request.getStartRow(), request.getFilterModelList()); @@ -59,6 +69,20 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic responseObserver.onCompleted(); } + private Optional validateRowInput(int startRow, int endRow) { + ErrorResponse error = null; + if (startRow < 1) { + error = ErrorResponse.newBuilder().setCause(Cause.ADMIN_INVALID_START_ROW) + .setMessage("startRow parameter should be more than 1 and less or equal to endRow parameter.") + .build(); + } else if (endRow < startRow || endRow > 100) { + error = ErrorResponse.newBuilder().setCause(Cause.ADMIN_INVALID_END_ROW) + .setMessage("startRow parameter should be more than start row and less than current max of 100.") + .build(); + } + return Optional.ofNullable(error); + } + @Override public void getCountOfAllAccounts(EmptyRequest request, StreamObserver responseObserver) { logger.info("Getting count of all accounts ..."); -- GitLab From 8eb21b0beecc23b047691d1e68e233a68316215b Mon Sep 17 00:00:00 2001 From: Dragomir Todorov Date: Tue, 11 Dec 2018 16:52:23 +0200 Subject: [PATCH 2/2] NY-5999: Change the way validation is done (code review change) --- .../account/grid/ag/AdminServiceImpl.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java index 8b6ffd6..89a6d6f 100644 --- a/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java +++ b/src/main/java/biz/nynja/account/grid/ag/AdminServiceImpl.java @@ -4,7 +4,6 @@ package biz.nynja.account.grid.ag; import java.util.List; -import java.util.Optional; import org.lognet.springboot.grpc.GRpcService; import org.slf4j.Logger; @@ -26,6 +25,8 @@ import biz.nynja.account.grpc.ErrorResponse; import biz.nynja.account.grpc.ErrorResponse.Cause; import biz.nynja.account.repositories.AccountRepository; import biz.nynja.account.services.decomposition.AccountCreator; +import biz.nynja.account.validation.Validation; +import biz.nynja.account.validation.ValidationError; import io.grpc.stub.StreamObserver; /** @@ -54,9 +55,10 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic logger.info("Getting accounts ..."); logger.debug("Getting accounts: {} ...", request); - Optional errorResponse = validateRowInput(request.getStartRow(), request.getEndRow()); - if (errorResponse.isPresent()) { - responseObserver.onNext(AccountsAdminResponse.newBuilder().setError(errorResponse.get()).build()); + Validation validation = validateRowInput(request.getStartRow(), request.getEndRow()); + if (validation.hasErrors()) { + responseObserver.onNext(AccountsAdminResponse.newBuilder().setError(ErrorResponse.newBuilder() + .setCause(validation.getCause().get()).setMessage(validation.getErrorMessage())).build()); responseObserver.onCompleted(); return; } @@ -69,18 +71,18 @@ public class AdminServiceImpl extends AdminAccountServiceGrpc.AdminAccountServic responseObserver.onCompleted(); } - private Optional validateRowInput(int startRow, int endRow) { - ErrorResponse error = null; + private Validation validateRowInput(int startRow, int endRow) { + Validation validation = new Validation(); if (startRow < 1) { - error = ErrorResponse.newBuilder().setCause(Cause.ADMIN_INVALID_START_ROW) - .setMessage("startRow parameter should be more than 1 and less or equal to endRow parameter.") - .build(); + validation.addError(new ValidationError( + "startRow parameter (" + startRow + + ") should be more than 1 and less or equal to endRow parameter (" + endRow + ").", + Cause.ADMIN_INVALID_START_ROW)); } else if (endRow < startRow || endRow > 100) { - error = ErrorResponse.newBuilder().setCause(Cause.ADMIN_INVALID_END_ROW) - .setMessage("startRow parameter should be more than start row and less than current max of 100.") - .build(); + validation.addError(new ValidationError("endRow parameter (" + endRow + ") should be more than start row (" + + startRow + ") and less than current max of 100.", Cause.ADMIN_INVALID_END_ROW)); } - return Optional.ofNullable(error); + return validation; } @Override -- GitLab