private static Map<String, List<Tag>> getResponseRepresentationTags(final MethodDoc methodDoc) { final Map<String, List<Tag>> tagsByStatus = new HashMap<>(); for (final Tag tag : methodDoc.tags()) { final Matcher matcher = PATTERN_RESPONSE_REPRESENTATION.matcher(tag.name()); if (matcher.matches()) { final String status = matcher.group(1); List<Tag> tags = tagsByStatus.get(status); if (tags == null) { tags = new ArrayList<>(); tagsByStatus.put(status, tags); } tags.add(tag); } } return tagsByStatus; }
static String toCSV(final Collection<Tag> items, final String separator, final String delimiter) { if (items == null) { return null; } if (items.isEmpty()) { return ""; } final StringBuilder sb = new StringBuilder(); for (final Iterator<Tag> iter = items.iterator(); iter.hasNext(); ) { if (delimiter != null) { sb.append(delimiter); } final Tag item = iter.next(); sb.append(item.name()); if (delimiter != null) { sb.append(delimiter); } if (iter.hasNext()) { sb.append(separator); } } return sb.toString(); }
private static String print(final Tag tag) { return String.valueOf(tag.getClass()) + "[" + "firstSentenceTags=" + toCSV(tag.firstSentenceTags()) + ", inlineTags=" + toCSV(tag.inlineTags()) + ", kind=" + tag.kind() + ", name=" + tag.name() + ", text=" + tag.text() + "]"; }
LOG.fine("Have inline tag: " + print(inlineTag)); if ("@link".equals(inlineTag.name())) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Have link: " + print(inlineTag));
final String tagName = inlineTag.name(); final String tagText = inlineTag.text(); representationDoc.setStatus(Long.valueOf(entry.getKey())); for (final Tag tag : entry.getValue()) { if (tag.name().endsWith(".qname")) { representationDoc.setElement(QName.valueOf(tag.text())); } else if (tag.name().endsWith(".mediaType")) { representationDoc.setMediaType(tag.text()); } else if (tag.name().endsWith(".example")) { representationDoc.setExample(getSerializedExample(tag)); } else if (tag.name().endsWith(".doc")) { representationDoc.setDoc(tag.text()); } else { LOG.warning("Unknown response representation tag " + tag.name());
private boolean endsWithIgnoreCase(Tag tag, String s) { return tag.name().toUpperCase().endsWith(s.toUpperCase()); } }
private static Optional<String> getVersionedOperationCommentText(Tag[] tags, String dialect) { String versionedDescriptionTag = "@description." + dialect; return Arrays.stream(tags) .filter(tag -> versionedDescriptionTag.equals(tag.name())) .findFirst() .map(Tag::text); }
private static void matchResponseRepresentationTagsKeyedByHttpStatus(Map<String, List<Tag>> tagsByStatus, List<Tag> javadocTags) { for (Tag tag : javadocTags) { final Matcher matcher = PATTERN_RESPONSE_REPRESENTATION.matcher(tag.name()); if (matcher.matches()) { final String status = matcher.group(1); List<Tag> tags = tagsByStatus.computeIfAbsent(status, k -> new ArrayList<>()); tags.add(tag); } } } }
@Override public void render(Tag tag, StringBuilder target, PegdownDoclet doclet) { target.append(tag.name()).append(" ").append(tag.text()); } };
private static Stream<Tag> streamRequestRepresentationTags(MethodDoc methodDoc) { return Arrays.stream(methodDoc.tags()) .filter(tag -> PATTERN_REQUEST_REPRESENTATION.matcher(tag.name()).matches()); }
private static String print( Tag tag ) { final StringBuilder sb = new StringBuilder(); sb.append( tag.getClass() ).append( "[" ); sb.append( "firstSentenceTags=" ).append( toCSV( tag.firstSentenceTags() ) ); sb.append( ", inlineTags=" ).append( toCSV( tag.inlineTags() ) ); sb.append( ", kind=" ).append( tag.kind() ); sb.append( ", name=" ).append( tag.name() ); sb.append( ", text=" ).append( tag.text() ); sb.append( "]" ); return sb.toString(); }
/** * Add any custom freemarker bindings discovered via custom javadoc tags. Subclasses can override this to * provide additional custom bindings. * * @param currentWorkUnit the work unit for the feature being documented */ protected void addCustomBindings(final DocWorkUnit currentWorkUnit) { final String tagFilterPrefix = getTagPrefix(); Arrays.stream(currentWorkUnit.getClassDoc().inlineTags()) .filter(t -> t.name().startsWith(tagFilterPrefix)) .forEach(t -> currentWorkUnit.setProperty(t.name().substring(tagFilterPrefix.length()), t.text())); }
private Option<SeeTag> findAtLinkTag(Tag[] inlineTags) { for (Tag inlineTag : inlineTags) { if ("@link".equals(inlineTag.name())) { final SeeTag linkTag = (SeeTag) inlineTag; return some(linkTag); } } return none(); }
private static String getFirstSentence(Doc doc) { Tag[] tags = doc.firstSentenceTags(); if (tags.length == 0) { return null; } StringBuilder buffer = new StringBuilder(); for (Tag tag : tags) { if (tag instanceof SeeTag) { buffer.append("{"); buffer.append(tag.name()); buffer.append(" "); buffer.append(((SeeTag)tag).referencedClassName()); buffer.append("}"); } else { buffer.append(tag.text()); } } return buffer.toString(); }
private void parseJavadocForSwaggerNamedTags(Operation operation, List<Tag> tags) { for (Tag tag : tags) { final Matcher matcher = SWAGGER_NAMED_TAG.matcher(tag.name()); if (matcher.matches()) { final String swaggerTagName = matcher.group(1); // it must have previously been found for the extended description List<String> currentTags = option(operation.getTags()).getOrElse(emptyList()); if (!currentTags.contains(swaggerTagName)) { operation.addTagsItem(swaggerTagName); } } } }
@Override public void render(Tag tag, StringBuilder target, PegdownDoclet doclet) { target.append(tag.name()).append(" ").append(simplifySingleParagraph(doclet.toHtml(tag.text()))); }
/** * Return the description to be used for the work unit. We need to manually strip * out any inline custom javadoc tags since we don't those in the summary. * * @param currentWorkUnit * @return Description to be used or the work unit. */ protected String getDescription(final DocWorkUnit currentWorkUnit) { return Arrays.stream(currentWorkUnit.getClassDoc().inlineTags()) .filter(t -> getTagPrefix() == null || !t.name().startsWith(getTagPrefix())) .map(t -> t.text()) .collect(Collectors.joining()); }
@Before public void initialiseMocks() { when(constructorDoc.tags(PARAM_TAG_NAME)).thenReturn(new Tag[] {tag1, tag2}); when(tag1.name()).thenReturn(PARAM_TAG_NAME); when(tag1.text()).thenReturn(FIRST_PARAM_TEXT); when(tag2.name()).thenReturn(PARAM_TAG_NAME); when(tag2.text()).thenReturn(SECOND_PARAM_TEXT); when(tag3.name()).thenReturn(RETURN_TAG_NAME); when(tag3.text()).thenReturn(RETURN_TAG_TEXT); }
public static FieldDocumentation fromFieldDoc(FieldDoc fieldDoc) { FieldDocumentation fd = new FieldDocumentation(); fd.comment = fieldDoc.commentText(); for (Tag tag : fieldDoc.tags()) { fd.tags.put(cleanupTagName(tag.name()), tag.text()); } return fd; }
public static MethodDocumentation fromMethodDoc(MethodDoc methodDoc) { MethodDocumentation md = new MethodDocumentation(); md.comment = methodDoc.commentText(); for (Tag tag : methodDoc.tags()) { if (tag instanceof ParamTag) { ParamTag paramTag = (ParamTag) tag; md.parameters.put(paramTag.parameterName(), paramTag.parameterComment()); } else { md.tags.put(cleanupTagName(tag.name()), tag.text()); } } return md; } }