/** * 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); }
@Override public String getName() { return wrappedNode.getName().getId(); }
@Override public String getName() { return wrappedNode.getName().getId(); }
@Override public String getName() { return wrappedNode.getName().getId(); }
private void getParameterNames(MethodDeclaration methodDeclaration, boolean isInterface) { final EnumSet<Modifier> modifiers = methodDeclaration.getModifiers(); if (isInterface || modifiers.contains(Modifier.PUBLIC)) { String methodName = methodDeclaration.getName().getIdentifier(); List<Parameter> parameters = methodDeclaration.getParameters(); names.className = this.className; List<List<ParameterName>> parameterNames = names.names.computeIfAbsent(methodName, k -> new ArrayList<>(4)); final List<ParameterName> temp = new ArrayList<>(); for (final Parameter parameter : parameters) { ParameterName parameterName = new ParameterName(); String type = parameter.getType().toString(); String name = parameter.getName().getIdentifier(); if (name.contains("[]")) { type = type + "[]"; name = name.replace("[]", ""); } parameterName.type = type; parameterName.name = name; temp.add(parameterName); } parameterNames.add(temp); } } }
/** * This method returns the position of the method parameter. * * @param methodDeclaration * @param parameterName * @return position */ private Integer getMethodParameterPosition(MethodDeclaration methodDeclaration, String parameterName) { // Get parameters of method NodeList<Parameter> parameters = methodDeclaration.getParameters(); // Search them for (int i = 0; i < parameters.size(); i++) { // If parameter found (needs to be since it was checked first) if (parameters.get(i).getName().asString().equals(parameterName)) { return i; } } return null; }
private void refactor(MethodDeclaration methodDeclaration, StringLiteralExpr memberValue, SingleMemberAnnotationExpr annotation) { if (StringEscapeUtils.unescapeJava(memberValue.getValue()).trim().equals(oldStepValue.getStepAnnotationText().trim())) { newParameters = Arrays.asList(new Parameter[paramPositions.size()]); memberValue.setValue(StringEscapeUtils.escapeJava(newStepValue.getStepAnnotationText())); List<Parameter> parameters = methodDeclaration.getParameters(); for (int i = 0, paramPositionsSize = paramPositions.size(); i < paramPositionsSize; i++) { if (paramPositions.get(i).getOldPosition() < 0) { String paramName = Util.getValidJavaIdentifier(Util.convertToCamelCase("arg " + newStepValue.getParameters().get(i))); if (paramName.equals("arg")) { paramName += i; } newParameters.set(paramPositions.get(i).getNewPosition(), new Parameter(new ClassOrInterfaceType("Object"), new VariableDeclaratorId(paramName))); } else { newParameters.set(paramPositions.get(i).getNewPosition(), parameters.get(paramPositions.get(i).getOldPosition())); } } for (int k = 0; k < newParameters.size(); k++) { for (int l = k + 1; l < newParameters.size(); l++) { if (newParameters.get(k).getName().equals(newParameters.get(l).getName())) { newParameters.set(l, new Parameter(new ClassOrInterfaceType("Object"), new VariableDeclaratorId(newParameters.get(l).getName() + l))); } } } methodDeclaration.setParameters(newParameters); annotation.setMemberValue(memberValue); this.javaElement = new JavaRefactoringElement(getJavaFileText(methodDeclaration), null); stepSpan = annotation.getChildrenNodes().get(1).getRange(); this.refactored = true; } }
private void refactor(MethodDeclaration methodDeclaration, StringLiteralExpr memberValue, SingleMemberAnnotationExpr annotation) { if (StringEscapeUtils.unescapeJava(memberValue.getValue()).trim().equals(oldStepValue.getStepAnnotationText().trim())) { newParameters = Arrays.asList(new Parameter[paramPositions.size()]); memberValue.setValue(StringEscapeUtils.escapeJava(newStepValue.getStepAnnotationText())); List<Parameter> parameters = methodDeclaration.getParameters(); for (int i = 0, paramPositionsSize = paramPositions.size(); i < paramPositionsSize; i++) { if (paramPositions.get(i).getOldPosition() < 0) { String paramName = Util.getValidJavaIdentifier(Util.convertToCamelCase("arg " + newStepValue.getParameters().get(i))); if (paramName.equals("arg")) { paramName += i; } newParameters.set(paramPositions.get(i).getNewPosition(), new Parameter(new ClassOrInterfaceType("Object"), new VariableDeclaratorId(paramName))); } else { newParameters.set(paramPositions.get(i).getNewPosition(), parameters.get(paramPositions.get(i).getOldPosition())); } } for (int k = 0; k < newParameters.size(); k++) { for (int l = k + 1; l < newParameters.size(); l++) { if (newParameters.get(k).getName().equals(newParameters.get(l).getName())) { newParameters.set(l, new Parameter(new ClassOrInterfaceType("Object"), new VariableDeclaratorId(newParameters.get(l).getName() + l))); } } } methodDeclaration.setParameters(newParameters); annotation.setMemberValue(memberValue); this.javaElement = new JavaRefactoringElement(getJavaFileText(methodDeclaration), null); stepSpan = annotation.getChildrenNodes().get(1).getRange(); this.refactored = true; } }
System.out.println(String.format("Method declaration: modifiers=%s, name=%s, parameters=%s, returnType=%s", methodDeclaration.getModifiers(), methodDeclaration.getName(), methodDeclaration.getParameters().stream().map(p -> p.getName()).collect(Collectors.toList()), methodDeclaration.getType()));
int lambdaParamIndex; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;
int lambdaParamIndex; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;
int lambdaParamIndex; for (lambdaParamIndex = 0; lambdaParamIndex < wrappedNode.getParameters().size(); lambdaParamIndex++){ if (wrappedNode.getParameter(lambdaParamIndex).getName().getIdentifier().equals(name)){ found = true; break;