--- old/test/com/sun/javadoc/testLegacyTaglet/ToDoTaglet.java Fri Jan 22 12:24:35 2016 +++ /dev/null Fri Jan 22 12:24:35 2016 @@ -1,177 +0,0 @@ -/* - * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import com.sun.tools.doclets.Taglet; -import com.sun.javadoc.*; -import java.util.Map; - -/** - * A sample Taglet representing @todo. This tag can be used in any kind of - * {@link com.sun.javadoc.Doc}. It is not an inline tag. The text is displayed - * in yellow to remind the developer to perform a task. For - * example, "@todo Fix this!" would be shown as: - *
- *
- * To Do: - *
Fix this! - *
- *
- * - * @author Jamie Ho - * @since 1.4 - */ - -public class ToDoTaglet implements Taglet { - - private static final String NAME = "todo"; - private static final String HEADER = "To Do:"; - - /** - * Return the name of this custom tag. - */ - public String getName() { - return NAME; - } - - /** - * Will return true since @todo - * can be used in field documentation. - * @return true since @todo - * can be used in field documentation and false - * otherwise. - */ - public boolean inField() { - return true; - } - - /** - * Will return true since @todo - * can be used in constructor documentation. - * @return true since @todo - * can be used in constructor documentation and false - * otherwise. - */ - public boolean inConstructor() { - return true; - } - - /** - * Will return true since @todo - * can be used in method documentation. - * @return true since @todo - * can be used in method documentation and false - * otherwise. - */ - public boolean inMethod() { - return true; - } - - /** - * Will return true since @todo - * can be used in method documentation. - * @return true since @todo - * can be used in overview documentation and false - * otherwise. - */ - public boolean inOverview() { - return true; - } - - /** - * Will return true since @todo - * can be used in package documentation. - * @return true since @todo - * can be used in package documentation and false - * otherwise. - */ - public boolean inPackage() { - return true; - } - - /** - * Will return true since @todo - * can be used in type documentation (classes or interfaces). - * @return true since @todo - * can be used in type documentation and false - * otherwise. - */ - public boolean inType() { - return true; - } - - /** - * Will return false since @todo - * is not an inline tag. - * @return false since @todo - * is not an inline tag. - */ - - public boolean isInlineTag() { - return false; - } - - /** - * Register this Taglet. - * @param tagletMap the map to register this tag to. - */ - public static void register(Map tagletMap) { - ToDoTaglet tag = new ToDoTaglet(); - Taglet t = (Taglet) tagletMap.get(tag.getName()); - if (t != null) { - tagletMap.remove(tag.getName()); - } - tagletMap.put(tag.getName(), tag); - } - - /** - * Given the Tag representation of this custom - * tag, return its string representation. - * @param tag the Tag representation of this custom tag. - */ - public String toString(Tag tag) { - return "
" + HEADER + "
" - + "
" - + tag.text() - + "
\n"; - } - - /** - * Given an array of Tags representing this custom - * tag, return its string representation. - * @param tags the array of Tags representing of this custom tag. - */ - public String toString(Tag[] tags) { - if (tags.length == 0) { - return null; - } - String result = "\n
" + HEADER + "
"; - result += "
"; - for (int i = 0; i < tags.length; i++) { - if (i > 0) { - result += ", "; - } - result += tags[i].text(); - } - return result + "
\n"; - } -} --- /dev/null Fri Jan 22 12:24:35 2016 +++ new/test/jdk/javadoc/doclet/testLegacyTaglet/ToDoTaglet.java Fri Jan 22 12:24:34 2016 @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.util.EnumSet; +import java.util.List; +import java.util.Map; + +import java.util.Set; + +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.Taglet; +import jdk.javadoc.doclet.taglet.Taglet.Location; +import static jdk.javadoc.doclet.taglet.Taglet.Location.*; + + +/** + * A sample Taglet representing @todo. This tag can be used in any kind of + * {@link javax.lang.model.Element}. It is not an inline tag. The text is displayed + * in yellow to remind the developer to perform a task. For + * example, "@todo Fix this!" would be shown as: + *
+ *
+ * To Do: + *
Fix this! + *
+ *
+ * + * @author Jamie Ho + * @since 1.4 + */ + +public class ToDoTaglet implements Taglet { + + private static final String NAME = "todo"; + private static final String HEADER = "To Do:"; + + /** + * Return the name of this custom tag. + */ + public String getName() { + return NAME; + } + + private final EnumSet allowedSet = EnumSet.allOf(Location.class); + + @Override + public Set getAllowedLocations() { + return allowedSet; + } + + /** + * Will return false since @todo + * is not an inline tag. + * @return false since @todo + * is not an inline tag. + */ + + public boolean isInlineTag() { + return false; + } + + /** + * Given the DocTree representation of this custom + * tag, return its string representation. + * @param tag the DocTree representing this custom tag. + */ + public String toString(DocTree tag) { + + return "
" + HEADER + "
" + + "
" + + getText(tag) + + "
\n"; + } + + /** + * Given an array of Tags representing this custom + * tag, return its string representation. + * @param tags the array of DocTrees representing this custom tag. + */ + @Override + public String toString(List tags) { + if (tags.isEmpty()) { + return null; + } + String result = "\n
" + HEADER + "
"; + result += "
"; + for (int i = 0; i < tags.size(); i++) { + if (i > 0) { + result += ", "; + } + result += getText(tags.get(i)); + } + return result + "
\n"; + } + + static String getText(DocTree dt) { + return new SimpleDocTreeVisitor() { + @Override + public String visitUnknownBlockTag(UnknownBlockTagTree node, Void p) { + for (DocTree dt : node.getContent()) { + return dt.accept(this, null); + } + return ""; + } + + @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(); + } + + @Override + protected String defaultAction(DocTree node, Void p) { + return ""; + } + + }.visit(dt, null); + } +}