/** * Rename a Schema Object. * * @param renameContext The contect contaoning the rename informations * @param doCascadeModify unused * @throws LdapException If the rename failed */ public void rename( RenameOperationContext renameContext, boolean doCascadeModify ) throws LdapException { Entry originalEntry = ( ( ClonedServerEntry ) renameContext.getEntry() ).getOriginalEntry(); Attribute oc = originalEntry.get( objectClassAT ); for ( Value value : oc ) { String oid = schemaManager.getObjectClassRegistry().getOidByName( value.getValue() ); if ( objectClass2synchronizerMap.containsKey( oid ) ) { RegistrySynchronizer synchronizer = objectClass2synchronizerMap.get( oid ); synchronizer.rename( originalEntry, renameContext.getNewRdn(), doCascadeModify ); return; } } if ( oc.contains( MetaSchemaConstants.META_SCHEMA_OC ) ) { schemaSynchronizer.rename( originalEntry, renameContext.getNewRdn(), doCascadeModify ); return; } throw new LdapUnwillingToPerformException( ResultCodeEnum.UNWILLING_TO_PERFORM ); }
/** * {@inheritDoc} */ public void rename( RenameOperationContext renameContext ) throws LdapException { PartitionTxn partitionTxn = renameContext.getTransaction(); Dn oldDn = renameContext.getDn(); String entryId = getEntryId( partitionTxn, oldDn ); // Create the new entry super.rename( renameContext ); // Get the modified entry and store it in the context for post usage Dn newDn = oldDn.getParent().add( renameContext.getNewRdn() ); Entry modifiedEntry = fetch( renameContext.getTransaction(), entryId, newDn ); renameContext.setModifiedEntry( modifiedEntry ); // Now move the potential children for the old entry // and remove the old entry try { entryMoved( partitionTxn, oldDn, modifiedEntry, entryId ); } catch ( Exception e ) { throw new LdapOperationErrorException( e.getMessage(), e ); } }
/** * {@inheritDoc} */ @Override public void rename( RenameOperationContext renameContext ) throws LdapException { Entry serverEntry = null; if ( renameContext.getEntry() != null ) { serverEntry = ( ( ClonedServerEntry ) renameContext.getEntry() ).getOriginalEntry(); } next( renameContext ); // After this point, the entry has been modified. The cloned entry contains // the modified entry, the originalEntry has changed if ( !changeLog.isEnabled() ) { return; } LdifEntry forward = new LdifEntry(); forward.setChangeType( ChangeType.ModRdn ); forward.setDn( renameContext.getDn() ); forward.setNewRdn( renameContext.getNewRdn().getName() ); forward.setDeleteOldRdn( renameContext.getDeleteOldRdn() ); List<LdifEntry> reverses = LdifRevertor.reverseRename( serverEntry, renameContext.getNewRdn(), renameContext.getDeleteOldRdn() ); renameContext.setChangeLogEvent( changeLog.log( getPrincipal( renameContext ), forward, reverses ) ); }
Rdn newRdn = renameContext.getNewRdn(); boolean deleteOldRn = renameContext.getDeleteOldRdn();
ldif.setChangeType( ChangeType.ModRdn ); ldif.setDn( renameContext.getDn() ); ldif.setNewRdn( renameContext.getNewRdn().getName() ); ldif.setDeleteOldRdn( renameContext.getDeleteOldRdn() );
Dn newName = oldDn.getParent(); newName = newName.add( renameContext.getNewRdn() );