Ejemplo n.º 1
0
  public void unregisterStorage(final OStorage iStorage) {
    if (!active)
      // SHUTDOWNING OR NOT ACTIVE: RETURN
      return;

    acquireExclusiveLock();
    try {
      // UNREGISTER ALL THE LISTENER ONE BY ONE AVOIDING SELF-RECURSION BY REMOVING FROM THE LIST
      final ArrayList<OOrientListener> listenerCopy = new ArrayList<OOrientListener>(listeners);
      for (Iterator<OOrientListener> it = listenerCopy.iterator(); it.hasNext(); ) {
        final OOrientListener l = it.next();
        listeners.remove(l);
        l.onStorageUnregistered(iStorage);
      }

      for (Entry<String, OStorage> s : storages.entrySet()) {
        if (s.getValue() == iStorage) {
          storages.remove(s.getKey());
          break;
        }
      }
    } finally {
      releaseExclusiveLock();
    }
  }