package com.yoursway.model.repository; import java.util.concurrent.ExecutorService; import com.yoursway.model.timeline.PointInTime; public class BasicModelTracker implements IBasicModelChangesRequestor { private final Class<?> rootHandleInterface; private final Object rootHandle; private final ModelTrackerMaster master; private final ExecutorService executor; public BasicModelTracker(Class<?> rootHandleInterface, Object rootHandle, ModelTrackerMaster master, ExecutorService executor) { this.rootHandleInterface = rootHandleInterface; this.rootHandle = rootHandle; this.master = master; this.executor = executor; } public Class<?> getRootHandleInterface() { return rootHandleInterface; } public Object getRootHandle() { return rootHandle; } public void modelChanged(final ISnapshot snapshot, final ModelDelta delta) { final PointInTime moment = master.createPointInTime(); // executor.execute(new Runnable() { // // public void run() { // model cares about execution itself master.getSnapshotStorage().pushSnapshot(rootHandleInterface, moment, new ISnapshotBuilder() { public ISnapshot buildSnapshot() { return snapshot; } }); master.handlesChanged(moment, delta); System.out.println("BM.run() ch=" + delta.getChangedHandles()); // } // // }); } public void execute(Runnable r) { executor.execute(r); } }