jtulach@315: package org.apidesign.javamonitorflaws; jtulach@315: 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@319: public class MultiplyCache extends Cache jtulach@319: implements CacheTest.CacheToTest { 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@318: public synchronized void addPropertyChangeListener( jtulach@318: PropertyChangeListener listener jtulach@318: ) { jtulach@315: if (pcs == null) { jtulach@315: pcs = new PropertyChangeSupport(this); jtulach@315: } jtulach@315: pcs.addPropertyChangeListener(listener); jtulach@315: } jtulach@318: public synchronized void removePropertyChangeListener( jtulach@318: PropertyChangeListener listener jtulach@318: ) { 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@319: return f.length() * multiply; jtulach@315: } jtulach@317: } jtulach@317: // END: monitor.pitfalls.subclass jtulach@315: jtulach@315: