Subject: [PATCH] See #23465: Replace custom check with upstream check
---
Index: tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java
===================================================================
diff --git a/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java b/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java
deleted file mode 100644
--- a/tools/checkstyle/src/org/openstreetmap/josm/TopLevelJavadocCheck.java	(revision 18969)
+++ /dev/null	(revision 18969)
@@ -1,96 +0,0 @@
-// License: GPL. For details, see LICENSE file.
-package org.openstreetmap.josm;
-
-import com.puppycrawl.tools.checkstyle.JavadocDetailNodeParser;
-import com.puppycrawl.tools.checkstyle.api.AbstractCheck;
-import com.puppycrawl.tools.checkstyle.api.DetailAST;
-import com.puppycrawl.tools.checkstyle.api.DetailNode;
-import com.puppycrawl.tools.checkstyle.api.JavadocTokenTypes;
-import com.puppycrawl.tools.checkstyle.api.TokenTypes;
-import com.puppycrawl.tools.checkstyle.utils.JavadocUtil;
-
-/**
- * Checks that there is Javadoc for every top level class, interface or enum.
- */
-public class TopLevelJavadocCheck extends AbstractCheck {
-
-    private boolean foundTopLevelClass;
-
-    @Override
-    public int[] getAcceptableTokens() {
-        return getDefaultTokens();
-    }
-
-    @Override
-    public int[] getDefaultTokens() {
-        return new int[]{TokenTypes.CLASS_DEF, TokenTypes.INTERFACE_DEF, TokenTypes.ENUM_DEF};
-    }
-
-    @Override
-    public int[] getRequiredTokens() {
-        return new int[0];
-    }
-
-    @Override
-    public boolean isCommentNodesRequired() {
-        return true;
-    }
-
-    @Override
-    public void beginTree(DetailAST rootAST) {
-        foundTopLevelClass = false;
-    }
-
-    @Override
-    public void finishTree(DetailAST rootAST) {
-        if (!foundTopLevelClass) {
-            this.log(rootAST.getLineNo(), "assertion failure: unable to find toplevel class or interface");
-        }
-    }
-
-    private boolean hasJavadoc(DetailAST ast) {
-        DetailAST blockCommentBegin = ast.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
-        if (blockCommentBegin == null) {
-            DetailAST modifiers = ast.findFirstToken(TokenTypes.MODIFIERS);
-            if (modifiers == null)
-                return false;
-            blockCommentBegin = modifiers.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
-            if (blockCommentBegin == null) {
-                DetailAST annotation = modifiers.findFirstToken(TokenTypes.ANNOTATION);
-                if (annotation == null)
-                    return false;
-                blockCommentBegin = annotation.findFirstToken(TokenTypes.BLOCK_COMMENT_BEGIN);
-                if (blockCommentBegin == null)
-                    return false;
-            }
-        }
-        if (!JavadocUtil.isJavadocComment(blockCommentBegin))
-            return false;
-        DetailNode javadocTree = new JavadocDetailNodeParser().parseJavadocAsDetailNode(blockCommentBegin).getTree();
-        return hasProperText(javadocTree);
-    }
-
-    private boolean hasProperText(DetailNode javadoc) {
-        if (javadoc == null) return false;
-        for (DetailNode child : javadoc.getChildren()) {
-            if (child.getType() == JavadocTokenTypes.TEXT) {
-                if (!child.getText().trim().isEmpty())
-                    return true;
-            } else if (child.getType() == JavadocTokenTypes.HTML_ELEMENT) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    @Override
-    public void visitToken(DetailAST ast) {
-        DetailAST parent = ast.getParent();
-        if (parent == null || parent.getType() == TokenTypes.COMPILATION_UNIT) {
-            foundTopLevelClass = true;
-            if (!hasJavadoc(ast)) {
-                this.log(ast.getLineNo(), "incomplete or missing Javadoc for top level class or interface");
-            }
-        }
-   }
-}
Index: tools/checkstyle/josm_checks.xml
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/tools/checkstyle/josm_checks.xml b/tools/checkstyle/josm_checks.xml
--- a/tools/checkstyle/josm_checks.xml	(revision 18969)
+++ b/tools/checkstyle/josm_checks.xml	(date 1707477794367)
@@ -31,6 +31,7 @@
       <property name="checkFirstSentence" value="false"/>
       <property name="checkHtml" value="false"/>
     </module>
+    <module name="MissingJavadocType"/>
     <module name="NonEmptyAtclauseDescription"/>
     <module name="AtclauseOrder"/>
     <module name="AvoidStarImport"/>
@@ -95,7 +96,6 @@
     <module name="OuterTypeFilename"/>
     <module name="FinalClass"/>
     <module name="HideUtilityClassConstructor"/>
-    <module name="org.openstreetmap.josm.TopLevelJavadocCheck"/>
     <module name="SuppressionCommentFilter">
       <property name="offCommentFormat" value="CHECKSTYLE\.OFF\: ([\w\|]+)"/>
       <property name="onCommentFormat" value="CHECKSTYLE\.ON\: ([\w\|]+)"/>
