import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.body.EnumDeclaration; import com.github.javaparser.ast.stmt.LocalClassDeclarationStmt; import com.github.javaparser.printer.*; static S javaParser_makeAllPublic(S src, O... _) { CompilationUnit cu = javaParseCompilationUnit(src); new PrettyPrinterConfiguration ppconf; ppconf.setIndent(" "); ppconf.setPrintComments(false); new javaParser_makeAllPublic_Visitor visitor; visitor.notTopLevelClassDecl = boolOptPar notTopLevelClassDecl(_); visitor.visit(cu, null); ret cu.toString(ppconf); } sclass javaParser_makeAllPublic_Visitor extends VoidVisitorAdapter { bool notTopLevelClassDecl; // don't make top-level class declaration public void makePublic(Set modifiers) { modifiers.remove(com.github.javaparser.ast.Modifier.PRIVATE); modifiers.remove(com.github.javaparser.ast.Modifier.PROTECTED); modifiers.add(com.github.javaparser.ast.Modifier.PUBLIC); } public void visit(ClassOrInterfaceDeclaration n, O arg) { Node parent = n.getParentNode().get(); if (!(parent instanceof LocalClassDeclarationStmt || parent instanceof CompilationUnit && neq(n.getName().asString(), "main"))) if (notTopLevelClassDecl) notTopLevelClassDecl = false; else makePublic(n.getModifiers()); super.visit(n, arg); } @Override public void visit(EnumDeclaration n, O arg) { makePublic(n.getModifiers()); super.visit(n, arg); } public void visit(FieldDeclaration n, O arg) { makePublic(n.getModifiers()); super.visit(n, arg); } public void visit(ConstructorDeclaration n, O arg) { Node parent = n.getParentNode().get(); if (!parent instanceof EnumDeclaration) makePublic(n.getModifiers()); super.visit(n, arg); } public void visit(MethodDeclaration n, O arg) { EnumSet m = n.getModifiers(); //print("Method found: " + n.getName() + " with modifiers: " + m + ", position: " + n.getRange()->begin); if (m.contains(com.github.javaparser.ast.Modifier.PRIVATE) && !m.contains(com.github.javaparser.ast.Modifier.STATIC)) m.add(com.github.javaparser.ast.Modifier.FINAL); makePublic(m); super.visit(n, arg); } }