logger.info("Received HealthMonitorRequest:" + hsm);
  public void execute() {    if ((wakeAlarm != null) && wakeAlarm.hasExpired()) {      // Determine identify node and host      if (myNode == null && getTopologyFlag) {        getTopologyFlag = false;        getTopologyInfo();      }      if (myNode != null && !joinedStartupCommunity) {        joinStartupCommunity();      }      updateAndSendNodeStatus();      long tmp = getLongAttribute(CURRENT_STATUS_UPDATE_ATTRIBUTE, updateInterval);      if (tmp != updateInterval) {        logger.info("Changing update interval: old=" + updateInterval + " new=" + tmp);        updateInterval = tmp;      }      wakeAlarm = new WakeAlarm(now() + getLongAttribute(STATUS_UPDATE_INTERVAL_ATTRIBUTE, updateInterval));      alarmService.addRealTimeAlarm(wakeAlarm);    }    // Get status from health monitor peers    Collection nsCollection = nodeStatusRelaySub.getAddedCollection();    for (Iterator it = nsCollection.iterator(); it.hasNext(); ) {      NodeStatusRelay nsr = (NodeStatusRelay)it.next();      logger.debug("Received added NodeStatusRelay:" +                  " community=" + nsr.getCommunityName() +                  " source=" + nsr.getSource() +                  " numAgents=" + nsr.getAgentStatus().length +                  " leaderVote=" + nsr.getLeaderVote());      // update status model      updateCommunityStatus(nsr.getCommunityName(),                            nsr.getSource().toString(),                            nsr.getNodeStatus(),                            nsr.getAgentStatus(),                            nsr.getLeaderVote(),                            nsr.getLocation());    }    nsCollection = nodeStatusRelaySub.getChangedCollection();    for (Iterator it = nsCollection.iterator(); it.hasNext(); ) {      NodeStatusRelay nsr = (NodeStatusRelay)it.next();      logger.debug("Received changed NodeStatusRelay:" +                  " community=" + nsr.getCommunityName() +                  " source=" + nsr.getSource() +                  " numAgents=" + nsr.getAgentStatus().length +                  " leaderVote=" + nsr.getLeaderVote());     // update status model      updateCommunityStatus(nsr.getCommunityName(),                            nsr.getSource().toString(),                            nsr.getNodeStatus(),                            nsr.getAgentStatus(),                            nsr.getLeaderVote(),                            nsr.getLocation());    }    // Get HealthMonitorRequests    for (Iterator it = healthMonitorRequests.getAddedCollection().iterator(); it.hasNext(); ) {      HealthMonitorRequest hsm = (HealthMonitorRequest)it.next();      logger.info("Received HealthMonitorRequest:" + hsm);      switch (hsm.getRequestType()) {        case HealthMonitorRequest.MOVE:          break;        case HealthMonitorRequest.GET_STATUS:          int respStatus = HealthMonitorResponse.FAIL;          String respObj = null;          if (model != null) {            respStatus = HealthMonitorResponse.SUCCESS;            respObj = controller.getCompleteStatus();          }          hsm.setResponse(new HealthMonitorResponse(respStatus, respObj));          blackboard.publishChange(hsm);      }    }  }