public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext, Entry entry, boolean cascade ) throws LdapException { Attribute oc = entry.get( objectClassAT ); for ( Value value : oc ) { String oid = schemaManager.getObjectClassRegistry().getOidByName( value.getValue() ); if ( objectClass2synchronizerMap.containsKey( oid ) ) { RegistrySynchronizer synchronizer = objectClass2synchronizerMap.get( oid ); synchronizer.moveAndRename( moveAndRenameContext.getDn(), moveAndRenameContext.getNewSuperiorDn(), moveAndRenameContext.getNewRdn(), moveAndRenameContext.getDeleteOldRdn(), entry, cascade ); return; } } if ( oc.contains( MetaSchemaConstants.META_SCHEMA_OC ) ) { schemaSynchronizer.moveAndRename( moveAndRenameContext.getDn(), moveAndRenameContext.getNewSuperiorDn(), moveAndRenameContext.getNewRdn(), moveAndRenameContext.getDeleteOldRdn(), entry, cascade ); return; } throw new LdapUnwillingToPerformException( ResultCodeEnum.UNWILLING_TO_PERFORM ); } }
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { PartitionTxn partitionTxn = moveAndRenameContext.getTransaction(); Dn oldDn = moveAndRenameContext.getDn(); String id = getEntryId( partitionTxn, oldDn ); super.moveAndRename( moveAndRenameContext ); // Get the modified entry and store it in the context for post usage Entry modifiedEntry = fetch( moveAndRenameContext.getTransaction(), id, moveAndRenameContext.getNewDn() ); moveAndRenameContext.setModifiedEntry( modifiedEntry ); try { entryMoved( partitionTxn, oldDn, modifiedEntry, id ); } catch ( Exception e ) { throw new LdapOperationErrorException( e.getMessage(), e ); } }
/** * {@inheritDoc} */ @Override public void moveAndRename( ModifyDnRequest modifyDnRequest, LogChange log ) throws LdapException { MoveAndRenameOperationContext moveAndRenameContext = new MoveAndRenameOperationContext( this, modifyDnRequest ); moveAndRenameContext.setLogChange( log ); OperationManager operationManager = directoryService.getOperationManager(); try { operationManager.moveAndRename( moveAndRenameContext ); } catch ( LdapException e ) { modifyDnRequest.getResultResponse().addAllControls( moveAndRenameContext.getResponseControls() ); throw e; } modifyDnRequest.getResultResponse().addAllControls( moveAndRenameContext.getResponseControls() ); }
/** * {@inheritDoc} */ @Override public void moveAndRename( Dn dn, Dn newSuperiorDn, Rdn newRdn, boolean deleteOldRdn, LogChange log ) throws LdapException { MoveAndRenameOperationContext moveAndRenameContext = new MoveAndRenameOperationContext( this, dn, newSuperiorDn, newRdn, deleteOldRdn ); moveAndRenameContext.setLogChange( log ); OperationManager operationManager = directoryService.getOperationManager(); operationManager.moveAndRename( moveAndRenameContext ); }
public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException Dn oldDn = moveAndRenameContext.getDn(); Dn newSuperiorDn = moveAndRenameContext.getNewSuperiorDn(); Rdn newRdn = moveAndRenameContext.getNewRdn(); boolean deleteOldRn = moveAndRenameContext.getDeleteOldRdn(); Entry movedEntry = moveAndRenameContext.getOriginalEntry(); Dn newDn = moveAndRenameContext.getNewDn(); CoreSession session = moveAndRenameContext.getSession(); LookupOperationContext lookupContext = new LookupOperationContext( session, oldDn, SchemaConstants.ALL_USER_ATTRIBUTES_ARRAY ); lookupContext.setPartition( moveAndRenameContext.getPartition() ); lookupContext.setTransaction( moveAndRenameContext.getTransaction() );
serverEntry = moveAndRenameContext.getOriginalEntry(); forward.setDn( moveAndRenameContext.getDn() ); forward.setDeleteOldRdn( moveAndRenameContext.getDeleteOldRdn() ); forward.setNewRdn( moveAndRenameContext.getNewRdn().getName() ); forward.setNewSuperior( moveAndRenameContext.getNewSuperiorDn().getName() ); serverEntry, moveAndRenameContext.getNewSuperiorDn(), moveAndRenameContext.getNewRdn(), false ); if ( moveAndRenameContext.isReferralIgnored() ) .setChangeLogEvent( changeLog.log( getPrincipal( moveAndRenameContext ), forward, reverses ) );
ldif.setDn( moveAndRenameContext.getDn() ); ldif.setNewRdn( moveAndRenameContext.getNewRdn().getName() ); ldif.setDeleteOldRdn( moveAndRenameContext.getDeleteOldRdn() ); ldif.setNewSuperior( moveAndRenameContext.getNewDn().getName() );
/** * {@inheritDoc} */ public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { boolean cascade = moveAndRenameContext.hasRequestControl( Cascade.OID ); CoreSession session = moveAndRenameContext.getSession(); LookupOperationContext lookupContext = new LookupOperationContext( session, moveAndRenameContext.getDn(), SchemaConstants.ALL_ATTRIBUTES_ARRAY ); lookupContext.setPartition( this ); lookupContext.setTransaction( moveAndRenameContext.getTransaction() ); Entry entry = session.getDirectoryService().getPartitionNexus().lookup( lookupContext ); synchronizer.moveAndRename( moveAndRenameContext, entry, cascade ); wrapped.moveAndRename( moveAndRenameContext ); updateSchemaModificationAttributes( moveAndRenameContext ); }
/** * @see Object#toString() */ @Override public String toString() { return "ReplaceContext for old Dn '" + getDn().getName() + "' : " + newDn; }
public void entryMovedAndRenamed( MoveAndRenameOperationContext moveAndRenameContext ) { try { if ( listener instanceof NamespaceChangeListener ) { Binding newBinding = new Binding( moveAndRenameContext.getDn().getName(), ServerEntryUtils.toBasicAttributes( moveAndRenameContext.getEntry() ), false ); Binding oldBinding = new Binding( moveAndRenameContext.getDn().getName(), ServerEntryUtils.toBasicAttributes( ( ( ClonedServerEntry ) moveAndRenameContext.getEntry() ) .getOriginalEntry() ), false ); NamingEvent evt = new NamingEvent( source, NamingEvent.OBJECT_RENAMED, newBinding, oldBinding, moveAndRenameContext ); ( ( NamespaceChangeListener ) listener ).objectRenamed( evt ); } } catch ( Exception e ) { deliverNamingExceptionEvent( e ); } }
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { Entry modifiedEntry = moveAndRenameContext.getModifiedEntry(); modifiedEntry.put( SchemaConstants.MODIFIERS_NAME_AT, getPrincipal( moveAndRenameContext ).getName() ); modifiedEntry.put( SchemaConstants.MODIFY_TIMESTAMP_AT, DateUtils.getGeneralizedTime() ); modifiedEntry.setDn( moveAndRenameContext.getNewDn() ); Attribute csnAt = new DefaultAttribute( directoryService.getAtProvider().getEntryCSN(), directoryService .getCSN().toString() ); modifiedEntry.put( csnAt ); moveAndRenameContext.setModifiedEntry( modifiedEntry ); next( moveAndRenameContext ); }
Entry entry = moveAndRenameContext.getModifiedEntry(); if ( !moveAndRenameContext.getNewSuperiorDn().isDescendantOf( consumerMsgLog.getSearchCriteria().getBase() ) )
/** * Used to encapsulate [de]marshalling of controls before and after moveAndRename operations. * * @param oldDn The old Dn * @param parent The new parent * @param newRdn The new Rdn * @param delOldRdn If we shoud delete the old Rdn * @throws Exception If the move and rename failed */ protected void doMoveAndRenameOperation( Dn oldDn, Dn parent, Rdn newRdn, boolean delOldRdn ) throws Exception { // setup the op context and populate with request controls MoveAndRenameOperationContext moveAndRenameContext = new MoveAndRenameOperationContext( session, oldDn, parent, newRdn, delOldRdn ); moveAndRenameContext.addRequestControls( convertControls( true, requestControls ) ); // Inject the referral handling into the operation context injectReferralControl( moveAndRenameContext ); // execute moveAndRename operation OperationManager operationManager = service.getOperationManager(); operationManager.moveAndRename( moveAndRenameContext ); // clear the request controls and set the response controls requestControls = EMPTY_CONTROLS; responseControls = JndiUtils.toJndiControls( getDirectoryService().getLdapCodecService(), moveAndRenameContext.getResponseControls() ); }
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext opContext ) throws LdapException { synchronized ( lock ) { super.moveAndRename( opContext ); dirty = true; rewritePartitionData( opContext.getTransaction() ); } }
String.valueOf( deleteOldRdn ) ); MoveAndRenameOperationContext movRenCtx = new MoveAndRenameOperationContext( session, localDn, remoteParentDn, remoteRdn, deleteOldRdn ); movRenCtx.setReplEvent( true ); movRenCtx.setRid( rid ); directoryService.getOperationManager().moveAndRename( movRenCtx );
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { LOG.debug( ">>> Entering into the Administrative Interceptor, moveAndRenameRequest" ); Entry entry = moveAndRenameContext.getOriginalEntry(); // Check if we are moving and renaming an Administrative Point Attribute adminPoint = entry.get( directoryService.getAtProvider().getAdministrativeRole() ); if ( adminPoint == null ) { // Nope, go on. next( moveAndRenameContext ); LOG.debug( "Exit from Administrative Interceptor" ); return; } // Else throw an UnwillingToPerform exception ATM String message = "Cannot move and rename an Administrative Point in the current version"; LOG.error( message ); throw new LdapUnwillingToPerformException( message ); }
public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException Dn oldDn = moveAndRenameContext.getDn(); Dn newSuperiorDn = moveAndRenameContext.getNewSuperiorDn(); Entry entry = moveAndRenameContext.getOriginalEntry(); Dn newName = newSuperiorDn.getParent(); newName = newName.add( moveAndRenameContext.getNewRdn() ); moveAndRenameContext.getSession(), baseDn, filter, controls ); searchOperationContext.setAliasDerefMode( AliasDerefMode.NEVER_DEREF_ALIASES ); searchOperationContext.setPartition( moveAndRenameContext.getPartition() ); searchOperationContext.setTransaction( moveAndRenameContext.getTransaction() ); ModifyOperationContext newModifyContext = new ModifyOperationContext( moveAndRenameContext.getSession(), dn, getOperationalModsForReplace( oldDn, newName, subentry, candidate ) ); newModifyContext.setPartition( moveAndRenameContext.getPartition() ); newModifyContext.setTransaction( moveAndRenameContext.getTransaction() ); nexus.modify( newModifyContext ); Dn newDn = moveAndRenameContext.getNewDn(); List<Modification> mods = getModsOnEntryRdnChange( oldDn, newDn, entry ); nexus.modify( new ModifyOperationContext( moveAndRenameContext.getSession(), newDn, mods ) );
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { Partition partition = getPartition( moveAndRenameContext.getDn() ); partition.moveAndRename( moveAndRenameContext ); }
/** * {@inheritDoc} */ @Override public void moveAndRename( Dn dn, Dn newParent, Rdn newRdn, boolean deleteOldRdn, boolean ignoreReferral, LogChange log ) throws LdapException { OperationManager operationManager = directoryService.getOperationManager(); MoveAndRenameOperationContext moveAndRenameContext = new MoveAndRenameOperationContext( this, dn, newParent, newRdn, deleteOldRdn ); moveAndRenameContext.setLogChange( log ); setReferralHandling( moveAndRenameContext, ignoreReferral ); operationManager.moveAndRename( moveAndRenameContext ); }
/** * {@inheritDoc} */ @Override public void moveAndRename( MoveAndRenameOperationContext moveAndRenameContext ) throws LdapException { if ( IS_DEBUG ) { LOG.debug( "Operation Context: {}", moveAndRenameContext ); } checkAuthenticated( moveAndRenameContext ); checkPwdReset( moveAndRenameContext ); next( moveAndRenameContext ); invalidateAuthenticatorCaches( moveAndRenameContext.getDn() ); }