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; }