From bef7a93289d28e3c4a4cde1cd0af920f8aa0d48f Mon Sep 17 00:00:00 2001 From: Jakub Herkel Date: Mon, 2 Jan 2023 21:14:32 +0100 Subject: [PATCH] [NETBEANS-1309] add support for @summary javadoc tag --- .../javadoc/JavadocCompletionQueryTest.java | 17 +++++++++++++++++ .../modules/java/source/save/Reformatter.java | 2 ++ .../api/java/source/ui/ElementJavadoc.java | 11 +++++++++-- 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/java/java.editor/test/unit/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQueryTest.java b/java/java.editor/test/unit/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQueryTest.java index bfd4223c4abf..8bf90d619fab 100644 --- a/java/java.editor/test/unit/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQueryTest.java +++ b/java/java.editor/test/unit/src/org/netbeans/modules/java/editor/javadoc/JavadocCompletionQueryTest.java @@ -586,6 +586,23 @@ public void testSnippet2() throws Exception { performCompletionTest(code, "end:"); } + + public void testSummaryCompletionForMethod() throws Exception { + String code = + "package p;\n" + + "class Clazz {\n" + + " /**\n" + + " * {@sum|\n" + + " */\n" + + " void method(int p1, int p2) {\n" + + " }\n" + + " Clazz() {\n" + + " }\n" + + "}\n"; + performCompletionTest(code, "@summary:"); + } + + private static String stripHTML(String from) { StringBuilder result = new StringBuilder(); diff --git a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java index e04f054f032b..063fc0a194ee 100644 --- a/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java +++ b/java/java.source.base/src/org/netbeans/modules/java/source/save/Reformatter.java @@ -419,6 +419,7 @@ private static class Pretty extends ErrorAwareTreePathScanner { private static final String JDOC_THROWS_TAG = "@throws"; //NOI18N private static final String JDOC_VALUE_TAG = "@value"; //NOI18N private static final String JDOC_SNIPPET_TAG = "@snippet"; //NOI18N + private static final String JDOC_SUMMARY_TAG = "@summary"; //NOI18N private static final String ERROR = ""; //NOI18N private final String fText; @@ -4835,6 +4836,7 @@ private void reformatComment() { || JDOC_DOCROOT_TAG.equalsIgnoreCase(tokenText) || JDOC_INHERITDOC_TAG.equalsIgnoreCase(tokenText) || JDOC_VALUE_TAG.equalsIgnoreCase(tokenText) + || JDOC_SUMMARY_TAG.equalsIgnoreCase(tokenText) || JDOC_LITERAL_TAG.equalsIgnoreCase(tokenText)) { insideTag = true; addMark(Pair.of(currWSOffset >= 0 ? currWSOffset : javadocTokens.offset() - offset, 5), marks, state); diff --git a/java/java.sourceui/src/org/netbeans/api/java/source/ui/ElementJavadoc.java b/java/java.sourceui/src/org/netbeans/api/java/source/ui/ElementJavadoc.java index 64e081a1e9a2..ed8edb9fa359 100644 --- a/java/java.sourceui/src/org/netbeans/api/java/source/ui/ElementJavadoc.java +++ b/java/java.sourceui/src/org/netbeans/api/java/source/ui/ElementJavadoc.java @@ -25,6 +25,7 @@ import com.sun.source.doctree.DeprecatedTree; import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocTree; +import static com.sun.source.doctree.DocTree.Kind.SUMMARY; import com.sun.source.doctree.EndElementTree; import com.sun.source.doctree.EntityTree; import com.sun.source.doctree.InheritDocTree; @@ -37,6 +38,7 @@ import com.sun.source.doctree.SinceTree; import com.sun.source.doctree.SnippetTree; import com.sun.source.doctree.StartElementTree; +import com.sun.source.doctree.SummaryTree; import com.sun.source.doctree.TextTree; import com.sun.source.doctree.ThrowsTree; import com.sun.source.doctree.UnknownBlockTagTree; @@ -1060,8 +1062,8 @@ public Void visitInheritDoc(InheritDocTree node, Void p) { } sb.append(inlineTags(unTag.getContent(), path, doc, info.getDocTrees(), null)); break; - } - break; + } + break; } } @@ -1325,6 +1327,11 @@ private StringBuilder inlineTags(List tags, TreePath docPath, snippetCount++; processDocSnippet(sb, (SnippetTree)tag, snippetCount,docPath, doc, trees); break; + case SUMMARY: + SummaryTree summaryTag = (SummaryTree)tag; + List summary = summaryTag.getSummary(); + sb.append(inlineTags(summary, docPath, doc, trees, null)); + break; } } return sb;