Вы можете использовать Eclipse AST для изменения кода. Грубо говоря, шаги:
1) Разбираем исходный файл [CompilationUnit unit = parseAst(ejbType.getCompilationUnit())
]
public static CompilationUnit parseAst(ICompilationUnit unit, SubMonitor progress) {
ASTParser parser = ASTParser.newParser(AST.JLS8);
parser.setSource(unit);
parser.setResolveBindings(true);
return (CompilationUnit)parser.createAST(progress);
}
2) Найти тип, который вы хотите изменить в вашем CompilationUnit
, используя шаблон посетителя:
unit.accept(new ASTVisitor() {
@Override
public boolean visit(TypeDeclaration node) {
IType type = (IType) node.resolveBinding().getTypeDeclaration().getJavaElement();
if (ejbType.equals(type)) {
modifyTypeDeclaration(node);
}
return false;
}
});
3) Внедрение modifyTypeDeclaration(TypeDeclaration node)
.
Я обычно использую ASTRewrite
, чтобы собрать все изменения в блок компиляции (* .java-файл), bevor, записывающий его обратно, что выглядит примерно так.
ICompilationUnit cu = ejbType.getCompilationUnit();
cu.becomeWorkingCopy(...);
CompilationUnit unit = parseAst(ejbType.getCompilationUnit())
final ASTRewrite rewrite = ASTRewrite.create(unit.getAST());
collectChangesToUnit(unit, rewrite);
cu.applyTextEdit(rewrite.rewriteAST(), ...);
cu.commitWorkingCopy(false, ...);
Если ваш случай действительно просто вы можете также изменить TypeDeclaration
непосредственно.