8012174: {@literal} and {@code} should use \"new\" Taglet, not old.

Tue, 14 May 2013 10:14:54 -0700

author
jjg
date
Tue, 14 May 2013 10:14:54 -0700
changeset 1742
7af0fa419a2b
parent 1741
4c43e51433ba
child 1743
6a5288a298fd

8012174: {@literal} and {@code} should use \"new\" Taglet, not old.
Reviewed-by: darcy

src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/formats/html/markup/HtmlTag.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/CodeTaglet.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/ExpertTaglet.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/LiteralTaglet.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletWriter.java file | annotate | diff | comparison | revisions
     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("&lt;");
    5.74 -                          break;
    5.75 -                   case '>':
    5.76 -                          buf.append("&gt;");
    5.77 -                          break;
    5.78 -                   case '&':
    5.79 -                          buf.append("&amp;");
    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.

mercurial