You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by vi...@apache.org on 2025/04/01 02:43:35 UTC

(fineract) branch develop updated: FINERACT-2227: Fix triggered SMS messages error (#4511)

This is an automated email from the ASF dual-hosted git repository.

victorromero pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new b7845166c4 FINERACT-2227: Fix triggered SMS messages error (#4511)
b7845166c4 is described below

commit b7845166c49b629d719568c309a8616282bdce2d
Author: Peter Mwangi <th...@gmail.com>
AuthorDate: Tue Apr 1 05:43:30 2025 +0300

    FINERACT-2227: Fix triggered SMS messages error (#4511)
---
 .../SmsMessageScheduledJobServiceImpl.java         | 41 +++++++++++++---------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
index 278f4fc7b6..733601a712 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/sms/scheduler/SmsMessageScheduledJobServiceImpl.java
@@ -22,7 +22,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import lombok.RequiredArgsConstructor;
@@ -90,36 +89,44 @@ public class SmsMessageScheduledJobServiceImpl implements SmsMessageScheduledJob
             if (!smsDataMap.isEmpty()) {
                 List<SmsMessage> toSaveMessages = new ArrayList<>();
                 List<SmsMessage> toSendNotificationMessages = new ArrayList<>();
+
                 for (Map.Entry<SmsCampaign, Collection<SmsMessage>> entry : smsDataMap.entrySet()) {
-                    Iterator<SmsMessage> smsMessageIterator = entry.getValue().iterator();
-                    Collection<SmsMessageApiQueueResourceData> apiQueueResourceDatas = new ArrayList<>();
-                    while (smsMessageIterator.hasNext()) {
-                        SmsMessage smsMessage = smsMessageIterator.next();
+                    for (SmsMessage smsMessage : entry.getValue()) {
                         if (smsMessage.isNotification()) {
                             smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue());
                             toSendNotificationMessages.add(smsMessage);
                         } else {
-                            SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(
-                                    smsMessage.getId(), null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(),
-                                    entry.getKey().getProviderId());
-                            apiQueueResourceDatas.add(apiQueueResourceData);
                             smsMessage.setStatusType(SmsMessageStatusType.WAITING_FOR_DELIVERY_REPORT.getValue());
                             toSaveMessages.add(smsMessage);
                         }
                     }
-                    if (toSaveMessages.size() > 0) {
-                        this.smsMessageRepository.saveAll(toSaveMessages);
-                        this.smsMessageRepository.flush();
-                        this.taskExecutor.execute(new SmsTask(apiQueueResourceDatas, ThreadLocalContextUtil.getContext()));
-                    }
-                    if (!toSendNotificationMessages.isEmpty()) {
-                        this.notificationSenderService.sendNotification(toSendNotificationMessages);
+                }
+                if (!toSaveMessages.isEmpty()) {
+                    this.smsMessageRepository.saveAll(toSaveMessages);
+                    this.smsMessageRepository.flush();
+
+                    for (Map.Entry<SmsCampaign, Collection<SmsMessage>> entry : smsDataMap.entrySet()) {
+                        Collection<SmsMessageApiQueueResourceData> apiQueueResourceDatas = new ArrayList<>();
+                        for (SmsMessage smsMessage : entry.getValue()) {
+                            if (!smsMessage.isNotification()) {
+                                SmsMessageApiQueueResourceData apiQueueResourceData = SmsMessageApiQueueResourceData.instance(
+                                        smsMessage.getId(), null, null, null, smsMessage.getMobileNo(), smsMessage.getMessage(),
+                                        entry.getKey().getProviderId());
+                                apiQueueResourceDatas.add(apiQueueResourceData);
+                            }
+                        }
+                        if (!apiQueueResourceDatas.isEmpty()) {
+                            this.taskExecutor.execute(new SmsTask(apiQueueResourceDatas, ThreadLocalContextUtil.getContext()));
+                        }
                     }
+                }
 
+                if (!toSendNotificationMessages.isEmpty()) {
+                    this.notificationSenderService.sendNotification(toSendNotificationMessages);
                 }
             }
         } catch (Exception e) {
-            log.error("Error occured.", e);
+            log.error("Error occurred.", e);
         }
     }