From 97dae2e9ee8c98c3efd33e884609104d503a59c4 Mon Sep 17 00:00:00 2001 From: Vusumuzi Khoza Date: Mon, 8 Dec 2025 14:01:51 +0200 Subject: [PATCH] completed poll logic --- .../repositories/TransactionRepository.java | 1 + .../tm/domain/workflows/PollCronWorkflow.java | 19 ++++++++++--------- .../workflows/StartupApplicationListener.java | 4 ++-- .../domain/workflows/TransactionWorkflow.java | 2 +- 4 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/zw/qantra/tm/domain/repositories/TransactionRepository.java b/src/main/java/zw/qantra/tm/domain/repositories/TransactionRepository.java index 1351a57..281d2fb 100644 --- a/src/main/java/zw/qantra/tm/domain/repositories/TransactionRepository.java +++ b/src/main/java/zw/qantra/tm/domain/repositories/TransactionRepository.java @@ -19,4 +19,5 @@ public interface TransactionRepository extends JpaRepository, List findAllByUserId(String uid); List findAllByConfirmationStatusAndPaymentStatusAndIntegrationStatus( Status s1, Status s2, Status s3); + List findAllByConfirmationStatusAndIntegrationStatus(Status s1, Status s2); } \ No newline at end of file diff --git a/src/main/java/zw/qantra/tm/domain/workflows/PollCronWorkflow.java b/src/main/java/zw/qantra/tm/domain/workflows/PollCronWorkflow.java index c6e2121..58e4efa 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/PollCronWorkflow.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/PollCronWorkflow.java @@ -12,6 +12,7 @@ import org.joda.time.DateTime; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import zw.qantra.tm.domain.dtos.StateResponse; import zw.qantra.tm.domain.enums.Status; import zw.qantra.tm.domain.models.Transaction; import zw.qantra.tm.domain.services.TransactionService; @@ -19,6 +20,7 @@ import zw.qantra.tm.utils.LogUtils; import zw.qantra.tm.utils.Utils; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.concurrent.CompletableFuture; @@ -45,8 +47,7 @@ public class PollCronWorkflow extends WorkflowDefinition { public NextAction process(StateExecution execution) { List transactions = transactionService.getTransactionRepository() - .findAllByConfirmationStatusAndPaymentStatusAndIntegrationStatus( - Status.SUCCESS, Status.PENDING, Status.PENDING); + .findAllByConfirmationStatusAndIntegrationStatus(Status.SUCCESS, Status.PENDING); log.info("Transaction count {}", transactions.size()); for (Transaction transaction: transactions) { @@ -74,15 +75,19 @@ public class PollCronWorkflow extends WorkflowDefinition { Object response = future.get(); LogUtils.logPrettyJson(log, "polling result", response); - Transaction tran = Utils.deepCopy(response, Transaction.class); + StateResponse wfResp = Utils.deepCopy(response, StateResponse.class); + LinkedHashMap tran = (LinkedHashMap) wfResp.getBody(); + if(tran == null) + break; + // only attempt integration logic if polling succeeded - if(tran.getStatus().equals(Status.SUCCESS)) { + if(tran.get("status").equals(Status.SUCCESS.name())) { // integration logic WorkflowInstance update1 = new WorkflowInstance.Builder() .setId(transaction.getWorkflowId()) .setState("integration") // The state you want to transition to .setNextActivation(DateTime.now()) // Schedule immediate execution - .setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(transaction)); }}) + .setStateVariables(new HashMap<>(){{ put("body", Utils.toJson(tran)); }}) .setStateText("Resumed from manual state") .build(); @@ -107,10 +112,6 @@ public class PollCronWorkflow extends WorkflowDefinition { }catch (Exception e) { log.error(e.getMessage()); - - transaction.setPollingStatus(Status.FAILED); - transaction.setIntegrationStatus(Status.FAILED); - transactionService.save(transaction); } } diff --git a/src/main/java/zw/qantra/tm/domain/workflows/StartupApplicationListener.java b/src/main/java/zw/qantra/tm/domain/workflows/StartupApplicationListener.java index 1981e11..473c091 100644 --- a/src/main/java/zw/qantra/tm/domain/workflows/StartupApplicationListener.java +++ b/src/main/java/zw/qantra/tm/domain/workflows/StartupApplicationListener.java @@ -28,8 +28,8 @@ public class StartupApplicationListener implements ApplicationListener