1 // Copyright 2011 Google Inc. All Rights Reserved.
2 package com
.google
.appengine
.api
.datastore
;
4 import com
.google
.appengine
.api
.utils
.FutureWrapper
;
6 import java
.util
.concurrent
.Future
;
9 * An abstract {@link FutureWrapper} implementation that invokes callbacks
10 * before returning its value. The base class ensures that callbacks only run
13 * @param <T> The type of Future.
16 abstract class PostOpFuture
<T
> extends FutureWrapper
<T
, T
> {
18 final DatastoreCallbacks datastoreCallbacks
;
20 PostOpFuture(Future
<T
> delegate
, DatastoreCallbacks datastoreCallbacks
) {
22 this.datastoreCallbacks
= datastoreCallbacks
;
26 protected final T
wrap(T result
) {
27 executeCallbacks(result
);
32 protected final Throwable
convertException(Throwable cause
) {
37 * Responsible for actual execution of the callbacks.
39 abstract void executeCallbacks(T result
);