/**
  * Caches result set on the CMR for the given storage under given hash.
  *
  * @param cmrRepositoryDefinition {@link CmrRepositoryDefinition} to cache results on.
  * @param storageData {@link StorageData}
  * @param results Results to cache
  * @param hash Hash to use
  */
 private void cacheQueryResultOnCmr(
     CmrRepositoryDefinition cmrRepositoryDefinition,
     StorageData storageData,
     List<E> results,
     int hash) {
   try {
     cmrRepositoryDefinition.getStorageService().cacheStorageData(storageData, results, hash);
   } catch (BusinessException e) { // NOPMD NOCHK
     // ignore also if caching fails
   }
 }
  /** {@inheritDoc} */
  @Override
  public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
    CmrRepositoryDefinition cmrRepositoryDefinition = null;
    if (receiver instanceof ICmrRepositoryProvider) {
      cmrRepositoryDefinition = ((ICmrRepositoryProvider) receiver).getCmrRepositoryDefinition();
    } else if (receiver instanceof ICmrRepositoryAndAgentProvider) {
      cmrRepositoryDefinition =
          ((ICmrRepositoryAndAgentProvider) receiver).getCmrRepositoryDefinition();
    } else if (receiver instanceof IStorageDataProvider) {
      cmrRepositoryDefinition = ((IStorageDataProvider) receiver).getCmrRepositoryDefinition();
    } else if (receiver instanceof IInputDefinitionProvider) {
      RepositoryDefinition repository =
          ((IInputDefinitionProvider) receiver).getInputDefinition().getRepositoryDefinition();
      if (repository instanceof CmrRepositoryDefinition) {
        cmrRepositoryDefinition = (CmrRepositoryDefinition) repository;
      } else {
        return false;
      }
    } else if ("anyOnline".equals(property)) {
      for (CmrRepositoryDefinition cmr :
          InspectIT.getDefault().getCmrRepositoryManager().getCmrRepositoryDefinitions()) {
        if (cmr.getOnlineStatus().equals(OnlineStatus.ONLINE)) {
          return true;
        }
      }
      return false;
    } else {
      return false;
    }

    if ("onlineStatus".equals(property)) {
      if ("ONLINE".equals(expectedValue)) {
        return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.ONLINE;
      } else if ("OFFLINE".equals(expectedValue)) {
        return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.OFFLINE;
      } else if ("CHECKING".equals(expectedValue)) {
        return cmrRepositoryDefinition.getOnlineStatus() == OnlineStatus.CHECKING;
      }
    } else if ("recordingActive".equals(property)) {
      if (expectedValue instanceof Boolean) {
        if (cmrRepositoryDefinition.getOnlineStatus() != OnlineStatus.OFFLINE) {
          boolean recordingActive =
              cmrRepositoryDefinition.getStorageService().getRecordingState() != RecordingState.OFF;
          return ((Boolean) expectedValue).booleanValue() == recordingActive;
        } else {
          return false;
        }
      }
    }
    return false;
  }