Tue, 14 May 2013 10:14:54 -0700
8012174: {@literal} and {@code} should use \"new\" Taglet, not old.
Reviewed-by: darcy
1.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java Tue May 14 10:14:53 2013 -0700 1.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java Tue May 14 10:14:54 2013 -0700 1.3 @@ -26,6 +26,10 @@ 1.4 package com.sun.tools.doclets.formats.html; 1.5 1.6 import com.sun.javadoc.*; 1.7 +import com.sun.tools.doclets.formats.html.markup.HtmlAttr; 1.8 +import com.sun.tools.doclets.formats.html.markup.HtmlTag; 1.9 +import com.sun.tools.doclets.formats.html.markup.HtmlTree; 1.10 +import com.sun.tools.doclets.formats.html.markup.StringContent; 1.11 import com.sun.tools.doclets.internal.toolkit.*; 1.12 import com.sun.tools.doclets.internal.toolkit.builders.SerializedFormBuilder; 1.13 import com.sun.tools.doclets.internal.toolkit.taglets.*; 1.14 @@ -65,6 +69,14 @@ 1.15 /** 1.16 * {@inheritDoc} 1.17 */ 1.18 + protected TagletOutput codeTagOutput(Tag tag) { 1.19 + Content result = HtmlTree.CODE(new StringContent(tag.text())); 1.20 + return new TagletOutputImpl(result.toString()); 1.21 + } 1.22 + 1.23 + /** 1.24 + * {@inheritDoc} 1.25 + */ 1.26 public TagletOutput getDocRootOutput() { 1.27 if (configuration.docrootparent.length() > 0) 1.28 return new TagletOutputImpl(configuration.docrootparent); 1.29 @@ -121,6 +133,23 @@ 1.30 /** 1.31 * {@inheritDoc} 1.32 */ 1.33 + protected TagletOutput expertTagOutput(Tag tag) { 1.34 + HtmlTree result = new HtmlTree(HtmlTag.SUB, new StringContent(tag.text())); 1.35 + result.addAttr(HtmlAttr.ID, "expert"); 1.36 + return new TagletOutputImpl(result.toString()); 1.37 + } 1.38 + 1.39 + /** 1.40 + * {@inheritDoc} 1.41 + */ 1.42 + protected TagletOutput literalTagOutput(Tag tag) { 1.43 + Content result = new StringContent(tag.text()); 1.44 + return new TagletOutputImpl(result.toString()); 1.45 + } 1.46 + 1.47 + /** 1.48 + * {@inheritDoc} 1.49 + */ 1.50 public MessageRetriever getMsgRetriever() { 1.51 return configuration.message; 1.52 }
2.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java Tue May 14 10:14:53 2013 -0700 2.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java Tue May 14 10:14:54 2013 -0700 2.3 @@ -1,5 +1,5 @@ 2.4 /* 2.5 - * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved. 2.6 + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 2.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 2.8 * 2.9 * This code is free software; you can redistribute it and/or modify it 2.10 @@ -75,6 +75,7 @@ 2.11 SMALL(BlockType.INLINE, EndTag.END), 2.12 SPAN(BlockType.INLINE, EndTag.END), 2.13 STRONG(BlockType.INLINE, EndTag.END), 2.14 + SUB(BlockType.INLINE, EndTag.END), 2.15 TABLE, 2.16 TBODY, 2.17 TD,
3.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/CodeTaglet.java Tue May 14 10:14:53 2013 -0700 3.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/CodeTaglet.java Tue May 14 10:14:54 2013 -0700 3.3 @@ -1,5 +1,5 @@ 3.4 /* 3.5 - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 3.6 + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 3.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3.8 * 3.9 * This code is free software; you can redistribute it and/or modify it 3.10 @@ -26,7 +26,6 @@ 3.11 3.12 import java.util.Map; 3.13 import com.sun.javadoc.Tag; 3.14 -import com.sun.tools.doclets.Taglet; 3.15 3.16 /** 3.17 * An inline Taglet used to denote literal code fragments. 3.18 @@ -49,23 +48,23 @@ 3.19 * @since 1.5 3.20 */ 3.21 3.22 -public class CodeTaglet extends LiteralTaglet { 3.23 +public class CodeTaglet extends BaseInlineTaglet { 3.24 3.25 - private static final String NAME = "code"; 3.26 + private static final String NAME = "code"; 3.27 3.28 - public static void register(Map<String, Taglet> map) { 3.29 - map.remove(NAME); 3.30 - map.put(NAME, new CodeTaglet()); 3.31 - } 3.32 + public static void register(Map<String, Taglet> map) { 3.33 + map.remove(NAME); 3.34 + map.put(NAME, new CodeTaglet()); 3.35 + } 3.36 3.37 - public String getName() { 3.38 - return NAME; 3.39 - } 3.40 + public String getName() { 3.41 + return NAME; 3.42 + } 3.43 3.44 - /* 3.45 - * Wraps @literal's result in a <code> element. 3.46 - */ 3.47 - public String toString(Tag tag) { 3.48 - return "<code>" + super.toString(tag) + "</code>"; 3.49 - } 3.50 + /** 3.51 + * {@inheritDoc} 3.52 + */ 3.53 + public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) { 3.54 + return writer.codeTagOutput(tag); 3.55 + } 3.56 }
4.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/ExpertTaglet.java Tue May 14 10:14:53 2013 -0700 4.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/ExpertTaglet.java Tue May 14 10:14:54 2013 -0700 4.3 @@ -27,7 +27,6 @@ 4.4 4.5 import java.util.Map; 4.6 4.7 -import com.sun.tools.doclets.Taglet; 4.8 import com.sun.javadoc.Tag; 4.9 4.10 /** 4.11 @@ -39,11 +38,9 @@ 4.12 * deletion without notice.</b> 4.13 * 4.14 */ 4.15 -public class ExpertTaglet implements Taglet { 4.16 +public class ExpertTaglet extends BaseTaglet { 4.17 4.18 private static final String NAME = "expert"; 4.19 - private static final String START_TAG = "<sub id=\"expert\">"; 4.20 - private static final String END_TAG = "</sub>"; 4.21 4.22 /** 4.23 * {@inheritDoc} 4.24 @@ -85,22 +82,10 @@ 4.25 map.put(NAME, new ExpertTaglet()); 4.26 } 4.27 4.28 - public String toString(Tag tag) { 4.29 - return (tag.text() == null || tag.text().length() == 0) ? null : 4.30 - START_TAG + LiteralTaglet.textToString(tag.text()) + END_TAG; 4.31 + /** 4.32 + * {@inheritDoc} 4.33 + */ 4.34 + public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) { 4.35 + return writer.expertTagOutput(tag); 4.36 } 4.37 - 4.38 - 4.39 - public String toString(Tag[] tags) { 4.40 - if (tags == null || tags.length == 0) return null; 4.41 - 4.42 - StringBuffer sb = new StringBuffer(START_TAG); 4.43 - 4.44 - for(Tag t:tags) { 4.45 - sb.append(LiteralTaglet.textToString(t.text())); 4.46 - } 4.47 - sb.append(END_TAG); 4.48 - return sb.toString(); 4.49 - } 4.50 - 4.51 }
5.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/LiteralTaglet.java Tue May 14 10:14:53 2013 -0700 5.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/LiteralTaglet.java Tue May 14 10:14:54 2013 -0700 5.3 @@ -1,5 +1,5 @@ 5.4 /* 5.5 - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 5.6 + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 5.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5.8 * 5.9 * This code is free software; you can redistribute it and/or modify it 5.10 @@ -25,8 +25,9 @@ 5.11 package com.sun.tools.doclets.internal.toolkit.taglets; 5.12 5.13 import java.util.Map; 5.14 + 5.15 +import com.sun.javadoc.Doc; 5.16 import com.sun.javadoc.Tag; 5.17 -import com.sun.tools.doclets.Taglet; 5.18 5.19 5.20 /** 5.21 @@ -47,60 +48,23 @@ 5.22 * @since 1.5 5.23 */ 5.24 5.25 -public class LiteralTaglet implements Taglet { 5.26 +public class LiteralTaglet extends BaseInlineTaglet { 5.27 5.28 private static final String NAME = "literal"; 5.29 5.30 - public static void register(Map<String,Taglet> map) { 5.31 - map.remove(NAME); 5.32 - map.put(NAME, new LiteralTaglet()); 5.33 + public static void register(Map<String, Taglet> map) { 5.34 + map.remove(NAME); 5.35 + map.put(NAME, new LiteralTaglet()); 5.36 } 5.37 5.38 public String getName() { 5.39 return NAME; 5.40 } 5.41 5.42 - public String toString(Tag tag) { 5.43 - return textToString(tag.text()); 5.44 - } 5.45 - 5.46 - public String toString(Tag[] tags) { return null; } 5.47 - 5.48 - public boolean inField() { return false; } 5.49 - 5.50 - public boolean inConstructor() { return false; } 5.51 - 5.52 - public boolean inMethod() { return false; } 5.53 - 5.54 - public boolean inOverview() { return false; } 5.55 - 5.56 - public boolean inPackage() { return false; } 5.57 - 5.58 - public boolean inType() { return false; } 5.59 - 5.60 - public boolean isInlineTag() { return true; } 5.61 - 5.62 - /* 5.63 - * Replace occurrences of the following characters: < > & 5.64 + /** 5.65 + * {@inheritDoc} 5.66 */ 5.67 - protected static String textToString(String text) { 5.68 - StringBuilder buf = new StringBuilder(); 5.69 - for (int i = 0; i < text.length(); i++) { 5.70 - char c = text.charAt(i); 5.71 - switch (c) { 5.72 - case '<': 5.73 - buf.append("<"); 5.74 - break; 5.75 - case '>': 5.76 - buf.append(">"); 5.77 - break; 5.78 - case '&': 5.79 - buf.append("&"); 5.80 - break; 5.81 - default: 5.82 - buf.append(c); 5.83 - } 5.84 - } 5.85 - return buf.toString(); 5.86 + public TagletOutput getTagletOutput(Tag tag, TagletWriter writer) { 5.87 + return writer.literalTagOutput(tag); 5.88 } 5.89 }
6.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java Tue May 14 10:14:53 2013 -0700 6.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java Tue May 14 10:14:54 2013 -0700 6.3 @@ -659,10 +659,8 @@ 6.4 customTags.put((temp = new DocRootTaglet()).getName(), temp); 6.5 customTags.put((temp = new InheritDocTaglet()).getName(), temp); 6.6 customTags.put((temp = new ValueTaglet()).getName(), temp); 6.7 - customTags.put((temp = new LegacyTaglet(new LiteralTaglet())).getName(), 6.8 - temp); 6.9 - customTags.put((temp = new LegacyTaglet(new CodeTaglet())).getName(), 6.10 - temp); 6.11 + customTags.put((temp = new LiteralTaglet()).getName(), temp); 6.12 + customTags.put((temp = new CodeTaglet()).getName(), temp); 6.13 6.14 //Keep track of the names of standard tags for error 6.15 //checking purposes. 6.16 @@ -705,7 +703,7 @@ 6.17 SimpleTaglet.FIELD + SimpleTaglet.METHOD)).getName(), temp); 6.18 customTags.put((temp = new SimpleTaglet("treatAsPrivate", null, 6.19 SimpleTaglet.FIELD + SimpleTaglet.METHOD + SimpleTaglet.TYPE)).getName(), temp); 6.20 - customTags.put((temp = new LegacyTaglet(new ExpertTaglet())).getName(), temp); 6.21 + customTags.put((temp = new ExpertTaglet()).getName(), temp); 6.22 6.23 standardTags.add("propertyGetter"); 6.24 standardTags.add("propertySetter");
7.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletWriter.java Tue May 14 10:14:53 2013 -0700 7.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletWriter.java Tue May 14 10:14:54 2013 -0700 7.3 @@ -53,11 +53,19 @@ 7.4 } 7.5 7.6 /** 7.7 - * @return an instance of the output object. 7.8 + * @return an instance of an output object. 7.9 */ 7.10 public abstract TagletOutput getOutputInstance(); 7.11 7.12 /** 7.13 + * Return the output for a {@code...} tag. 7.14 + * 7.15 + * @param tag the tag. 7.16 + * @return the output of the taglet. 7.17 + */ 7.18 + protected abstract TagletOutput codeTagOutput(Tag tag); 7.19 + 7.20 + /** 7.21 * Returns the output for the DocRoot inline tag. 7.22 * @return the output for the DocRoot inline tag. 7.23 */ 7.24 @@ -72,6 +80,23 @@ 7.25 protected abstract TagletOutput deprecatedTagOutput(Doc doc); 7.26 7.27 /** 7.28 + * Return the output for a {@expert...} tag. 7.29 + * 7.30 + * @param tag the tag. 7.31 + * @return the output of the taglet. 7.32 + */ 7.33 + // TODO: remove this taglet 7.34 + protected abstract TagletOutput expertTagOutput(Tag tag); 7.35 + 7.36 + /** 7.37 + * Return the output for a {@literal...} tag. 7.38 + * 7.39 + * @param tag the tag. 7.40 + * @return the output of the taglet. 7.41 + */ 7.42 + protected abstract TagletOutput literalTagOutput(Tag tag); 7.43 + 7.44 + /** 7.45 * Returns {@link MessageRetriever} for output purposes. 7.46 * 7.47 * @return {@link MessageRetriever} for output purposes.