4242import org .radarcns .kafka .ObservationKey ;
4343import org .radarcns .monitor .DisconnectMonitor .DisconnectMonitorState ;
4444import org .radarcns .util .EmailSender ;
45+ import org .radarcns .util .EmailSenders ;
4546import org .radarcns .util .Monitor ;
4647import org .slf4j .Logger ;
4748import org .slf4j .LoggerFactory ;
@@ -56,7 +57,7 @@ public class DisconnectMonitor extends AbstractKafkaMonitor<
5657
5758 private final ScheduledExecutorService scheduler ;
5859 private final long timeUntilReportedMissing ;
59- private final EmailSender sender ;
60+ private final EmailSenders senders ;
6061 private final Format dayFormat ;
6162 private final int numRepetitions ;
6263 private final long repeatInterval ;
@@ -65,9 +66,9 @@ public class DisconnectMonitor extends AbstractKafkaMonitor<
6566 private final String message ;
6667
6768 public DisconnectMonitor (RadarPropertyHandler radar , Collection <String > topics , String groupId ,
68- EmailSender sender ) {
69+ EmailSenders senders ) {
6970 super (radar , topics , groupId , "1" , new DisconnectMonitorState ());
70- this .sender = sender ;
71+ this .senders = senders ;
7172 this .dayFormat = DateFormat .getDateTimeInstance (
7273 DateFormat .MEDIUM , DateFormat .SHORT , Locale .US );
7374 this .scheduler = Executors .newSingleThreadScheduledExecutor ();
@@ -169,6 +170,13 @@ private void scheduleRepetition(final String key, final MissingRecordsReport rep
169170
170171 private void reportMissing (String keyString , MissingRecordsReport report ) {
171172 ObservationKey key = getStateStore ().stringToKey (keyString );
173+
174+ // Don't report if no email address for this projectId
175+ EmailSender sender = senders .getEmailSenderForProject (key .getProjectId ());
176+ if (sender == null ) {
177+ return ;
178+ }
179+
172180 long timeout = report .getTimeout ();
173181 logger .info ("Device {} timeout {} (message {} of {}). Reporting it missing." , key ,
174182 timeout , report .getMessageNumber (), numRepetitions );
@@ -202,6 +210,14 @@ private void reportMissing(String keyString, MissingRecordsReport report) {
202210 }
203211
204212 private void reportRecovered (ObservationKey key , long reportedMissingTime ) {
213+
214+ // Don't report if no email address for this projectId
215+ EmailSender sender = senders .getEmailSenderForProject (key .getProjectId ());
216+ if (sender == null ) {
217+ return ;
218+ }
219+
220+
205221 logger .info ("Device {} seen again. Reporting it recovered." , key );
206222 try {
207223 Date reportedMissingDate = new Date (reportedMissingTime );
0 commit comments