method.setType(simpleParametricType("LinkedQueueAtomicNode", "E")); method.addParameter(simpleParametricType("LinkedQueueAtomicNode", "E"), "newValue"); method.setBody(fieldUpdaterGetAndSet(fieldUpdaterFieldName, "newValue"));
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; }
/** * 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); }
getElements.setType("Collection<String>");