==============================================================================
docs/output/demo6-exception-translation.txt
Two identical TenantFilters, 300 apart, straddling ExceptionTranslationFilter (4000).
Both throw AccessDeniedException. Neither of them produces a 403 - for two different reasons.
==============================================================================


$ curl -i -u alice:password localhost:8080/tenant/doc          # filter at order 3701
HTTP/1.1 500 

$ curl -i -u alice:password localhost:8080/tenant/translated   # filter at order 4001
HTTP/1.1 200 

$ curl -i -u alice:password -H "X-Tenant-Id: acme" localhost:8080/tenant/doc
HTTP/1.1 200 

$ curl -s -H "X-Api-Key: let-me-in" localhost:8080/whoami   # api key filter at 1201
principal=api-client authenticated=true authorities=[ROLE_API] type=UsernamePasswordAuthenticationToken counting-filter-invocations=null

$ curl -s -D- -o /dev/null localhost:8080/public/hello | grep X-Request-Id   # filter at 701
X-Request-Id: 74ee45fe-9eda-3820-8110-63a6116aa155

--- the same four filters, run with -DUNIQUE_ONCE_KEY=true ---
Each TenantFilter now has its own OncePerRequestFilter key, so both actually execute.

$ curl -i -u alice:password localhost:8080/tenant/doc          # filter at order 3701
HTTP/1.1 500 

$ curl -i -u alice:password localhost:8080/tenant/translated   # filter at order 4001
HTTP/1.1 403 

Same code, same exception, 300 order slots apart:
  order 3701 - below ExceptionTranslationFilter (4000) - the throw escapes untranslated
  order 4001 - above it                                - the throw becomes a 403
