/** * Given an array of <code>ParamTag</code>s,return its string representation. * * @param holder the member that holds the param tags. * @param writer the TagletWriter that will write this tag. * @return the TagletOutput representation of these <code>ParamTag</code>s. */ public Content getTagletOutput(Element holder, TagletWriter writer) { Utils utils = writer.configuration().utils; if (utils.isExecutableElement(holder)) { ExecutableElement member = (ExecutableElement) holder; Content output = getTagletOutput( false, member, writer, member.getTypeParameters(), utils.getTypeParamTrees(member)); output.addContent( getTagletOutput( true, member, writer, member.getParameters(), utils.getParamTrees(member))); return output; } else { TypeElement typeElement = (TypeElement) holder; return getTagletOutput( false, typeElement, writer, typeElement.getTypeParameters(), utils.getTypeParamTrees(typeElement)); } }
/** {@inheritDoc} */ public void inherit(DocFinder.Input input, DocFinder.Output output) { Utils utils = input.utils; if (input.tagId == null) { input.isTypeVariableParamTag = ((ParamTree) input.docTreeInfo.docTree).isTypeParameter(); ExecutableElement ee = (ExecutableElement) input.docTreeInfo.element; CommentHelper ch = utils.getCommentHelper(ee); List<? extends Element> parameters = input.isTypeVariableParamTag ? ee.getTypeParameters() : ee.getParameters(); String target = ch.getParameterName(input.docTreeInfo.docTree); for (int i = 0; i < parameters.size(); i++) { Element e = parameters.get(i); String pname = input.isTypeVariableParamTag ? utils.getTypeName(e.asType(), false) : utils.getSimpleName(e); if (pname.equals(target)) { input.tagId = String.valueOf(i); break; } } } ExecutableElement md = (ExecutableElement) input.element; CommentHelper ch = utils.getCommentHelper(md); List<? extends DocTree> tags = input.isTypeVariableParamTag ? utils.getTypeParamTrees(md) : utils.getParamTrees(md); List<? extends Element> parameters = input.isTypeVariableParamTag ? md.getTypeParameters() : md.getParameters(); Map<String, String> rankMap = getRankMap(utils, parameters); for (DocTree tag : tags) { String paramName = ch.getParameterName(tag); if (rankMap.containsKey(paramName) && rankMap.get(paramName).equals((input.tagId))) { output.holder = input.element; output.holderTag = tag; output.inlineTags = ch.getBody(utils.configuration, tag); return; } } }