X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Fbeans%2FAbstractBean.java;h=b2da7324962fc4837db538da71205d703fdc0a44;hb=d6015942121ba0e43177da20c3559126e9c6dafe;hp=0438c6dbc3d6d98b5ac4bc58d34bff04adfacfd9;hpb=ce32d41fc7a9b72674d2bb42d0064293b38f06db;p=jSite2.git diff --git a/src/net/pterodactylus/util/beans/AbstractBean.java b/src/net/pterodactylus/util/beans/AbstractBean.java index 0438c6d..b2da732 100644 --- a/src/net/pterodactylus/util/beans/AbstractBean.java +++ b/src/net/pterodactylus/util/beans/AbstractBean.java @@ -29,9 +29,8 @@ import java.util.List; * Abstract bean super class that contains property change listener management. * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ -public class AbstractBean { +public abstract class AbstractBean { /** Property change listeners. */ private final List propertyChangeListeners = Collections.synchronizedList(new ArrayList()); @@ -74,4 +73,40 @@ public class AbstractBean { } + /** + * Fires a property change event if the two values are not equal. + * + * @param propertyName + * The name of the property + * @param oldValue + * The old value of the property + * @param newValue + * The new value of the property + */ + protected void fireIfPropertyChanged(String propertyName, Object oldValue, Object newValue) { + if (!equal(oldValue, newValue)) { + firePropertyChange(propertyName, oldValue, newValue); + } + } + + // + // PRIVATE METHODS + // + + /** + * Compares the two objects and returns whether they are equal according to + * {@link Object#equals(Object)}. This method takes null + * into account as a valid value for an object. + * + * @param first + * The first object + * @param second + * The second object + * @return true if the two objects are equal, + * false otherwise + */ + private boolean equal(Object first, Object second) { + return ((first == null) && (second == null)) || ((first != null) && first.equals(second)) || ((second != null) && second.equals(first)); + } + }