This is an automated email from the ASF dual-hosted git repository. lkishalmi pushed a commit to branch release122 in repository https://gitbox.apache.org/repos/asf/netbeans.git
commit 9a661976575b8ceecdf5c30bc077991b489e5da0 Author: Jan Lahoda <jlah...@netbeans.org> AuthorDate: Wed Oct 21 06:47:37 2020 +0200 [NETBEANS-4919] Avoiding dependency on javac internal classes from javadoc/.../Analyzer, using NetBeans' HTML information instead. (#2470) * [NETBEANS-4919] Avoiding dependency on javac internal classes from javadoc/.../Analyzer, using NetBeans' HTML information instead. * Fixing TODOs. --- ide/html.editor.lib/nbproject/project.xml | 1 + java/javadoc/nbproject/project.xml | 47 +++++++++++++--------- .../netbeans/modules/javadoc/hints/Analyzer.java | 46 +++++++++++++++------ 3 files changed, 63 insertions(+), 31 deletions(-) diff --git a/ide/html.editor.lib/nbproject/project.xml b/ide/html.editor.lib/nbproject/project.xml index 6f641d2..cd6c84d 100644 --- a/ide/html.editor.lib/nbproject/project.xml +++ b/ide/html.editor.lib/nbproject/project.xml @@ -269,6 +269,7 @@ <friend>org.netbeans.modules.html.ojet</friend> <friend>org.netbeans.modules.html.parser</friend> <friend>org.netbeans.modules.html.validation</friend> + <friend>org.netbeans.modules.javadoc</friend> <friend>org.netbeans.modules.javascript2.editor</friend> <friend>org.netbeans.modules.javascript2.html</friend> <friend>org.netbeans.modules.javascript2.jade</friend> diff --git a/java/javadoc/nbproject/project.xml b/java/javadoc/nbproject/project.xml index 23185af..94f56cd 100644 --- a/java/javadoc/nbproject/project.xml +++ b/java/javadoc/nbproject/project.xml @@ -52,15 +52,6 @@ </run-dependency> </dependency> <dependency> - <code-name-base>org.netbeans.libs.javacimpl</code-name-base> - <build-prerequisite/> - <compile-dependency/> - <run-dependency> - <release-version>1</release-version> - <implementation-version/> - </run-dependency> - </dependency> - <dependency> <code-name-base>org.netbeans.modules.editor.bracesmatching</code-name-base> <build-prerequisite/> <compile-dependency/> @@ -115,6 +106,31 @@ </run-dependency> </dependency> <dependency> + <code-name-base>org.netbeans.modules.editor.util</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <release-version>1</release-version> + <specification-version>1.73</specification-version> + </run-dependency> + </dependency> + <dependency> + <code-name-base>org.netbeans.modules.html.editor.lib</code-name-base> + <build-prerequisite/> + <compile-dependency/> + <run-dependency> + <release-version>3</release-version> + <specification-version>3.42</specification-version> + </run-dependency> + </dependency> + <dependency> + <code-name-base>org.netbeans.modules.html.parser</code-name-base> + <run-dependency> + <release-version>1</release-version> + <specification-version>1.44</specification-version> + </run-dependency> + </dependency> + <dependency> <code-name-base>org.netbeans.modules.java.editor</code-name-base> <run-dependency> <release-version>1</release-version> @@ -246,15 +262,6 @@ </run-dependency> </dependency> <dependency> - <code-name-base>org.netbeans.modules.editor.util</code-name-base> - <build-prerequisite/> - <compile-dependency/> - <run-dependency> - <release-version>1</release-version> - <specification-version>1.73</specification-version> - </run-dependency> - </dependency> - <dependency> <code-name-base>org.openide.util</code-name-base> <build-prerequisite/> <compile-dependency/> @@ -317,6 +324,10 @@ <compile-dependency/> </test-dependency> <test-dependency> + <code-name-base>org.netbeans.modules.java.j2seplatform</code-name-base> + <compile-dependency/> + </test-dependency> + <test-dependency> <code-name-base>org.netbeans.modules.java.source</code-name-base> <recursive/> <compile-dependency/> diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java index 9ef27aa..5c92f69 100644 --- a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java +++ b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java @@ -57,14 +57,15 @@ import com.sun.source.util.DocSourcePositions; import com.sun.source.util.DocTreePath; import com.sun.source.util.DocTreePathScanner; import com.sun.source.util.TreePath; -import com.sun.tools.doclint.HtmlTag; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collections; import java.util.Deque; import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -73,7 +74,6 @@ import javax.lang.model.element.Element; import javax.lang.model.element.ElementKind; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.Name; -import javax.lang.model.element.QualifiedNameable; import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; @@ -86,6 +86,11 @@ import org.netbeans.api.java.source.ElementUtilities; import org.netbeans.api.java.source.JavaSource; import org.netbeans.api.java.source.JavaSource.Phase; import org.netbeans.api.java.source.SourceUtils; +import org.netbeans.modules.html.editor.lib.api.HtmlVersion; +import org.netbeans.modules.html.editor.lib.api.model.HtmlModel; +import org.netbeans.modules.html.editor.lib.api.model.HtmlModelFactory; +import org.netbeans.modules.html.editor.lib.api.model.HtmlTag; +import org.netbeans.modules.html.editor.lib.api.model.HtmlTagType; import static org.netbeans.modules.javadoc.hints.Bundle.*; import static org.netbeans.modules.javadoc.hints.JavadocUtilities.resolveSourceVersion; import org.netbeans.spi.editor.hints.ErrorDescription; @@ -116,6 +121,8 @@ import org.openide.util.NbBundle.Messages; "# {0} - @param name", "MISSING_PARAM_DESC=Missing @param tag for {0}"}) final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { + private static final HtmlModel model = HtmlModelFactory.getModel(HtmlVersion.XHTML5); + private final CompilationInfo javac; private final FileObject file; private final TreePath currentPath; @@ -259,8 +266,8 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { while (!tagStack.isEmpty()) { StartElementTree startTree = tagStack.pop(); Name tagName = startTree.getName(); - HtmlTag tag = HtmlTag.get(tagName); - if (tag.endKind == HtmlTag.EndKind.REQUIRED) { + HtmlTag tag = getTag(tagName); + if (tag != null && !tag.hasOptionalEndTag() && !isVoid(tag)) { int s = (int) sp.getStartPosition(javac.getCompilationUnit(), currentDocPath.getDocComment(), startTree); int e = (int) sp.getEndPosition(javac.getCompilationUnit(), currentDocPath.getDocComment(), startTree); errors.add(ErrorDescriptionFactory.forSpan(ctx, s, e, TAG_START_UNMATCHED(tagName))); @@ -289,10 +296,10 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { int end = (int) sp.getEndPosition(javac.getCompilationUnit(), currentDocPath.getDocComment(), node); final Name treeName = node.getName(); - final HtmlTag t = HtmlTag.get(treeName); + final HtmlTag t = getTag(treeName); if (t == null) { errors.add(ErrorDescriptionFactory.forSpan(ctx, start, end, TAG_END_UNKNOWN(treeName))); - } else if (t.endKind == HtmlTag.EndKind.NONE) { + } else if (isVoid(t)) { // env.messages.error(HTML, node, "dc.tag.end.not.permitted", treeName); errors.add(ErrorDescriptionFactory.forSpan(ctx, start, end, TAG_END_NOT_PERMITTED(treeName))); } else { @@ -300,18 +307,18 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { while (!tagStack.isEmpty()) { StartElementTree startTree = tagStack.peek(); Name tagName = startTree.getName(); - HtmlTag tag = HtmlTag.get(tagName); - if (t == tag) { + HtmlTag tag = getTag(tagName); + if (Objects.equals(t, tag)) { tagStack.pop(); done = true; break; - } else if (tag.endKind != HtmlTag.EndKind.REQUIRED) { + } else if (tag != null && tag.hasOptionalEndTag()) { tagStack.pop(); } else { boolean found = false; for (StartElementTree set : tagStack) { - HtmlTag si = HtmlTag.get(set.getName()); - if (si == t) { + HtmlTag si = getTag(set.getName()); + if (Objects.equals(si, t)) { found = true; break; } @@ -622,11 +629,11 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { final Name treeName = node.getName(); - final HtmlTag t = HtmlTag.get(treeName); + final HtmlTag t = getTag(treeName); if (t == null) { errors.add(ErrorDescriptionFactory.forSpan(ctx, start, end, TAG_UNKNOWN(treeName))); } else { - if(t.endKind != HtmlTag.EndKind.NONE) { + if (!t.hasOptionalEndTag() && !isVoid(t)) { tagStack.push(node); } } @@ -797,4 +804,17 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { } } } + + private static HtmlTag getTag(Name tagName) { + HtmlTag t = model.getTag(tagName.toString()); + + return t.getTagClass() == HtmlTagType.HTML ? t : null; + } + + private static final Set<String> NON_VOID_TAGS = new HashSet<>(Arrays.asList("menuitem", "noscript", "script", "style")); + + private boolean isVoid(HtmlTag tag) { + return tag.isEmpty() && !NON_VOID_TAGS.contains(tag.getName()); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists