From fba1269d2d09ce32b82442fc1728955995c5f506 Mon Sep 17 00:00:00 2001 From: ymlam Date: Thu, 1 Jun 2023 22:09:38 -0400 Subject: [PATCH] Fix bug of missing trailing VoiceCall status updates to portal. Reason is due to premature terminating postback threads because the serviceActivityCount is decremented erreously when updating intermediate job statuses with portal. Fix is in classifying job status as final or non-final. As it is, all JobStatus in CommEngine are final; however, derived classes may have non-final JobStatus. --- src/main/java/altk/comm/engine/Broadcast.java | 2 +- src/main/java/altk/comm/engine/Job.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/altk/comm/engine/Broadcast.java b/src/main/java/altk/comm/engine/Broadcast.java index 703fd0e..6b1c807 100644 --- a/src/main/java/altk/comm/engine/Broadcast.java +++ b/src/main/java/altk/comm/engine/Broadcast.java @@ -1266,7 +1266,7 @@ public abstract class Broadcast report.initBase(job, broadcastId, launchRecordId, activityRecordIdParamName, jobReportRootNodeName); report.init(job); postback.queueReport(report.toString()); - updateServiceActivityCount(-1); + if (job.statusIsFinal()) updateServiceActivityCount(-1); } } diff --git a/src/main/java/altk/comm/engine/Job.java b/src/main/java/altk/comm/engine/Job.java index 441a3bb..79d4aef 100644 --- a/src/main/java/altk/comm/engine/Job.java +++ b/src/main/java/altk/comm/engine/Job.java @@ -1,5 +1,7 @@ package altk.comm.engine; +import altk.comm.engine.Job.CommJobStatus; + /** * Derived classes may add more class attributes, e.g. list of phone numbers, call status. * @author Yuk-Ming @@ -81,5 +83,18 @@ public class Job { return false; } + + /** + * Derived class must augment this method to handle its own JobStatus + */ + protected boolean statusIsFinal() { + if (jobStatus instanceof CommJobStatus) + { + return true; + } + throw new IllegalArgumentException("Job status is not a CommJobStatus"); + } + + }