コード例 #1
0
  private PropertyChangeListener getWeakListener(AXIComponent proxy, boolean remove) {
    if (listenerMap == null) {
      listenerMap = new WeakHashMap<AXIComponent, PropertyChangeListener>();
    }
    if (remove) return listenerMap.remove(proxy);

    if (proxy.getComponentType() != ComponentType.PROXY) {
      Set<AXIComponent> keySet = listenerMap.keySet();
      for (AXIComponent key : keySet) {
        if (key.getPeer() == proxy.getPeer()) return null;
      }
    }

    PropertyChangeListener listener = listenerMap.get(proxy);
    if (listener == null) {
      listener =
          (PropertyChangeListener) WeakListeners.create(PropertyChangeListener.class, proxy, this);
      listenerMap.put(proxy, listener);
      return listener;
    }

    // if exists, return null.
    return null;
  }