--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/LegacyTaglet.java Fri Aug 30 15:59:33 2013 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/LegacyTaglet.java Fri Aug 30 16:16:28 2013 -0700
@@ -130,7 +130,13 @@
public Content getTagletOutput(Doc holder, TagletWriter writer)
throws IllegalArgumentException {
Content output = writer.getOutputInstance();
- output.addContent(new RawHtml(legacyTaglet.toString(holder.tags(getName()))));
+ Tag[] tags = holder.tags(getName());
+ if (tags.length > 0) {
+ String tagString = legacyTaglet.toString(tags);
+ if (tagString != null) {
+ output.addContent(new RawHtml(tagString));
+ }
+ }
return output;
}
}
--- a/langtools/test/com/sun/javadoc/testLegacyTaglet/C.java Fri Aug 30 15:59:33 2013 -0700
+++ b/langtools/test/com/sun/javadoc/testLegacyTaglet/C.java Fri Aug 30 16:16:28 2013 -0700
@@ -25,5 +25,13 @@
/**
* This is an {@underline underline}.
* @todo Finish this class.
+ * @check Check this.
*/
-public class C {}
+public class C {
+
+ /**
+ * @todo Tag in Method.
+ */
+ public void mtd() {
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testLegacyTaglet/Check.java Fri Aug 30 16:16:28 2013 -0700
@@ -0,0 +1,143 @@
+/*
+ * Copyright (c) 2013, 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;
+
+public class Check implements Taglet {
+
+ private static final String TAG_NAME = "check";
+ private static final String TAG_HEADER = "Check:";
+
+ /**
+ * Return true since the tag can be used in package documentation.
+ *
+ * @return true since the tag can be used in package documentation.
+ */
+ public boolean inPackage() {
+ return true;
+ }
+
+ /**
+ * Return true since the tag can be used in overview documentation.
+ *
+ * @return true since the tag can be used in overview documentation.
+ */
+ public boolean inOverview() {
+ return true;
+ }
+
+ /**
+ * Return true since the tag can be used in type (class/interface)
+ * documentation.
+ *
+ * @return true since the tag can be used in type (class/interface)
+ * documentation.
+ */
+ public boolean inType() {
+ return true;
+ }
+
+ /**
+ * Return true since the tag can be used in constructor documentation.
+ *
+ * @return true since the tag can be used in constructor documentation.
+ */
+ public boolean inConstructor() {
+ return true;
+ }
+
+ /**
+ * Return true since the tag can be used in field documentation.
+ *
+ * @return true since the tag can be used in field documentation.
+ */
+ public boolean inField() {
+ return true;
+ }
+
+ /**
+ * Return true since the tag can be used in method documentation.
+ *
+ * @return true since the tag can be used in method documentation.
+ */
+ public boolean inMethod() {
+ return true;
+ }
+
+ /**
+ * Return false since the tag is not an inline tag.
+ *
+ * @return false since the tag is not an inline tag.
+ */
+ public boolean isInlineTag() {
+ return false;
+ }
+
+ /**
+ * Register this taglet.
+ *
+ * @param tagletMap the map to register this tag to.
+ */
+ @SuppressWarnings("unchecked")
+ public static void register(Map tagletMap) {
+ Check tag = new Check();
+ Taglet t = (Taglet) tagletMap.get(tag.getName());
+ if (t != null) {
+ tagletMap.remove(tag.getName());
+ }
+ tagletMap.put(tag.getName(), tag);
+ }
+
+ /**
+ * Return the name of this custom tag.
+ *
+ * @return the name of this tag.
+ */
+ public String getName() {
+ return TAG_NAME;
+ }
+
+ /**
+ * 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 "<dt><span class=\"strong\">" + TAG_HEADER + ":</span></dt><dd>" + tag.text() +
+ "</dd>\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.
+ * @return null to test if the javadoc throws an exception or not.
+ */
+ public String toString(Tag[] tags) {
+ return null;
+ }
+}
--- a/langtools/test/com/sun/javadoc/testLegacyTaglet/TestLegacyTaglet.java Fri Aug 30 15:59:33 2013 -0700
+++ b/langtools/test/com/sun/javadoc/testLegacyTaglet/TestLegacyTaglet.java Fri Aug 30 16:16:28 2013 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2013, 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
@@ -23,32 +23,33 @@
/*
* @test
- * @bug 4638723
+ * @bug 4638723 8015882
* @summary Test to ensure that the refactored version of the standard
* doclet still works with Taglets that implement the 1.4.0 interface.
* @author jamieh
* @library ../lib/
- * @compile ../lib/JavadocTester.java
- * @compile TestLegacyTaglet.java
- * @compile ToDoTaglet.java
- * @compile UnderlineTaglet.java
+ * @compile ../lib/JavadocTester.java TestLegacyTaglet.java ToDoTaglet.java UnderlineTaglet.java Check.java
* @run main TestLegacyTaglet
*/
public class TestLegacyTaglet extends JavadocTester {
- private static final String BUG_ID = "4638723";
+ private static final String BUG_ID = "4638723-8015882";
private static final String[] ARGS =
new String[] {"-d", BUG_ID, "-sourcepath", SRC_DIR,
- "-tagletpath", SRC_DIR, "-taglet", "ToDoTaglet",
+ "-tagletpath", SRC_DIR, "-taglet", "ToDoTaglet", "-taglet", "Check",
"-taglet", "UnderlineTaglet", SRC_DIR + FS + "C.java"};
private static final String[][] TEST = new String[][] {
{BUG_ID + FS + "C.html", "This is an <u>underline</u>"},
{BUG_ID + FS + "C.html",
"<DT><B>To Do:</B><DD><table cellpadding=2 cellspacing=0><tr>" +
- "<td bgcolor=\"yellow\">Finish this class.</td></tr></table></DD>"}};
+ "<td bgcolor=\"yellow\">Finish this class.</td></tr></table></DD>"},
+ {BUG_ID + FS + "C.html",
+ "<DT><B>To Do:</B><DD><table cellpadding=2 cellspacing=0><tr>" +
+ "<td bgcolor=\"yellow\">Tag in Method.</td></tr></table></DD>"}
+ };
private static final String[][] NEGATED_TEST = NO_TEST;
@@ -59,6 +60,9 @@
public static void main(String[] args) {
TestLegacyTaglet tester = new TestLegacyTaglet();
run(tester, ARGS, TEST, NEGATED_TEST);
+ if (tester.getErrorOutput().contains("NullPointerException")) {
+ throw new AssertionError("javadoc threw NullPointerException");
+ }
tester.printSummary();
}