下面列出了org.eclipse.jdt.core.dom.CompilationUnit#imports ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@SuppressWarnings("unchecked")
@Override
public void endVisit(CompilationUnit compilationUnit) {
List<ImportDeclaration> imports = compilationUnit.imports();
for (ImportDeclaration importDeclaration : imports) {
if (importDeclaration.isOnDemand()) {
// Assume .* imports are always needed.
continue;
}
SimpleName importedClass =
importDeclaration.getName().isSimpleName()
? (SimpleName) importDeclaration.getName()
: ((QualifiedName) importDeclaration.getName()).getName();
if (!referencedNames.contains(importedClass.getIdentifier())) {
unusedImports.add(importDeclaration);
}
}
}
@Override
public boolean visit(final CompilationUnit node) {
if (node.getPackage() != null) {
currentPackageName = node.getPackage().getName()
.getFullyQualifiedName();
}
for (final Object decl : node.imports()) {
final ImportDeclaration imp = (ImportDeclaration) decl;
if (!imp.isStatic()) {
final String fqn = imp.getName().getFullyQualifiedName();
importedNames.put(fqn.substring(fqn.lastIndexOf('.') + 1),
fqn);
}
}
return true;
}
protected void processCompilationUnit(String sourceFilePath, CompilationUnit compilationUnit) {
PackageDeclaration packageDeclaration = compilationUnit.getPackage();
String packageName = null;
if(packageDeclaration != null)
packageName = packageDeclaration.getName().getFullyQualifiedName();
else
packageName = "";
List<ImportDeclaration> imports = compilationUnit.imports();
List<String> importedTypes = new ArrayList<String>();
for(ImportDeclaration importDeclaration : imports) {
importedTypes.add(importDeclaration.getName().getFullyQualifiedName());
}
List<AbstractTypeDeclaration> topLevelTypeDeclarations = compilationUnit.types();
for(AbstractTypeDeclaration abstractTypeDeclaration : topLevelTypeDeclarations) {
if(abstractTypeDeclaration instanceof TypeDeclaration) {
TypeDeclaration topLevelTypeDeclaration = (TypeDeclaration)abstractTypeDeclaration;
processTypeDeclaration(compilationUnit, topLevelTypeDeclaration, packageName, sourceFilePath, importedTypes);
}
else if(abstractTypeDeclaration instanceof EnumDeclaration) {
EnumDeclaration enumDeclaration = (EnumDeclaration)abstractTypeDeclaration;
processEnumDeclaration(compilationUnit, enumDeclaration, packageName, sourceFilePath, importedTypes);
}
}
}
@Override
public boolean visit(final CompilationUnit node) {
if (node.getPackage() != null) {
currentPackageName = node.getPackage().getName()
.getFullyQualifiedName();
}
for (final Object decl : node.imports()) {
final ImportDeclaration imp = (ImportDeclaration) decl;
if (!imp.isStatic()) {
final String fqn = imp.getName().getFullyQualifiedName();
importedNames.put(fqn.substring(fqn.lastIndexOf('.') + 1),
fqn);
}
}
return true;
}
public static StubTypeContext createStubTypeContext(ICompilationUnit cu, CompilationUnit root, int focalPosition) throws CoreException {
StringBuffer bufBefore= new StringBuffer();
StringBuffer bufAfter= new StringBuffer();
int introEnd= 0;
PackageDeclaration pack= root.getPackage();
if (pack != null)
introEnd= pack.getStartPosition() + pack.getLength();
List<ImportDeclaration> imports= root.imports();
if (imports.size() > 0) {
ImportDeclaration lastImport= imports.get(imports.size() - 1);
introEnd= lastImport.getStartPosition() + lastImport.getLength();
}
bufBefore.append(cu.getBuffer().getText(0, introEnd));
fillWithTypeStubs(bufBefore, bufAfter, focalPosition, root.types());
bufBefore.append(' ');
bufAfter.insert(0, ' ');
return new StubTypeContext(cu, bufBefore.toString(), bufAfter.toString());
}
private IRegion evaluateReplaceRange(CompilationUnit root) {
List imports= root.imports();
if (!imports.isEmpty()) {
ImportDeclaration first= (ImportDeclaration) imports.get(0);
ImportDeclaration last= (ImportDeclaration) imports.get(imports.size() - 1);
int startPos= first.getStartPosition(); // no extended range for first: bug 121428
int endPos= root.getExtendedStartPosition(last) + root.getExtendedLength(last);
int endLine= root.getLineNumber(endPos);
if (endLine > 0) {
int nextLinePos= root.getPosition(endLine + 1, 0);
if (nextLinePos >= 0) {
int firstTypePos= getFirstTypeBeginPos(root);
if (firstTypePos != -1 && firstTypePos < nextLinePos) {
endPos= firstTypePos;
} else {
endPos= nextLinePos;
}
}
}
return new Region(startPos, endPos - startPos);
} else {
int start= getPackageStatementEndPos(root);
return new Region(start, 0);
}
}
@Override
public boolean visit(final CompilationUnit node) {
if (node.getPackage() != null) {
currentPackageName = node.getPackage().getName()
.getFullyQualifiedName();
}
for (final Object decl : node.imports()) {
final ImportDeclaration imp = (ImportDeclaration) decl;
if (!imp.isStatic()) {
final String fqn = imp.getName().getFullyQualifiedName();
importedNames.put(fqn.substring(fqn.lastIndexOf('.') + 1),
fqn);
}
}
return true;
}
private Set<String> getExistingImports(CompilationUnit root) {
List<ImportDeclaration> imports= root.imports();
Set<String> res= new HashSet<String>(imports.size());
for (int i= 0; i < imports.size(); i++) {
res.add(ASTNodes.asString(imports.get(i)));
}
return res;
}