diff --git a/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java b/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java index 49dc5ef..2cc019a 100644 --- a/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java +++ b/src/main/java/org/phoebus/channelfinder/processors/aa/AAChannelProcessor.java @@ -198,14 +198,36 @@ private Map> getArchiveActions( return result; } List> statuses = archiverClient.getStatuses(archivePVS, archiverInfo.url(), archiverInfo.alias()); - statuses - .forEach(archivePVStatusJsonMap -> { - String archiveStatus = archivePVStatusJsonMap.get("status"); - String pvName = archivePVStatusJsonMap.get("pvName"); - String pvStatus = archivePVS.get(pvName).getPvStatus(); - ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus); - result.get(action).add(archivePVS.get(pvName)); - }); + if (statuses == null) { + logger.log(Level.WARNING, "archiverClient.getStatuses returned null"); + return result; + } + logger.log(Level.INFO, "Statuses {0}", statuses); + statuses.forEach(archivePVStatusJsonMap -> { + String archiveStatus = archivePVStatusJsonMap.get("status"); + String pvName = archivePVStatusJsonMap.get("pvName"); + + if (archiveStatus == null || pvName == null) { + logger.log(Level.WARNING, "Missing status or pvName in archivePVStatusJsonMap: {0}", archivePVStatusJsonMap); + return; + } + + ArchivePVOptions archivePVOptions = archivePVS.get(pvName); + if (archivePVOptions == null) { + logger.log(Level.WARNING, "archivePVS does not contain pvName: {0}", pvName); + return; + } + + String pvStatus = archivePVOptions.getPvStatus(); + ArchiveAction action = pickArchiveAction(archiveStatus, pvStatus); + + List archivePVOptionsList = result.get(action); + if (archivePVOptionsList == null) { + logger.log(Level.WARNING, "No list found for action: {0}", action); + return; + } + archivePVOptionsList.add(archivePVOptions); + }); return result; }