Copyright (c) 2011, 2013 Google, Inc. and others. This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: Sergey Prigogin - [refactoring] Provide a way to implement refactorings that depend on resources that have to be explicitly released - https://bugs.eclipse.org/347599 IBM Corporation - bug fixes
/******************************************************************************* * Copyright (c) 2011, 2013 Google, Inc. and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * Sergey Prigogin <eclipse.sprigogin@gmail.com> - [refactoring] Provide a way to implement refactorings that depend on resources that have to be explicitly released - https://bugs.eclipse.org/347599 * IBM Corporation - bug fixes *******************************************************************************/
package org.eclipse.ltk.core.refactoring;

Refactoring context is a disposable object that can be used by a refactoring to hold resources that have to be explicitly released. The refactoring context is guaranteed to receive a dispose() call after the associated refactoring has finished or produced an error. At this point, the refactoring context must release all resources and detach all listeners. A refactoring context can only be disposed once; it cannot be reused.

This class is intended to be subclassed by clients wishing to implement new refactorings that depend on resources that have to be explicitly released.

Since:3.6
/** * <p> * Refactoring context is a disposable object that can be used by a refactoring to hold resources * that have to be explicitly released. The refactoring context is guaranteed to receive * a {@link #dispose()} call after the associated refactoring has finished or produced an error. * At this point, the refactoring context must release all resources and detach all listeners. * A refactoring context can only be disposed once; it cannot be reused. * </p> * <p> * This class is intended to be subclassed by clients wishing to implement new refactorings that * depend on resources that have to be explicitly released. * </p> * @since 3.6 */
public class RefactoringContext { private Refactoring fRefactoring;
Creates a context for the given refactoring.
Params:
  • refactoring – The refactoring associated with the context. Cannot be null.
Throws:
/** * Creates a context for the given refactoring. * * @param refactoring The refactoring associated with the context. Cannot be <code>null</code>. * @throws NullPointerException if refactoring is <code>null</code>. */
public RefactoringContext(Refactoring refactoring) { if (refactoring == null) throw new NullPointerException(); fRefactoring= refactoring; }
Returns the refactoring associated with the context.

The returned refactoring must be in an initialized state, i.e. ready to be executed via PerformRefactoringOperation.

Returns:The refactoring associated with the context.
@nooverrideThis method is not intended to be re-implemented or extended by clients.
/** * Returns the refactoring associated with the context. * <p> * The returned refactoring must be in an initialized state, i.e. ready to * be executed via {@link PerformRefactoringOperation}. * </p> * @return The refactoring associated with the context. * @nooverride This method is not intended to be re-implemented or extended by clients. */
public Refactoring getRefactoring() { return fRefactoring; }
Disposes of the context. This method will be called exactly once during the life cycle of the context after the associated refactoring has finished or produced an error.

Subclasses may extend this method (must call super).

/** * Disposes of the context. This method will be called exactly once during the life cycle * of the context after the associated refactoring has finished or produced an error. * <p> * Subclasses may extend this method (must call super). * </p> */
public void dispose() { if (fRefactoring == null) throw new IllegalStateException("dispose() called more than once."); //$NON-NLS-1$ fRefactoring= null; } }