public <V> ListenableFuture<V> startTask(
final @Nonnull AsyncTask<Future<V>> task) {
HAccount taskOwner = ServiceLocator.instance()
.getInstance(ZanataJpaIdentityStore.AUTHENTICATED_USER,
HAccount.class);
ZanataIdentity ownerIdentity = ZanataIdentity.instance();
// Extract security context from current thread
final String taskOwnerUsername =
taskOwner != null ? taskOwner.getUsername() : null;
final Principal runAsPpal = ownerIdentity.getPrincipal();
final Subject runAsSubject = ownerIdentity.getSubject();
// final result
final AsyncTaskResult<V> taskFuture = new AsyncTaskResult<V>();
final RunnableOperation runnableOp = new RunnableOperation() {