package com.revolsys.beans;
import java.beans.PropertyChangeListener;
public abstract class BaseProxyPropertyChangeListener implements ProxyPropertyChangeListener {
@Override
public boolean equals(final Object other) {
if (other instanceof PropertyChangeListener) {
final PropertyChangeListener otherListener = (PropertyChangeListener)other;
for (PropertyChangeListener listener = otherListener; listener != null;) {
if (listener == this) {
return true;
} else if (listener == getPropertyChangeListener()) {
return true;
} else {
if (listener instanceof ProxyPropertyChangeListener) {
final ProxyPropertyChangeListener proxyListener = (ProxyPropertyChangeListener)listener;
listener = proxyListener.getPropertyChangeListener();
} else {
listener = null;
}
}
}
final PropertyChangeListener proxiedListener = getPropertyChangeListener();
if (proxiedListener instanceof ProxyPropertyChangeListener) {
final ProxyPropertyChangeListener proxyListener = (ProxyPropertyChangeListener)proxiedListener;
return proxyListener.equals(otherListener);
}
}
return false;
}
@Override
public String toString() {
final PropertyChangeListener listener = getPropertyChangeListener();
if (listener == null) {
return null;
} else {
return listener.toString();
}
}
}