/** * Add a PropertyChangeListener to the listener list. The listener is * registered for all properties. The same listener object may be added * more than once, and will be called as many times as it is added. If * listener is null, no exception is thrown and no action is taken. * * @param listener The PropertyChangeListener to be added */ public void addPropertyChangeListener(PropertyChangeListener listener) { if (listener instanceof PropertyChangeListenerProxy) { PropertyChangeListenerProxy proxy = (PropertyChangeListenerProxy) listener; addPropertyChangeListener(proxy.getPropertyName(), (PropertyChangeListener)proxy.getListener()); } else { listeners.add(new WeakReference<PropertyChangeListener>(listener)); } }
public void setDelegate(ChatServerConnection newDelegate) { if (delegate != null && delegate.isConnected()) { throw new IllegalStateException(Resources.getString("Server.error1")); //$NON-NLS-1$ } ChatServerConnection oldDelegate = delegate; if (oldDelegate != null) { newDelegate.setUserInfo(oldDelegate.getUserInfo()); } PropertyChangeListener[] listeners = propSupport.getPropertyChangeListeners(); for (int i = 0; i < listeners.length; i++) { newDelegate.addPropertyChangeListener(((PropertyChangeListenerProxy) listeners[i]).getPropertyName(), listeners[i]); } if (controls != null) { if (delegate instanceof ChatControlsInitializer) { ((ChatControlsInitializer) delegate).uninitializeControls(controls); } if (newDelegate instanceof ChatControlsInitializer) { ((ChatControlsInitializer) newDelegate).initializeControls(controls); } } delegate = newDelegate; }
public void testAddingAProxy() { Object bean = new Object(); PropertyChangeSupport support = new PropertyChangeSupport(bean); PropertyChangeListener listener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) {} }; PropertyChangeListenerProxy proxy = new PropertyChangeListenerProxy("a", listener); support.addPropertyChangeListener("b", proxy); // this proxy sets us up to receive 'b' events PropertyChangeListenerProxy p1 = (PropertyChangeListenerProxy) support.getPropertyChangeListeners()[0]; assertEquals(PropertyChangeListenerProxy.class, p1.getClass()); assertEquals("b", p1.getPropertyName()); // this proxy sets us up to receive 'a' events PropertyChangeListenerProxy p2 = (PropertyChangeListenerProxy) p1.getListener(); assertEquals(PropertyChangeListenerProxy.class, p2.getClass()); assertEquals("a", p2.getPropertyName()); assertEquals(listener, p2.getListener()); }
@SuppressWarnings({"unused", "UnusedParameters"}) private PropertyChangeListener[] getPropertyChangeListeners(Object proxy) { List<PropertyChangeListener> listeners = new ArrayList<>(); if (propertyChangeSupport != null) { for (PropertyChangeListener pcl : propertyChangeSupport.getPropertyChangeListeners()) { // Avoid single property change listeners if (!(pcl instanceof PropertyChangeListenerProxy)) { listeners.add(pcl); } } } if (weakPropertyChangeSupport != null) { Collections.addAll(listeners, weakPropertyChangeSupport.getPropertyChangeListeners()); } return listeners.toArray(new PropertyChangeListener[listeners.size()]); }
/** * Retrieves listeners. * * @return all of the {@code PropertyChangeListeners} added or an empty array * if no listeners have been added * * @see java.beans.PropertyChangeSupport#getPropertyChangeListeners() */ @Override public PropertyChangeListener[] getPropertyChangeListeners() { ArrayList<PropertyChangeListener> listeners = new ArrayList<>(); if (propertyChangeSupport != null) { for (PropertyChangeListener pcl : propertyChangeSupport.getPropertyChangeListeners()) { // do not add single property change listeners if (!(pcl instanceof PropertyChangeListenerProxy)) { listeners.add(pcl); } } } if (weakPropertyChangeSupport != null) { listeners.addAll(Arrays.asList(weakPropertyChangeSupport.getPropertyChangeListeners())); } return listeners.toArray(new PropertyChangeListener[listeners.size()]); }
public final void testGetPropertyChangeListeners() { PropertyChangeListener[] listeners = kfm.getPropertyChangeListeners(); assertNotNull(listeners); assertEquals(0, listeners.length); kfm.addPropertyChangeListener(listener); assertEquals(0, listeners.length); listeners = kfm.getPropertyChangeListeners(); assertEquals(1, listeners.length); assertSame(listener, listeners[0]); String propName = "currentFocusCycleRoot"; kfm.addPropertyChangeListener(propName, listener); listeners = kfm.getPropertyChangeListeners(); assertEquals(2, listeners.length); assertNotSame(listener, listeners[1]); assertTrue(listeners[1] instanceof PropertyChangeListenerProxy); PropertyChangeListenerProxy proxy = (PropertyChangeListenerProxy) listeners[1]; assertEquals(propName, proxy.getPropertyName()); assertSame(listener, proxy.getListener()); }
public void testRemovePropertyChangeListener_PropertyChangeListener_String_PropertyRegistered() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); PropertyChangeListener l1 = new MockPropertyChangeListener(); sup.addPropertyChangeListener("myProp", l1); assertEquals(1, sup.getPropertyChangeListeners().length); sup.removePropertyChangeListener("myProp", l1); assertEquals(0, sup.getPropertyChangeListeners().length); assertEquals(0, sup.getPropertyChangeListeners("myProp").length); PropertyChangeListener l2 = new MockPropertyChangeListener(); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); sup.addPropertyChangeListener(l3); assertEquals(1, sup.getPropertyChangeListeners().length); sup.removePropertyChangeListener("myProp", l2); assertEquals(0, sup.getPropertyChangeListeners().length); assertEquals(0, sup.getPropertyChangeListeners("myProp").length); }
public void testGetPropertyChangeListener_String_Normal() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); PropertyChangeListener l1 = new MockPropertyChangeListener(); PropertyChangeListener l2 = new MockPropertyChangeListener(); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); PropertyChangeListener l4 = new MockPropertyChangeListener(); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp2", l4); assertEquals(1, sup.getPropertyChangeListeners("myProp").length); assertSame(l2, sup.getPropertyChangeListeners("myProp")[0]); sup.addPropertyChangeListener("myProp", new MockPropertyChangeListener()); assertEquals(2, sup.getPropertyChangeListeners("myProp").length); }
public void testHasListener_AllRegistered() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); PropertyChangeListener l1 = new MockPropertyChangeListener(); PropertyChangeListener l2 = new MockPropertyChangeListener(); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); assertFalse(sup.hasListeners("myProp")); sup.addPropertyChangeListener(l1); assertTrue(sup.hasListeners("myProp")); sup.removePropertyChangeListener(l1); assertFalse(sup.hasListeners("myProp")); sup.addPropertyChangeListener(l3); assertTrue(sup.hasListeners("myProp")); }
public void testHasListener_PropertyRegistered() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); PropertyChangeListener l1 = new MockPropertyChangeListener(); PropertyChangeListener l2 = new MockPropertyChangeListener(); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); assertFalse(sup.hasListeners("myProp")); sup.addPropertyChangeListener("myProP", l1); assertFalse(sup.hasListeners("myProp")); sup.addPropertyChangeListener("myProp", l2); assertTrue(sup.hasListeners("myProp")); sup.removePropertyChangeListener("myProp", l2); assertFalse(sup.hasListeners("myProp")); // The following assertion fails on RI. See HARMONY-2526 sup.addPropertyChangeListener("myProp", l3); assertTrue(sup.hasListeners("myProp")); }
public void testFirePropertyChange_Object_Normal() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = new Object(); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Object_EqualValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = newValue; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertNotCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_Object_NullValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = null; Object oldValue = null; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Object_NullNewValue() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = null; Object oldValue = new Object(); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Object_NullOldValue() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = null; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Object_NullProperty() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = new Object(); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, null, oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, null, oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, null, oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(null, oldValue, newValue); l1.assertCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_Normal() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = new Object(); Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_EqualValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = newValue; Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertNotCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_NullValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = null; Object oldValue = null; Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_NullNewValue() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = null; Object oldValue = new Object(); Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_NullOldValue() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = null; Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_PropertyChangeEvent_NullProperty() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = new Object(); Object oldValue = new Object(); Object src2 = new Object(); PropertyChangeEvent event = new PropertyChangeEvent(src2, null, oldValue, newValue); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src2, null, oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src2, null, oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src2, null, oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(event); l1.assertCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_Boolean_Normal() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = Boolean.TRUE; Object oldValue = Boolean.FALSE; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", false, true); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Boolean_EqualValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = Boolean.TRUE; Object oldValue = newValue; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", true, true); l1.assertNotCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_Boolean_NullProperty() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Object newValue = Boolean.TRUE; Object oldValue = Boolean.FALSE; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, null, oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, null, oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, null, oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(null, false, true); l1.assertCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_Int_Normal() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); int newValue = 1; int oldValue = 2; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue, newValue); l1.assertCalled(); l2.assertCalled(); l4.assertCalled(); }
public void testFirePropertyChange_Int_EqualValues() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Integer newValue = new Integer(1); Integer oldValue = newValue; MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange("myProp", oldValue.intValue(), newValue .intValue()); l1.assertNotCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testFirePropertyChange_Int_NullProperty() { Object src = new Object(); PropertyChangeSupport sup = new PropertyChangeSupport(src); Integer newValue = new Integer(1); Integer oldValue = new Integer(2); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, null, oldValue, newValue); MockPropertyChangeListener l2 = new MockPropertyChangeListener(src, null, oldValue, newValue); PropertyChangeListener l3 = new PropertyChangeListenerProxy("myProp", l2); MockPropertyChangeListener l4 = new MockPropertyChangeListener(src, null, oldValue, newValue); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener(l3); sup.addPropertyChangeListener("myProp", l4); sup.firePropertyChange(null, oldValue.intValue(), newValue.intValue()); l1.assertCalled(); l2.assertNotCalled(); l4.assertNotCalled(); }
public void testSerialization() throws Exception { Object src = "PropertyChangeSupportSerializationTest"; PropertyChangeSupport sup = new PropertyChangeSupport(src); PropertyChangeSupport sup2 = new PropertyChangeSupport(src); Integer newValue = new Integer(1); Integer oldValue = new Integer(2); MockPropertyChangeListener l1 = new MockPropertyChangeListener(src, "myProp", oldValue, newValue); MockPropertyChangeListener2 l2 = new MockPropertyChangeListener2(); sup.addPropertyChangeListener(l1); sup.addPropertyChangeListener("myProp", l1); sup.addPropertyChangeListener("myProp", l2); sup2.addPropertyChangeListener(l1); sup2.addPropertyChangeListener("myProp", l1); PropertyChangeSupport deSup = (PropertyChangeSupport) SerializationTester .getDeserilizedObject(sup); assertEquals(sup2.getPropertyChangeListeners()[0], deSup .getPropertyChangeListeners()[0]); assertEquals(((PropertyChangeListenerProxy) sup2 .getPropertyChangeListeners()[1]).getListener(), ((PropertyChangeListenerProxy) deSup .getPropertyChangeListeners()[1]).getListener()); }
/** * @tests java.beans.PropertyChangeSupport#removePropertyChangeListener( * java.lang.String, java.beans.PropertyChangeListener) */ public void testRemovePropertyChangeListener() { // Regression for HARMONY-386 PropertyChangeSupport prop = new PropertyChangeSupport(new Object()); PropertyChangeListener lis1 = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { } }; PropertyChangeListener lis2 = new PropertyChangeListenerProxy("name", lis1); assertEquals(0, prop.getPropertyChangeListeners().length); prop.addPropertyChangeListener(lis2); assertEquals(1, prop.getPropertyChangeListeners().length); prop.removePropertyChangeListener("name", lis1); assertEquals(0, prop.getPropertyChangeListeners().length); }
/** * Helper method that analyzes the * <code>{@link PropertyChangeListener}</code> instances of a given chart: * it returns a map that contains listener <code>{@link Class}</code>(key) * along with the count of instances registered on the given chart (value). * <p> * This may be used to find out the implementation class that messes up, if * the amount of listeners of that type increases in-between invocation of a * method that affects the chart. * <p> * * @param chart * the chart to analyze the listeners of. * * @return a map that contains listener <code>{@link Class}</code>(key) * along with the count of instances registered on the given chart * (value). */ private static Map<Class<?>, Integer> getPropertyChangeListenerStatisticsForChartPerListenerInstance( final Chart2D chart) { Class<?> clazz; Integer count; PropertyChangeListener[] propertyChangeListeners = chart .getPropertyChangeListeners(); Map<Class<?>, Integer> classes2count = new HashMap<Class<?>, Integer>(); for (int i = propertyChangeListeners.length - 1; i >= 0; i--) { clazz = ((PropertyChangeListenerProxy)propertyChangeListeners[i]).getListener().getClass(); count = null; // count the listener classes: count = classes2count.get(clazz); count = MathUtil.increment(count); classes2count.put(clazz, count); } for (Map.Entry<Class<?>, Integer> entry : classes2count.entrySet()) { System.out.println((entry.getKey()).getName() + " : " + entry.getValue()); } return classes2count; }