@SuppressWarnings("unchecked") protected void notifyPropertyChangeListener(String property,Object oldValue,Object newValue){
  if ((oldValue != null && oldValue.equals(newValue)) || oldValue == newValue) {
    log.error("notifyPropertyChangeListener without change");
  }
  Vector<PropertyChangeListener> v;
synchronized (this) {
    v=(Vector<PropertyChangeListener>)listeners.clone();
  }
  if (log.isDebugEnabled()) {
    log.debug("notify " + v.size() + " listeners about property "+ property);
  }
  int cnt=v.size();
  for (int i=0; i < cnt; i++) {
    PropertyChangeListener client=v.elementAt(i);
    client.propertyChange(new PropertyChangeEvent(this,property,oldValue,newValue));
  }
}

@ SuppressWarnings ( "unchecked" ) protected void notifyPropertyChangeListener ( String property , Object oldValue , Object newValue ) { if ( ( oldValue != null && oldValue . equals ( newValue ) ) || oldValue == newValue ) { log . error ( "notifyPropertyChangeListener without change" ) ; } Vector < PropertyChangeListener > v ; synchronized ( this ) { v = ( Vector < PropertyChangeListener > ) listeners . clone ( ) ; } if ( log . isDebugEnabled ( ) ) { log . debug ( "notify " + v . size ( ) + " listeners about property " + property ) ; } int cnt = v . size ( ) ; for ( int i = 0 ; i < cnt ; i ++ ) { PropertyChangeListener client = v . elementAt ( i ) ; client . propertyChange ( new PropertyChangeEvent ( this , property , oldValue , newValue ) ) ; } }
trigger the notification of all propertychangelisteners
