From 685fdd1a7df3e091d2e6fc13a1192f1a14209113 Mon Sep 17 00:00:00 2001 From: Jayendra Date: Thu, 5 Dec 2019 17:33:15 +0530 Subject: [PATCH] Resolved bugs in admin accounts grpc endpoints --- .../permissions/PermissionsInterceptor.java | 4 +- .../account/services/AdminAccountsImpl.java | 41 ++++++++++- .../services/admin/AccountService.java | 72 ------------------- .../repository/AdminAccountRepository.java} | 24 +++---- .../account/services/AccountServiceTests.java | 2 +- 5 files changed, 51 insertions(+), 92 deletions(-) delete mode 100644 src/main/java/biz/nynja/account/services/admin/AccountService.java rename src/main/java/biz/nynja/account/{repositories/admin/AccountRepository.java => services/admin/repository/AdminAccountRepository.java} (94%) diff --git a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java index 63c7b1d..c5144b4 100644 --- a/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java +++ b/src/main/java/biz/nynja/account/permissions/PermissionsInterceptor.java @@ -160,7 +160,7 @@ public class PermissionsInterceptor implements ServerInterceptor { // Get the rpc method called Method[] allMethods = SERVICE_CLASS.getDeclaredMethods(); Method[] adminMethods = ADMIN_SERVICE_CLASS.getDeclaredMethods(); - + for (Method method : allMethods) { if (method.getName().equals(rpc)) { return method; @@ -172,7 +172,7 @@ public class PermissionsInterceptor implements ServerInterceptor { return method; } } - + return null; } diff --git a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java index 8ef404d..b9bc663 100644 --- a/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java +++ b/src/main/java/biz/nynja/account/services/AdminAccountsImpl.java @@ -2,7 +2,7 @@ package biz.nynja.account.services; import biz.nynja.account.models.Account; -import biz.nynja.account.services.admin.AccountService; +import biz.nynja.account.services.admin.repository.AdminAccountRepository; import biz.nynja.admin.account.grpc.*; import biz.nynja.admin.account.grpc.AdminAccountsServiceGrpc.AdminAccountsServiceImplBase; import com.google.protobuf.ProtocolStringList; @@ -28,7 +28,7 @@ import java.util.UUID; public class AdminAccountsImpl extends AdminAccountsServiceImplBase { @Autowired - private AccountService accountService; + private AdminAccountRepository accountService; private static final Logger logger = LoggerFactory.getLogger(AdminAccountsImpl.class); @@ -134,7 +134,25 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { logger.info("Fetching records on basis of pagination."); - Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, limit, null) : accountService.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, limit, pageState); + + if(accountsMap == null){ + + logger.info("No accounts found"); + logger.info(""); + + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are not found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + accountsList = (List) accountsMap.get("accounts"); nextPageState = accountsMap.get("pageState").toString(); @@ -335,6 +353,23 @@ public class AdminAccountsImpl extends AdminAccountsServiceImplBase { } Map accountsMap = (pageState.equals("nil")) ? accountService.getAccountsByPagination(limit, null) : accountService.getAccountsByPagination(limit, pageState); + + if(accountsMap == null){ + + logger.info("No accounts found"); + logger.info(""); + + errorResponse = ErrorResponse.newBuilder().setCause(ErrorResponse.Cause.ACCOUNTS_NOT_FOUND) + .setMessage("Accounts are not found").build(); + + AccountsResponse response = AccountsResponse.newBuilder().setError(errorResponse).build(); + + responseObserver.onNext(response); + responseObserver.onCompleted(); + return; + + } + accountsList = (List) accountsMap.get("accounts"); nextPageState = accountsMap.get("pageState").toString(); diff --git a/src/main/java/biz/nynja/account/services/admin/AccountService.java b/src/main/java/biz/nynja/account/services/admin/AccountService.java deleted file mode 100644 index 8bc6fa4..0000000 --- a/src/main/java/biz/nynja/account/services/admin/AccountService.java +++ /dev/null @@ -1,72 +0,0 @@ -package biz.nynja.account.services.admin; - -import biz.nynja.account.models.Account; -import biz.nynja.account.repositories.admin.AccountRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -/** - * This Account Service calls the functions of Account Repository - * which contains account search functions for market admin panel - * to filter accounts while broadcasting message - * - * @author Jayendra - * @since 2019-12-04 - * - */ - - -@Service -public class AccountService { - - @Autowired - private AccountRepository accountRepository; - - public List getAccountByAccountId(UUID accountId) { - return accountRepository.getAccountByAccountId(accountId); - } - - public List getAllAccounts() { - return accountRepository.getAllAccounts(); - } - - public Map getAccountsByPagination(int fetchSize, String pageState) { - return accountRepository.getAccountsByPagination(fetchSize, pageState); - } - - public long getAllAccountsSize() { - return accountRepository.getAllAccountsSize(); - } - - public List getAccountByIds(UUID[] accountIds) { - return accountRepository.getAccountByIds(accountIds); - } - - public Map getAccountsByCreationTimeStampPagination(long fromCreationTime, long toCreationTime, int fetchSize, String pageState) { - return accountRepository.getAccountsByCreationTimeStampPagination(fromCreationTime, toCreationTime, fetchSize, pageState); - } - - public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime) { - return accountRepository.getAccountsByCreationTimeStamp(fromCreationTime, toCreationTime); - } - - public List getAccountByAuthenticationProvider(String authenticationprovider) { - return accountRepository.getAccountByAuthenticationProvider(authenticationprovider); - } - - public List getAccountByUsername(String username) { - return accountRepository.getAccountByUsername(username); - } - - public List getAccountByFirstname(String firstname) { - return accountRepository.getAccountByFirstname(firstname); - } - - public List getAccountByLastname(String lastname) { - return accountRepository.getAccountByLastname(lastname); - } -} - diff --git a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java b/src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java similarity index 94% rename from src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java rename to src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java index 09b1665..faf8afc 100644 --- a/src/main/java/biz/nynja/account/repositories/admin/AccountRepository.java +++ b/src/main/java/biz/nynja/account/services/admin/repository/AdminAccountRepository.java @@ -1,5 +1,4 @@ -package biz.nynja.account.repositories.admin; - +package biz.nynja.account.services.admin.repository; import biz.nynja.account.models.Account; import com.datastax.driver.core.PagingState; @@ -13,33 +12,29 @@ import org.springframework.data.cassandra.core.query.CassandraPageRequest; import org.springframework.data.cassandra.core.query.Criteria; import org.springframework.data.cassandra.core.query.Query; import org.springframework.data.domain.Slice; -import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; /** - * This Account Repository contains the account search functions - * for market admin panel to filter accounts while - * broadcasting message + * This Admin Account Repository contains account search functions for + * market admin panel to filter accounts while broadcasting message * * @author Jayendra * @since 2019-12-04 - * */ -@Repository -public class AccountRepository { - - +@Service +public class AdminAccountRepository { @Autowired private CassandraTemplate cassandraTemplate; private static final Class ENTITY_CLASS = Account.class; - private static final Logger logger = LoggerFactory.getLogger(AccountRepository.class); + private static final Logger logger = LoggerFactory.getLogger(AdminAccountRepository.class); public List getAccountByAccountId(UUID accountId) { @@ -105,7 +100,7 @@ public class AccountRepository { } - public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime){ + public List getAccountsByCreationTimeStamp(long fromCreationTime, long toCreationTime) { Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) @@ -119,7 +114,7 @@ public class AccountRepository { Statement statement = QueryBuilder.select().from("accountbycreationtimestamp") .where(QueryBuilder.gte("creationtimestamp", fromCreationTime)) - .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering(); + .and(QueryBuilder.lte("creationtimestamp", toCreationTime)).allowFiltering().setFetchSize(fetchSize); if (pageState != null) { statement.setPagingState(PagingState.fromString(pageState)); @@ -214,3 +209,4 @@ public class AccountRepository { } + diff --git a/src/test/java/biz/nynja/account/services/AccountServiceTests.java b/src/test/java/biz/nynja/account/services/AccountServiceTests.java index 148df8d..b1a1f30 100644 --- a/src/test/java/biz/nynja/account/services/AccountServiceTests.java +++ b/src/test/java/biz/nynja/account/services/AccountServiceTests.java @@ -111,7 +111,7 @@ import io.grpc.Metadata; import io.grpc.stub.MetadataUtils; /** - * AccountService unit tests. + * AdminAccountRepository unit tests. */ @RunWith(SpringRunner.class) -- GitLab