Moves the existing virtual-thread/context-propagation project into context-propagation/ and adds method-security/ for the Spring Security 7 method-security article: nine runnable demos, fourteen assertions, and every transcript the article quotes, regenerated by scripts/run-all.sh. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RSrsDSRKVsY588yFiMJMo9
10 lines
844 B
Plaintext
10 lines
844 B
Plaintext
=== Demo 4: Executor/ExecutorService/AsyncTaskExecutor wrapping on a pooled platform thread ===
|
|
A) raw ThreadPoolExecutor, no wrapper: NO AUTHENTICATION (lost)
|
|
B) DelegatingSecurityContextExecutorService.execute(...): authenticated as bob
|
|
B2) DelegatingSecurityContextExecutorService.submit(Callable): authenticated as bob
|
|
EDGE) task 1 on possibly-reused worker: authenticated as carol-task1
|
|
EDGE) task 2, same pool, different caller context: authenticated as dave-task2 <-- correct, NOT stale, unlike plain InheritableThreadLocal on a reused worker
|
|
C) DelegatingSecurityContextExecutor + CompletableFuture.supplyAsync: authenticated as erin
|
|
C2) default CompletableFuture executor (common ForkJoinPool), no wrapper: NO AUTHENTICATION (lost)
|
|
D) DelegatingSecurityContextAsyncTaskExecutor wrapping ThreadPoolTaskExecutor: authenticated as grace
|