in src/main/java/org/apache/directory/fortress/core/impl/PermDAO.java [1642:1708]
List<Permission> findAnyPermissions( Permission permission )
throws FinderException
{
List<Permission> permList = new ArrayList<>();
LdapConnection ld = null;
String permRoot = getRootDn( permission.isAdmin(), permission.getContextId() );
try
{
String permObjVal = encodeSafeText( permission.getObjName(), GlobalIds.PERM_LEN );
String permOpVal = encodeSafeText( permission.getOpName(), GlobalIds.PERM_LEN );
StringBuilder filterbuf = new StringBuilder();
filterbuf.append( GlobalIds.FILTER_PREFIX );
filterbuf.append( PERM_OP_OBJECT_CLASS_NAME );
filterbuf.append( ")(|" );
if ( permObjVal != null && permObjVal != "" )
{
filterbuf.append("(");
filterbuf.append( GlobalIds.POBJ_NAME );
filterbuf.append( "=*" );
filterbuf.append( permObjVal );
filterbuf.append( "*)" );
}
if ( permOpVal != null && permOpVal != "" )
{
filterbuf.append("(");
filterbuf.append( GlobalIds.POP_NAME );
filterbuf.append( "=*" );
filterbuf.append( permOpVal );
filterbuf.append( "*)" );
}
filterbuf.append("))");
ld = getAdminConnection();
try ( SearchCursor searchResults = search( ld, permRoot,
SearchScope.SUBTREE, filterbuf.toString(), PERMISSION_OP_ATRS, false, Config.getInstance().getInt(GlobalIds.CONFIG_LDAP_MAX_BATCH_SIZE, GlobalIds.BATCH_SIZE ) ) )
{
long sequence = 0;
while ( searchResults.next() )
{
permList.add( unloadPopLdapEntry( searchResults.getEntry(), sequence++, permission.isAdmin() ) );
}
}
catch ( IOException e )
{
String error = "findAnyPermissions caught IOException=" + e.getMessage();
throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
}
catch ( CursorException e )
{
String error = "findAnyPermissions caught CursorException=" + e.getMessage();
throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
}
}
catch ( LdapException e )
{
String error = "findAnyPermissions caught LdapException=" + e;
throw new FinderException( GlobalErrIds.PERM_SEARCH_FAILED, error, e );
}
finally
{
closeAdminConnection( ld );
}
return permList;
}