Java 类org.eclipse.jdt.core.dom.ASTRequestor 实例源码
项目:code
文件:WorkspaceUtilities.java
/**
* Goes through a list of compilation units and parses them. The act of parsing creates the AST structures from the
* source code.
*
* @param compilationUnits the list of compilation units to parse
* @return the mapping from compilation unit to the AST roots of each
*/
public static Map<ICompilationUnit, ASTNode> parseCompilationUnits(List<ICompilationUnit> compilationUnits) {
if (compilationUnits == null) {
throw new CrystalRuntimeException("null list of compilation units");
}
ICompilationUnit[] compUnits = compilationUnits.toArray(new ICompilationUnit[0]);
final Map<ICompilationUnit, ASTNode> parsedCompilationUnits = new HashMap<ICompilationUnit, ASTNode>();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setProject(WorkspaceUtilities.javaProject);
parser.createASTs(compUnits, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
parsedCompilationUnits.put(unit, node);
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, null);
return parsedCompilationUnits;
}
项目:code
文件:WorkspaceUtilities.java
/**
* Goes through a list of compilation units and parses them. The act of parsing creates the AST structures from the
* source code.
*
* @param compilationUnits the list of compilation units to parse
* @return the mapping from compilation unit to the AST roots of each
*/
public static Map<ICompilationUnit, ASTNode> parseCompilationUnits(List<ICompilationUnit> compilationUnits) {
if (compilationUnits == null) {
throw new CrystalRuntimeException("null list of compilation units");
}
ICompilationUnit[] compUnits = compilationUnits.toArray(new ICompilationUnit[0]);
final Map<ICompilationUnit, ASTNode> parsedCompilationUnits = new HashMap<ICompilationUnit, ASTNode>();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setProject(WorkspaceUtilities.javaProject);
parser.createASTs(compUnits, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
parsedCompilationUnits.put(unit, node);
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, null);
return parsedCompilationUnits;
}
项目:code
文件:WorkspaceUtilities.java
/**
* Goes through a list of compilation units and parses them. The act of parsing creates the AST structures from the
* source code.
*
* @param compilationUnits the list of compilation units to parse
* @return the mapping from compilation unit to the AST roots of each
*/
public static Map<ICompilationUnit, ASTNode> parseCompilationUnits(List<ICompilationUnit> compilationUnits) {
if (compilationUnits == null) {
throw new CrystalRuntimeException("null list of compilation units");
}
ICompilationUnit[] compUnits = compilationUnits.toArray(new ICompilationUnit[0]);
final Map<ICompilationUnit, ASTNode> parsedCompilationUnits = new HashMap<ICompilationUnit, ASTNode>();
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setResolveBindings(true);
parser.setProject(WorkspaceUtilities.javaProject);
parser.createASTs(compUnits, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
parsedCompilationUnits.put(unit, node);
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, null);
return parsedCompilationUnits;
}
项目:eclipse.jdt.ls
文件:CompletionProposalReplacementProvider.java
private ITypeBinding getExpectedTypeForGenericParameters() {
char[][] chKeys= context.getExpectedTypesKeys();
if (chKeys == null || chKeys.length == 0) {
return null;
}
String[] keys= new String[chKeys.length];
for (int i= 0; i < keys.length; i++) {
keys[i]= String.valueOf(chKeys[0]);
}
final ASTParser parser = ASTParser.newParser(IASTSharedValues.SHARED_AST_LEVEL);
parser.setProject(compilationUnit.getJavaProject());
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
final Map<String, IBinding> bindings= new HashMap<>();
ASTRequestor requestor= new ASTRequestor() {
@Override
public void acceptBinding(String bindingKey, IBinding binding) {
bindings.put(bindingKey, binding);
}
};
parser.createASTs(new ICompilationUnit[0], keys, requestor, null);
if (bindings.size() > 0) {
return (ITypeBinding) bindings.get(keys[0]);
}
return null;
}
项目:che
文件:LazyGenericTypeProposal.java
/**
* Returns the type binding of the expected type as it is contained in the code completion
* context.
*
* @return the binding of the expected type
*/
private ITypeBinding getExpectedType() {
char[][] chKeys = fInvocationContext.getCoreContext().getExpectedTypesKeys();
if (chKeys == null || chKeys.length == 0) return null;
String[] keys = new String[chKeys.length];
for (int i = 0; i < keys.length; i++) {
keys[i] = String.valueOf(chKeys[0]);
}
final CheASTParser parser = CheASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setProject(fCompilationUnit.getJavaProject());
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
final Map<String, IBinding> bindings = new HashMap<String, IBinding>();
ASTRequestor requestor =
new ASTRequestor() {
@Override
public void acceptBinding(String bindingKey, IBinding binding) {
bindings.put(bindingKey, binding);
}
};
parser.createASTs(new ICompilationUnit[0], keys, requestor, null);
if (bindings.size() > 0) return (ITypeBinding) bindings.get(keys[0]);
return null;
}
项目:Eclipse-Postfix-Code-Completion
文件:ASTBatchParser.java
/**
* Creates ASTs for each compilation unit in <code>units</code>.
* <p>
* <code>ASTRequestor.acceptAST</code> is called in no particular order to
* pass the compilation unit and the corresponding AST to <code>requestor</code>.
* </p>
* <p>
* The <code>bindingKeys</code> parameter specifies bindings keys
* ({@link IBinding#getKey()}) that are to be looked up.
* </p>
*
* @param compilationUnits the compilation units to create ASTs for
* @param bindingKeys the binding keys to create bindings for
* @param requestor the AST requestor that collects abstract syntax trees and bindings
* @param monitor the progress monitor used to report progress and request cancelation,
* or <code>null</code> if none
* @see ASTParser#createASTs(ICompilationUnit[], String[], ASTRequestor, IProgressMonitor)
*/
public final void createASTs(ICompilationUnit[] compilationUnits, String[] bindingKeys, ASTRequestor requestor, IProgressMonitor monitor) {
if (compilationUnits.length == 0)
return;
if (monitor == null)
monitor= new NullProgressMonitor();
monitor.beginTask("", compilationUnits.length); //$NON-NLS-1$
try {
ICompilationUnit[][] splited= splitByProject(compilationUnits);
for (int i= 0; i < splited.length; i++) {
ICompilationUnit[] units= splited[i];
if (units.length <= MAX_AT_ONCE) {
createParser(units[0].getJavaProject()).createASTs(units, bindingKeys, requestor, new SubProgressMonitor(monitor, units.length));
} else {
List<ICompilationUnit> list= Arrays.asList(units);
int end= 0;
int cursor= 0;
while (cursor < units.length) {
end= Math.min(end + MAX_AT_ONCE, units.length);
List<ICompilationUnit> toParse= list.subList(cursor, end);
createParser(units[0].getJavaProject()).createASTs(toParse.toArray(new ICompilationUnit[toParse.size()]), bindingKeys, requestor,
new SubProgressMonitor(monitor, toParse.size()));
cursor= end;
}
}
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:LazyGenericTypeProposal.java
/**
* Returns the type binding of the expected type as it is contained in the
* code completion context.
*
* @return the binding of the expected type
*/
private ITypeBinding getExpectedType() {
char[][] chKeys= fInvocationContext.getCoreContext().getExpectedTypesKeys();
if (chKeys == null || chKeys.length == 0)
return null;
String[] keys= new String[chKeys.length];
for (int i= 0; i < keys.length; i++) {
keys[i]= String.valueOf(chKeys[0]);
}
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setProject(fCompilationUnit.getJavaProject());
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
final Map<String, IBinding> bindings= new HashMap<String, IBinding>();
ASTRequestor requestor= new ASTRequestor() {
@Override
public void acceptBinding(String bindingKey, IBinding binding) {
bindings.put(bindingKey, binding);
}
};
parser.createASTs(new ICompilationUnit[0], keys, requestor, null);
if (bindings.size() > 0)
return (ITypeBinding) bindings.get(keys[0]);
return null;
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ASTBatchParser.java
/**
* Creates ASTs for each compilation unit in <code>units</code>.
* <p>
* <code>ASTRequestor.acceptAST</code> is called in no particular order to
* pass the compilation unit and the corresponding AST to <code>requestor</code>.
* </p>
* <p>
* The <code>bindingKeys</code> parameter specifies bindings keys
* ({@link IBinding#getKey()}) that are to be looked up.
* </p>
*
* @param compilationUnits the compilation units to create ASTs for
* @param bindingKeys the binding keys to create bindings for
* @param requestor the AST requestor that collects abstract syntax trees and bindings
* @param monitor the progress monitor used to report progress and request cancelation,
* or <code>null</code> if none
* @see ASTParser#createASTs(ICompilationUnit[], String[], ASTRequestor, IProgressMonitor)
*/
public final void createASTs(ICompilationUnit[] compilationUnits, String[] bindingKeys, ASTRequestor requestor, IProgressMonitor monitor) {
if (compilationUnits.length == 0)
return;
if (monitor == null)
monitor= new NullProgressMonitor();
monitor.beginTask("", compilationUnits.length); //$NON-NLS-1$
try {
ICompilationUnit[][] splited= splitByProject(compilationUnits);
for (int i= 0; i < splited.length; i++) {
ICompilationUnit[] units= splited[i];
if (units.length <= MAX_AT_ONCE) {
createParser(units[0].getJavaProject()).createASTs(units, bindingKeys, requestor, new SubProgressMonitor(monitor, units.length));
} else {
List<ICompilationUnit> list= Arrays.asList(units);
int end= 0;
int cursor= 0;
while (cursor < units.length) {
end= Math.min(end + MAX_AT_ONCE, units.length);
List<ICompilationUnit> toParse= list.subList(cursor, end);
createParser(units[0].getJavaProject()).createASTs(toParse.toArray(new ICompilationUnit[toParse.size()]), bindingKeys, requestor,
new SubProgressMonitor(monitor, toParse.size()));
cursor= end;
}
}
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:LazyGenericTypeProposal.java
/**
* Returns the type binding of the expected type as it is contained in the
* code completion context.
*
* @return the binding of the expected type
*/
private ITypeBinding getExpectedType() {
char[][] chKeys= fInvocationContext.getCoreContext().getExpectedTypesKeys();
if (chKeys == null || chKeys.length == 0)
return null;
String[] keys= new String[chKeys.length];
for (int i= 0; i < keys.length; i++) {
keys[i]= String.valueOf(chKeys[0]);
}
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setProject(fCompilationUnit.getJavaProject());
parser.setResolveBindings(true);
parser.setStatementsRecovery(true);
final Map<String, IBinding> bindings= new HashMap<String, IBinding>();
ASTRequestor requestor= new ASTRequestor() {
@Override
public void acceptBinding(String bindingKey, IBinding binding) {
bindings.put(bindingKey, binding);
}
};
parser.createASTs(new ICompilationUnit[0], keys, requestor, null);
if (bindings.size() > 0)
return (ITypeBinding) bindings.get(keys[0]);
return null;
}
项目:che
文件:ASTBatchParser.java
/**
* Creates ASTs for each compilation unit in <code>units</code>.
*
* <p><code>ASTRequestor.acceptAST</code> is called in no particular order to pass the compilation
* unit and the corresponding AST to <code>requestor</code>.
*
* <p>The <code>bindingKeys</code> parameter specifies bindings keys ({@link IBinding#getKey()})
* that are to be looked up.
*
* @param compilationUnits the compilation units to create ASTs for
* @param bindingKeys the binding keys to create bindings for
* @param requestor the AST requestor that collects abstract syntax trees and bindings
* @param monitor the progress monitor used to report progress and request cancelation, or <code>
* null</code> if none
* @see ASTParser#createASTs(ICompilationUnit[], String[], ASTRequestor, IProgressMonitor)
*/
public final void createASTs(
ICompilationUnit[] compilationUnits,
String[] bindingKeys,
ASTRequestor requestor,
IProgressMonitor monitor) {
if (compilationUnits.length == 0) return;
if (monitor == null) monitor = new NullProgressMonitor();
monitor.beginTask("", compilationUnits.length); // $NON-NLS-1$
try {
ICompilationUnit[][] splited = splitByProject(compilationUnits);
for (int i = 0; i < splited.length; i++) {
ICompilationUnit[] units = splited[i];
if (units.length <= MAX_AT_ONCE) {
createParser(units[0].getJavaProject())
.createASTs(
units, bindingKeys, requestor, new SubProgressMonitor(monitor, units.length));
} else {
List<ICompilationUnit> list = Arrays.asList(units);
int end = 0;
int cursor = 0;
while (cursor < units.length) {
end = Math.min(end + MAX_AT_ONCE, units.length);
List<ICompilationUnit> toParse = list.subList(cursor, end);
createParser(units[0].getJavaProject())
.createASTs(
toParse.toArray(new ICompilationUnit[toParse.size()]),
bindingKeys,
requestor,
new SubProgressMonitor(monitor, toParse.size()));
cursor = end;
}
}
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:PushDownRefactoringProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
// Not needed
}
项目:Eclipse-Postfix-Code-Completion
文件:UseSuperTypeProcessor.java
/**
* Creates the text change manager for this processor.
*
* @param monitor
* the progress monitor to display progress
* @param status
* the refactoring status
* @return the created text change manager
* @throws JavaModelException
* if the method declaration could not be found
* @throws CoreException
* if the changes could not be generated
*/
protected final TextEditBasedChangeManager createChangeManager(final IProgressMonitor monitor, final RefactoringStatus status) throws JavaModelException, CoreException {
Assert.isNotNull(status);
Assert.isNotNull(monitor);
try {
monitor.beginTask("", 300); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.UseSuperTypeProcessor_creating);
final TextEditBasedChangeManager manager= new TextEditBasedChangeManager();
final IJavaProject project= fSubType.getJavaProject();
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setWorkingCopyOwner(fOwner);
parser.setResolveBindings(true);
parser.setProject(project);
parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));
if (fSubType.isBinary() || fSubType.isReadOnly()) {
final IBinding[] bindings= parser.createBindings(new IJavaElement[] { fSubType, fSuperType }, new SubProgressMonitor(monitor, 50));
if (bindings != null && bindings.length == 2 && bindings[0] instanceof ITypeBinding && bindings[1] instanceof ITypeBinding) {
solveSuperTypeConstraints(null, null, fSubType, (ITypeBinding) bindings[0], (ITypeBinding) bindings[1], new SubProgressMonitor(monitor, 100), status);
if (!status.hasFatalError())
rewriteTypeOccurrences(manager, null, null, null, null, new HashSet<String>(), status, new SubProgressMonitor(monitor, 150));
}
} else {
parser.createASTs(new ICompilationUnit[] { fSubType.getCompilationUnit() }, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
try {
final CompilationUnitRewrite subRewrite= new CompilationUnitRewrite(fOwner, unit, node);
final AbstractTypeDeclaration subDeclaration= ASTNodeSearchUtil.getAbstractTypeDeclarationNode(fSubType, subRewrite.getRoot());
if (subDeclaration != null) {
final ITypeBinding subBinding= subDeclaration.resolveBinding();
if (subBinding != null) {
final ITypeBinding superBinding= findTypeInHierarchy(subBinding, fSuperType.getFullyQualifiedName('.'));
if (superBinding != null) {
solveSuperTypeConstraints(subRewrite.getCu(), subRewrite.getRoot(), fSubType, subBinding, superBinding, new SubProgressMonitor(monitor, 100), status);
if (!status.hasFatalError()) {
rewriteTypeOccurrences(manager, this, subRewrite, subRewrite.getCu(), subRewrite.getRoot(), new HashSet<String>(), status, new SubProgressMonitor(monitor, 200));
final TextChange change= subRewrite.createChange(true);
if (change != null)
manager.manage(subRewrite.getCu(), change);
}
}
}
}
} catch (CoreException exception) {
JavaPlugin.log(exception);
status.merge(RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.UseSuperTypeProcessor_internal_error));
}
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, new NullProgressMonitor());
}
return manager;
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:UseSuperTypeProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected final void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
CompilationUnitRewrite currentRewrite= null;
final ICompilationUnit sourceUnit= rewrite.getCu();
if (sourceUnit.equals(unit))
currentRewrite= rewrite;
else
currentRewrite= new CompilationUnitRewrite(fOwner, unit, node);
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
estimate= (TType) variable.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null && variable instanceof ITypeConstraintVariable) {
final ASTNode result= NodeFinder.perform(node, ((ITypeConstraintVariable) variable).getRange().getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
if (!sourceUnit.equals(unit)) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
subMonitor.done();
}
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:ExtractInterfaceProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected final void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
CompilationUnitRewrite currentRewrite= null;
final boolean isSubUnit= rewrite.getCu().equals(unit.getPrimary());
if (isSubUnit)
currentRewrite= rewrite;
else
currentRewrite= new CompilationUnitRewrite(unit, node);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
ITypeConstraintVariable constraint= null;
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
if (variable instanceof ITypeConstraintVariable) {
constraint= (ITypeConstraintVariable) variable;
estimate= (TType) constraint.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null) {
final CompilationUnitRange range= constraint.getRange();
if (isSubUnit)
rewriteTypeOccurrence(range, estimate, requestor, currentRewrite, node, replacements, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
else {
final ASTNode result= NodeFinder.perform(node, range.getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
}
}
} finally {
subMonitor.done();
}
}
if (!isSubUnit) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:PullUpRefactoringProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
CompilationUnitRewrite currentRewrite= null;
final CompilationUnitRewrite existingRewrite= fCompilationUnitRewrites.get(unit.getPrimary());
final boolean isTouched= existingRewrite != null;
if (isTouched)
currentRewrite= existingRewrite;
else
currentRewrite= new CompilationUnitRewrite(unit, node);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
ITypeConstraintVariable constraint= null;
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
if (variable instanceof ITypeConstraintVariable) {
constraint= (ITypeConstraintVariable) variable;
estimate= (TType) constraint.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null) {
final CompilationUnitRange range= constraint.getRange();
if (isTouched)
rewriteTypeOccurrence(range, estimate, requestor, currentRewrite, node, replacements, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
else {
final ASTNode result= NodeFinder.perform(node, range.getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
}
}
} finally {
subMonitor.done();
}
}
if (!isTouched) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:PullUpRefactoringProcessor.java
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final CompilationUnitRewrite sourceRewrite, final ICompilationUnit copy, final Set<String> replacements, final RefactoringStatus status, final IProgressMonitor monitor) {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.PullUpRefactoring_checking);
final IType declaring= getDeclaringType();
final IJavaProject project= declaring.getJavaProject();
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setWorkingCopyOwner(fOwner);
parser.setResolveBindings(true);
parser.setProject(project);
parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));
parser.createASTs(new ICompilationUnit[] { copy}, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
try {
final IType subType= (IType) JavaModelUtil.findInCompilationUnit(unit, declaring);
final AbstractTypeDeclaration subDeclaration= ASTNodeSearchUtil.getAbstractTypeDeclarationNode(subType, node);
if (subDeclaration != null) {
final ITypeBinding subBinding= subDeclaration.resolveBinding();
if (subBinding != null) {
String name= null;
ITypeBinding superBinding= null;
final ITypeBinding[] superBindings= Bindings.getAllSuperTypes(subBinding);
for (int index= 0; index < superBindings.length; index++) {
name= superBindings[index].getName();
if (name.startsWith(fDestinationType.getElementName()))
superBinding= superBindings[index];
}
if (superBinding != null) {
solveSuperTypeConstraints(unit, node, subType, subBinding, superBinding, new SubProgressMonitor(monitor, 80), status);
if (!status.hasFatalError())
rewriteTypeOccurrences(manager, this, sourceRewrite, unit, node, replacements, status, new SubProgressMonitor(monitor, 120));
}
}
}
} catch (JavaModelException exception) {
JavaPlugin.log(exception);
status.merge(RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.ExtractInterfaceProcessor_internal_error));
}
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, new NullProgressMonitor());
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:PushDownRefactoringProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
// Not needed
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:UseSuperTypeProcessor.java
/**
* Creates the text change manager for this processor.
*
* @param monitor
* the progress monitor to display progress
* @param status
* the refactoring status
* @return the created text change manager
* @throws JavaModelException
* if the method declaration could not be found
* @throws CoreException
* if the changes could not be generated
*/
protected final TextEditBasedChangeManager createChangeManager(final IProgressMonitor monitor, final RefactoringStatus status) throws JavaModelException, CoreException {
Assert.isNotNull(status);
Assert.isNotNull(monitor);
try {
monitor.beginTask("", 300); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.UseSuperTypeProcessor_creating);
final TextEditBasedChangeManager manager= new TextEditBasedChangeManager();
final IJavaProject project= fSubType.getJavaProject();
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setWorkingCopyOwner(fOwner);
parser.setResolveBindings(true);
parser.setProject(project);
parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));
if (fSubType.isBinary() || fSubType.isReadOnly()) {
final IBinding[] bindings= parser.createBindings(new IJavaElement[] { fSubType, fSuperType }, new SubProgressMonitor(monitor, 50));
if (bindings != null && bindings.length == 2 && bindings[0] instanceof ITypeBinding && bindings[1] instanceof ITypeBinding) {
solveSuperTypeConstraints(null, null, fSubType, (ITypeBinding) bindings[0], (ITypeBinding) bindings[1], new SubProgressMonitor(monitor, 100), status);
if (!status.hasFatalError())
rewriteTypeOccurrences(manager, null, null, null, null, new HashSet<String>(), status, new SubProgressMonitor(monitor, 150));
}
} else {
parser.createASTs(new ICompilationUnit[] { fSubType.getCompilationUnit() }, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
try {
final CompilationUnitRewrite subRewrite= new CompilationUnitRewrite(fOwner, unit, node);
final AbstractTypeDeclaration subDeclaration= ASTNodeSearchUtil.getAbstractTypeDeclarationNode(fSubType, subRewrite.getRoot());
if (subDeclaration != null) {
final ITypeBinding subBinding= subDeclaration.resolveBinding();
if (subBinding != null) {
final ITypeBinding superBinding= findTypeInHierarchy(subBinding, fSuperType.getFullyQualifiedName('.'));
if (superBinding != null) {
solveSuperTypeConstraints(subRewrite.getCu(), subRewrite.getRoot(), fSubType, subBinding, superBinding, new SubProgressMonitor(monitor, 100), status);
if (!status.hasFatalError()) {
rewriteTypeOccurrences(manager, this, subRewrite, subRewrite.getCu(), subRewrite.getRoot(), new HashSet<String>(), status, new SubProgressMonitor(monitor, 200));
final TextChange change= subRewrite.createChange(true);
if (change != null)
manager.manage(subRewrite.getCu(), change);
}
}
}
}
} catch (CoreException exception) {
JavaPlugin.log(exception);
status.merge(RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.UseSuperTypeProcessor_internal_error));
}
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, new NullProgressMonitor());
}
return manager;
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:UseSuperTypeProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected final void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
CompilationUnitRewrite currentRewrite= null;
final ICompilationUnit sourceUnit= rewrite.getCu();
if (sourceUnit.equals(unit))
currentRewrite= rewrite;
else
currentRewrite= new CompilationUnitRewrite(fOwner, unit, node);
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
estimate= (TType) variable.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null && variable instanceof ITypeConstraintVariable) {
final ASTNode result= NodeFinder.perform(node, ((ITypeConstraintVariable) variable).getRange().getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
if (!sourceUnit.equals(unit)) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
subMonitor.done();
}
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:ExtractInterfaceProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected final void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
CompilationUnitRewrite currentRewrite= null;
final boolean isSubUnit= rewrite.getCu().equals(unit.getPrimary());
if (isSubUnit)
currentRewrite= rewrite;
else
currentRewrite= new CompilationUnitRewrite(unit, node);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
ITypeConstraintVariable constraint= null;
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
if (variable instanceof ITypeConstraintVariable) {
constraint= (ITypeConstraintVariable) variable;
estimate= (TType) constraint.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null) {
final CompilationUnitRange range= constraint.getRange();
if (isSubUnit)
rewriteTypeOccurrence(range, estimate, requestor, currentRewrite, node, replacements, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
else {
final ASTNode result= NodeFinder.perform(node, range.getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
}
}
} finally {
subMonitor.done();
}
}
if (!isSubUnit) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:PullUpRefactoringProcessor.java
/**
* {@inheritDoc}
*/
@Override
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final ASTRequestor requestor, final CompilationUnitRewrite rewrite, final ICompilationUnit unit, final CompilationUnit node, final Set<String> replacements, final IProgressMonitor monitor) throws CoreException {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
CompilationUnitRewrite currentRewrite= null;
final CompilationUnitRewrite existingRewrite= fCompilationUnitRewrites.get(unit.getPrimary());
final boolean isTouched= existingRewrite != null;
if (isTouched)
currentRewrite= existingRewrite;
else
currentRewrite= new CompilationUnitRewrite(unit, node);
final Collection<ITypeConstraintVariable> collection= fTypeOccurrences.get(unit);
if (collection != null && !collection.isEmpty()) {
final IProgressMonitor subMonitor= new SubProgressMonitor(monitor, 100);
try {
subMonitor.beginTask("", collection.size() * 10); //$NON-NLS-1$
subMonitor.setTaskName(RefactoringCoreMessages.ExtractInterfaceProcessor_creating);
TType estimate= null;
ISourceConstraintVariable variable= null;
ITypeConstraintVariable constraint= null;
for (final Iterator<ITypeConstraintVariable> iterator= collection.iterator(); iterator.hasNext();) {
variable= iterator.next();
if (variable instanceof ITypeConstraintVariable) {
constraint= (ITypeConstraintVariable) variable;
estimate= (TType) constraint.getData(SuperTypeConstraintsSolver.DATA_TYPE_ESTIMATE);
if (estimate != null) {
final CompilationUnitRange range= constraint.getRange();
if (isTouched)
rewriteTypeOccurrence(range, estimate, requestor, currentRewrite, node, replacements, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
else {
final ASTNode result= NodeFinder.perform(node, range.getSourceRange());
if (result != null)
rewriteTypeOccurrence(estimate, currentRewrite, result, currentRewrite.createCategorizedGroupDescription(RefactoringCoreMessages.SuperTypeRefactoringProcessor_update_type_occurrence, SET_SUPER_TYPE));
}
subMonitor.worked(10);
}
}
}
} finally {
subMonitor.done();
}
}
if (!isTouched) {
final TextChange change= currentRewrite.createChange(true);
if (change != null)
manager.manage(unit, change);
}
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:PullUpRefactoringProcessor.java
protected void rewriteTypeOccurrences(final TextEditBasedChangeManager manager, final CompilationUnitRewrite sourceRewrite, final ICompilationUnit copy, final Set<String> replacements, final RefactoringStatus status, final IProgressMonitor monitor) {
try {
monitor.beginTask("", 100); //$NON-NLS-1$
monitor.setTaskName(RefactoringCoreMessages.PullUpRefactoring_checking);
final IType declaring= getDeclaringType();
final IJavaProject project= declaring.getJavaProject();
final ASTParser parser= ASTParser.newParser(ASTProvider.SHARED_AST_LEVEL);
parser.setWorkingCopyOwner(fOwner);
parser.setResolveBindings(true);
parser.setProject(project);
parser.setCompilerOptions(RefactoringASTParser.getCompilerOptions(project));
parser.createASTs(new ICompilationUnit[] { copy}, new String[0], new ASTRequestor() {
@Override
public final void acceptAST(final ICompilationUnit unit, final CompilationUnit node) {
try {
final IType subType= (IType) JavaModelUtil.findInCompilationUnit(unit, declaring);
final AbstractTypeDeclaration subDeclaration= ASTNodeSearchUtil.getAbstractTypeDeclarationNode(subType, node);
if (subDeclaration != null) {
final ITypeBinding subBinding= subDeclaration.resolveBinding();
if (subBinding != null) {
String name= null;
ITypeBinding superBinding= null;
final ITypeBinding[] superBindings= Bindings.getAllSuperTypes(subBinding);
for (int index= 0; index < superBindings.length; index++) {
name= superBindings[index].getName();
if (name.startsWith(fDestinationType.getElementName()))
superBinding= superBindings[index];
}
if (superBinding != null) {
solveSuperTypeConstraints(unit, node, subType, subBinding, superBinding, new SubProgressMonitor(monitor, 80), status);
if (!status.hasFatalError())
rewriteTypeOccurrences(manager, this, sourceRewrite, unit, node, replacements, status, new SubProgressMonitor(monitor, 120));
}
}
}
} catch (JavaModelException exception) {
JavaPlugin.log(exception);
status.merge(RefactoringStatus.createFatalErrorStatus(RefactoringCoreMessages.ExtractInterfaceProcessor_internal_error));
}
}
@Override
public final void acceptBinding(final String key, final IBinding binding) {
// Do nothing
}
}, new NullProgressMonitor());
} finally {
monitor.done();
}
}
项目:Eclipse-Postfix-Code-Completion
文件:SuperTypeRefactoringProcessor.java
/**
* Creates the necessary text edits to replace the subtype occurrence by a
* supertype.
*
* @param manager
* the text change manager to use
* @param requestor
* the ast requestor to use
* @param rewrite
* the compilation unit rewrite of the subtype (not in working
* copy mode)
* @param unit
* the compilation unit
* @param node
* the compilation unit node
* @param replacements
* the set of variable binding keys of formal parameters which
* must be replaced
* @param monitor
* the progress monitor to use
* @throws CoreException
* if the change could not be generated
*/
protected abstract void rewriteTypeOccurrences(TextEditBasedChangeManager manager, ASTRequestor requestor, CompilationUnitRewrite rewrite, ICompilationUnit unit, CompilationUnit node, Set<String> replacements, IProgressMonitor monitor) throws CoreException;
项目:Eclipse-Postfix-Code-Completion-Juno38
文件:SuperTypeRefactoringProcessor.java
/**
* Creates the necessary text edits to replace the subtype occurrence by a
* supertype.
*
* @param manager
* the text change manager to use
* @param requestor
* the ast requestor to use
* @param rewrite
* the compilation unit rewrite of the subtype (not in working
* copy mode)
* @param unit
* the compilation unit
* @param node
* the compilation unit node
* @param replacements
* the set of variable binding keys of formal parameters which
* must be replaced
* @param monitor
* the progress monitor to use
* @throws CoreException
* if the change could not be generated
*/
protected abstract void rewriteTypeOccurrences(TextEditBasedChangeManager manager, ASTRequestor requestor, CompilationUnitRewrite rewrite, ICompilationUnit unit, CompilationUnit node, Set<String> replacements, IProgressMonitor monitor) throws CoreException;