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 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 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; + } +}