import java.beans.*; import edu.vt.cs.collab.cork.ReplicatedObjectClient; import edu.vt.cs.collab.cork.ObjectID; /** * Listener class for a TestBean. When a property change is detected, * a TestBeanChange object is created and passed to a CORK * ReplicatedObjectClient. */ public class TestBeanListener implements PropertyChangeListener { /** * The ReplicatedObjectClient that we're using to communicate * with CORK. */ private ReplicatedObjectClient client = null; public TestBeanListener(ReplicatedObjectClient client) { this.client = client; } public void propertyChange(PropertyChangeEvent pce) { String prop = pce.getPropertyName(); if (prop.equals("value")) { TestBean src = (TestBean) pce.getSource(); // Find our TestBean's object identifier ObjectID id = client.getObjectID(src); if (id != null) { // Construct a Change object that knows how to set // the "value" property to the new value. TestBeanChange ch = new TestBeanChange((String)pce.getNewValue()); // Broadcast the change to the server and to any other // active replicas of this object client.broadcastChange(ch, id); } else { // If we didn't have an ObjectID, then CORK doesn't // know about the TestBean that we're attached to System.err.println("WARNING: TestBean not replicated"); } } } }