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

Reply via email to