/** * Generates something like * <code>private static final AtomicLongFieldUpdater<MpmcAtomicArrayQueueProducerIndexField> P_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(MpmcAtomicArrayQueueProducerIndexField.class, "producerIndex");</code> * * @param type * @param name * @param initializer * @param modifiers * @return */ private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, Modifier... modifiers) { FieldDeclaration fieldDeclaration = new FieldDeclaration(); VariableDeclarator variable = new VariableDeclarator(type, name, initializer); fieldDeclaration.getVariables().add(variable); EnumSet<Modifier> modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); fieldDeclaration.setModifiers(modifierSet); return fieldDeclaration; }
/** * Generates something like * <code>private static final AtomicLongFieldUpdater<MpmcAtomicArrayQueueProducerIndexField> P_INDEX_UPDATER = AtomicLongFieldUpdater.newUpdater(MpmcAtomicArrayQueueProducerIndexField.class, "producerIndex");</code> * * @param type * @param name * @param initializer * @param modifiers * @return */ private static FieldDeclaration fieldDeclarationWithInitialiser(Type type, String name, Expression initializer, Modifier... modifiers) { FieldDeclaration fieldDeclaration = new FieldDeclaration(); VariableDeclarator variable = new VariableDeclarator(type, name, initializer); fieldDeclaration.getVariables().add(variable); EnumSet<Modifier> modifierSet = EnumSet.copyOf(Arrays.asList(modifiers)); fieldDeclaration.setModifiers(modifierSet); return fieldDeclaration; }
private static ClassOrInterfaceType simpleParametricType(String className, String... typeArgs) { NodeList<Type> typeArguments = new NodeList<Type>(); for (String typeArg : typeArgs) { typeArguments.add(classType(typeArg)); } return new ClassOrInterfaceType(null, new SimpleName(className), typeArguments); }
private static ClassOrInterfaceType simpleParametricType(String className, String... typeArgs) { NodeList<Type> typeArguments = new NodeList<Type>(); for (String typeArg : typeArgs) { typeArguments.add(classType(typeArg)); } return new ClassOrInterfaceType(null, new SimpleName(className), typeArguments); }
n.getMembers().add(0, declareLongFieldUpdater(className, variableName));
private NodeList<Modifier> getModifiersInCorrectOrder(NodeList<Modifier> modifiers) { NodeList<Modifier> reorderedModifiers = new NodeList<>(); if (modifiers.size() <= 1) { return modifiers; } // Fill enum set with java modifier keywords, assuming that they are in the // correct order EnumSet<Keyword> keywords = EnumSet.noneOf(Keyword.class); for (Modifier modifier : modifiers) { keywords.add(modifier.getKeyword()); } // Reorder modifiers for (Keyword keyword : keywords) { for (Modifier modifier : modifiers) { if (keyword.equals(modifier.getKeyword())) { reorderedModifiers.add(modifier); } } } return reorderedModifiers; }
private void addImport(String s) { cu.getImports().add(new ImportDeclaration(new Name(s), false, false)); }
VariableDeclarator vd_typename = new VariableDeclarator( stringType, "_TypeName", new StringLiteralExpr(packageAndClassName)); fi_fields.add(new FieldDeclaration(public_static_final, vd_typename));
initCallSite.addArgument(new StringLiteralExpr(featName)); VariableDeclarator vd_FC = new VariableDeclarator(callSiteType, "_FC_" + featName, initCallSite); fi_fields.add(new FieldDeclaration(private_static_final, vd_FC)); fi_fields.add(new FieldDeclaration(private_static_final, vd_FH)); fi_fields.add(new FieldDeclaration(public_static_final, vd_fn));
public static void main(String[] args) throws FileNotFoundException { // The directory where we store the examples String pathToExamplesDir = "." + separator + "src" + separator + "main" + separator + "resources"; // Parse the code of an entire source file, a.k.a. a Compilation Unit CompilationUnit compilationUnitNode = JavaParser.parse(new File(pathToExamplesDir + separator + "ASimpleClass.java")); printCompilationUnit("My original class", compilationUnitNode); // Modifying the name of the class compilationUnitNode.getClassByName("ASimpleClass").get() .setName("MyRenamedClass"); printCompilationUnit("Renamed class", compilationUnitNode); // Adding a method: we add a setter MethodDeclaration setter = compilationUnitNode .getClassByName("MyRenamedClass").get() .addMethod("setAField", Modifier.PUBLIC); setter.addParameter("boolean", "aField"); setter.getBody().get().getStatements().add(new ExpressionStmt( new AssignExpr( new FieldAccessExpr(new ThisExpr(),"aField"), new NameExpr("aField"), AssignExpr.Operator.ASSIGN ))); printCompilationUnit("With a setter", compilationUnitNode); } }