@Override public void enforce(EntityId entity, Principal principal, Set<Action> actions) throws Exception { if (!isSecurityAuthorizationEnabled()) { return; } Set<Action> disallowed = EnumSet.noneOf(Action.class); UnauthorizedException unauthorizedException = new UnauthorizedException(principal, entity); for (Action action : actions) { try { enforce(entity, principal, action); } catch (UnauthorizedException e) { disallowed.add(action); unauthorizedException.addSuppressed(e); } } if (!disallowed.isEmpty()) { throw new UnauthorizedException(principal, disallowed, entity, unauthorizedException); } }