administrativeRoleType = attrRegistry.lookup( oidRegistry.getOid( "administrativeRole" ) );
    public void init( DirectoryServiceConfiguration factoryCfg, InterceptorConfiguration cfg ) throws NamingException    {        super.init( factoryCfg, cfg );        this.nexus = factoryCfg.getPartitionNexus();        this.factoryCfg = factoryCfg;        this.attrRegistry = factoryCfg.getGlobalRegistries().getAttributeTypeRegistry();        this.oidRegistry = factoryCfg.getGlobalRegistries().getOidRegistry();                // setup various attribute type values        objectClassType = attrRegistry.lookup( oidRegistry.getOid( "objectClass" ) );        administrativeRoleType = attrRegistry.lookup( oidRegistry.getOid( "administrativeRole" ) );                ssParser = new SubtreeSpecificationParser( new NormalizerMappingResolver()        {            public Map getNormalizerMapping() throws NamingException            {                return attrRegistry.getNormalizerMapping();            }        }, attrRegistry.getNormalizerMapping() );        evaluator = new SubtreeEvaluator( factoryCfg.getGlobalRegistries().getOidRegistry() );        // prepare to find all subentries in all namingContexts        Iterator suffixes = this.nexus.listSuffixes();        ExprNode filter = new SimpleNode( "objectclass", "subentry", LeafNode.EQUALITY );        SearchControls controls = new SearchControls();        controls.setSearchScope( SearchControls.SUBTREE_SCOPE );        controls.setReturningAttributes( new String[]            { "subtreeSpecification" } );        // search each namingContext for subentries        while ( suffixes.hasNext() )        {            LdapDN suffix = new LdapDN( ( String ) suffixes.next() );            //suffix = LdapDN.normalize( suffix, registry.getNormalizerMapping() );            suffix.normalize( attrRegistry.getNormalizerMapping() );            NamingEnumeration subentries = nexus.search( suffix, factoryCfg.getEnvironment(), filter, controls );            while ( subentries.hasMore() )            {                SearchResult result = ( SearchResult ) subentries.next();                Attributes subentry = result.getAttributes();                String dn = result.getName();                String subtree = ( String ) subentry.get( "subtreeSpecification" ).get();                SubtreeSpecification ss;                try                {                    ss = ssParser.parse( subtree );                }                catch ( Exception e )                {                    log.warn( "Failed while parsing subtreeSpecification for " + dn );                    continue;                }                LdapDN dnName = new LdapDN( dn );                //dnName = LdapDN.normalize( dnName, registry.getNormalizerMapping() );                dnName.normalize( attrRegistry.getNormalizerMapping() );                subentryCache.setSubentry( dnName.toString(), ss, getSubentryTypes( subentry ) );            }        }    }