String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); method.setBody(fieldUpdaterLazySet(fieldUpdaterFieldName, newValueName)); } else if (methodName.startsWith("cas")) { usesFieldUpdater = true; String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); String expectedValueName = "expect"; method.setBody( fieldUpdaterCompareAndSet(fieldUpdaterFieldName, expectedValueName, newValueName)); } else if (methodName.startsWith("sv")) { method.setBody(fieldAssignment(variableName, newValueName)); } else if (methodName.startsWith("lv") || methodName.startsWith("lp")) { method.setBody(returnField(variableName)); } else { throw new IllegalStateException("Unhandled method: " + methodName);
String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); method.setBody(fieldUpdaterLazySet(fieldUpdaterFieldName, newValueName)); } else if (methodName.startsWith("cas")) { usesFieldUpdater = true; String fieldUpdaterFieldName = fieldUpdaterFieldName(variableName); String expectedValueName = "expect"; method.setBody( fieldUpdaterCompareAndSet(fieldUpdaterFieldName, expectedValueName, newValueName)); } else if (methodName.startsWith("sv")) { method.setBody(fieldAssignment(variableName, newValueName)); } else if (methodName.startsWith("lv") || methodName.startsWith("lp")) { method.setBody(returnField(variableName)); } else { throw new IllegalStateException("Unhandled method: " + methodName); method.setType(simpleParametricType("LinkedQueueAtomicNode", "E")); method.addParameter(simpleParametricType("LinkedQueueAtomicNode", "E"), "newValue"); method.setBody(fieldUpdaterGetAndSet(fieldUpdaterFieldName, "newValue"));
/** * Given a method declaration node this method will replace it's code and * signature with code to redirect all calls to it to the * <code>newMethodName</code>. Method signatures of both methods must match * exactly. * * @param methodToPatch * @param toMethodName * @param returnType * @param parameters */ private static void patchMethodAsDepreciatedRedirector(MethodDeclaration methodToPatch, String toMethodName, Type returnType, Parameter... parameters) { methodToPatch.setType(returnType); for (Parameter parameter : parameters) { methodToPatch.addParameter(parameter); } methodToPatch.addAnnotation(new MarkerAnnotationExpr("Deprecated")); methodToPatch.setJavadocComment( formatMultilineJavadoc(1, "@deprecated This was renamed to " + toMethodName + " please migrate")); MethodCallExpr methodCall = methodCallExpr("this", toMethodName); for (Parameter parameter : parameters) { methodCall.addArgument(new NameExpr(parameter.getName())); } BlockStmt body = new BlockStmt(); body.addStatement(new ReturnStmt(methodCall)); methodToPatch.setBody(body); }
private Collection<Member> gatherFinalMembers(List<Member> members, CompilationUnit cu) { Map<String, Member> memberMap = new LinkedHashMap<>(); for (Member member : members) { String key = member.getKey(); if (!memberMap.containsKey(key)) { memberMap.put(key, member); } else { BodyDeclaration<?> copy = member.getDeclaration().clone(); if (copy instanceof ConstructorDeclaration) { ((ConstructorDeclaration) copy).setBody(JavaParser.parseBlock("{}")); ((ConstructorDeclaration) copy).setComment(null); } else if (copy instanceof MethodDeclaration) { ((MethodDeclaration) copy).setBody(null); ((MethodDeclaration) copy).setComment(null); } else if (copy instanceof FieldDeclaration) { ((FieldDeclaration) copy).getVariable(0).setInitializer((Expression) null); ((FieldDeclaration) copy).setComment(null); } copy.setAnnotations(new NodeList<>()); Logger.getGlobal().warning(String.format("Suppressing already-present generated member in type %s: %s", cu.getType(0).getNameAsString(), copy.toString())); } } return memberMap.values(); }
private MethodDeclaration getterDeclaration(EntityField field) { MethodDeclaration decl = new MethodDeclaration(ModifierSet.PUBLIC, ASTHelper.createReferenceType(field.getType().getSimpleName(), 0), "get" + CaseConverter.pascalCase(field.getName())); BlockStmt body = new BlockStmt(); body.setStmts( Collections.singletonList( new ReturnStmt( new FieldAccessExpr(new ThisExpr(), field.getName())))); decl.setBody(body); return decl; }
migrateMethod.setBody(block);
private MethodDeclaration setterDeclaration(EntityField field) { MethodDeclaration decl = new MethodDeclaration(ModifierSet.PUBLIC, new VoidType(), "set" + CaseConverter.pascalCase(field.getName()), Collections.singletonList(new Parameter( ASTHelper.createReferenceType(field.getType().getSimpleName(), 0), new VariableDeclaratorId(field.getName())))); BlockStmt body = new BlockStmt(); body.setStmts( Collections.singletonList( new ExpressionStmt( new AssignExpr( new FieldAccessExpr(new ThisExpr(), field.getName()), ASTHelper.createNameExpr(field.getName()), AssignExpr.Operator.assign )))); decl.setBody(body); return decl; }
public static MethodDeclaration mergeMethod(MethodDeclaration one, MethodDeclaration two) { if (isAllNull(one, two)) return null; MethodDeclaration md = null; if (isAllNotNull(one, two)) { md = new MethodDeclaration(); md.setName(one.getName()); md.setType(mergeSelective(one.getType(), two.getType())); md.setParameters(mergeParameters(one.getParameters(), two.getParameters())); md.setTypeParameters(findFirstNotNull(one.getTypeParameters(), two.getTypeParameters())); md.setThrows(mergeListNoDuplicate(one.getThrows(), two.getThrows())); md.setAnnotations(mergeListNoDuplicate(one.getAnnotations(), two.getAnnotations())); md.setArrayCount(one.getArrayCount()); md.setModifiers(mergeModifiers(one.getModifiers(), two.getModifiers())); md.setBody(mergeBlock(one.getBody(), two.getBody())); md.setJavaDoc(mergeSelective(one.getJavaDoc(), two.getJavaDoc())); LOG.info("merge MethodDeclaration --> {}", md.getName()); } else { md = findFirstNotNull(one, two); LOG.info("add MethodDeclaration --> {}", md.getName()); } return md; }
@Override public MethodDeclaration doMerge(MethodDeclaration first, MethodDeclaration second) { MethodDeclaration md = new MethodDeclaration(); md.setName(first.getName()); md.setType(mergeSingle(first.getType(), second.getType())); md.setJavaDoc(mergeSingle(first.getJavaDoc(), second.getJavaDoc())); md.setModifiers(mergeModifiers(first.getModifiers(), second.getModifiers())); md.setDefault(first.isDefault() || second.isDefault()); md.setArrayCount(Math.max(first.getArrayCount(), second.getArrayCount())); md.setAnnotations(mergeCollections(first.getAnnotations(), second.getAnnotations())); md.setThrows(mergeListNoDuplicate(first.getThrows(), second.getThrows(), false)); md.setParameters(mergeCollectionsInOrder(first.getParameters(), second.getParameters())); md.setTypeParameters(mergeCollectionsInOrder(first.getTypeParameters(), second.getTypeParameters())); md.setBody(mergeSingle(first.getBody(), second.getBody())); return md; }