From 1b55016179c68c22c8ae895ca1de04474f4b9541 Mon Sep 17 00:00:00 2001 From: sergeyPensov Date: Fri, 11 Jan 2019 16:30:16 +0200 Subject: [PATCH 1/3] Migrate to new update implementation in saga --- .../biz/nynja/account/models/Profile.java | 3 +- .../AccountRepositoryAdditionalImpl.java | 54 +++++++++---------- .../repositories/batch/Transaction.java | 10 +++- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/src/main/java/biz/nynja/account/models/Profile.java b/src/main/java/biz/nynja/account/models/Profile.java index f4e2844..a8044eb 100644 --- a/src/main/java/biz/nynja/account/models/Profile.java +++ b/src/main/java/biz/nynja/account/models/Profile.java @@ -3,6 +3,7 @@ */ package biz.nynja.account.models; +import java.io.Serializable; import java.util.Set; import java.util.UUID; @@ -12,7 +13,7 @@ import biz.nynja.account.grpc.ProfileDetails; import biz.nynja.account.grpc.ProfileDetails.Builder; @Table -public class Profile { +public class Profile implements Serializable { @PrimaryKey private UUID profileId; diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index da4d683..c2c959c 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -18,6 +18,7 @@ import java.util.stream.Collectors; import biz.nynja.account.repositories.batch.SagaTransaction; import biz.nynja.account.repositories.batch.Transaction; import biz.nynja.account.services.erlang.ErlangAccountBridge; +import org.apache.commons.lang3.SerializationUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.cassandra.core.CassandraBatchOperations; @@ -158,14 +159,14 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio return null; } - private Account newAccountInsert(CassandraBatchOperations batchOps, CompletePendingAccountCreationRequest request, + private Account newAccountInsert(Transaction batchOps, CompletePendingAccountCreationRequest request, PendingAccount pendingAccount, Long creationTimestamp) { Account newAccount = AccountBuilder.buildNewAccount(request, pendingAccount, creationTimestamp); batchOps.insert(newAccount); return newAccount; } - private Profile newProfileInsert(CassandraBatchOperations batchOps, CompletePendingAccountCreationRequest request, + private Profile newProfileInsert(Transaction batchOps, CompletePendingAccountCreationRequest request, PendingAccount pendingAccount, Long creationTimestamp) { Profile newProfile = new Profile(); newProfile.setProfileId(pendingAccount.getProfileId()); @@ -180,8 +181,7 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio return newProfile; } - private void newProfileByAuthenticationProviderInsert(CassandraBatchOperations batchOps, - PendingAccount pendingAccount) { + private void newProfileByAuthenticationProviderInsert(Transaction batchOps, PendingAccount pendingAccount) { ProfileByAuthenticationProvider newProfileByAuthenticationProvider = new ProfileByAuthenticationProvider(); newProfileByAuthenticationProvider.setAuthenticationProvider(pendingAccount.getAuthenticationProvider()); newProfileByAuthenticationProvider @@ -295,7 +295,7 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio * @param existingProfile * @return true or false according to the result of removing the account's creation provider */ - private boolean removeCreationProvider(CassandraBatchOperations batchOperations, Account existingAccount, + private boolean removeCreationProvider(Transaction batchOperations, Account existingAccount, Profile existingProfile) { // update authentication providers of the profile by removing the one of the deleted account (if not // already manually removed by the user) @@ -341,38 +341,38 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio return false; } - private void updateAccountData(CassandraBatchOperations batchOps, UpdateAccountRequest request, - Account existingAccount, Long lastUpdateTimestamp) { - Account updatedAccount = existingAccount; - updatedAccount.setAvatar(request.getAvatar()); - updatedAccount.setAccountMark(request.getAccountMark()); - updatedAccount.setAccountName(request.getAccountName()); - updatedAccount.setFirstName(request.getFirstName()); - updatedAccount.setLastName(request.getLastName()); - updatedAccount.setUsername(request.getUsername()); - updatedAccount.setLastUpdateTimestamp(lastUpdateTimestamp); - updatedAccount.setAccessStatus(request.getAccessStatus().toString()); + private void updateAccountData(Transaction transaction, UpdateAccountRequest request, Account existingAccount, + Long lastUpdateTimestamp) { + Account updatedAccount = (Account) SerializationUtils.clone(existingAccount); + existingAccount.setAvatar(request.getAvatar()); + existingAccount.setAccountMark(request.getAccountMark()); + existingAccount.setAccountName(request.getAccountName()); + existingAccount.setFirstName(request.getFirstName()); + existingAccount.setLastName(request.getLastName()); + existingAccount.setUsername(request.getUsername()); + existingAccount.setLastUpdateTimestamp(lastUpdateTimestamp); + existingAccount.setAccessStatus(request.getAccessStatus().toString()); if (request.getRolesList() == null || request.getRolesList().isEmpty()) { - updatedAccount.setRoles(Set.of(Role.USER.toString())); + existingAccount.setRoles(Set.of(Role.USER.toString())); } else { - updatedAccount.setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); + existingAccount.setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); } if (util.validateBirthdayIsSet(request.getBirthday())) { - updatedAccount.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), + existingAccount.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), request.getBirthday().getDay())); } else { - updatedAccount.setBirthday(null); + existingAccount.setBirthday(null); } - batchOps.update(updatedAccount); + transaction.update(existingAccount, updatedAccount); } - private void updateAuthProvidersInProfileWhenDeletingAccount(CassandraBatchOperations batchOps, - Profile existingProfile, Set authProvidersToUpdate, Long lastUpdateTimestamp) { - Profile updatedProfile = existingProfile; + private void updateAuthProvidersInProfileWhenDeletingAccount(Transaction transaction, Profile existingProfile, + Set authProvidersToUpdate, Long lastUpdateTimestamp) { + Profile updatedProfile = (Profile) SerializationUtils.clone(existingProfile); if (authProvidersToUpdate != null) { - updatedProfile.setAuthenticationProviders(authProvidersToUpdate); - updatedProfile.setLastUpdateTimestamp(lastUpdateTimestamp); - batchOps.update(updatedProfile); + existingProfile.setAuthenticationProviders(authProvidersToUpdate); + existingProfile.setLastUpdateTimestamp(lastUpdateTimestamp); + transaction.update(existingProfile, updatedProfile); } } diff --git a/src/main/java/biz/nynja/account/repositories/batch/Transaction.java b/src/main/java/biz/nynja/account/repositories/batch/Transaction.java index 97f227a..ff745cb 100644 --- a/src/main/java/biz/nynja/account/repositories/batch/Transaction.java +++ b/src/main/java/biz/nynja/account/repositories/batch/Transaction.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.repositories.batch; @@ -8,6 +8,14 @@ import org.springframework.data.cassandra.core.WriteResult; import org.springframework.data.cassandra.core.cql.WriteOptions; public interface Transaction extends CassandraBatchOperations { + @Deprecated + CassandraBatchOperations update(Object... objects); + + @Deprecated + CassandraBatchOperations update(Iterable iterable); + + @Deprecated + CassandraBatchOperations update(Iterable iterable, WriteOptions writeOptions); WriteResult rollBack(); -- GitLab From 0e11562d7e8ef00c5542e88c32d53d46f8ffa5b7 Mon Sep 17 00:00:00 2001 From: sergeyPensov Date: Mon, 14 Jan 2019 10:25:31 +0200 Subject: [PATCH 2/3] Fix naming and usage in transaction --- .../AccountRepositoryAdditionalImpl.java | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index c2c959c..6092f0c 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -341,38 +341,39 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio return false; } - private void updateAccountData(Transaction transaction, UpdateAccountRequest request, Account existingAccount, + private void updateAccountData(Transaction transaction, UpdateAccountRequest request, Account currentAccountState, Long lastUpdateTimestamp) { - Account updatedAccount = (Account) SerializationUtils.clone(existingAccount); - existingAccount.setAvatar(request.getAvatar()); - existingAccount.setAccountMark(request.getAccountMark()); - existingAccount.setAccountName(request.getAccountName()); - existingAccount.setFirstName(request.getFirstName()); - existingAccount.setLastName(request.getLastName()); - existingAccount.setUsername(request.getUsername()); - existingAccount.setLastUpdateTimestamp(lastUpdateTimestamp); - existingAccount.setAccessStatus(request.getAccessStatus().toString()); + Account newAccountState = (Account) SerializationUtils.clone(currentAccountState); + currentAccountState.setAvatar(request.getAvatar()); + currentAccountState.setAccountMark(request.getAccountMark()); + currentAccountState.setAccountName(request.getAccountName()); + currentAccountState.setFirstName(request.getFirstName()); + currentAccountState.setLastName(request.getLastName()); + currentAccountState.setUsername(request.getUsername()); + currentAccountState.setLastUpdateTimestamp(lastUpdateTimestamp); + currentAccountState.setAccessStatus(request.getAccessStatus().toString()); if (request.getRolesList() == null || request.getRolesList().isEmpty()) { - existingAccount.setRoles(Set.of(Role.USER.toString())); + currentAccountState.setRoles(Set.of(Role.USER.toString())); } else { - existingAccount.setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); + currentAccountState + .setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); } if (util.validateBirthdayIsSet(request.getBirthday())) { - existingAccount.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), - request.getBirthday().getDay())); + currentAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(), + request.getBirthday().getMonth(), request.getBirthday().getDay())); } else { - existingAccount.setBirthday(null); + currentAccountState.setBirthday(null); } - transaction.update(existingAccount, updatedAccount); + transaction.update(newAccountState, currentAccountState); } - private void updateAuthProvidersInProfileWhenDeletingAccount(Transaction transaction, Profile existingProfile, + private void updateAuthProvidersInProfileWhenDeletingAccount(Transaction transaction, Profile currentProfileState, Set authProvidersToUpdate, Long lastUpdateTimestamp) { - Profile updatedProfile = (Profile) SerializationUtils.clone(existingProfile); + Profile newProfileState = (Profile) SerializationUtils.clone(currentProfileState); if (authProvidersToUpdate != null) { - existingProfile.setAuthenticationProviders(authProvidersToUpdate); - existingProfile.setLastUpdateTimestamp(lastUpdateTimestamp); - transaction.update(existingProfile, updatedProfile); + currentProfileState.setAuthenticationProviders(authProvidersToUpdate); + currentProfileState.setLastUpdateTimestamp(lastUpdateTimestamp); + transaction.update(newProfileState, currentProfileState); } } -- GitLab From 425b3207e8b205db01b0f7fd4bd9f6082a1d12c9 Mon Sep 17 00:00:00 2001 From: sergeyPensov Date: Mon, 14 Jan 2019 11:59:22 +0200 Subject: [PATCH 3/3] Fix naming --- .../AccountRepositoryAdditionalImpl.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java index 6092f0c..649b92f 100644 --- a/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java +++ b/src/main/java/biz/nynja/account/repositories/AccountRepositoryAdditionalImpl.java @@ -344,25 +344,25 @@ public class AccountRepositoryAdditionalImpl implements AccountRepositoryAdditio private void updateAccountData(Transaction transaction, UpdateAccountRequest request, Account currentAccountState, Long lastUpdateTimestamp) { Account newAccountState = (Account) SerializationUtils.clone(currentAccountState); - currentAccountState.setAvatar(request.getAvatar()); - currentAccountState.setAccountMark(request.getAccountMark()); - currentAccountState.setAccountName(request.getAccountName()); - currentAccountState.setFirstName(request.getFirstName()); - currentAccountState.setLastName(request.getLastName()); - currentAccountState.setUsername(request.getUsername()); - currentAccountState.setLastUpdateTimestamp(lastUpdateTimestamp); - currentAccountState.setAccessStatus(request.getAccessStatus().toString()); + 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()); if (request.getRolesList() == null || request.getRolesList().isEmpty()) { - currentAccountState.setRoles(Set.of(Role.USER.toString())); + newAccountState.setRoles(Set.of(Role.USER.toString())); } else { - currentAccountState + newAccountState .setRoles(request.getRolesList().stream().map(Enum::toString).collect(Collectors.toSet())); } if (util.validateBirthdayIsSet(request.getBirthday())) { - currentAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(), + newAccountState.setBirthday(LocalDate.of(request.getBirthday().getYear(), request.getBirthday().getMonth(), request.getBirthday().getDay())); } else { - currentAccountState.setBirthday(null); + newAccountState.setBirthday(null); } transaction.update(newAccountState, currentAccountState); } -- GitLab