当前位置: 首页 > news >正文

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);

}


http://www.taodudu.cc/news/show-647656.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • 报错 插入更新_自增主键,三类插入测验答案,在这里。
  • 事务连接中断_HTTP长连接和短连接
  • 亚马逊评价抓取插件_亚马逊运营必备插件
  • controller需要捕获异常吗_Spring之Controller异常处理
  • mysql8中文排序_mysql中utf8编码的中文字段按拼音排序
  • html 分级切换菜单_FL studio系列教程(十六):FL Studio查看菜单讲解
  • mysql还原数据库后日期显示3000_mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法...
  • java 函数名调用_粉丝提问|c语言:如何定义一个和库函数名一样的函数,并在函数中调用该库函数...
  • docker mysql sock_docker mysql安装
  • mysql最大述_mysql最大字段数量及 varchar类型总结
  • php协程实现mysql异步_swoole与php协程实现异步非阻塞IO开发
  • mysql中xml类型_使用 SQLXML 数据类型
  • mysql语法6_全面接触SQL语法(6)_mysql
  • sqlerver mysql_转 MYSQL学习(一)
  • tcpdump 识别成dns_dns tcpdump
  • java linkedhashmap_java学习-hashMap和linkedHashMap
  • 简单java题_java
  • java actionsupport_struts2中的Action接口和Actionsupport接口各有什么作用
  • java jar log4j_使用Log4j
  • java课程设计进程管理_GitHub - Shadow-Java/OS: 操作系统课程设计,关键词:进程同步与互斥、进程死锁、LRU页面替换算法、时间片轮转算法、时钟等...
  • mysql中建立索引的原则_在SQL数据库中设定索引的原则是什么?(注意是设定不是创建)...
  • java宝典_JAVA宝典之_JAVA基础
  • java blockingqueue_Java多线程进阶(三一)—— J.U.C之collections框架:BlockingQueue接口...
  • java 转账 锁_Java多线程 多个人转账发生死锁
  • java 静态变量 存储_Java学习笔记9---类静态成员变量的存储位置及JVM的内存划分...
  • java坐标移动题目case_坐标移动
  • java代码实现购物车小程序_使用Taro实现小程序商城的购物车功能模块的实例代码...
  • php中怎么过滤器_PHP 过滤器
  • java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析
  • java treeset 转array,Java TreeSet toArray(T[])用法及代碼示例