App Engine Java SDK version 1.7.0
[gae.git] / java / src / main / com / google / appengine / api / datastore / PostOpFuture.java
blobaf44eb5ed3168ba470c81bdf880ab483c877377d
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;
8 /**
9 * An abstract {@link FutureWrapper} implementation that invokes callbacks
10 * before returning its value. The base class ensures that callbacks only run
11 * once.
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) {
21 super(delegate);
22 this.datastoreCallbacks = datastoreCallbacks;
25 @Override
26 protected final T wrap(T result) {
27 executeCallbacks(result);
28 return result;
31 @Override
32 protected final Throwable convertException(Throwable cause) {
33 return cause;
36 /**
37 * Responsible for actual execution of the callbacks.
39 abstract void executeCallbacks(T result);