diff --git a/icu4j/pom.xml b/icu4j/pom.xml
index 0b1d3980636..d8770e05242 100644
--- a/icu4j/pom.xml
+++ b/icu4j/pom.xml
@@ -360,7 +360,7 @@
maven-javadoc-plugin
- 3.8.0
+ 3.11.2
com.ibm.icu.impl,com.ibm.icu.impl.*,com.ibm.icu.dev.*,com.ibm.icu.samples,com.ibm.icu.samples.*
- html
+
+ none
true
true
true
@@ -385,29 +386,61 @@
UTF-8
true
- 256m
- 256m
+
+ -J-Dfile.encoding=UTF-8
+
+
- com.ibm.icu.dev.tool.docs.ICUTaglet
+ com.ibm.icu.dev.tool.docs.ICUBugTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUCategoryTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUDiscouragedTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUDraftTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUEnhancedTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUInternalTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUNewTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUNoteTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUObsoleteTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUProvisionalTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUStableTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUSummaryTaglet
+
+
+ com.ibm.icu.dev.tool.docs.ICUTestTaglet
-
-
-
- com.ibm.icu
- tools_taglets
- ${project.version}
-
-
-
-
- category
- a
- Category:
-
-
+
+
+ com.ibm.icu
+ tools_taglets
+ ${project.version}
+
@@ -633,7 +666,6 @@
tools/build
- tools/taglets
@@ -649,6 +681,9 @@
[9,)
+
+ tools/taglets
+
@@ -771,4 +806,28 @@
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+ aggregate
+ false
+
+ aggregate
+
+
+
+ default
+
+ javadoc
+
+
+
+
+
+
+
diff --git a/icu4j/tools/taglets/pom.xml b/icu4j/tools/taglets/pom.xml
index f6fbcbf1524..2a39ef40a4d 100644
--- a/icu4j/tools/taglets/pom.xml
+++ b/icu4j/tools/taglets/pom.xml
@@ -14,14 +14,28 @@
tools_taglets
-
-
- jdk.tools
- jdk.tools
- 1.8
- system
- ${JAVA_HOME}/lib/tools.jar
-
-
+
+ 11
+ 11
+
+
+
+
+ newer_jdk
+
+ [11,)
+
+
+
+
+ maven-compiler-plugin
+
+ 11
+
+
+
+
+
+
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUBugTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUBugTaglet.java
new file mode 100644
index 00000000000..63c51f95124
--- /dev/null
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUBugTaglet.java
@@ -0,0 +1,21 @@
+// © 2025 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.tool.docs;
+
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
+
+public class ICUBugTaglet extends ICUTaglet {
+ private static ICUTaglet singleton;
+ private static final String NAME = "bug";
+
+ public ICUBugTaglet() {
+ super(NAME, false);
+ }
+
+ public String toStringDocTree(DocTree tag, Element element) {
+ return null;
+ }
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUCategoryTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUCategoryTaglet.java
new file mode 100644
index 00000000000..0b79e0e2103
--- /dev/null
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUCategoryTaglet.java
@@ -0,0 +1,30 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
+package com.ibm.icu.dev.tool.docs;
+
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
+
+public class ICUCategoryTaglet extends ICUTaglet {
+ private static final String NAME = "category";
+
+ public ICUCategoryTaglet() {
+ super(NAME, false);
+ }
+
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
+ if (text.length() == 0) {
+ System.err.println("Warning: empty category tag");
+ }
+ return "Category:" + text + "";
+ }
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDiscouragedTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDiscouragedTaglet.java
index 83093eecce7..c40c8bb2bd7 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDiscouragedTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDiscouragedTaglet.java
@@ -1,25 +1,30 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
public class ICUDiscouragedTaglet extends ICUTaglet {
private static final String NAME = "discouraged";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUDiscouragedTaglet());
+ public ICUDiscouragedTaglet() {
+ super(NAME, false);
}
- private ICUDiscouragedTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
- String text = tag.text();
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
if (text.length() == 0) {
System.err.println("Error: empty discouraged tag ");
- }
- return "Discouraged:" + text + "";
+ }
+ return "Discouraged:" + text + "";
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDraftTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDraftTaglet.java
index eb406ca8aaf..2c64928311c 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDraftTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUDraftTaglet.java
@@ -1,25 +1,30 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
public class ICUDraftTaglet extends ICUTaglet {
private static final String NAME = "draft";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUDraftTaglet());
+ public ICUDraftTaglet() {
+ super(NAME, false);
}
- private ICUDraftTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
- String text = tag.text();
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
if (text.length() == 0) {
System.err.println("Warning: empty draft tag");
}
- return STATUS + "Draft " + tag.text() + ".";
+ return STATUS + "Draft " + text + ".";
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUEnhancedTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUEnhancedTaglet.java
index 412524d9553..1c76acd7e27 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUEnhancedTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUEnhancedTaglet.java
@@ -1,8 +1,17 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
/**
* This taglet should be used in the first line of the class description of classes
@@ -20,29 +29,25 @@ import com.sun.javadoc.Tag;
* end the first line, it looks in the original javadoc comment. So we need a tag to
* identify the related java class, then a period, then another tag.
*/
- public class ICUEnhancedTaglet extends ICUTaglet {
+public class ICUEnhancedTaglet extends ICUTaglet {
private static final String NAME = "icuenhanced";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUEnhancedTaglet());
+ public ICUEnhancedTaglet() {
+ super(NAME, true);
}
- private ICUEnhancedTaglet() {
- super(NAME, MASK_DEFAULT_INLINE);
- }
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element).trim();
- public String toString(Tag tag) {
- String text = tag.text().trim();
-
- boolean isClassDoc = tag.holder().isClass() || tag.holder().isInterface();
+ boolean isClassDoc = element.getKind().isClass() || element.getKind().isInterface();
if (isClassDoc && text.length() > 0) {
StringBuilder sb = new StringBuilder();
- return sb.append("[icu enhancement] ")
- .append("ICU's replacement for ")
- .append(text)
- .append("
")
- .toString();
+ return sb.append("[icu enhancement] ")
+ .append("ICU's replacement for ")
+ .append(text)
+ .append("
")
+ .toString();
}
return "";
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUIgnoreTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUIgnoreTaglet.java
deleted file mode 100644
index f20b87efc4e..00000000000
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUIgnoreTaglet.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.ibm.icu.dev.tool.docs;
-
-import java.util.Map;
-
-import com.sun.javadoc.Tag;
-
-public class ICUIgnoreTaglet extends ICUTaglet {
- private static ICUTaglet singleton;
-
- public static void register(Map taglets) {
- if (singleton == null) {
- singleton = new ICUIgnoreTaglet();
- }
- taglets.put("bug", singleton);
- taglets.put("test", singleton);
- taglets.put("summary", singleton);
- }
-
- private ICUIgnoreTaglet() {
- super(".ignore", MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUInternalTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUInternalTaglet.java
index c69efa803ce..ee86361b5b4 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUInternalTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUInternalTaglet.java
@@ -1,27 +1,34 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
import java.util.Locale;
-import java.util.Map;
-import com.sun.javadoc.Tag;
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
public class ICUInternalTaglet extends ICUTaglet {
private static final String NAME = "internal";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUInternalTaglet());
+ public ICUInternalTaglet() {
+ super(NAME, false);
}
- private ICUInternalTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
- if (tag.text().toLowerCase(Locale.US).indexOf("technology preview") >= 0) {
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
+ if (text.toLowerCase(Locale.US).indexOf("technology preview") >= 0) {
return STATUS + "Technology Preview. " +
- "This API is still in the early stages of development. Use at your own risk.";
+ "This API is still in the early stages of development. Use at your own risk.";
}
return STATUS + "Internal. " +
- "This API is ICU internal only.";
+ "This API is ICU internal only.";
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNewTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNewTaglet.java
index c3cfe4f5b0e..37a75c24c7f 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNewTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNewTaglet.java
@@ -1,8 +1,17 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
/**
* This taglet should be used in the first line of any icu-specific members in a class
@@ -17,29 +26,26 @@ import com.sun.javadoc.Tag;
*/
public class ICUNewTaglet extends ICUTaglet {
private static final String NAME = "icu";
+ private static String ICU_LABEL = "[icu]";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUNewTaglet());
+ public ICUNewTaglet() {
+ super(NAME, true);
}
- private ICUNewTaglet() {
- super(NAME, MASK_DEFAULT_INLINE);
- }
-
- public String toString(Tag tag) {
- String text = tag.text().trim();
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element).trim();
StringBuilder sb = new StringBuilder();
if ("_usage_".equals(text)) {
return sb.append(" Methods, fields, and other functionality specific to ICU ")
- .append("are labeled '" + ICU_LABEL + "'.
")
- .toString();
+ .append("are labeled '" + ICU_LABEL + "'.")
+ .toString();
}
- sb.append("[icu]");
+ sb.append("[icu]");
if (text.length() > 0) {
sb.append(" ").append(text);
}
sb.append("");
return sb.toString();
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNoteTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNoteTaglet.java
index 507fc87b6c4..4e5132cfa04 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNoteTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUNoteTaglet.java
@@ -1,8 +1,17 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
/**
* This taglet should be used in class or member documentation, after the first line,
@@ -12,15 +21,11 @@ import com.sun.javadoc.Tag;
public class ICUNoteTaglet extends ICUTaglet {
private static final String NAME = "icunote";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUNoteTaglet());
+ public ICUNoteTaglet() {
+ super(NAME, true);
}
- private ICUNoteTaglet() {
- super(NAME, MASK_DEFAULT_INLINE);
+ public String toStringDocTree(DocTree tag, Element element) {
+ return "[icu] Note: ";
}
-
- public String toString(Tag tag) {
- return "
[icu] Note: ";
- }
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUObsoleteTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUObsoleteTaglet.java
index 2fd791a5332..b7e4dfe51a8 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUObsoleteTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUObsoleteTaglet.java
@@ -1,25 +1,31 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
import java.text.BreakIterator;
import java.util.Locale;
-import java.util.Map;
-import com.sun.javadoc.Tag;
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
public class ICUObsoleteTaglet extends ICUTaglet {
private static final String NAME = "obsolete";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUObsoleteTaglet());
+ public ICUObsoleteTaglet() {
+ super(NAME, false);
}
- private ICUObsoleteTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
BreakIterator bi = BreakIterator.getSentenceInstance(Locale.US);
- String text = tag.text();
bi.setText(text);
int first = bi.first();
int next = bi.next();
@@ -27,7 +33,7 @@ public class ICUObsoleteTaglet extends ICUTaglet {
first = next = 0;
}
return STATUS + "
Obsolete. Will be removed in " +
- text.substring(first, next) + ". " + text.substring(next) + "";
+ text.substring(first, next) + ". " + text.substring(next) + "";
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUProvisionalTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUProvisionalTaglet.java
index a76c6ef79dd..2fdfa5f8f18 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUProvisionalTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUProvisionalTaglet.java
@@ -1,22 +1,26 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
public class ICUProvisionalTaglet extends ICUTaglet {
private static final String NAME = "provisional";
- public static void register(Map taglets) {
- taglets.remove(NAME); // override standard deprecated taglet
- taglets.put(NAME, new ICUProvisionalTaglet());
+ public ICUProvisionalTaglet() {
+ super(NAME, false);
}
- private ICUProvisionalTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
+ public String toStringDocTree(DocTree tag, Element element) {
return null;
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUStableTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUStableTaglet.java
index cdaf5e92b5d..52daca4e81c 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUStableTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUStableTaglet.java
@@ -1,26 +1,31 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+/**
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
+
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import javax.lang.model.element.Element;
-import com.sun.javadoc.Tag;
+import com.sun.source.doctree.DocTree;
public class ICUStableTaglet extends ICUTaglet {
private static final String NAME = "stable";
- public static void register(Map taglets) {
- taglets.put(NAME, new ICUStableTaglet());
+ public ICUStableTaglet() {
+ super(NAME, false);
}
- private ICUStableTaglet() {
- super(NAME, MASK_DEFAULT);
- }
-
- public String toString(Tag tag) {
- String text = tag.text();
+ public String toStringDocTree(DocTree tag, Element element) {
+ String text = getText(tag, element);
if (text.length() > 0) {
return STATUS + "Stable " + text + ".";
} else {
return STATUS + "Stable.";
}
}
-}
\ No newline at end of file
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUSummaryTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUSummaryTaglet.java
new file mode 100644
index 00000000000..e0cf95cbe0e
--- /dev/null
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUSummaryTaglet.java
@@ -0,0 +1,21 @@
+// © 2025 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.tool.docs;
+
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
+
+public class ICUSummaryTaglet extends ICUTaglet {
+ private static ICUTaglet singleton;
+ private static final String NAME = "summary";
+
+ public ICUSummaryTaglet() {
+ super(NAME, false);
+ }
+
+ public String toStringDocTree(DocTree tag, Element element) {
+ return null;
+ }
+}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTaglet.java
index f21460b45eb..b622b283c6f 100644
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTaglet.java
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTaglet.java
@@ -1,106 +1,100 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/**
-*******************************************************************************
-* Copyright (C) 2002-2016 International Business Machines Corporation *
-* and others. All Rights Reserved. *
-*******************************************************************************
-*/
+ *******************************************************************************
+ * Copyright (C) 2002-2016 International Business Machines Corporation *
+ * and others. All Rights Reserved. *
+ *******************************************************************************
+ */
package com.ibm.icu.dev.tool.docs;
-import java.util.Map;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
-import com.sun.javadoc.Tag;
-import com.sun.tools.doclets.internal.toolkit.taglets.Taglet;
+import javax.lang.model.element.Element;
-public abstract class ICUTaglet extends ICUTagletAdapter implements Taglet {
+import com.sun.source.doctree.DocTree;
+import com.sun.source.doctree.TextTree;
+import com.sun.source.doctree.UnknownBlockTagTree;
+import com.sun.source.doctree.UnknownInlineTagTree;
+import com.sun.source.util.SimpleDocTreeVisitor;
+
+import jdk.javadoc.doclet.Taglet;
+
+public abstract class ICUTaglet implements Taglet {
protected final String name;
- protected final int mask;
+ protected final boolean isInline;
- protected static final int MASK_FIELD = 1;
- protected static final int MASK_CONSTRUCTOR = 2;
- protected static final int MASK_METHOD = 4;
- protected static final int MASK_OVERVIEW = 8;
- protected static final int MASK_PACKAGE = 16;
- protected static final int MASK_TYPE = 32;
- protected static final int MASK_INLINE = 64;
+ protected static final String STATUS = "Status:";
- protected static final int MASK_DEFAULT = 0x003f; // no inline
- protected static final int MASK_DEFAULT_INLINE = 0x007f; // includes inline
- protected static final int MASK_VALID = 0x007f;
+ public abstract String toStringDocTree(DocTree doc, Element element);
- public static void register(Map taglets) {
- ICUInternalTaglet.register(taglets);
- ICUDraftTaglet.register(taglets);
- ICUStableTaglet.register(taglets);
- ICUProvisionalTaglet.register(taglets);
- ICUObsoleteTaglet.register(taglets);
- ICUIgnoreTaglet.register(taglets);
- ICUNewTaglet.register(taglets);
- ICUNoteTaglet.register(taglets);
- ICUEnhancedTaglet.register(taglets);
- ICUDiscouragedTaglet.register(taglets);
- }
-
- protected ICUTaglet(String name, int mask) {
+ protected ICUTaglet(String name, boolean isInline) {
this.name = name;
- this.mask = mask & MASK_VALID;
+ this.isInline = isInline;
}
- public boolean inField() {
- return (mask & MASK_FIELD) != 0;
- }
-
- public boolean inConstructor() {
- return (mask & MASK_CONSTRUCTOR) != 0;
- }
-
- public boolean inMethod() {
- return (mask & MASK_METHOD) != 0;
- }
-
- public boolean inOverview() {
- return (mask & MASK_OVERVIEW) != 0;
- }
-
- public boolean inPackage() {
- return (mask & MASK_PACKAGE) != 0;
- }
-
- public boolean inType() {
- return (mask & MASK_TYPE) != 0;
+ @Override
+ public Set getAllowedLocations() {
+ Set result = new HashSet<>();
+ result.add(Location.CONSTRUCTOR); // In the documentation for a constructor.
+ result.add(Location.FIELD); // In the documentation for a field.
+ result.add(Location.METHOD); // In the documentation for a method.
+ result.add(Location.MODULE); // In the documentation for a module.
+ result.add(Location.OVERVIEW); // In an Overview document.
+ result.add(Location.PACKAGE); // In the documentation for a package.
+ result.add(Location.TYPE); // In the documentation for a class, interface or enum.
+ return result;
}
public boolean isInlineTag() {
- return (mask & MASK_INLINE) != 0;
+ return isInline;
}
public String getName() {
return name;
}
- public String toString(Tag tag) {
- return tag.text();
- }
-
- public String toString(Tag[] tags) {
-
- if (!isInlineTag() && tags != null) {
- if (tags.length > 1) {
+ @Override
+ public String toString(List extends DocTree> tags, Element element) {
+ if (tags != null) {
+ if (tags.size() > 1) {
String msg = "Should not have more than one ICU tag per element:\n";
- for (int i = 0; i < tags.length; ++i) {
- msg += " [" + i + "] " + tags[i] + "\n";
+ for (int i = 0; i < tags.size(); ++i) {
+ msg += " [" + i + "] " + tags.get(i) + "\n";
}
throw new IllegalStateException(msg);
- } else if (tags.length > 0) {
- return toString(tags[0]);
+ } else if (tags.size() > 0) {
+ return toStringDocTree(tags.get(0), element);
}
}
return null;
}
- protected static final String STATUS = "Status:";
+ static String getText(DocTree dt, Element element) {
+ return dt.accept(new SimpleDocTreeVisitor() {
+ @Override
+ public String visitUnknownBlockTag(UnknownBlockTagTree node, Void p) {
+ for (DocTree dt : node.getContent()) {
+ return dt.accept(this, null);
+ }
+ return "";
+ }
- static String ICU_LABEL = "[icu]";
+ @Override
+ public String visitUnknownInlineTag(UnknownInlineTagTree node, Void p) {
+ for (DocTree dt : node.getContent()) {
+ return dt.accept(this, null);
+ }
+ return "";
+ }
+
+ @Override
+ public String visitText(TextTree node, Void p) {
+ return node.getBody();
+ }
+ }, null);
+ }
}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
deleted file mode 100644
index b415d69e0aa..00000000000
--- a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTagletAdapter.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// © 2016 and later: Unicode, Inc. and others.
-// License & terms of use: http://www.unicode.org/copyright.html
-/*
- *******************************************************************************
- * Copyright (C) 2015, International Business Machines Corporation and *
- * others. All Rights Reserved. *
- *******************************************************************************
- */
-package com.ibm.icu.dev.tool.docs;
-
-import com.sun.javadoc.Doc;
-import com.sun.javadoc.Tag;
-import com.sun.tools.doclets.formats.html.markup.RawHtml;
-import com.sun.tools.doclets.internal.toolkit.Content;
-import com.sun.tools.doclets.internal.toolkit.taglets.Taglet;
-import com.sun.tools.doclets.internal.toolkit.taglets.TagletWriter;
-
-/**
- * The ICUTagletAdapter class is the abstract base class that adapts the ICUTaglet class to different implementations of the JavaDoc API.
- * The methods in this class are meant to minimize the dual maintenance nature of supporting multiple JavaDoc APIs.
- *
- * This adapter supports the v8 JavaDoc API
- */
-public abstract class ICUTagletAdapter implements Taglet {
-
- public abstract String toString(Tag tag);
-
- public abstract String toString(Tag[] tags);
-
- public Content getTagletOutput(Tag tag, TagletWriter writer)
- throws IllegalArgumentException {
-
- // addContext doesn't except nulls so filter them out
- String encodedText = toString(tag);
- if(encodedText == null) return null;
-
- Content out = writer.getOutputInstance();
- out.addContent(new RawHtml(encodedText));
-
- return out;
- }
-
- public Content getTagletOutput(Doc holder, TagletWriter writer)
- throws IllegalArgumentException {
-
- Content out = writer.getOutputInstance();
- Tag[] tags = holder.tags(getName());
- if (tags.length == 0) {
- return null;
- }
-
- // addContext doesn't except nulls so filter them out
- String encodedText = toString(tags[0]);
- if(encodedText == null) return null;
-
- out.addContent(new RawHtml(encodedText));
- return out;
- }
-
-}
diff --git a/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTestTaglet.java b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTestTaglet.java
new file mode 100644
index 00000000000..1cd4c4ed07e
--- /dev/null
+++ b/icu4j/tools/taglets/src/main/java/com/ibm/icu/dev/tool/docs/ICUTestTaglet.java
@@ -0,0 +1,21 @@
+// © 2025 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
+
+package com.ibm.icu.dev.tool.docs;
+
+import javax.lang.model.element.Element;
+
+import com.sun.source.doctree.DocTree;
+
+public class ICUTestTaglet extends ICUTaglet {
+ private static ICUTaglet singleton;
+ private static final String NAME = "test";
+
+ public ICUTestTaglet() {
+ super(NAME, false);
+ }
+
+ public String toStringDocTree(DocTree tag, Element element) {
+ return null;
+ }
+}