protected void changeParamgumentType(ParameterInfo info) { if (! (fNode instanceof MethodRef)) return; MethodRefParameter oldParam= (MethodRefParameter) ((MethodRef) fNode).parameters().get(info.getOldIndex()); Type oldTypeNode= oldParam.getType(); Type newTypeNode= createNewDocRefType(info); if (info.isNewVarargs()) { if (info.isOldVarargs() && ! oldParam.isVarargs()) { // leave as array reference of old reference was not vararg newTypeNode= getASTRewrite().getAST().newArrayType(newTypeNode); } else { getASTRewrite().set(oldParam, MethodRefParameter.VARARGS_PROPERTY, Boolean.TRUE, fDescription); } } else { if (oldParam.isVarargs()) { getASTRewrite().set(oldParam, MethodRefParameter.VARARGS_PROPERTY, Boolean.FALSE, fDescription); } } getASTRewrite().replace(oldTypeNode, newTypeNode, fDescription); registerImportRemoveNode(oldTypeNode); } }
private MethodRefParameter createNewMethodRefParameter(ParameterInfo info) { MethodRefParameter newP= getASTRewrite().getAST().newMethodRefParameter(); // only add name iff first parameter already has a name: List parameters= getParamgumentsRewrite().getOriginalList(); if (parameters.size() > 0) if (((MethodRefParameter) parameters.get(0)).getName() != null) newP.setName(getASTRewrite().getAST().newSimpleName(info.getNewName())); newP.setType(createNewDocRefType(info)); newP.setVarargs(info.isNewVarargs()); return newP; }
private void addDelegate() throws JavaModelException { DelegateMethodCreator creator= new DelegateMethodCreator(); creator.setDeclaration(fMethDecl); creator.setDeclareDeprecated(fDelegateDeprecation); creator.setSourceRewrite(fCuRewrite); creator.prepareDelegate(); /* * The delegate now contains a call and a javadoc reference to the * old method (i.e., to itself). * * Use ReferenceUpdate() / DocReferenceUpdate() to update these * references like any other reference. */ final ASTNode delegateInvocation= creator.getDelegateInvocation(); if (delegateInvocation != null) // may be null if the delegate is an interface method or // abstract -> no body new ReferenceUpdate(delegateInvocation, creator.getDelegateRewrite(), fResult).updateNode(); new DocReferenceUpdate(creator.getJavadocReference(), creator.getDelegateRewrite(), fResult).updateNode(); creator.createEdit(); }
private OccurrenceUpdate createOccurrenceUpdate(ASTNode node, CompilationUnitRewrite cuRewrite, RefactoringStatus result) { if (BUG_89686 && node instanceof SimpleName && node.getParent() instanceof EnumConstantDeclaration) node= node.getParent(); if (isReferenceNode(node)) return new ReferenceUpdate(node, cuRewrite, result); else if (node instanceof SimpleName && node.getParent() instanceof MethodDeclaration) return new DeclarationUpdate((MethodDeclaration) node.getParent(), cuRewrite, result); else if (node instanceof MemberRef || node instanceof MethodRef) return new DocReferenceUpdate(node, cuRewrite, result); else if (ASTNodes.getParent(node, ImportDeclaration.class) != null) return new StaticImportUpdate((ImportDeclaration) ASTNodes.getParent(node, ImportDeclaration.class), cuRewrite, result); else return new NullOccurrenceUpdate(node, cuRewrite, result); }
protected ASTNode createNewParamgument(ParameterInfo info, List parameterInfos, List nodes) { return createNewMethodRefParameter(info); }
/** @return {@inheritDoc} (element type: MethodRefParameter) */ protected ListRewrite getParamgumentsRewrite() { return getASTRewrite().getListRewrite(fNode, MethodRef.PARAMETERS_PROPERTY); }
private Type createNewDocRefType(ParameterInfo info) { String newTypeName= ParameterInfo.stripEllipsis(info.getNewTypeName()); ITypeBinding newTypeBinding= info.getNewTypeBinding(); if (newTypeBinding != null) newTypeBinding= newTypeBinding.getErasure(); //see bug 83127: Javadoc references are raw (erasures) return createNewTypeNode(newTypeName, newTypeBinding); }
protected void changeParamgumentName(ParameterInfo info) { if (! (fNode instanceof MethodRef)) return; MethodRefParameter oldParam= (MethodRefParameter) ((MethodRef) fNode).parameters().get(info.getOldIndex()); SimpleName oldParamName= oldParam.getName(); if (oldParamName != null) getASTRewrite().set(oldParamName, SimpleName.IDENTIFIER_PROPERTY, info.getNewName(), fDescription); }
public void updateNode() { if (fNode instanceof MethodRef) { changeParamguments(); reshuffleElements(); } if (canChangeNameAndReturnType()) changeMethodName(); }