@Override public boolean isPermitted( PrincipalCollection subjectPrincipal, Permission permission ) { for ( Realm realm : this.getRealms() ) { if ( !( realm instanceof Authorizer ) ) { continue; // ignore non-authorizing realms } try { if ( ( (Authorizer) realm ).isPermitted( subjectPrincipal, permission ) ) { return true; } } catch ( AuthorizationException e ) { logAndIgnore( realm, e ); } catch ( RuntimeException e ) { logAndIgnore( realm, e ); } } return false; }
@Override public boolean hasRole( PrincipalCollection subjectPrincipal, String roleIdentifier ) { for ( Realm realm : this.getRealms() ) { if ( !( realm instanceof Authorizer ) ) { continue; // ignore non-authorizing realms } // need to catch an AuthorizationException, the user might only belong to on of the realms try { if ( ( (Authorizer) realm ).hasRole( subjectPrincipal, roleIdentifier ) ) { return true; } } catch ( AuthorizationException e ) { logAndIgnore( realm, e ); } catch ( RuntimeException e ) { logAndIgnore( realm, e ); } } return false; }
@Override public boolean[] hasRoles( PrincipalCollection subjectPrincipal, List<String> roleIdentifiers ) { boolean[] combinedResult = new boolean[roleIdentifiers.size()]; for ( Realm realm : this.getRealms() ) { if ( !( realm instanceof Authorizer ) ) { continue; // ignore non-authorizing realms } try { boolean[] result = ( (Authorizer) realm ).hasRoles( subjectPrincipal, roleIdentifiers ); for ( int i = 0; i < combinedResult.length; i++ ) { combinedResult[i] = combinedResult[i] | result[i]; } } catch ( AuthorizationException e ) { logAndIgnore( realm, e ); } catch ( RuntimeException e ) { logAndIgnore( realm, e ); } } return combinedResult; }
@Override public boolean[] isPermitted( PrincipalCollection subjectPrincipal, List<Permission> permissions ) { boolean[] combinedResult = new boolean[permissions.size()]; for ( Realm realm : this.getRealms() ) { if ( !( realm instanceof Authorizer ) ) { continue; // ignore non-authorizing realms } try { boolean[] result = ( (Authorizer) realm ).isPermitted( subjectPrincipal, permissions ); for ( int i = 0; i < combinedResult.length; i++ ) { combinedResult[i] = combinedResult[i] | result[i]; } } catch ( AuthorizationException e ) { logAndIgnore( realm, e ); } catch ( RuntimeException e ) { logAndIgnore( realm, e ); } } return combinedResult; }
@Override public boolean[] isPermitted( PrincipalCollection subjectPrincipal, String... permissions ) { boolean[] combinedResult = new boolean[permissions.length]; for ( Realm realm : this.getRealms() ) { if ( !( realm instanceof Authorizer ) ) { continue; // ignore non-authorizing realms } try { boolean[] result = ( (Authorizer) realm ).isPermitted( subjectPrincipal, permissions ); for ( int i = 0; i < combinedResult.length; i++ ) { combinedResult[i] = combinedResult[i] | result[i]; } } catch ( AuthorizationException e ) { logAndIgnore( realm, e ); } catch ( RuntimeException e ) { logAndIgnore( realm, e ); } } return combinedResult; }
logAndIgnore( realm, e ); logAndIgnore( realm, e );