Copyright (c) 2006, 2008 IBM Corporation 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: IBM Corporation - initial API and implementation
/******************************************************************************* * Copyright (c) 2006, 2008 IBM Corporation 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: * IBM Corporation - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.core.refactoring.descriptors; import java.util.Map; import org.eclipse.core.runtime.Assert; import org.eclipse.ltk.core.refactoring.RefactoringContribution; import org.eclipse.ltk.core.refactoring.RefactoringCore; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.refactoring.IJavaRefactorings; import org.eclipse.jdt.internal.core.refactoring.descriptors.DescriptorMessages; import org.eclipse.jdt.internal.core.refactoring.descriptors.JavaRefactoringDescriptorUtil;
Refactoring descriptor for the use supertype refactoring.

An instance of this refactoring descriptor may be obtained by calling RefactoringContribution.createDescriptor() on a refactoring contribution requested by invoking RefactoringCore.getRefactoringContribution(String) with the appropriate refactoring id.

Note: this class is not intended to be instantiated by clients.

Since:1.1
@noinstantiateThis class is not intended to be instantiated by clients.
/** * Refactoring descriptor for the use supertype refactoring. * <p> * An instance of this refactoring descriptor may be obtained by calling * {@link RefactoringContribution#createDescriptor()} on a refactoring * contribution requested by invoking * {@link RefactoringCore#getRefactoringContribution(String)} with the * appropriate refactoring id. * </p> * <p> * Note: this class is not intended to be instantiated by clients. * </p> * * @since 1.1 * * @noinstantiate This class is not intended to be instantiated by clients. */
public final class UseSupertypeDescriptor extends JavaRefactoringDescriptor {
The instanceof attribute
/** The instanceof attribute */
private static final String ATTRIBUTE_INSTANCEOF= "instanceof"; //$NON-NLS-1$
The instanceof attribute
/** The instanceof attribute */
private boolean fInstanceof= false;
The subtype attribute
/** The subtype attribute */
private IType fSubType= null;
The supertype attribute
/** The supertype attribute */
private IType fSupertype= null;
Creates a new refactoring descriptor.
/** * Creates a new refactoring descriptor. */
public UseSupertypeDescriptor() { super(IJavaRefactorings.USE_SUPER_TYPE); }
Creates a new refactoring descriptor.
Params:
  • project – the non-empty name of the project associated with this refactoring, or null for a workspace refactoring
  • description – a non-empty human-readable description of the particular refactoring instance
  • comment – the human-readable comment of the particular refactoring instance, or null for no comment
  • arguments – a map of arguments that will be persisted and describes all settings for this refactoring
  • flags – the flags of the refactoring descriptor
Throws:
Since:1.2
/** * Creates a new refactoring descriptor. * * @param project * the non-empty name of the project associated with this * refactoring, or <code>null</code> for a workspace * refactoring * @param description * a non-empty human-readable description of the particular * refactoring instance * @param comment * the human-readable comment of the particular refactoring * instance, or <code>null</code> for no comment * @param arguments * a map of arguments that will be persisted and describes * all settings for this refactoring * @param flags * the flags of the refactoring descriptor * * @throws IllegalArgumentException if the argument map contains invalid keys/values * * @since 1.2 */
public UseSupertypeDescriptor(String project, String description, String comment, Map<String, String> arguments, int flags) { super(IJavaRefactorings.USE_SUPER_TYPE, project, description, comment, arguments, flags); fInstanceof= JavaRefactoringDescriptorUtil.getBoolean(arguments, ATTRIBUTE_INSTANCEOF, fInstanceof); fSubType= (IType) JavaRefactoringDescriptorUtil.getJavaElement(arguments, ATTRIBUTE_INPUT, project); fSupertype= (IType) JavaRefactoringDescriptorUtil.getJavaElement(arguments, JavaRefactoringDescriptorUtil.getAttributeName(ATTRIBUTE_ELEMENT, 1), project); } @Override protected void populateArgumentMap() { super.populateArgumentMap(); JavaRefactoringDescriptorUtil.setBoolean(fArguments, ATTRIBUTE_INSTANCEOF, fInstanceof); JavaRefactoringDescriptorUtil.setJavaElement(fArguments, ATTRIBUTE_INPUT, getProject(), fSubType); JavaRefactoringDescriptorUtil.setJavaElement(fArguments, JavaRefactoringDescriptorUtil.getAttributeName(ATTRIBUTE_ELEMENT, 1), getProject(), fSupertype); }
Determines whether 'instanceof' statements are considered as candidates to replace the subtype occurrence by one of its supertypes.

The default is to not replace the subtype occurrence.

Params:
  • replace – true to replace subtype occurrences in 'instanceof' statements, false otherwise
/** * Determines whether 'instanceof' statements are considered as candidates * to replace the subtype occurrence by one of its supertypes. * <p> * The default is to not replace the subtype occurrence. * </p> * * @param replace * <code>true</code> to replace subtype occurrences in * 'instanceof' statements, <code>false</code> otherwise */
public void setReplaceInstanceof(final boolean replace) { fInstanceof= replace; }
Sets the subtype of the refactoring.

Occurrences of the subtype are replaced by the supertype set by setSupertype(IType) where possible.

Params:
  • type – the subtype to set
/** * Sets the subtype of the refactoring. * <p> * Occurrences of the subtype are replaced by the supertype set by * {@link #setSupertype(IType)} where possible. * </p> * * @param type * the subtype to set */
public void setSubtype(final IType type) { Assert.isNotNull(type); fSubType= type; }
Sets the supertype of the refactoring.

Occurrences of the subtype set by setSubtype(IType) are replaced by the supertype where possible.

Params:
  • type – the supertype to set
/** * Sets the supertype of the refactoring. * <p> * Occurrences of the subtype set by {@link #setSubtype(IType)} are replaced * by the supertype where possible. * </p> * * @param type * the supertype to set */
public void setSupertype(final IType type) { Assert.isNotNull(type); fSupertype= type; } @Override public RefactoringStatus validateDescriptor() { RefactoringStatus status= super.validateDescriptor(); if (fSubType == null) status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.UseSupertypeDescriptor_no_subtype)); if (fSupertype == null) status.merge(RefactoringStatus.createFatalErrorStatus(DescriptorMessages.UseSupertypeDescriptor_no_supertype)); return status; } }