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 @noinstantiate This 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: - IllegalArgumentException – if the argument map contains invalid keys/values
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;
}
}