diff --git a/pom.xml b/pom.xml index e8227b86..1c8e6176 100644 --- a/pom.xml +++ b/pom.xml @@ -177,7 +177,7 @@ dev.vality damsel - 1.685-5c25c2e + 1.692-70b59b9 dev.vality diff --git a/src/main/java/dev/vality/daway/handler/dominant/AbstractDominantHandler.java b/src/main/java/dev/vality/daway/handler/dominant/AbstractDominantHandler.java index 98bdd694..05a54946 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/AbstractDominantHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/AbstractDominantHandler.java @@ -40,18 +40,21 @@ public abstract class AbstractDominantHandler implements DominantHandle protected abstract boolean acceptDomainObject(); + protected abstract boolean acceptReference(); + public abstract C convertToDatabaseObject(T object, Long versionId, boolean current, String createdAt); @Override @Transactional(propagation = Propagation.REQUIRED) public void handle(FinalOperation operation, Long versionId, String createdAt) { - T object = getTargetObject(); if (operation.isSetInsert()) { + T object = getTargetObject(); insertDomainObject(object, versionId, createdAt); } else if (operation.isSetUpdate()) { + T object = getTargetObject(); updateDomainObject(object, versionId, createdAt); } else if (operation.isSetRemove()) { - removeDomainObject(object, versionId, createdAt); + removeDomainObject(versionId); } else { throw new IllegalStateException( UNKNOWN_TYPE_EX + operation); @@ -66,6 +69,7 @@ public boolean acceptAndSet(FinalOperation operation) { setDomainObject(operation.getUpdate().getObject()); } else if (operation.isSetRemove()) { setReference(operation.getRemove().getRef()); + return acceptReference(); } else { throw new IllegalStateException( UNKNOWN_TYPE_EX + operation); @@ -93,12 +97,9 @@ public void updateDomainObject(T object, Long versionId, String createdAt) { } @Transactional(propagation = Propagation.REQUIRED) - public void removeDomainObject(T object, Long versionId, String createdAt) { - log.info("Start to remove '{}' with id={}, versionId={}", object.getClass().getSimpleName(), - getTargetRefId(), versionId); + public void removeDomainObject(Long versionId) { + log.info("Start to remove object with id={}, versionId={}", getTargetRefId(), versionId); getDomainObjectDao().updateNotCurrent(getTargetRefId()); - getDomainObjectDao().save(convertToDatabaseObject(object, versionId, false, createdAt)); - log.info("End to remove '{}' with id={}, versionId={}", object.getClass().getSimpleName(), - getTargetRefId(), versionId); + log.info("End to remove object with id={}, versionId={}", getTargetRefId(), versionId); } } diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/CategoryHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/CategoryHandler.java index b1e9a8ae..3381675a 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/CategoryHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/CategoryHandler.java @@ -44,6 +44,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetCategory(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetCategory(); + } + @Override public Category convertToDatabaseObject(CategoryObject categoryObject, Long versionId, boolean current, String createdAt) { Category category = new Category(); diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/CurrencyHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/CurrencyHandler.java index b27cc30a..3593ea0b 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/CurrencyHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/CurrencyHandler.java @@ -44,6 +44,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetCurrency(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetCurrency(); + } + @Override public Currency convertToDatabaseObject(CurrencyObject currencyObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/PartyHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/PartyHandler.java index 18d4e090..4e100b87 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/PartyHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/PartyHandler.java @@ -49,6 +49,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetPartyConfig(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetPartyConfig(); + } + @Override public Party convertToDatabaseObject(PartyConfigObject partyConfigObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentInstitutionHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentInstitutionHandler.java index a874a0db..46ae0553 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentInstitutionHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentInstitutionHandler.java @@ -47,6 +47,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetPaymentInstitution(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetPaymentInstitution(); + } + @Override public PaymentInstitution convertToDatabaseObject(PaymentInstitutionObject paymentInstitutionObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentRoutingRulesHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentRoutingRulesHandler.java index 592a6b25..3727d13f 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentRoutingRulesHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/PaymentRoutingRulesHandler.java @@ -24,6 +24,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetRoutingRules(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetRoutingRules(); + } + @Override public PaymentRoutingRule convertToDatabaseObject(RoutingRulesObject rulesObject, Long versionId, diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/ProviderHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/ProviderHandler.java index 8868a2b6..af49ca02 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/ProviderHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/ProviderHandler.java @@ -47,6 +47,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetProvider(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetProvider(); + } + @Override public Provider convertToDatabaseObject(ProviderObject providerObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/ProxyHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/ProxyHandler.java index 11312073..1f0aebd8 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/ProxyHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/ProxyHandler.java @@ -45,6 +45,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetProxy(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetProxy(); + } + @Override public Proxy convertToDatabaseObject(ProxyObject proxyObject, Long versionId, boolean current, String createdAt) { Proxy proxy = new Proxy(); diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/ShopHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/ShopHandler.java index e798b558..47cacfac 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/ShopHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/ShopHandler.java @@ -48,6 +48,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetShopConfig(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetShopConfig(); + } + @Override public Shop convertToDatabaseObject(ShopConfigObject shopConfigObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/TermSetHierarchyHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/TermSetHierarchyHandler.java index 46654687..9aef9110 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/TermSetHierarchyHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/TermSetHierarchyHandler.java @@ -47,6 +47,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetTermSetHierarchy(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetTermSetHierarchy(); + } + @Override public TermSetHierarchy convertToDatabaseObject(TermSetHierarchyObject termSetHierarchyObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/TerminalHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/TerminalHandler.java index 8fd7a7d8..6eb0a1f9 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/TerminalHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/TerminalHandler.java @@ -45,6 +45,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetTerminal(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetTerminal(); + } + @Override public Terminal convertToDatabaseObject(TerminalObject terminalObject, Long versionId, boolean current, String createdAt) { diff --git a/src/main/java/dev/vality/daway/handler/dominant/impl/WalletHandler.java b/src/main/java/dev/vality/daway/handler/dominant/impl/WalletHandler.java index 34ea2caa..8e66123e 100644 --- a/src/main/java/dev/vality/daway/handler/dominant/impl/WalletHandler.java +++ b/src/main/java/dev/vality/daway/handler/dominant/impl/WalletHandler.java @@ -45,6 +45,11 @@ protected boolean acceptDomainObject() { return getDomainObject() != null && getDomainObject().isSetWalletConfig(); } + @Override + protected boolean acceptReference() { + return getReference() != null && getReference().isSetWalletConfig(); + } + @Override public Wallet convertToDatabaseObject(WalletConfigObject walletConfigObjectData, Long versionId, diff --git a/src/test/java/dev/vality/daway/handler/dominant/impl/ShopHandlerTest.java b/src/test/java/dev/vality/daway/handler/dominant/impl/ShopHandlerTest.java new file mode 100644 index 00000000..964c4782 --- /dev/null +++ b/src/test/java/dev/vality/daway/handler/dominant/impl/ShopHandlerTest.java @@ -0,0 +1,37 @@ +package dev.vality.daway.handler.dominant.impl; + +import dev.vality.damsel.domain.Reference; +import dev.vality.damsel.domain.ShopConfigRef; +import dev.vality.damsel.domain_config_v2.FinalOperation; +import dev.vality.damsel.domain_config_v2.RemoveOp; +import dev.vality.daway.dao.dominant.impl.ShopDaoImpl; +import dev.vality.daway.domain.tables.pojos.Shop; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +@ExtendWith(MockitoExtension.class) +class ShopHandlerTest { + + @Mock + private ShopDaoImpl shopDao; + + @Test + void handleRemoveOperationByShopConfigReference() { + String shopId = "561b311f-803c-4caf-a8d0-8241f298a727"; + ShopHandler shopHandler = new ShopHandler(shopDao); + FinalOperation operation = FinalOperation.remove(new RemoveOp() + .setRef(Reference.shop_config(new ShopConfigRef(shopId)))); + + assertTrue(shopHandler.acceptAndSet(operation)); + shopHandler.handle(operation, 6079L, "2026-06-05T08:54:58Z"); + + verify(shopDao).updateNotCurrent(shopId); + verify(shopDao, never()).save(org.mockito.ArgumentMatchers.any(Shop.class)); + } +}