コード例 #1
0
  void addListener(
      Object listener, PropertyKey propertyKey, ChangeType changeType, EventType[] eventType) {
    checkConnected();

    PropertyType type = propertyKey.getType();

    synchronized (this) {
      for (CallbackHandler handler : _handlers) {
        // compare property-key path and listener reference
        if (handler.getPath().equals(propertyKey.getPath())
            && handler.getListener().equals(listener)) {
          LOG.info(
              "Listener: "
                  + listener
                  + " on path: "
                  + propertyKey.getPath()
                  + " already exists. skip add");

          return;
        }
      }

      CallbackHandler newHandler =
          new CallbackHandler(this, _zkclient, propertyKey, listener, eventType, changeType);

      _handlers.add(newHandler);
      LOG.info(
          "Added listener: "
              + listener
              + " for type: "
              + type
              + " to path: "
              + newHandler.getPath());
    }
  }