Subentry subentry = new Subentry(); subentry.setAdministrativeRoles( getSubentryAdminRoles( entry ) ); List<Attribute> operationalAttributes = getSubentryOperationalAttributes( dn, subentry ); baseDn = baseDn.add( subentry.getSubtreeSpecification().getBase() ); updateEntries( addContext, OperationEnum.ADD, apDn, subentry.getSubtreeSpecification(), baseDn, operationalAttributes ); SubtreeSpecification ss = subentry.getSubtreeSpecification(); if ( subentry.isAccessControlAdminRole() ) if ( subentry.isSchemaAdminRole() ) if ( subentry.isCollectiveAdminRole() ) if ( subentry.isTriggersAdminRole() )
/** * Get the SubtreeSpecification, parse it and stores it into the subentry */ private void setSubtreeSpecification( Subentry subentry, Entry entry ) throws LdapException { String subtree = entry.get( directoryService.getAtProvider().getSubtreeSpecification() ).getString(); SubtreeSpecification ss; try { ss = ssParser.parse( subtree ); } catch ( Exception e ) { String msg = I18n.err( I18n.ERR_307, entry.getDn() ); LOG.warn( msg ); throw new LdapInvalidAttributeValueException( ResultCodeEnum.INVALID_ATTRIBUTE_SYNTAX, msg ); } subentry.setSubtreeSpecification( ss ); }
/** * Get the list of modifications to be applied on an entry to inject the operational attributes * associated with the administrative roles. */ private List<Modification> getOperationalModsForReplace( Dn oldDn, Dn newDn, Subentry subentry, Entry entry ) throws Exception { List<Modification> modifications = new ArrayList<>(); getOperationalModForReplace( subentry.isAccessControlAdminRole(), directoryService.getAtProvider() .getAccessControlSubentries(), entry, oldDn, newDn, modifications ); getOperationalModForReplace( subentry.isSchemaAdminRole(), directoryService.getAtProvider() .getSubschemaSubentry(), entry, oldDn, newDn, modifications ); getOperationalModForReplace( subentry.isCollectiveAdminRole(), directoryService.getAtProvider() .getCollectiveAttributeSubentries(), entry, oldDn, newDn, modifications ); getOperationalModForReplace( subentry.isTriggersAdminRole(), directoryService.getAtProvider() .getTriggerExecutionSubentries(), entry, oldDn, newDn, modifications ); return modifications; }
baseDn = baseDn.add( removedSubentry.getSubtreeSpecification().getBase() ); removedSubentry.getSubtreeSpecification(), baseDn, null );
SubtreeSpecification ssOld = subentry.getSubtreeSpecification(); SubtreeSpecification ssNew; subentry.setSubtreeSpecification( ssNew ); subentry.setAdministrativeRoles( getSubentryTypes( entry, modifications ) ); directoryService.getSubentryCache().addSubentry( dn, subentry );
Subentry newSubentry = new Subentry(); newSubentry.setAdministrativeRoles( getSubentryAdminRoles( subentry ) ); newSubentry.setSubtreeSpecification( ss );
if ( subentry.isAccessControlAdminRole() ) if ( subentry.isSchemaAdminRole() ) if ( subentry.isCollectiveAdminRole() ) if ( subentry.isTriggersAdminRole() )
SubtreeSpecification ss = subentryCache.getSubentry( subentryDn ).getSubtreeSpecification(); boolean isOldNameSelected = evaluator.evaluate( ss, apDn, oldName, entry ); boolean isNewNameSelected = evaluator.evaluate( ss, apDn, newName, entry );
SubtreeSpecification ss = subentry.getSubtreeSpecification(); if ( subentry.isAccessControlAdminRole() ) if ( subentry.isSchemaAdminRole() ) if ( subentry.isCollectiveAdminRole() ) if ( subentry.isTriggersAdminRole() )
.getSubtreeSpecification(); boolean isOldEntrySelected = directoryService.getEvaluator().evaluate( ss, apDn, name, oldEntry ); boolean isNewEntrySelected = directoryService.getEvaluator().evaluate( ss, apDn, name, newEntry );
SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent(); Dn baseDn = apName;
SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent(); Dn baseDn = apName;
SubtreeSpecification ss = subentry.getSubtreeSpecification(); Dn apName = oldDn.getParent(); Dn baseDn = apName;