--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractExecutableMemberWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -40,12 +40,16 @@
import javax.lang.model.util.SimpleTypeVisitor9;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocletConstants;
-import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.*;
+import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.EXECUTABLE_MEMBER_PARAM;
+import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.MEMBER;
+import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.MEMBER_TYPE_PARAMS;
+import static jdk.javadoc.internal.doclets.formats.html.LinkInfoImpl.Kind.RECEIVER_TYPE;
/**
* Print method and constructor info.
@@ -79,7 +83,7 @@
Content typeParameters = getTypeParameters(member);
if (!typeParameters.isEmpty()) {
htmltree.add(typeParameters);
- htmltree.add(Contents.SPACE);
+ htmltree.add(Entity.NO_BREAK_SPACE);
}
}
@@ -107,7 +111,7 @@
}
String signature = utils.flatSignature((ExecutableElement) member);
if (signature.length() > 2) {
- deprecatedLinkContent.add(Contents.ZERO_WIDTH_SPACE);
+ deprecatedLinkContent.add(Entity.ZERO_WIDTH_SPACE);
}
deprecatedLinkContent.add(signature);
@@ -160,7 +164,7 @@
param.asType()).varargs(isVarArg));
tree.add(link);
if(name(param).length() > 0) {
- tree.add(Contents.SPACE);
+ tree.add(Entity.NO_BREAK_SPACE);
tree.add(name(param));
}
}
@@ -176,11 +180,11 @@
protected void addReceiverAnnotations(ExecutableElement member, TypeMirror rcvrType,
List<? extends AnnotationMirror> annotationMirrors, Content tree) {
writer.addReceiverAnnotationInfo(member, rcvrType, annotationMirrors, tree);
- tree.add(Contents.SPACE);
+ tree.add(Entity.NO_BREAK_SPACE);
tree.add(utils.getTypeName(rcvrType, false));
LinkInfoImpl linkInfo = new LinkInfoImpl(configuration, RECEIVER_TYPE, rcvrType);
tree.add(writer.getTypeParameterLinks(linkInfo));
- tree.add(Contents.SPACE);
+ tree.add(Entity.NO_BREAK_SPACE);
tree.add("this");
}
@@ -254,7 +258,7 @@
if (paramTree.isEmpty()) {
htmltree.add("()");
} else {
- htmltree.add(Contents.ZERO_WIDTH_SPACE);
+ htmltree.add(Entity.ZERO_WIDTH_SPACE);
htmltree.add("(");
htmltree.add(paramTree);
paramTree.add(")");
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractIndexWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,9 +25,13 @@
package jdk.javadoc.internal.doclets.formats.html;
-import java.io.*;
-import java.util.*;
-import java.util.zip.*;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.Writer;
+import java.util.Collection;
+import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
@@ -37,6 +41,7 @@
import javax.lang.model.util.SimpleElementVisitor9;
import com.sun.source.doctree.DocTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -338,7 +343,7 @@
dlTree.add(dt);
Content dd = new HtmlTree(HtmlTag.DD);
if (sii.getDescription().isEmpty()) {
- dd.add(Contents.SPACE);
+ dd.add(Entity.NO_BREAK_SPACE);
} else {
dd.add(sii.getDescription());
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,10 +25,10 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
import java.util.stream.Collectors;
import javax.lang.model.element.Element;
@@ -39,18 +39,26 @@
import javax.lang.model.type.TypeMirror;
import com.sun.source.doctree.DocTree;
+
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Links;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.Resources;
import jdk.javadoc.internal.doclets.toolkit.taglets.DeprecatedTaglet;
import jdk.javadoc.internal.doclets.toolkit.util.Utils;
-import static javax.lang.model.element.Modifier.*;
+import static javax.lang.model.element.Modifier.ABSTRACT;
+import static javax.lang.model.element.Modifier.NATIVE;
+import static javax.lang.model.element.Modifier.PUBLIC;
+import static javax.lang.model.element.Modifier.STRICTFP;
+import static javax.lang.model.element.Modifier.SYNCHRONIZED;
/**
* The base class for member writers.
@@ -256,7 +264,7 @@
if (!set.isEmpty()) {
String mods = set.stream().map(Modifier::toString).collect(Collectors.joining(" "));
htmltree.add(mods);
- htmltree.add(Contents.SPACE);
+ htmltree.add(Entity.NO_BREAK_SPACE);
}
}
@@ -284,7 +292,7 @@
addModifier(member, code);
if (type == null) {
code.add(utils.isClass(member) ? "class" : "interface");
- code.add(Contents.SPACE);
+ code.add(Entity.NO_BREAK_SPACE);
} else {
List<? extends TypeParameterElement> list = utils.isExecutableElement(member)
? ((ExecutableElement)member).getTypeParameters()
@@ -297,7 +305,7 @@
if (typeParameters.charCount() > 10) {
code.add(new HtmlTree(HtmlTag.BR));
} else {
- code.add(Contents.SPACE);
+ code.add(Entity.NO_BREAK_SPACE);
}
code.add(
writer.getLink(new LinkInfoImpl(configuration,
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -31,6 +31,7 @@
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -138,7 +139,7 @@
writer.getLink(new LinkInfoImpl(configuration,
LinkInfoImpl.Kind.MEMBER, getType(member)));
pre.add(link);
- pre.add(Contents.SPACE);
+ pre.add(Entity.NO_BREAK_SPACE);
if (configuration.linksource) {
Content memberName = new StringContent(name(member));
writer.addSrcLink(member, memberName, pre);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -31,6 +31,7 @@
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -142,7 +143,7 @@
writer.getLink(new LinkInfoImpl(configuration,
LinkInfoImpl.Kind.MEMBER, getType(member)));
pre.add(link);
- pre.add(Contents.SPACE);
+ pre.add(Entity.NO_BREAK_SPACE);
if (configuration.linksource) {
Content memberName = new StringContent(name(member));
writer.addSrcLink(member, memberName, pre);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -32,6 +32,7 @@
import javax.lang.model.element.TypeElement;
import com.sun.source.doctree.DocTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -101,7 +102,7 @@
ModuleElement mdle = configuration.docEnv.getElementUtils().getModuleOf(annotationType);
Content typeModuleLabel = HtmlTree.SPAN(HtmlStyle.moduleLabelInType, contents.moduleLabel);
Content moduleNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, typeModuleLabel);
- moduleNameDiv.add(Contents.SPACE);
+ moduleNameDiv.add(Entity.NO_BREAK_SPACE);
moduleNameDiv.add(getModuleLink(mdle, new StringContent(mdle.getQualifiedName())));
div.add(moduleNameDiv);
}
@@ -109,7 +110,7 @@
if (!pkg.isUnnamed()) {
Content typePackageLabel = HtmlTree.SPAN(HtmlStyle.packageLabelInType, contents.packageLabel);
Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, typePackageLabel);
- pkgNameDiv.add(Contents.SPACE);
+ pkgNameDiv.add(Entity.NO_BREAK_SPACE);
Content pkgNameContent = getPackageLink(pkg, new StringContent(utils.getPackageName(pkg)));
pkgNameDiv.add(pkgNameContent);
div.add(pkgNameDiv);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,7 +25,11 @@
package jdk.javadoc.internal.doclets.formats.html;
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.Element;
@@ -36,6 +40,7 @@
import javax.lang.model.util.SimpleElementVisitor8;
import com.sun.source.doctree.DocTree;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -122,7 +127,7 @@
ModuleElement mdle = configuration.docEnv.getElementUtils().getModuleOf(typeElement);
Content classModuleLabel = HtmlTree.SPAN(HtmlStyle.moduleLabelInType, contents.moduleLabel);
Content moduleNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classModuleLabel);
- moduleNameDiv.add(Contents.SPACE);
+ moduleNameDiv.add(Entity.NO_BREAK_SPACE);
moduleNameDiv.add(getModuleLink(mdle,
new StringContent(mdle.getQualifiedName())));
div.add(moduleNameDiv);
@@ -131,7 +136,7 @@
if (!pkg.isUnnamed()) {
Content classPackageLabel = HtmlTree.SPAN(HtmlStyle.packageLabelInType, contents.packageLabel);
Content pkgNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classPackageLabel);
- pkgNameDiv.add(Contents.SPACE);
+ pkgNameDiv.add(Entity.NO_BREAK_SPACE);
Content pkgNameContent = getPackageLink(pkg,
new StringContent(utils.getPackageName(pkg)));
pkgNameDiv.add(pkgNameContent);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,10 +25,8 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
-import java.util.*;
+import java.util.Collection;
+import java.util.Set;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.PackageElement;
@@ -36,12 +34,15 @@
import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.ConstantsSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@@ -265,7 +266,7 @@
for (Modifier mod : member.getModifiers()) {
Content modifier = new StringContent(mod.toString());
code.add(modifier);
- code.add(Contents.SPACE);
+ code.add(Entity.NO_BREAK_SPACE);
}
Content type = getLink(new LinkInfoImpl(configuration,
LinkInfoImpl.Kind.CONSTANT_SUMMARY, member.asType()));
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -33,6 +33,7 @@
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -297,7 +298,7 @@
} else if (utils.isPrivate(member)) {
code.add("private ");
} else if (utils.isPublic(member)) {
- code.add(Contents.SPACE);
+ code.add(Entity.NO_BREAK_SPACE);
} else {
code.add(
resources.getText("doclet.Package_private"));
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/Contents.java Wed Apr 24 11:26:44 2019 -0700
@@ -32,8 +32,8 @@
import jdk.javadoc.internal.doclets.formats.html.markup.Comment;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.FixedStringContent;
-import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Resources;
@@ -52,8 +52,6 @@
* only created once per doclet-instance, instead of once per generated page.
*/
public class Contents {
- public static final Content SPACE = RawHtml.nbsp;
- public static final Content ZERO_WIDTH_SPACE = RawHtml.zws;
public final Content allClassesLabel;
public final Content allImplementedInterfacesLabel;
@@ -400,7 +398,7 @@
int p;
while ((p = text.indexOf(" ", start)) != -1) {
c.add(text.substring(start, p));
- c.add(RawHtml.nbsp);
+ c.add(Entity.NO_BREAK_SPACE);
start = p + 1;
}
c.add(text.substring(start));
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -33,6 +33,7 @@
import javax.lang.model.element.VariableElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -248,7 +249,7 @@
}
Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
label);
- labelHeading.add(Contents.SPACE);
+ labelHeading.add(Entity.NO_BREAK_SPACE);
labelHeading.add(classLink);
inheritedTree.add(labelHeading);
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,11 +25,13 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Head;
-import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -69,8 +71,10 @@
import com.sun.source.doctree.SystemPropertyTree;
import com.sun.source.doctree.TextTree;
import com.sun.source.util.SimpleDocTreeVisitor;
-
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
+import jdk.javadoc.internal.doclets.formats.html.markup.Head;
+import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlDocument;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
@@ -79,6 +83,7 @@
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.Script;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter;
import jdk.javadoc.internal.doclets.toolkit.ClassWriter;
import jdk.javadoc.internal.doclets.toolkit.Content;
@@ -97,7 +102,12 @@
import jdk.javadoc.internal.doclets.toolkit.util.Utils;
import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable;
-import static com.sun.source.doctree.DocTree.Kind.*;
+import static com.sun.source.doctree.DocTree.Kind.CODE;
+import static com.sun.source.doctree.DocTree.Kind.COMMENT;
+import static com.sun.source.doctree.DocTree.Kind.LINK;
+import static com.sun.source.doctree.DocTree.Kind.LINK_PLAIN;
+import static com.sun.source.doctree.DocTree.Kind.SEE;
+import static com.sun.source.doctree.DocTree.Kind.TEXT;
import static jdk.javadoc.internal.doclets.toolkit.util.CommentHelper.SPACER;
@@ -502,7 +512,7 @@
*/
public Content getTableCaption(Content title) {
Content captionSpan = HtmlTree.SPAN(title);
- Content space = Contents.SPACE;
+ Content space = Entity.NO_BREAK_SPACE;
Content tabSpan = HtmlTree.SPAN(HtmlStyle.tabEnd, space);
Content caption = HtmlTree.CAPTION(captionSpan);
caption.add(tabSpan);
@@ -1226,7 +1236,7 @@
htmltree.add(div);
}
if (tags.isEmpty()) {
- htmltree.add(Contents.SPACE);
+ htmltree.add(Entity.NO_BREAK_SPACE);
}
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkFactoryImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/LinkFactoryImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -35,6 +35,7 @@
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.toolkit.BaseConfiguration;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.Resources;
@@ -162,7 +163,7 @@
for (TypeMirror t : vars) {
if (many) {
links.add(",");
- links.add(Contents.ZERO_WIDTH_SPACE);
+ links.add(Entity.ZERO_WIDTH_SPACE);
}
links.add(getTypeParameterLink(linkInfo, t));
many = true;
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -34,6 +34,7 @@
import javax.lang.model.type.TypeMirror;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -190,7 +191,7 @@
utils.isClass(holder)
? contents.descfrmClassLabel
: contents.descfrmInterfaceLabel);
- descfrmLabel.add(Contents.SPACE);
+ descfrmLabel.add(Entity.NO_BREAK_SPACE);
descfrmLabel.add(codelLink);
methodDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
writer.addInlineComment(method, methodDocTree);
@@ -297,7 +298,7 @@
}
Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
label);
- labelHeading.add(Contents.SPACE);
+ labelHeading.add(Entity.NO_BREAK_SPACE);
labelHeading.add(classLink);
inheritedTree.add(labelHeading);
}
@@ -353,9 +354,9 @@
.where(writer.links.getName(writer.getAnchor(method))).label(method.getSimpleName()));
Content codeMethLink = HtmlTree.CODE(methlink);
Content dd = HtmlTree.DD(codeMethLink);
- dd.add(Contents.SPACE);
+ dd.add(Entity.NO_BREAK_SPACE);
dd.add(writer.contents.inClass);
- dd.add(Contents.SPACE);
+ dd.add(Entity.NO_BREAK_SPACE);
dd.add(codeOverridenTypeLink);
dl.add(dd);
}
@@ -389,9 +390,9 @@
implementedMeth.getSimpleName(), false);
Content codeMethLink = HtmlTree.CODE(methlink);
Content dd = HtmlTree.DD(codeMethLink);
- dd.add(Contents.SPACE);
+ dd.add(Entity.NO_BREAK_SPACE);
dd.add(contents.inInterface);
- dd.add(Contents.SPACE);
+ dd.add(Entity.NO_BREAK_SPACE);
dd.add(codeIntfacLink);
dl.add(dd);
}
@@ -409,7 +410,7 @@
Content linkContent = writer.getLink(
new LinkInfoImpl(configuration, LinkInfoImpl.Kind.RETURN_TYPE, type));
htmltree.add(linkContent);
- htmltree.add(Contents.SPACE);
+ htmltree.add(Entity.NO_BREAK_SPACE);
}
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,9 +25,6 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -46,6 +43,7 @@
import com.sun.source.doctree.DocTree;
import jdk.javadoc.doclet.DocletEnvironment.ModuleMode;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -53,6 +51,8 @@
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.RawHtml;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.ModuleSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper;
@@ -209,7 +209,7 @@
? contents.openModuleLabel : contents.moduleLabel;
Content tHeading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true,
HtmlStyle.title, label);
- tHeading.add(Contents.SPACE);
+ tHeading.add(Entity.NO_BREAK_SPACE);
Content moduleHead = new RawHtml(heading);
tHeading.add(moduleHead);
div.add(tHeading);
@@ -534,7 +534,7 @@
* Add the list of modules.
*
* @param mdleMap map of modules and modifiers
- * @param tbody the content tree to which the list will be added
+ * @param table the table to which the list will be added
*/
private void addModulesList(Map<ModuleElement, Content> mdleMap, Table table) {
for (ModuleElement m : mdleMap.keySet()) {
@@ -776,7 +776,7 @@
addSummaryComment(t, summary);
}
} else {
- summary.add(Contents.SPACE);
+ summary.add(Entity.NO_BREAK_SPACE);
}
table.addRow(typeLinkContent, summary);
}
@@ -802,9 +802,9 @@
description = providesTrees.get(srv);
desc.add((description != null && !description.isEmpty())
? HtmlTree.DIV(HtmlStyle.block, description)
- : Contents.SPACE);
+ : Entity.NO_BREAK_SPACE);
} else {
- desc.add(Contents.SPACE);
+ desc.add(Entity.NO_BREAK_SPACE);
}
// Only display the implementation details in the "all" mode.
if (moduleMode == ModuleMode.ALL && !implSet.isEmpty()) {
@@ -812,7 +812,7 @@
desc.add("(");
HtmlTree implSpan = HtmlTree.SPAN(HtmlStyle.implementationLabel, contents.implementation);
desc.add(implSpan);
- desc.add(Contents.SPACE);
+ desc.add(Entity.NO_BREAK_SPACE);
String sep = "";
for (TypeElement impl : implSet) {
desc.add(sep);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -32,6 +32,7 @@
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
@@ -154,7 +155,7 @@
: resources.getText("doclet.Nested_Classes_Interfaces_Inherited_From_Class"));
}
Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.SUMMARY_HEADING, label);
- labelHeading.add(Contents.SPACE);
+ labelHeading.add(Entity.NO_BREAK_SPACE);
labelHeading.add(classLink);
inheritedTree.add(labelHeading);
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,21 +25,24 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
-import java.util.*;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.TreeSet;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper;
import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
@@ -180,7 +183,7 @@
if (pkg != null && !pkg.isUnnamed()) {
addSummaryComment(pkg, summary);
} else {
- summary.add(Contents.SPACE);
+ summary.add(Entity.NO_BREAK_SPACE);
}
table.addRow(packageLink, summary);
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,10 +25,8 @@
package jdk.javadoc.internal.doclets.formats.html;
-import jdk.javadoc.internal.doclets.formats.html.markup.Table;
-import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
-
-import java.util.*;
+import java.util.List;
+import java.util.SortedSet;
import javax.lang.model.element.ModuleElement;
import javax.lang.model.element.PackageElement;
@@ -36,12 +34,15 @@
import com.sun.source.doctree.DocTree;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
+import jdk.javadoc.internal.doclets.formats.html.markup.Table;
+import jdk.javadoc.internal.doclets.formats.html.markup.TableHeader;
import jdk.javadoc.internal.doclets.toolkit.Content;
import jdk.javadoc.internal.doclets.toolkit.PackageSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper;
@@ -120,7 +121,7 @@
ModuleElement mdle = configuration.docEnv.getElementUtils().getModuleOf(packageElement);
Content classModuleLabel = HtmlTree.SPAN(HtmlStyle.moduleLabelInPackage, contents.moduleLabel);
Content moduleNameDiv = HtmlTree.DIV(HtmlStyle.subTitle, classModuleLabel);
- moduleNameDiv.add(Contents.SPACE);
+ moduleNameDiv.add(Entity.NO_BREAK_SPACE);
moduleNameDiv.add(getModuleLink(mdle,
new StringContent(mdle.getQualifiedName().toString())));
div.add(moduleNameDiv);
@@ -130,7 +131,7 @@
div.add(annotationContent);
Content tHeading = HtmlTree.HEADING(Headings.PAGE_TITLE_HEADING, true,
HtmlStyle.title, contents.packageLabel);
- tHeading.add(Contents.SPACE);
+ tHeading.add(Entity.NO_BREAK_SPACE);
Content packageHead = new StringContent(heading);
tHeading.add(packageHead);
div.add(tHeading);
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,12 +25,12 @@
package jdk.javadoc.internal.doclets.formats.html;
-
import javax.lang.model.element.Element;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -41,7 +41,6 @@
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter;
import jdk.javadoc.internal.doclets.toolkit.PropertyWriter;
-
/**
* Writes property documentation in HTML format.
*
@@ -161,7 +160,7 @@
utils.isClass(holder)
? contents.descfrmClassLabel
: contents.descfrmInterfaceLabel);
- descfrmLabel.add(Contents.SPACE);
+ descfrmLabel.add(Entity.NO_BREAK_SPACE);
descfrmLabel.add(codeLink);
propertyDocTree.add(HtmlTree.DIV(HtmlStyle.block, descfrmLabel));
writer.addInlineComment(property, propertyDocTree);
@@ -263,7 +262,7 @@
}
Content labelHeading = HtmlTree.HEADING(Headings.TypeDeclaration.INHERITED_SUMMARY_HEADING,
label);
- labelHeading.add(Contents.SPACE);
+ labelHeading.add(Entity.NO_BREAK_SPACE);
labelHeading.add(classLink);
inheritedTree.add(labelHeading);
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SerializedFormWriterImpl.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,10 +25,11 @@
package jdk.javadoc.internal.doclets.formats.html;
-import java.util.*;
+import java.util.Set;
import javax.lang.model.element.TypeElement;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -121,7 +122,7 @@
public Content getPackageHeader(String packageName) {
Content heading = HtmlTree.HEADING(Headings.SerializedForm.PACKAGE_HEADING, true,
contents.packageLabel);
- heading.add(Contents.SPACE);
+ heading.add(Entity.NO_BREAK_SPACE);
heading.add(packageName);
return heading;
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SingleIndexWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -25,8 +25,10 @@
package jdk.javadoc.internal.doclets.formats.html;
-import java.util.*;
+import java.util.Set;
+import java.util.TreeSet;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -140,13 +142,13 @@
contentTree.add(
links.createLink(getNameForIndex(unicode),
new StringContent(unicode)));
- contentTree.add(Contents.SPACE);
+ contentTree.add(Entity.NO_BREAK_SPACE);
}
contentTree.add(new HtmlTree(HtmlTag.BR));
contentTree.add(links.createLink(DocPaths.ALLCLASSES_INDEX,
contents.allClassesLabel));
if (!configuration.packages.isEmpty()) {
- contentTree.add(Contents.SPACE);
+ contentTree.add(Entity.NO_BREAK_SPACE);
contentTree.add(links.createLink(DocPaths.ALLPACKAGES_INDEX,
contents.allPackagesLabel));
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/SplitIndexWriter.java Wed Apr 24 11:26:44 2019 -0700
@@ -32,6 +32,7 @@
import java.util.Set;
import java.util.TreeSet;
+import jdk.javadoc.internal.doclets.formats.html.markup.Entity;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
@@ -163,13 +164,13 @@
int j = i + 1;
contentTree.add(links.createLink(DocPaths.indexN(j),
new StringContent(indexElements.get(i).toString())));
- contentTree.add(Contents.SPACE);
+ contentTree.add(Entity.NO_BREAK_SPACE);
}
contentTree.add(new HtmlTree(HtmlTag.BR));
contentTree.add(links.createLink(pathToRoot.resolve(DocPaths.ALLCLASSES_INDEX),
contents.allClassesLabel));
if (!configuration.packages.isEmpty()) {
- contentTree.add(Contents.SPACE);
+ contentTree.add(Entity.NO_BREAK_SPACE);
contentTree.add(links.createLink(pathToRoot.resolve(DocPaths.ALLPACKAGES_INDEX),
contents.allPackagesLabel));
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Entity.java Wed Apr 24 11:26:44 2019 -0700
@@ -0,0 +1,125 @@
+/*
+ * Copyright (c) 2019, 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. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * 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.
+ */
+
+package jdk.javadoc.internal.doclets.formats.html.markup;
+
+import jdk.javadoc.internal.doclets.toolkit.Content;
+
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * A representation of HTML entities.
+ */
+public class Entity extends Content {
+ public static final Entity LESS_THAN = new Entity("<");
+ public static final Entity GREATER_THAN = new Entity(">");
+ public static final Entity AMPERSAND = new Entity("&");
+ public static final Entity NO_BREAK_SPACE = new Entity(" ");
+ public static final Entity ZERO_WIDTH_SPACE = new Entity("​") {
+ @Override
+ public int charCount() {
+ return 0;
+ }
+ };
+
+ public final String text;
+
+ private Entity(String text) {
+ this.text = text;
+ }
+
+ @Override
+ public void add(Content content) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public void add(CharSequence stringContent) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean write(Writer writer, boolean atNewline) throws IOException {
+ writer.write(text);
+ return false;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public int charCount() {
+ return 1;
+ }
+
+
+ /**
+ * Escapes the special HTML characters in a given string using the appropriate
+ * entities.
+ *
+ * @param s the string to escape
+ * @return the string with all of the HTML characters escaped
+ */
+ static String escapeHtmlChars(CharSequence s) {
+ for (int i = 0; i < s.length(); i++) {
+ char ch = s.charAt(i);
+ switch (ch) {
+ // only start building a new string if we need to
+ case '<': case '>': case '&':
+ StringBuilder sb = new StringBuilder(s.subSequence(0, i));
+ escapeHtmlChars(s, i, sb);
+ return sb.toString();
+ }
+ }
+ return s.toString();
+ }
+
+ /**
+ * Escapes the special HTML characters in a given string using the appropriate
+ * entities, appending the results into a string builder.
+ *
+ * @param s the string
+ * @param sb the string builder
+ */
+ static void escapeHtmlChars(CharSequence s, StringBuilder sb) {
+ escapeHtmlChars(s, 0, sb);
+ }
+
+ private static void escapeHtmlChars(CharSequence s, int start, StringBuilder sb) {
+ for (int i = start ; i < s.length(); i++) {
+ char ch = s.charAt(i);
+ switch (ch) {
+ case '<': sb.append(Entity.LESS_THAN.text); break;
+ case '>': sb.append(Entity.GREATER_THAN.text); break;
+ case '&': sb.append(Entity.AMPERSAND.text); break;
+ default: sb.append(ch); break;
+ }
+ }
+ }
+
+}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/FixedStringContent.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/FixedStringContent.java Wed Apr 24 11:26:44 2019 -0700
@@ -47,9 +47,7 @@
* @param content content for the object
*/
public FixedStringContent(CharSequence content) {
- string = needEscape(content)
- ? escape(content)
- : content.toString();
+ string = Entity.escapeHtmlChars(content);
}
/**
@@ -105,29 +103,4 @@
return string.endsWith(DocletConstants.NL);
}
- private boolean needEscape(CharSequence cs) {
- for (int i = 0; i < cs.length(); i++) {
- switch (cs.charAt(i)) {
- case '<':
- case '>':
- case '&':
- return true;
- }
- }
- return false;
- }
- private String escape(CharSequence s) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < s.length(); i++) {
- char ch = s.charAt(i);
- switch (ch) {
- case '<': sb.append("<"); break;
- case '>': sb.append(">"); break;
- case '&': sb.append("&"); break;
- default: sb.append(ch); break;
- }
- }
- return sb.toString();
- }
-
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Wed Apr 24 11:26:44 2019 -0700
@@ -100,7 +100,7 @@
public HtmlTree put(HtmlAttr attrName, String attrValue) {
if (attrs.isEmpty())
attrs = new LinkedHashMap<>(3);
- attrs.put(nullCheck(attrName), escapeHtmlChars(attrValue));
+ attrs.put(nullCheck(attrName), Entity.escapeHtmlChars(attrValue));
return this;
}
@@ -188,35 +188,6 @@
return n;
}
- /**
- * Given a string, escape all special HTML characters and
- * return the result.
- *
- * @param s The string to check.
- * @return the original string with all of the HTML characters escaped.
- */
- private static String escapeHtmlChars(String s) {
- for (int i = 0; i < s.length(); i++) {
- char ch = s.charAt(i);
- switch (ch) {
- // only start building a new string if we need to
- case '<': case '>': case '&':
- StringBuilder sb = new StringBuilder(s.substring(0, i));
- for ( ; i < s.length(); i++) {
- ch = s.charAt(i);
- switch (ch) {
- case '<': sb.append("<"); break;
- case '>': sb.append(">"); break;
- case '&': sb.append("&"); break;
- default: sb.append(ch); break;
- }
- }
- return sb.toString();
- }
- }
- return s;
- }
-
/*
* The sets of ASCII URI characters to be left unencoded.
* See "Uniform Resource Identifier (URI): Generic Syntax"
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Navigation.java Wed Apr 24 11:26:44 2019 -0700
@@ -429,7 +429,7 @@
}
if (!listContents.isEmpty()) {
Content li = HtmlTree.LI(contents.summaryLabel);
- li.add(Contents.SPACE);
+ li.add(Entity.NO_BREAK_SPACE);
tree.add(li);
addListToNav(listContents, tree);
}
@@ -461,7 +461,7 @@
}
if (!listContents.isEmpty()) {
Content li = HtmlTree.LI(contents.moduleSubNavLabel);
- li.add(Contents.SPACE);
+ li.add(Entity.NO_BREAK_SPACE);
tree.add(li);
addListToNav(listContents, tree);
}
@@ -665,7 +665,7 @@
}
if (!listContents.isEmpty()) {
Content li = HtmlTree.LI(contents.detailLabel);
- li.add(Contents.SPACE);
+ li.add(Entity.NO_BREAK_SPACE);
tree.add(li);
addListToNav(listContents, tree);
}
@@ -801,9 +801,9 @@
int count = 0;
for (Content liContent : listContents) {
if (count < listContents.size() - 1) {
- liContent.add(Contents.SPACE);
+ liContent.add(Entity.NO_BREAK_SPACE);
liContent.add("|");
- liContent.add(Contents.SPACE);
+ liContent.add(Entity.NO_BREAK_SPACE);
}
tree.add(liContent);
count++;
@@ -1005,7 +1005,7 @@
fixedNavDiv.add(queue.poll());
fixedNavDiv.add(Position.TOP.endOfNav());
tree.add(fixedNavDiv);
- HtmlTree paddingDiv = HtmlTree.DIV(HtmlStyle.navPadding, Contents.SPACE);
+ HtmlTree paddingDiv = HtmlTree.DIV(HtmlStyle.navPadding, Entity.NO_BREAK_SPACE);
tree.add(paddingDiv);
addFixedNavScript(tree);
} else {
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/RawHtml.java Wed Apr 24 11:26:44 2019 -0700
@@ -45,10 +45,6 @@
private final String rawHtmlContent;
- public static final Content nbsp = new RawHtml(" ");
-
- public static final Content zws = new RawHtml("​");
-
/**
* Constructor to construct a RawHtml object.
*
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/StringContent.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/StringContent.java Wed Apr 24 11:26:44 2019 -0700
@@ -59,7 +59,7 @@
*/
public StringContent(CharSequence initialContent) {
stringContent = new StringBuilder();
- appendChars(initialContent);
+ Entity.escapeHtmlChars(initialContent, stringContent);
}
/**
@@ -81,7 +81,7 @@
*/
@Override
public void add(CharSequence strContent) {
- appendChars(strContent);
+ Entity.escapeHtmlChars(strContent, stringContent);
}
/**
@@ -114,16 +114,4 @@
out.write(s);
return s.endsWith(DocletConstants.NL);
}
-
- private void appendChars(CharSequence s) {
- for (int i = 0; i < s.length(); i++) {
- char ch = s.charAt(i);
- switch (ch) {
- case '<': stringContent.append("<"); break;
- case '>': stringContent.append(">"); break;
- case '&': stringContent.append("&"); break;
- default: stringContent.append(ch); break;
- }
- }
- }
}
--- a/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java Wed Apr 24 10:20:25 2019 -0400
+++ b/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/Table.java Wed Apr 24 11:26:44 2019 -0700
@@ -531,6 +531,6 @@
private HtmlTree getCaption(Content title) {
return new HtmlTree(HtmlTag.CAPTION,
HtmlTree.SPAN(title),
- HtmlTree.SPAN(tabEnd, Contents.SPACE));
+ HtmlTree.SPAN(tabEnd, Entity.NO_BREAK_SPACE));
}
}