private boolean isRelated()

in interceptors/authz/src/main/java/org/apache/directory/server/core/authz/support/RelatedUserClassFilter.java [101:168]


    private boolean isRelated( Collection<String> userGroupNames, Dn userName, Entry userEntry,
        Dn entryName, Collection<UserClass> userClasses ) throws LdapException
    {
        for ( UserClass userClass : userClasses )
        {
            if ( userClass == UserClass.ALL_USERS )
            {
                return true;
            }
            else if ( userClass == UserClass.THIS_ENTRY )
            {
                if ( userName.equals( entryName ) )
                {
                    return true;
                }
            }
            else if ( userClass == UserClass.PARENT_OF_ENTRY )
            {
                if ( entryName.isDescendantOf( userName ) )
                {
                    return true;
                }
            }
            else if ( userClass instanceof UserClass.Name )
            {
                UserClass.Name nameUserClass = ( UserClass.Name ) userClass;
                
                if ( ( userName != null ) && nameUserClass.getNames().contains( userName.getNormName() ) )
                {
                    return true;
                }
            }
            else if ( userClass instanceof UserClass.UserGroup )
            {
                UserClass.UserGroup userGroupUserClass = ( UserClass.UserGroup ) userClass;

                for ( String userGroupName : userGroupNames )
                {
                    Set<String> dns = userGroupUserClass.getNames();

                    if ( userGroupName != null )
                    {
                        for ( String dn : dns )
                        {
                            if ( userGroupName.equals( dn ) )
                            {
                                return true;
                            }
                        }
                    }
                }
            }
            else if ( userClass instanceof UserClass.Subtree )
            {
                UserClass.Subtree subtree = ( UserClass.Subtree ) userClass;
                if ( matchUserClassSubtree( userName, userEntry, subtree ) )
                {
                    return true;
                }
            }
            else
            {
                throw new InternalError( I18n.err( I18n.ERR_15021_UNEXPECTED_USER_CLASS, userClass.getClass().getName() ) );
            }
        }

        return false;
    }