/** {@inheritDoc} */
 public Refactoring createRefactoring(
     JavaRefactoringDescriptor descriptor, RefactoringStatus status) {
   JavaRefactoringArguments arguments =
       new JavaRefactoringArguments(descriptor.getProject(), retrieveArgumentMap(descriptor));
   RenameLocalVariableProcessor processor = new RenameLocalVariableProcessor(arguments, status);
   return new RenameRefactoring(processor);
 }
 /** {@inheritDoc} */
 @Override
 public Refactoring createRefactoring(
     JavaRefactoringDescriptor descriptor, RefactoringStatus status) throws CoreException {
   JavaRefactoringArguments arguments =
       new JavaRefactoringArguments(descriptor.getProject(), retrieveArgumentMap(descriptor));
   return new ConvertAnonymousToNestedRefactoring(arguments, status);
 }
 /** {@inheritDoc} */
 @Override
 public final Refactoring createRefactoring(
     JavaRefactoringDescriptor descriptor, RefactoringStatus status) throws CoreException {
   JavaRefactoringArguments arguments =
       new JavaRefactoringArguments(descriptor.getProject(), retrieveArgumentMap(descriptor));
   return new InlineTempRefactoring(arguments, status);
 }
 /** {@inheritDoc} */
 public Refactoring createRefactoring(
     JavaRefactoringDescriptor descriptor, RefactoringStatus status) throws CoreException {
   JavaRefactoringArguments arguments =
       new JavaRefactoringArguments(descriptor.getProject(), retrieveArgumentMap(descriptor));
   RenameCompilationUnitProcessor processor =
       new RenameCompilationUnitProcessor(arguments, status);
   return new RenameRefactoring(processor);
 }
 protected void createPerformCheckRefactoring(final JavaRefactoringDescriptor descriptor)
     throws CoreException, Exception {
   final RefactoringStatus status = new RefactoringStatus();
   final Refactoring refactoring = descriptor.createRefactoring(status);
   assertTrue("status should be ok", status.isOK());
   assertNotNull("refactoring should not be null", refactoring);
   assertEquals("was supposed to pass", null, performRefactoring(refactoring));
 }
 /**
  * Creates a new dynamic validation refactoring change.
  *
  * @param descriptor the refactoring descriptor
  * @param name the name of the change
  * @param changes the changes
  */
 public DynamicValidationRefactoringChange(
     final JavaRefactoringDescriptor descriptor, final String name, final Change[] changes) {
   super(name, changes);
   Assert.isNotNull(descriptor);
   Assert.isTrue(
       !descriptor.validateDescriptor().hasFatalError(),
       RefactoringCoreMessages.DynamicValidationRefactoringChange_fatal_error);
   fDescriptor = descriptor;
 }
 protected final RefactoringStatus performRefactoring(Refactoring ref, boolean providesUndo)
     throws Exception {
   performDummySearch();
   IUndoManager undoManager = getUndoManager();
   if (DESCRIPTOR_TEST) {
     final CreateChangeOperation create =
         new CreateChangeOperation(
             new CheckConditionsOperation(ref, CheckConditionsOperation.ALL_CONDITIONS),
             RefactoringStatus.FATAL);
     create.run(new NullProgressMonitor());
     RefactoringStatus checkingStatus = create.getConditionCheckingStatus();
     if (!checkingStatus.isOK()) return checkingStatus;
     Change change = create.getChange();
     ChangeDescriptor descriptor = change.getDescriptor();
     if (descriptor instanceof RefactoringChangeDescriptor) {
       RefactoringChangeDescriptor rcd = (RefactoringChangeDescriptor) descriptor;
       RefactoringDescriptor refactoringDescriptor = rcd.getRefactoringDescriptor();
       if (refactoringDescriptor instanceof JavaRefactoringDescriptor) {
         JavaRefactoringDescriptor jrd = (JavaRefactoringDescriptor) refactoringDescriptor;
         RefactoringStatus validation = jrd.validateDescriptor();
         if (!validation.isOK()) return validation;
         RefactoringStatus refactoringStatus = new RefactoringStatus();
         Class expected = jrd.getClass();
         RefactoringContribution contribution =
             RefactoringCore.getRefactoringContribution(jrd.getID());
         jrd =
             (JavaRefactoringDescriptor)
                 contribution.createDescriptor(
                     jrd.getID(),
                     jrd.getProject(),
                     jrd.getDescription(),
                     jrd.getComment(),
                     contribution.retrieveArgumentMap(jrd),
                     jrd.getFlags());
         assertEquals(expected, jrd.getClass());
         ref = jrd.createRefactoring(refactoringStatus);
         if (!refactoringStatus.isOK()) return refactoringStatus;
         TestRenameParticipantSingle.reset();
         TestCreateParticipantSingle.reset();
         TestMoveParticipantSingle.reset();
         TestDeleteParticipantSingle.reset();
       }
     }
   }
   final CreateChangeOperation create =
       new CreateChangeOperation(
           new CheckConditionsOperation(ref, CheckConditionsOperation.ALL_CONDITIONS),
           RefactoringStatus.FATAL);
   final PerformChangeOperation perform = new PerformChangeOperation(create);
   perform.setUndoManager(undoManager, ref.getName());
   IWorkspace workspace = ResourcesPlugin.getWorkspace();
   if (fIsPreDeltaTest) {
     IResourceChangeListener listener =
         new IResourceChangeListener() {
           public void resourceChanged(IResourceChangeEvent event) {
             if (create.getConditionCheckingStatus().isOK() && perform.changeExecuted()) {
               TestModelProvider.assertTrue(event.getDelta());
             }
           }
         };
     try {
       TestModelProvider.clearDelta();
       workspace.checkpoint(false);
       workspace.addResourceChangeListener(listener);
       executePerformOperation(perform, workspace);
     } finally {
       workspace.removeResourceChangeListener(listener);
     }
   } else {
     executePerformOperation(perform, workspace);
   }
   RefactoringStatus status = create.getConditionCheckingStatus();
   if (!status.isOK()) return status;
   assertTrue("Change wasn't executed", perform.changeExecuted());
   Change undo = perform.getUndoChange();
   if (providesUndo) {
     assertNotNull("Undo doesn't exist", undo);
     assertTrue("Undo manager is empty", undoManager.anythingToUndo());
   } else {
     assertNull("Undo manager contains undo but shouldn't", undo);
   }
   return null;
 }