Bug 84446 OperationHistory should protect itself better against runtime exceptions
Since clients of the history might rely on getting certain events even if a operation causes runtime exceptions (for example listeners) the history should protect itself better agains runtime exceptions. This envloves: - listeners causing runtime exceptions in the call back - Operation execution causing runtime exceptions. In this case listeners must be informed as well.
bundles/org.eclipse.core.commands/src/org/eclipse/core/commands/operations/DefaultOperationHistory.java
* This method is provided for legacy undo frameworks that rely on notification
	 * from their undo managers before any listeners are notified about changes
	 * in the operation.
	 */
	private void preNotifyOperation(IUndoableOperation operation, OperationHistoryEvent event) {
		if (operation instanceof IHistoryNotificationAwareOperation) {
			((IHistoryNotificationAwareOperation)operation).aboutToNotify(event);
		}
	}
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.core.commands.operations.IOperationHistory#redo(org.eclipse.core.commands.operations.IUndoContext, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
	 */
	public IStatus redo(IUndoContext context, IProgressMonitor monitor, IAdaptable info) throws ExecutionException{
		Assert.isNotNull(context);
		IUndoableOperation operation = getRedoOperation(context);
		
		if (operation == null)
			return NOTHING_TO_REDO_STATUS;
		
		if (!operation.canRedo())
			return OPERATION_INVALID_STATUS;
		return doRedo(monitor, info, operation, true);
	}
	/*
	 * (non-Javadoc)
	 * 
	 * @see org.eclipse.core.commands.operations.IOperationHistory#redoOperation(org.eclipse.core.commands.operations.IUndoableOperation, org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)