8012177: HTMLDocletWriter methods should generate Content, not Strings

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

author
jjg
date
Tue, 14 May 2013 10:14:55 -0700
changeset 1745
937aa020c667
parent 1744
76a691e3e961
child 1746
bd51ca92c013

8012177: HTMLDocletWriter methods should generate Content, not Strings
Reviewed-by: darcy

src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java file | annotate | diff | comparison | revisions
src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Tue May 14 10:14:54 2013 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Tue May 14 10:14:55 2013 -0700
     1.3 @@ -1390,17 +1390,17 @@
     1.4          return emd.name() + signatureParsed.toString();
     1.5      }
     1.6  
     1.7 -    public String seeTagToString(SeeTag see) {
     1.8 +    public Content seeTagToContent(SeeTag see) {
     1.9          String tagName = see.name();
    1.10          if (! (tagName.startsWith("@link") || tagName.equals("@see"))) {
    1.11 -            return "";
    1.12 +            return new ContentBuilder();
    1.13          }
    1.14  
    1.15          String seetext = replaceDocRootDir(see.text());
    1.16  
    1.17          //Check if @see is an href or "string"
    1.18          if (seetext.startsWith("<") || seetext.startsWith("\"")) {
    1.19 -            return seetext;
    1.20 +            return new RawHtml(seetext);
    1.21          }
    1.22  
    1.23          boolean plain = tagName.equalsIgnoreCase("@linkplain");
    1.24 @@ -1421,7 +1421,7 @@
    1.25                  //@see is referencing an included package
    1.26                  if (label.isEmpty())
    1.27                      label = plainOrCode(plain, new StringContent(refPackage.name()));
    1.28 -                return getPackageLink(refPackage, label).toString();
    1.29 +                return getPackageLink(refPackage, label);
    1.30              } else {
    1.31                  //@see is not referencing an included class or package.  Check for cross links.
    1.32                  Content classCrossLink;
    1.33 @@ -1429,16 +1429,16 @@
    1.34                  if (packageCrossLink != null) {
    1.35                      //Package cross link found
    1.36                      return getHyperLink(packageCrossLink,
    1.37 -                        (label.isEmpty() ? text : label)).toString();
    1.38 +                        (label.isEmpty() ? text : label));
    1.39                  } else if ((classCrossLink = getCrossClassLink(refClassName,
    1.40                          refMemName, label, false, "", !plain)) != null) {
    1.41                      //Class cross link found (possibly to a member in the class)
    1.42 -                    return classCrossLink.toString();
    1.43 +                    return classCrossLink;
    1.44                  } else {
    1.45                      //No cross link found so print warning
    1.46                      configuration.getDocletSpecificMsg().warning(see.position(), "doclet.see.class_or_package_not_found",
    1.47                              tagName, seetext);
    1.48 -                    return (label.isEmpty() ? text: label).toString();
    1.49 +                    return (label.isEmpty() ? text: label);
    1.50                  }
    1.51              }
    1.52          } else if (refMemName == null) {
    1.53 @@ -1447,11 +1447,11 @@
    1.54                  label = plainOrCode(plain, new StringContent(refClass.name()));
    1.55              }
    1.56              return getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.DEFAULT, refClass)
    1.57 -                    .label(label)).toString();
    1.58 +                    .label(label));
    1.59          } else if (refMem == null) {
    1.60              // Must be a member reference since refClass is not null and refMemName is not null.
    1.61              // However, refMem is null, so this referenced member does not exist.
    1.62 -            return (label.isEmpty() ? text: label).toString();
    1.63 +            return (label.isEmpty() ? text: label);
    1.64          } else {
    1.65              // Must be a member reference since refClass is not null and refMemName is not null.
    1.66              // refMem is not null, so this @see tag must be referencing a valid member.
    1.67 @@ -1487,14 +1487,10 @@
    1.68              text = plainOrCode(plain, new StringContent(refMemName));
    1.69  
    1.70              return getDocLink(LinkInfoImpl.Kind.SEE_TAG, containing,
    1.71 -                refMem, (label.isEmpty() ? text: label).toString(), false).toString();
    1.72 +                refMem, (label.isEmpty() ? text: label).toString(), false);
    1.73          }
    1.74      }
    1.75  
    1.76 -    private String plainOrCodeText(boolean plain, String text) {
    1.77 -        return (plain || text.isEmpty()) ? text : codeText(text);
    1.78 -    }
    1.79 -
    1.80      private Content plainOrCode(boolean plain, Content body) {
    1.81          return (plain || body.isEmpty()) ? body : HtmlTree.CODE(body);
    1.82      }
    1.83 @@ -1586,7 +1582,7 @@
    1.84              return;
    1.85          }
    1.86          Content div;
    1.87 -        Content result = new RawHtml(commentTagsToString(holderTag, doc, tags, first));
    1.88 +        Content result = commentTagsToContent(null, doc, tags, first);
    1.89          if (depr) {
    1.90              Content italic = HtmlTree.I(result);
    1.91              div = HtmlTree.DIV(HtmlStyle.block, italic);
    1.92 @@ -1613,9 +1609,9 @@
    1.93       *               present in the text of interest for this doc
    1.94       * @param isFirstSentence  true if text is first sentence
    1.95       */
    1.96 -    public String commentTagsToString(Tag holderTag, Doc doc, Tag[] tags,
    1.97 +    public Content commentTagsToContent(Tag holderTag, Doc doc, Tag[] tags,
    1.98              boolean isFirstSentence) {
    1.99 -        StringBuilder result = new StringBuilder();
   1.100 +        ContentBuilder result = new ContentBuilder();
   1.101          boolean textTagChange = false;
   1.102          // Array of all possible inline tags for this javadoc run
   1.103          configuration.tagletManager.checkTags(doc, tags, true);
   1.104 @@ -1623,14 +1619,15 @@
   1.105              Tag tagelem = tags[i];
   1.106              String tagName = tagelem.name();
   1.107              if (tagelem instanceof SeeTag) {
   1.108 -                result.append(seeTagToString((SeeTag)tagelem));
   1.109 +                result.addContent(seeTagToContent((SeeTag) tagelem));
   1.110              } else if (! tagName.equals("Text")) {
   1.111 -                int originalLength = result.length();
   1.112 +                boolean wasEmpty = result.isEmpty();
   1.113                  TagletOutput output = TagletWriter.getInlineTagOuput(
   1.114                      configuration.tagletManager, holderTag,
   1.115                      tagelem, getTagletWriterInstance(isFirstSentence));
   1.116 -                result.append(output == null ? "" : output.toString());
   1.117 -                if (originalLength == 0 && isFirstSentence && tagelem.name().equals("@inheritDoc") && result.length() > 0) {
   1.118 +                if (output != null)
   1.119 +                    result.addContent(((TagletOutputImpl) output).getContent());
   1.120 +                if (wasEmpty && isFirstSentence && tagelem.name().equals("@inheritDoc") && !result.isEmpty()) {
   1.121                      break;
   1.122                  } else if (configuration.docrootparent.length() > 0 &&
   1.123                          tagelem.name().equals("@docRoot") &&
   1.124 @@ -1669,10 +1666,10 @@
   1.125                      Util.replaceTabs(configuration, line);
   1.126                      textBuff.append(line.toString());
   1.127                  }
   1.128 -                result.append(textBuff);
   1.129 +                result.addContent(new RawHtml(textBuff.toString()));
   1.130              }
   1.131          }
   1.132 -        return result.toString();
   1.133 +        return result;
   1.134      }
   1.135  
   1.136      /**
     2.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java	Tue May 14 10:14:54 2013 -0700
     2.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/TagletWriterImpl.java	Tue May 14 10:14:55 2013 -0700
     2.3 @@ -171,7 +171,7 @@
     2.4          ContentBuilder body = new ContentBuilder();
     2.5          body.addContent(HtmlTree.CODE(new RawHtml(paramName)));
     2.6          body.addContent(" - ");
     2.7 -        body.addContent(new RawHtml(htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false)));
     2.8 +        body.addContent(htmlWriter.commentTagsToContent(paramTag, null, paramTag.inlineTags(), false));
     2.9          HtmlTree result = HtmlTree.DD(body);
    2.10          return new TagletOutputImpl(result);
    2.11      }
    2.12 @@ -183,8 +183,8 @@
    2.13          ContentBuilder result = new ContentBuilder();
    2.14          result.addContent(HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.strong,
    2.15                  new StringContent(configuration.getText("doclet.Returns")))));
    2.16 -        result.addContent(HtmlTree.DD(new RawHtml(htmlWriter.commentTagsToString(
    2.17 -                returnTag, null, returnTag.inlineTags(), false))));
    2.18 +        result.addContent(HtmlTree.DD(htmlWriter.commentTagsToContent(
    2.19 +                returnTag, null, returnTag.inlineTags(), false)));
    2.20          return new TagletOutputImpl(result);
    2.21      }
    2.22  
    2.23 @@ -196,7 +196,7 @@
    2.24          if (seeTags.length > 0) {
    2.25              for (int i = 0; i < seeTags.length; ++i) {
    2.26                  appendSeparatorIfNotEmpty(body);
    2.27 -                body.addContent(new RawHtml(htmlWriter.seeTagToString(seeTags[i])));
    2.28 +                body.addContent(htmlWriter.seeTagToContent(seeTags[i]));
    2.29              }
    2.30          }
    2.31          if (holder.isField() && ((FieldDoc)holder).constantValue() != null &&
    2.32 @@ -251,8 +251,8 @@
    2.33              if (i > 0) {
    2.34                  body.addContent(", ");
    2.35              }
    2.36 -            body.addContent(new RawHtml(htmlWriter.commentTagsToString(
    2.37 -                    simpleTags[i], null, simpleTags[i].inlineTags(), false)));
    2.38 +            body.addContent(htmlWriter.commentTagsToContent(
    2.39 +                    simpleTags[i], null, simpleTags[i].inlineTags(), false));
    2.40          }
    2.41          result.addContent(HtmlTree.DD(body));
    2.42          return new TagletOutputImpl(result);
    2.43 @@ -264,8 +264,8 @@
    2.44      public TagletOutput simpleTagOutput(Tag simpleTag, String header) {
    2.45          ContentBuilder result = new ContentBuilder();
    2.46          result.addContent(HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.strong, new RawHtml(header))));
    2.47 -        Content body = new RawHtml(htmlWriter.commentTagsToString(
    2.48 -                simpleTag, null, simpleTag.inlineTags(), false));
    2.49 +        Content body = htmlWriter.commentTagsToContent(
    2.50 +                simpleTag, null, simpleTag.inlineTags(), false);
    2.51          result.addContent(HtmlTree.DD(body));
    2.52          return new TagletOutputImpl(result);
    2.53      }
    2.54 @@ -289,11 +289,11 @@
    2.55                  htmlWriter.getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER,
    2.56                  throwsTag.exceptionType()));
    2.57          body.addContent(HtmlTree.CODE(excName));
    2.58 -        String desc = htmlWriter.commentTagsToString(throwsTag, null,
    2.59 +        Content desc = htmlWriter.commentTagsToContent(throwsTag, null,
    2.60              throwsTag.inlineTags(), false);
    2.61          if (desc != null && !desc.isEmpty()) {
    2.62              body.addContent(" - ");
    2.63 -            body.addContent(new RawHtml(desc));
    2.64 +            body.addContent(desc);
    2.65          }
    2.66          HtmlTree res2 = HtmlTree.DD(body);
    2.67          return new TagletOutputImpl(res2);
    2.68 @@ -337,8 +337,8 @@
    2.69       */
    2.70      public TagletOutputImpl commentTagsToOutput(Tag holderTag,
    2.71          Doc holderDoc, Tag[] tags, boolean isFirstSentence) {
    2.72 -        return new TagletOutputImpl(new RawHtml(htmlWriter.commentTagsToString(
    2.73 -            holderTag, holderDoc, tags, isFirstSentence)));
    2.74 +        return new TagletOutputImpl(htmlWriter.commentTagsToContent(
    2.75 +            holderTag, holderDoc, tags, isFirstSentence));
    2.76      }
    2.77  
    2.78      /**

mercurial