final Authentication auth = new UsernamePasswordAuthenticationToken("user", "password"); SecurityContextHolder.getContext().setAuthentication(auth); final ThreadLocalsTransfer transfer = new ThreadLocalsTransfer(); Future<Void> future = executor.submit(
public ProcessCallable( Name processName, Map<String, Object> inputs, ProgressListener listener) { this.processName = processName; this.inputs = inputs; this.listener = listener; this.threadLocalTransfer = new ThreadLocalsTransfer(); }
@Override public <T> Future<T> submit(Callable<T> task) { ThreadLocalsTransfer threadLocalTransfer = new ThreadLocalsTransfer(); return super.submit( () -> { threadLocalTransfer.apply(); try { return task.call(); } finally { threadLocalTransfer.cleanup(); } }); }
@Override public Future<?> submit(Runnable task) { ThreadLocalsTransfer threadLocalTransfer = new ThreadLocalsTransfer(); return super.submit( () -> { threadLocalTransfer.apply(); try { task.run(); } finally { threadLocalTransfer.cleanup(); } }); }
@Override public <T> Future<T> submit(Runnable task, T result) { ThreadLocalsTransfer threadLocalTransfer = new ThreadLocalsTransfer(); return super.submit( () -> { threadLocalTransfer.apply(); try { task.run(); return result; } finally { threadLocalTransfer.cleanup(); } }); } }
this.transfer = new ThreadLocalsTransfer();