code: @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
      public void trigger(String dataId, DataStreamFactory dataStreamFactory) {
          List<LoaderListener> listeners = getListeners("");
          synchronized (listeners) {
              for (LoaderListener ll : listeners) {
                  try {
                      ll.newDataLoaded(dataId, dataStreamFactory.getDataStream());
                  } catch (Exception e) {
                      LOG.log(Level.SEVERE, "Error calling LoadListener: " + ll, e);
                  }
              }
          }
          if (!(Objects.isNull(dataId) || dataId.isEmpty())) {
              listeners = getListeners(dataId);
              synchronized (listeners) {
                  for (LoaderListener ll : listeners) {
                      try {
                          ll.newDataLoaded(dataId, dataStreamFactory.getDataStream());
                      } catch (Exception e) {
                          throw new IllegalArgumentException("Failed to load new data: " + ll, e);
                      }
                  }
              }
          }
      }
docs: Trigger the listeners registered for the given dataId.
  
  @param dataId the data id, not null.
  @param dataStreamFactory factory of the InputStream with the latest data.