jtulach@315: package org.apidesign.javamonitorflaws; jtulach@315: jtulach@315: import org.apidesign.javamonitorflaws.Cache; jtulach@315: import java.beans.PropertyChangeListener; jtulach@315: import java.beans.PropertyChangeSupport; jtulach@315: jtulach@315: /** jtulach@315: * jtulach@315: * @author Jaroslav Tulach jtulach@315: */ jtulach@317: // BEGIN: monitor.pitfalls.subclass jtulach@315: public class MultiplyCache extends Cache { jtulach@315: private PropertyChangeSupport pcs; jtulach@315: private int multiply; jtulach@315: public static final String PROP_MULTIPLY = "multiply"; jtulach@315: jtulach@315: public synchronized int getMultiply() { jtulach@315: return multiply; jtulach@315: } jtulach@315: public synchronized void setMultiply(int multiply) { jtulach@315: int oldMultiply = this.multiply; jtulach@315: this.multiply = multiply; jtulach@315: pcs.firePropertyChange(PROP_MULTIPLY, oldMultiply, multiply); jtulach@315: } jtulach@315: jtulach@315: public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { jtulach@315: if (pcs == null) { jtulach@315: pcs = new PropertyChangeSupport(this); jtulach@315: } jtulach@315: pcs.addPropertyChangeListener(listener); jtulach@315: } jtulach@316: public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { jtulach@315: if (pcs != null) { jtulach@315: pcs.removePropertyChangeListener(listener); jtulach@315: } jtulach@315: } jtulach@315: jtulach@315: @Override jtulach@315: protected Integer createItem(String f) { jtulach@315: return f.length() * getMultiply(); jtulach@315: } jtulach@317: } jtulach@317: // END: monitor.pitfalls.subclass jtulach@315: jtulach@315: