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));
+ }
+}