package com.github.atemerev.hollywood.future; import java.util.List; import java.util.concurrent.Callable; /** * @author Alexander Temerev, Alexander Kuklev * @version $Id$ */ public abstract class MementoAbstractPromise<T> extends AbstractPromise<T> implements MementoPromise<T> { public <W> MementoPromise<W> append(Callable<W> continuation) { final PromiseTask<W> continuationPromise = (PromiseTask<W>) super.append(continuation); listeners().add(continuationPromise.delegate); return new MementoPromiseProxy<W>(continuationPromise) { public List getMemories() { return MementoAbstractPromise.this.getMemories(); } }; } public MementoPromise<Void> append(final Runnable continuation) { final PromiseTask<Void> continuationPromise = (PromiseTask<Void>) super.append(continuation); listeners().add(continuationPromise.delegate); return new MementoPromiseProxy<Void>(continuationPromise) { public List getMemories() { return MementoAbstractPromise.this.getMemories(); } }; } }