iextensionunit类_Java ICompilationUnit.reconcile方法代码示例

import org.eclipse.jdt.core.ICompilationUnit; //导入方法依赖的package包/类

/**

* @param file

* @param info

* @param monitor

* @throws MalformedTreeException

* @throws BadLocationException

* @throws CoreException

*/

@SuppressWarnings("deprecation")

public static void addGeneratedAnnotation(IFile file, IFile graphFile, IProgressMonitor monitor)

throws MalformedTreeException, BadLocationException, CoreException {

ICompilationUnit compilationUnit = JavaCore.createCompilationUnitFrom(file);

try {

String source = compilationUnit.getSource();

Document document = new Document(source);

compilationUnit.becomeWorkingCopy(new SubProgressMonitor(monitor, 1));

ASTParser parser = ASTParser.newParser(AST.JLS8);

parser.setSource(compilationUnit);

parser.setResolveBindings(true);

CompilationUnit astRoot = (CompilationUnit) parser.createAST(new SubProgressMonitor(monitor, 1));

astRoot.recordModifications();

final ImportRewrite importRewrite = ImportRewrite.create(astRoot, true);

importRewrite.addImport("javax.annotation.Generated");

astRoot.accept(new ASTVisitor() {

@SuppressWarnings("unchecked")

@Override

public boolean visit(TypeDeclaration node) {

ASTNode copiedNode = null;

// Add Generated annotation

ClassExtension ce;

try {

ce = new ClassExtension(false, false, false, false, false, false, "", "", null, false, false,

"", "", "", graphFile);

NormalAnnotation annotation = ce.getGeneratedClassAnnotation();

if (annotation != null) {

copiedNode = ASTNode.copySubtree(node.getAST(), annotation);

node.modifiers().add(0, copiedNode);

}

} catch (JavaModelException e) {

ResourceManager.logException(e);

}

return super.visit(node);

}

});

TextEdit rewrite = astRoot.rewrite(document, compilationUnit.getJavaProject().getOptions(true));

rewrite.apply(document);

TextEdit rewriteImports = importRewrite.rewriteImports(new SubProgressMonitor(monitor, 1));

rewriteImports.apply(document);

String newSource = document.get();

compilationUnit.getBuffer().setContents(newSource);

compilationUnit.reconcile(ICompilationUnit.NO_AST, false, null, new SubProgressMonitor(monitor, 1));

compilationUnit.commitWorkingCopy(false, new SubProgressMonitor(monitor, 1));

} finally {

compilationUnit.discardWorkingCopy();

monitor.done();

}

// WorkbenchFacade.JDTManager.reorganizeImport(compilationUnit);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值