From 779d5ae905673d5c5af789eecf1f427222506505 Mon Sep 17 00:00:00 2001 From: mapuo Date: Tue, 4 Jun 2019 09:58:26 +0300 Subject: [PATCH 1/2] send updated account to bridge --- .../AccountRepositoryAdditionalImpl.java | 41 ++++++------------- .../decomposition/AccountCreator.java | 2 +- .../services/erlang/ErlangAccountBridge.java | 3 +- 3 files changed, 16 insertions(+), 30 deletions(-) diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index ca0b799..908f3d7 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -3,18 +3,13 @@ */ package biz.nynja.account.repositories; -import static biz.nynja.account.validation.Validators.util; - import java.time.DateTimeException; import java.time.Instant; -import java.time.LocalDate; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import javax.annotation.PostConstruct; @@ -26,7 +21,6 @@ import org.springframework.data.cassandra.core.CassandraBatchOperations; import org.springframework.data.cassandra.core.CassandraTemplate; import org.springframework.data.cassandra.core.UpdateOptions; import org.springframework.data.cassandra.core.WriteResult; -import org.springframework.data.cassandra.core.cql.CqlOperations; import org.springframework.stereotype.Service; import com.auth0.jwt.JWT; @@ -233,21 +227,25 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio if (!permissionsValidator.isAdminToken()) { // No permission to update roles, load old ones // No permission to update access status, load the old one - request = UpdateAccountRequest.newBuilder(request).clearRoles().addAllRoles(existingRoles) - .clearAccessStatus().setAccessStatus(AccessStatus.valueOf(existingAccount.getAccessStatus())) + request = UpdateAccountRequest.newBuilder(request) + .clearRoles() + .addAllRoles(existingRoles) + .clearAccessStatus() + .setAccessStatus(AccessStatus.valueOf(existingAccount.getAccessStatus())) .build(); } Long timeUpdated = Instant.now().toEpochMilli(); WriteResult wr = null; try { + Account updatedAccount = updateAccountData(request, existingAccount, timeUpdated); try { - updateAccountData(sagaTransaction, request, existingAccount, timeUpdated); + sagaTransaction.update(updatedAccount, existingAccount); } catch (DateTimeException e) { logger.error("Exception with birthday date while updating account with id {}", request.getAccountId()); return null; } wr = sagaTransaction.execute(); - if (!erlangAccountBridge.updateAccount(existingAccount)) { + if (!erlangAccountBridge.updateAccount(updatedAccount)) { logger.error("Internal error with erlang"); sagaTransaction.rollBack(); return null; @@ -432,29 +430,16 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio return false; } - private void updateAccountData(Transaction transaction, UpdateAccountRequest request, Account currentAccountState, - Long lastUpdateTimestamp) { - Account newAccountState = (Account) SerializationUtils.clone(currentAccountState); - newAccountState.setAvatar(request.getAvatar()); - newAccountState.setAccountMark(request.getAccountMark()); - newAccountState.setAccountName(request.getAccountName()); - newAccountState.setFirstName(request.getFirstName()); - newAccountState.setLastName(request.getLastName()); - newAccountState.setUsername(request.getUsername()); - newAccountState.setLastUpdateTimestamp(lastUpdateTimestamp); - newAccountState.setAccessStatus(request.getAccessStatus().toString()); + private Account updateAccountData( + UpdateAccountRequest request, Account currentAccountState, Long lastUpdateTimestamp) { + + Account newAccountState = AccountBuilder.updateAccount(request, currentAccountState, lastUpdateTimestamp); if (request.getRolesList() == null || request.getRolesList().isEmpty()) { newAccountState.setRoles(Set.of(Role.USER.toString())); } else { newAccountState.setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); } - if (util.validateBirthdayIsSet(request.getBirthday())) { - newAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), - request.getBirthday().getDay())); - } else { - newAccountState.setBirthday(null); - } - transaction.update(newAccountState, currentAccountState); + return newAccountState; } private void updateAuthProvidersInProfileWhenDeletingAccount(Transaction transaction, Profile currentProfileState, diff --git a/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java b/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java index 8d31c91..59a3347 100644 --- a/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java +++ b/src/main/java/biz/nynja/account/services/decomposition/AccountCreator.java @@ -153,7 +153,7 @@ public class AccountCreator { if (createdAccount == null) { return logAndBuildGrpcAccountResponse(AccountResponse.newBuilder(), - "Error creating account with useraname: {}", request.getUsername(), Cause.ERROR_CREATING_ACCOUNT, + "Error creating account with username: {}", request.getUsername(), Cause.ERROR_CREATING_ACCOUNT, "Failed to create account"); } else { logger.debug("Account \"{}\" saved into the DB", createdAccount); diff --git a/src/main/java/biz/nynja/account/services/erlang/ErlangAccountBridge.java b/src/main/java/biz/nynja/account/services/erlang/ErlangAccountBridge.java index f30b96d..bd54908 100644 --- a/src/main/java/biz/nynja/account/services/erlang/ErlangAccountBridge.java +++ b/src/main/java/biz/nynja/account/services/erlang/ErlangAccountBridge.java @@ -1,5 +1,5 @@ /** - * Copyright (C) 2018 Nynja Inc. All rights reserved. + * Copyright (C) 2018 Nynja Inc. All rights reserved. */ package biz.nynja.account.services.erlang; @@ -10,6 +10,7 @@ import java.util.List; import java.util.UUID; public interface ErlangAccountBridge { + boolean createProfile(Profile profile, Account defaultAccount); boolean deleteProfile(UUID profileId, List accountsIds); -- GitLab From 1a396675b9cb3aa519e6d20ba55fd5cd598b1eee Mon Sep 17 00:00:00 2001 From: mapuo Date: Tue, 4 Jun 2019 10:58:59 +0300 Subject: [PATCH 2/2] revert ugly formatting as requested --- .../repositories/AccountRepositoryAdditionalImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index 908f3d7..e699d8a 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -227,11 +227,8 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio if (!permissionsValidator.isAdminToken()) { // No permission to update roles, load old ones // No permission to update access status, load the old one - request = UpdateAccountRequest.newBuilder(request) - .clearRoles() - .addAllRoles(existingRoles) - .clearAccessStatus() - .setAccessStatus(AccessStatus.valueOf(existingAccount.getAccessStatus())) + request = UpdateAccountRequest.newBuilder(request).clearRoles().addAllRoles(existingRoles) + .clearAccessStatus().setAccessStatus(AccessStatus.valueOf(existingAccount.getAccessStatus())) .build(); } Long timeUpdated = Instant.now().toEpochMilli(); -- GitLab