mirror of
https://github.com/openjdk/jdk.git
synced 2026-03-16 19:03:22 +00:00
8000741: refactor javadoc to use abstraction to handle relative paths
Reviewed-by: darcy
This commit is contained in:
parent
848ec301f2
commit
296286534c
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2012, 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
|
||||
@ -46,7 +46,7 @@ package com.sun.javadoc;
|
||||
public interface SerialFieldTag extends Tag, Comparable<Object> {
|
||||
|
||||
/**
|
||||
* Return the serialziable field name.
|
||||
* Return the serializable field name.
|
||||
*/
|
||||
public String fieldName();
|
||||
|
||||
|
||||
@ -56,32 +56,18 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
|
||||
protected IndexBuilder indexbuilder;
|
||||
|
||||
/**
|
||||
* This constructor will be used by {@link SplitIndexWriter}. Initialises
|
||||
* This constructor will be used by {@link SplitIndexWriter}. Initializes
|
||||
* path to this file and relative path from this file.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param path Path to the file which is getting generated.
|
||||
* @param filename Name of the file which is getting genrated.
|
||||
* @param relpath Relative path from this file to the current directory.
|
||||
* @param indexbuilder Unicode based Index from {@link IndexBuilder}
|
||||
*/
|
||||
protected AbstractIndexWriter(ConfigurationImpl configuration,
|
||||
String path, String filename,
|
||||
String relpath, IndexBuilder indexbuilder)
|
||||
DocPath path,
|
||||
IndexBuilder indexbuilder)
|
||||
throws IOException {
|
||||
super(configuration, path, filename, relpath);
|
||||
this.indexbuilder = indexbuilder;
|
||||
}
|
||||
|
||||
/**
|
||||
* This Constructor will be used by {@link SingleIndexWriter}.
|
||||
*
|
||||
* @param filename Name of the file which is getting genrated.
|
||||
* @param indexbuilder Unicode based Index form {@link IndexBuilder}
|
||||
*/
|
||||
protected AbstractIndexWriter(ConfigurationImpl configuration,
|
||||
String filename, IndexBuilder indexbuilder)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
super(configuration, path);
|
||||
this.indexbuilder = indexbuilder;
|
||||
}
|
||||
|
||||
|
||||
@ -27,9 +27,11 @@ package com.sun.tools.doclets.formats.html;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
import com.sun.javadoc.*;
|
||||
import com.sun.tools.doclets.formats.html.markup.*;
|
||||
import com.sun.tools.doclets.internal.toolkit.*;
|
||||
import com.sun.tools.doclets.internal.toolkit.util.DocPath;
|
||||
|
||||
/**
|
||||
* Abstract class to generate the overview files in
|
||||
@ -52,14 +54,14 @@ public abstract class AbstractPackageIndexWriter extends HtmlDocletWriter {
|
||||
protected PackageDoc[] packages;
|
||||
|
||||
/**
|
||||
* Constructor. Also initialises the packages variable.
|
||||
* Constructor. Also initializes the packages variable.
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param filename Name of the package index file to be generated.
|
||||
*/
|
||||
public AbstractPackageIndexWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
DocPath filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
this.relativepathNoSlash = ".";
|
||||
packages = configuration.packages;
|
||||
}
|
||||
|
||||
|
||||
@ -56,45 +56,22 @@ public abstract class AbstractTreeWriter extends HtmlDocletWriter {
|
||||
private static final String LI_CIRCLE = "circle";
|
||||
|
||||
/**
|
||||
* Constructor initilises classtree variable. This constructor will be used
|
||||
* Constructor initializes classtree variable. This constructor will be used
|
||||
* while generating global tree file "overview-tree.html".
|
||||
*
|
||||
* @param configuration The current configuration
|
||||
* @param filename File to be generated.
|
||||
* @param classtree Tree built by {@link ClassTree}.
|
||||
* @throws IOException
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
protected AbstractTreeWriter(ConfigurationImpl configuration,
|
||||
String filename, ClassTree classtree)
|
||||
DocPath filename, ClassTree classtree)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
this.classtree = classtree;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create appropriate directory for the package and also initilise the
|
||||
* relative path from this generated file to the current or
|
||||
* the destination directory. This constructor will be used while
|
||||
* generating "package tree" file.
|
||||
*
|
||||
* @param path Directories in this path will be created if they are not
|
||||
* already there.
|
||||
* @param filename Name of the package tree file to be generated.
|
||||
* @param classtree The tree built using {@link ClassTree}.
|
||||
* for the package pkg.
|
||||
* @param pkg PackageDoc for which tree file will be generated.
|
||||
* @throws IOException
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
protected AbstractTreeWriter(ConfigurationImpl configuration,
|
||||
String path, String filename,
|
||||
ClassTree classtree, PackageDoc pkg)
|
||||
throws IOException {
|
||||
super(configuration,
|
||||
path, filename, DirectoryManager.getRelativePath(pkg.name()));
|
||||
this.classtree = classtree;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add each level of the class tree. For each sub-class or
|
||||
* sub-interface indents the next level information.
|
||||
|
||||
@ -50,16 +50,6 @@ import com.sun.tools.doclets.internal.toolkit.util.*;
|
||||
*/
|
||||
public class AllClassesFrameWriter extends HtmlDocletWriter {
|
||||
|
||||
/**
|
||||
* The name of the output file with frames
|
||||
*/
|
||||
public static final String OUTPUT_FILE_NAME_FRAMES = "allclasses-frame.html";
|
||||
|
||||
/**
|
||||
* The name of the output file without frames
|
||||
*/
|
||||
public static final String OUTPUT_FILE_NAME_NOFRAMES = "allclasses-noframe.html";
|
||||
|
||||
/**
|
||||
* Index of all the classes.
|
||||
*/
|
||||
@ -71,13 +61,16 @@ public class AllClassesFrameWriter extends HtmlDocletWriter {
|
||||
final HtmlTree BR = new HtmlTree(HtmlTag.BR);
|
||||
|
||||
/**
|
||||
* Construct AllClassesFrameWriter object. Also initilises the indexbuilder
|
||||
* Construct AllClassesFrameWriter object. Also initializes the indexbuilder
|
||||
* variable in this class.
|
||||
* @param configuration The current configuration
|
||||
* @param filename Path to the file which is getting generated.
|
||||
* @param indexbuilder Unicode based Index from {@link IndexBuilder}
|
||||
* @throws IOException
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
public AllClassesFrameWriter(ConfigurationImpl configuration,
|
||||
String filename, IndexBuilder indexbuilder)
|
||||
DocPath filename, IndexBuilder indexbuilder)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
this.indexbuilder = indexbuilder;
|
||||
@ -94,13 +87,13 @@ public class AllClassesFrameWriter extends HtmlDocletWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
IndexBuilder indexbuilder) {
|
||||
AllClassesFrameWriter allclassgen;
|
||||
String filename = OUTPUT_FILE_NAME_FRAMES;
|
||||
DocPath filename = DocPaths.ALLCLASSES_FRAME;
|
||||
try {
|
||||
allclassgen = new AllClassesFrameWriter(configuration,
|
||||
filename, indexbuilder);
|
||||
allclassgen.buildAllClassesFile(true);
|
||||
allclassgen.close();
|
||||
filename = OUTPUT_FILE_NAME_NOFRAMES;
|
||||
filename = DocPaths.ALLCLASSES_NOFRAME;
|
||||
allclassgen = new AllClassesFrameWriter(configuration,
|
||||
filename, indexbuilder);
|
||||
allclassgen.buildAllClassesFile(false);
|
||||
|
||||
@ -141,7 +141,7 @@ public class AnnotationTypeOptionalMemberWriterImpl extends
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", "annotation_type_optional_element_summary",
|
||||
return writer.getHyperLink("annotation_type_optional_element_summary",
|
||||
writer.getResource("doclet.navAnnotationTypeOptionalMember"));
|
||||
} else {
|
||||
return writer.getResource("doclet.navAnnotationTypeOptionalMember");
|
||||
|
||||
@ -260,7 +260,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", "annotation_type_required_element_summary",
|
||||
return writer.getHyperLink("annotation_type_required_element_summary",
|
||||
writer.getResource("doclet.navAnnotationTypeRequiredMember"));
|
||||
} else {
|
||||
return writer.getResource("doclet.navAnnotationTypeRequiredMember");
|
||||
@ -272,7 +272,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink("", "annotation_type_element_detail",
|
||||
liNav.addContent(writer.getHyperLink("annotation_type_element_detail",
|
||||
writer.getResource("doclet.navAnnotationTypeMember")));
|
||||
} else {
|
||||
liNav.addContent(writer.getResource("doclet.navAnnotationTypeMember"));
|
||||
|
||||
@ -65,13 +65,10 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
* @param prevType the previous class that was documented.
|
||||
* @param nextType the next class being documented.
|
||||
*/
|
||||
public AnnotationTypeWriterImpl (AnnotationTypeDoc annotationType,
|
||||
public AnnotationTypeWriterImpl(AnnotationTypeDoc annotationType,
|
||||
Type prevType, Type nextType)
|
||||
throws Exception {
|
||||
super(ConfigurationImpl.getInstance(),
|
||||
DirectoryManager.getDirectoryPath(annotationType.containingPackage()),
|
||||
annotationType.name() + ".html",
|
||||
DirectoryManager.getRelativePath(annotationType.containingPackage().name()));
|
||||
throws Exception {
|
||||
super(ConfigurationImpl.getInstance(), DocPath.forClass(annotationType));
|
||||
this.annotationType = annotationType;
|
||||
configuration.currentcd = annotationType.asClassDoc();
|
||||
this.prev = prevType;
|
||||
@ -84,7 +81,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
* @return a content tree for the package link
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink("package-summary.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY, "",
|
||||
packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -106,7 +103,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
* @return a content tree for the class use link
|
||||
*/
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
|
||||
Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), "", useLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -289,7 +286,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content treeLinkContent = getHyperLink("package-tree.html",
|
||||
Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
"", treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(treeLinkContent);
|
||||
return li;
|
||||
|
||||
@ -82,7 +82,6 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
final String methodUseTableSummary;
|
||||
final String constructorUseTableSummary;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
@ -91,10 +90,9 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
public ClassUseWriter(ConfigurationImpl configuration,
|
||||
ClassUseMapper mapper, String path,
|
||||
String filename, String relpath,
|
||||
ClassUseMapper mapper, DocPath filename,
|
||||
ClassDoc classdoc) throws IOException {
|
||||
super(configuration, path, filename, relpath);
|
||||
super(configuration, filename);
|
||||
this.classdoc = classdoc;
|
||||
if (mapper.classToPackageAnnotations.containsKey(classdoc.qualifiedName()))
|
||||
pkgToPackageAnnotations = new HashSet<PackageDoc>(mapper.classToPackageAnnotations.get(classdoc.qualifiedName()));
|
||||
@ -199,23 +197,19 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
ClassUseMapper mapper, ClassDoc classdoc) {
|
||||
ClassUseWriter clsgen;
|
||||
String path = DirectoryManager.getDirectoryPath(classdoc.
|
||||
containingPackage());
|
||||
path += "class-use" + DirectoryManager.URL_FILE_SEPARATOR;
|
||||
String filename = classdoc.name() + ".html";
|
||||
String pkgname = classdoc.containingPackage().name();
|
||||
pkgname += (pkgname.length() > 0)? ".class-use": "class-use";
|
||||
String relpath = DirectoryManager.getRelativePath(pkgname);
|
||||
DocPath path = DocPath.forPackage(classdoc)
|
||||
.resolve(DocPaths.CLASS_USE)
|
||||
.resolve(DocPath.forName(classdoc));
|
||||
try {
|
||||
clsgen = new ClassUseWriter(configuration,
|
||||
mapper, path, filename,
|
||||
relpath, classdoc);
|
||||
mapper, path,
|
||||
classdoc);
|
||||
clsgen.generateClassUseFile();
|
||||
clsgen.close();
|
||||
} catch (IOException exc) {
|
||||
configuration.standardmessage.
|
||||
error("doclet.exception_encountered",
|
||||
exc.toString(), filename);
|
||||
exc.toString(), path.getPath());
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
@ -359,7 +353,7 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
|
||||
Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
|
||||
getHyperLink("", pkg.name(), new StringContent(Util.getPackageName(pkg))));
|
||||
getHyperLink(pkg.name(), new StringContent(Util.getPackageName(pkg))));
|
||||
contentTree.addContent(tdFirst);
|
||||
HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
|
||||
tdLast.addStyle(HtmlStyle.colLast);
|
||||
@ -470,8 +464,8 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
* @return a content tree for the package link
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink("../package-summary.html", "",
|
||||
packageLabel);
|
||||
Content linkContent =
|
||||
getHyperLink(DocPath.parent.resolve(DocPaths.PACKAGE_SUMMARY), "", packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -506,8 +500,8 @@ public class ClassUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content linkContent = classdoc.containingPackage().isIncluded() ?
|
||||
getHyperLink("../package-tree.html", "", treeLabel) :
|
||||
getHyperLink(relativePath + "overview-tree.html", "", treeLabel);
|
||||
getHyperLink(DocPath.parent.resolve(DocPaths.PACKAGE_TREE), "", treeLabel) :
|
||||
getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE), "", treeLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
|
||||
@ -72,11 +72,8 @@ public class ClassWriterImpl extends SubWriterHolderWriter
|
||||
*/
|
||||
public ClassWriterImpl (ClassDoc classDoc,
|
||||
ClassDoc prevClass, ClassDoc nextClass, ClassTree classTree)
|
||||
throws Exception {
|
||||
super(ConfigurationImpl.getInstance(),
|
||||
DirectoryManager.getDirectoryPath(classDoc.containingPackage()),
|
||||
classDoc.name() + ".html",
|
||||
DirectoryManager.getRelativePath(classDoc.containingPackage().name()));
|
||||
throws Exception {
|
||||
super(ConfigurationImpl.getInstance(), DocPath.forClass(classDoc));
|
||||
this.classDoc = classDoc;
|
||||
configuration.currentcd = classDoc;
|
||||
this.classtree = classTree;
|
||||
@ -90,7 +87,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
|
||||
* @return a content tree for the package link
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink("package-summary.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY, "",
|
||||
packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -112,7 +109,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
|
||||
* @return a content tree for the class use link
|
||||
*/
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content linkContent = getHyperLink("class-use/" + filename, "", useLabel);
|
||||
Content linkContent = getHyperLink(DocPaths.CLASS_USE.resolve(filename), "", useLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -567,7 +564,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content treeLinkContent = getHyperLink("package-tree.html",
|
||||
Content treeLinkContent = getHyperLink(DocPaths.PACKAGE_TREE,
|
||||
"", treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(treeLinkContent);
|
||||
return li;
|
||||
|
||||
@ -61,11 +61,6 @@ public class ConfigurationImpl extends Configuration {
|
||||
*/
|
||||
public static final String BUILD_DATE = System.getProperty("java.version");
|
||||
|
||||
/**
|
||||
* The name of the constant values file.
|
||||
*/
|
||||
public static final String CONSTANTS_FILE_NAME = "constant-values.html";
|
||||
|
||||
/**
|
||||
* Argument for command line option "-header".
|
||||
*/
|
||||
@ -179,7 +174,7 @@ public class ConfigurationImpl extends Configuration {
|
||||
* First file to appear in the right-hand frame in the generated
|
||||
* documentation.
|
||||
*/
|
||||
public String topFile = "";
|
||||
public DocPath topFile = DocPath.empty;
|
||||
|
||||
/**
|
||||
* The classdoc for the class file getting generated.
|
||||
@ -447,18 +442,17 @@ public class ConfigurationImpl extends Configuration {
|
||||
return;
|
||||
}
|
||||
if (createoverview) {
|
||||
topFile = "overview-summary.html";
|
||||
topFile = DocPaths.OVERVIEW_SUMMARY;
|
||||
} else {
|
||||
if (packages.length == 1 && packages[0].name().equals("")) {
|
||||
if (root.classes().length > 0) {
|
||||
ClassDoc[] classarr = root.classes();
|
||||
Arrays.sort(classarr);
|
||||
ClassDoc cd = getValidClass(classarr);
|
||||
topFile = DirectoryManager.getPathToClass(cd);
|
||||
topFile = DocPath.forClass(cd);
|
||||
}
|
||||
} else {
|
||||
topFile = DirectoryManager.getPathToPackage(packages[0],
|
||||
"package-summary.html");
|
||||
topFile = DocPath.forPackage(packages[0]).resolve(DocPaths.PACKAGE_SUMMARY);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -69,7 +69,7 @@ public class ConstantsSummaryWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
public ConstantsSummaryWriterImpl(ConfigurationImpl configuration)
|
||||
throws IOException {
|
||||
super(configuration, ConfigurationImpl.CONSTANTS_FILE_NAME);
|
||||
super(configuration, DocPaths.CONSTANT_VALUES);
|
||||
this.configuration = configuration;
|
||||
constantsTableSummary = configuration.getText("doclet.Constants_Table_Summary",
|
||||
configuration.getText("doclet.Constants_Summary"));
|
||||
|
||||
@ -280,7 +280,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", "constructor_summary",
|
||||
return writer.getHyperLink("constructor_summary",
|
||||
writer.getResource("doclet.navConstructor"));
|
||||
} else {
|
||||
return writer.getResource("doclet.navConstructor");
|
||||
@ -292,7 +292,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink("", "constructor_detail",
|
||||
liNav.addContent(writer.getHyperLink("constructor_detail",
|
||||
writer.getResource("doclet.navConstructor")));
|
||||
} else {
|
||||
liNav.addContent(writer.getResource("doclet.navConstructor"));
|
||||
|
||||
@ -95,7 +95,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
|
||||
* @param filename the file to be generated.
|
||||
*/
|
||||
public DeprecatedListWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
DocPath filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
this.configuration = configuration;
|
||||
NestedClassWriterImpl classW = new NestedClassWriterImpl(this);
|
||||
@ -116,7 +116,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
|
||||
* @param configuration the current configuration of the doclet.
|
||||
*/
|
||||
public static void generate(ConfigurationImpl configuration) {
|
||||
String filename = "deprecated-list.html";
|
||||
DocPath filename = DocPaths.DEPRECATED_LIST;
|
||||
try {
|
||||
DeprecatedListWriter depr =
|
||||
new DeprecatedListWriter(configuration, filename);
|
||||
@ -180,7 +180,7 @@ public class DeprecatedListWriter extends SubWriterHolderWriter {
|
||||
private void addIndexLink(DeprecatedAPIListBuilder builder,
|
||||
int type, Content contentTree) {
|
||||
if (builder.hasDocumentation(type)) {
|
||||
Content li = HtmlTree.LI(getHyperLink("#" + ANCHORS[type],
|
||||
Content li = HtmlTree.LI(getHyperLink(ANCHORS[type],
|
||||
getResource(HEADING_KEYS[type])));
|
||||
contentTree.addContent(li);
|
||||
}
|
||||
|
||||
@ -263,7 +263,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", (cd == null)?
|
||||
return writer.getHyperLink((cd == null)?
|
||||
"enum_constant_summary":
|
||||
"enum_constants_inherited_from_class_" +
|
||||
configuration().getClassName(cd),
|
||||
@ -278,7 +278,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink("", "enum_constant_detail",
|
||||
liNav.addContent(writer.getHyperLink("enum_constant_detail",
|
||||
writer.getResource("doclet.navEnum")));
|
||||
} else {
|
||||
liNav.addContent(writer.getResource("doclet.navEnum"));
|
||||
|
||||
@ -293,7 +293,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", (cd == null)?
|
||||
return writer.getHyperLink((cd == null)?
|
||||
"field_summary":
|
||||
"fields_inherited_from_class_" +
|
||||
configuration().getClassName(cd),
|
||||
@ -308,7 +308,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink("", "field_detail",
|
||||
liNav.addContent(writer.getHyperLink("field_detail",
|
||||
writer.getResource("doclet.navField")));
|
||||
} else {
|
||||
liNav.addContent(writer.getResource("doclet.navField"));
|
||||
|
||||
@ -63,7 +63,7 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
* @param filename File to be generated.
|
||||
*/
|
||||
public FrameOutputWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
DocPath filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
noOfPackages = configuration.packages.length;
|
||||
}
|
||||
@ -77,9 +77,9 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
*/
|
||||
public static void generate(ConfigurationImpl configuration) {
|
||||
FrameOutputWriter framegen;
|
||||
String filename = "";
|
||||
DocPath filename = DocPath.empty;
|
||||
try {
|
||||
filename = "index.html";
|
||||
filename = DocPaths.INDEX;
|
||||
framegen = new FrameOutputWriter(configuration, filename);
|
||||
framegen.generateFrameFile();
|
||||
framegen.close();
|
||||
@ -92,7 +92,7 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate the contants in the "index.html" file. Print the frame details
|
||||
* Generate the constants in the "index.html" file. Print the frame details
|
||||
* as well as warning if browser is not supporting the Html frames.
|
||||
*/
|
||||
protected void generateFrameFile() throws IOException {
|
||||
@ -155,8 +155,8 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
* @param contentTree the content tree to which the information will be added
|
||||
*/
|
||||
private void addAllPackagesFrameTag(Content contentTree) {
|
||||
HtmlTree frame = HtmlTree.FRAME("overview-frame.html", "packageListFrame",
|
||||
configuration.getText("doclet.All_Packages"));
|
||||
HtmlTree frame = HtmlTree.FRAME(DocPaths.OVERVIEW_FRAME.getPath(),
|
||||
"packageListFrame", configuration.getText("doclet.All_Packages"));
|
||||
contentTree.addContent(frame);
|
||||
}
|
||||
|
||||
@ -166,8 +166,8 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
* @param contentTree the content tree to which the information will be added
|
||||
*/
|
||||
private void addAllClassesFrameTag(Content contentTree) {
|
||||
HtmlTree frame = HtmlTree.FRAME("allclasses-frame.html", "packageFrame",
|
||||
configuration.getText("doclet.All_classes_and_interfaces"));
|
||||
HtmlTree frame = HtmlTree.FRAME(DocPaths.ALLCLASSES_FRAME.getPath(),
|
||||
"packageFrame", configuration.getText("doclet.All_classes_and_interfaces"));
|
||||
contentTree.addContent(frame);
|
||||
}
|
||||
|
||||
@ -177,7 +177,7 @@ public class FrameOutputWriter extends HtmlDocletWriter {
|
||||
* @param contentTree the content tree to which the information will be added
|
||||
*/
|
||||
private void addClassFrameTag(Content contentTree) {
|
||||
HtmlTree frame = HtmlTree.FRAME(configuration.topFile, "classFrame",
|
||||
HtmlTree frame = HtmlTree.FRAME(configuration.topFile.getPath(), "classFrame",
|
||||
configuration.getText("doclet.Package_class_and_interface_descriptions"),
|
||||
SCROLL_YES);
|
||||
contentTree.addContent(frame);
|
||||
|
||||
@ -49,7 +49,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
* @param filename File to be generated.
|
||||
*/
|
||||
public HelpWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
DocPath filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
}
|
||||
|
||||
@ -62,9 +62,9 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
*/
|
||||
public static void generate(ConfigurationImpl configuration) {
|
||||
HelpWriter helpgen;
|
||||
String filename = "";
|
||||
DocPath filename = DocPath.empty;
|
||||
try {
|
||||
filename = "help-doc.html";
|
||||
filename = DocPaths.HELP_DOC;
|
||||
helpgen = new HelpWriter(configuration, filename);
|
||||
helpgen.generateHelpFile();
|
||||
helpgen.close();
|
||||
@ -113,7 +113,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
getResource("doclet.Overview"));
|
||||
Content liOverview = HtmlTree.LI(HtmlStyle.blockList, overviewHeading);
|
||||
Content line3 = getResource("doclet.Help_line_3",
|
||||
getHyperLinkString("overview-summary.html",
|
||||
getHyperLinkString(DocPaths.OVERVIEW_SUMMARY,
|
||||
configuration.getText("doclet.Overview")));
|
||||
Content overviewPara = HtmlTree.P(line3);
|
||||
liOverview.addContent(overviewPara);
|
||||
@ -234,7 +234,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
getResource("doclet.Help_line_16"));
|
||||
Content liTree = HtmlTree.LI(HtmlStyle.blockList, treeHead);
|
||||
Content line17 = getResource("doclet.Help_line_17_with_tree_link",
|
||||
getHyperLinkString("overview-tree.html",
|
||||
getHyperLinkString(DocPaths.OVERVIEW_TREE,
|
||||
configuration.getText("doclet.Class_Hierarchy")));
|
||||
Content treePara = HtmlTree.P(line17);
|
||||
liTree.addContent(treePara);
|
||||
@ -252,7 +252,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
getResource("doclet.Deprecated_API"));
|
||||
Content liDeprecated = HtmlTree.LI(HtmlStyle.blockList, dHead);
|
||||
Content line20 = getResource("doclet.Help_line_20_with_deprecated_api_link",
|
||||
getHyperLinkString("deprecated-list.html",
|
||||
getHyperLinkString(DocPaths.DEPRECATED_LIST,
|
||||
configuration.getText("doclet.Deprecated_API")));
|
||||
Content dPara = HtmlTree.P(line20);
|
||||
liDeprecated.addContent(dPara);
|
||||
@ -261,10 +261,10 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
if (configuration.createindex) {
|
||||
String indexlink;
|
||||
if (configuration.splitindex) {
|
||||
indexlink = getHyperLinkString("index-files/index-1.html",
|
||||
indexlink = getHyperLinkString(DocPaths.INDEX_FILES.resolve(DocPaths.indexN(1)),
|
||||
configuration.getText("doclet.Index"));
|
||||
} else {
|
||||
indexlink = getHyperLinkString("index-all.html",
|
||||
indexlink = getHyperLinkString(DocPaths.INDEX_ALL,
|
||||
configuration.getText("doclet.Index"));
|
||||
}
|
||||
Content indexHead = HtmlTree.HEADING(HtmlConstants.CONTENT_HEADING,
|
||||
@ -293,7 +293,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
getResource("doclet.All_Classes"));
|
||||
Content liAllClasses = HtmlTree.LI(HtmlStyle.blockList, allclassesHead);
|
||||
Content line27 = getResource("doclet.Help_line_27",
|
||||
getHyperLinkString("allclasses-noframe.html",
|
||||
getHyperLinkString(DocPaths.ALLCLASSES_NOFRAME,
|
||||
configuration.getText("doclet.All_Classes")));
|
||||
Content allclassesPara = HtmlTree.P(line27);
|
||||
liAllClasses.addContent(allclassesPara);
|
||||
@ -309,7 +309,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
getResource("doclet.Constants_Summary"));
|
||||
Content liConst = HtmlTree.LI(HtmlStyle.blockList, constHead);
|
||||
Content line29 = getResource("doclet.Help_line_29",
|
||||
getHyperLinkString("constant-values.html",
|
||||
getHyperLinkString(DocPaths.CONSTANT_VALUES,
|
||||
configuration.getText("doclet.Constants_Summary")));
|
||||
Content constPara = HtmlTree.P(line29);
|
||||
liConst.addContent(constPara);
|
||||
@ -325,6 +325,7 @@ public class HelpWriter extends HtmlDocletWriter {
|
||||
*
|
||||
* @return a content tree for the help label
|
||||
*/
|
||||
@Override
|
||||
protected Content getNavLinkHelp() {
|
||||
Content li = HtmlTree.LI(HtmlStyle.navBarCell1Rev, helpLabel);
|
||||
return li;
|
||||
|
||||
@ -94,17 +94,11 @@ public class HtmlDoclet extends AbstractDoclet {
|
||||
throws Exception {
|
||||
super.generateOtherFiles(root, classtree);
|
||||
if (configuration.linksource) {
|
||||
if (configuration.destDirName.length() > 0) {
|
||||
SourceToHTMLConverter.convertRoot(configuration,
|
||||
root, configuration.destDirName + File.separator
|
||||
+ DocletConstants.SOURCE_OUTPUT_DIR_NAME);
|
||||
} else {
|
||||
SourceToHTMLConverter.convertRoot(configuration,
|
||||
root, DocletConstants.SOURCE_OUTPUT_DIR_NAME);
|
||||
}
|
||||
SourceToHTMLConverter.convertRoot(configuration,
|
||||
root, DocPaths.SOURCE_OUTPUT);
|
||||
}
|
||||
|
||||
if (configuration.topFile.length() == 0) {
|
||||
if (configuration.topFile.isEmpty()) {
|
||||
configuration.standardmessage.
|
||||
error("doclet.No_Non_Deprecated_Classes_To_Document");
|
||||
return;
|
||||
@ -155,9 +149,8 @@ public class HtmlDoclet extends AbstractDoclet {
|
||||
// If a stylesheet file is not specified, copy the default stylesheet
|
||||
// and replace newline with platform-specific newline.
|
||||
if (configuration.stylesheetfile.length() == 0) {
|
||||
Util.copyFile(configuration, "stylesheet.css", Util.RESOURCESDIR,
|
||||
(configdestdir.isEmpty()) ?
|
||||
System.getProperty("user.dir") : configdestdir, false, true);
|
||||
Util.copyFile(configuration, "stylesheet.css", DocPaths.RESOURCES,
|
||||
DocPath.empty, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -55,32 +55,24 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
/**
|
||||
* Relative path from the file getting generated to the destination
|
||||
* directory. For example, if the file getting generated is
|
||||
* "java/lang/Object.html", then the relative path string is "../../".
|
||||
* "java/lang/Object.html", then the path to the root is "../..".
|
||||
* This string can be empty if the file getting generated is in
|
||||
* the destination directory.
|
||||
*/
|
||||
public String relativePath = "";
|
||||
public final DocPath pathToRoot;
|
||||
|
||||
/**
|
||||
* Same as relativepath, but normalized to never be empty or
|
||||
* end with a slash.
|
||||
*/
|
||||
public String relativepathNoSlash = "";
|
||||
|
||||
/**
|
||||
* Platform-dependent directory path from the current or the
|
||||
* Platform-independent path from the current or the
|
||||
* destination directory to the file getting generated.
|
||||
* Used when creating the file.
|
||||
* For example, if the file getting generated is
|
||||
* "java/lang/Object.html", then the path string is "java/lang".
|
||||
*/
|
||||
public String path = "";
|
||||
public final DocPath path;
|
||||
|
||||
/**
|
||||
* Name of the file getting generated. If the file getting generated is
|
||||
* "java/lang/Object.html", then the filename is "Object.html".
|
||||
*/
|
||||
public String filename = "";
|
||||
public final DocPath filename;
|
||||
|
||||
/**
|
||||
* The display length used for indentation while generating the class page.
|
||||
@ -100,33 +92,15 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
/**
|
||||
* Constructor to construct the HtmlStandardWriter object.
|
||||
*
|
||||
* @param filename File to be generated.
|
||||
* @param path File to be generated.
|
||||
*/
|
||||
public HtmlDocletWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
this.configuration = configuration;
|
||||
this.filename = filename;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor to construct the HtmlStandardWriter object.
|
||||
*
|
||||
* @param path Platform-dependent {@link #path} used when
|
||||
* creating file.
|
||||
* @param filename Name of file to be generated.
|
||||
* @param relativePath Value for the variable {@link #relativePath}.
|
||||
*/
|
||||
public HtmlDocletWriter(ConfigurationImpl configuration,
|
||||
String path, String filename,
|
||||
String relativePath) throws IOException {
|
||||
super(configuration, path, filename);
|
||||
public HtmlDocletWriter(ConfigurationImpl configuration, DocPath path)
|
||||
throws IOException {
|
||||
super(configuration, path);
|
||||
this.configuration = configuration;
|
||||
this.path = path;
|
||||
this.relativePath = relativePath;
|
||||
this.relativepathNoSlash =
|
||||
DirectoryManager.getPathNoTrailingSlash(this.relativePath);
|
||||
this.filename = filename;
|
||||
this.pathToRoot = path.parent().invert();
|
||||
this.filename = path.basename();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -165,8 +139,9 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
int previndex = 0;
|
||||
while (true) {
|
||||
if (configuration.docrootparent.length() > 0) {
|
||||
final String docroot_parent = "{@docroot}/..";
|
||||
// Search for lowercase version of {@docRoot}/..
|
||||
index = lowerHtml.indexOf("{@docroot}/..", previndex);
|
||||
index = lowerHtml.indexOf(docroot_parent, previndex);
|
||||
// If next {@docRoot}/.. pattern not found, append rest of htmlstr and exit loop
|
||||
if (index < 0) {
|
||||
buf.append(htmlstr.substring(previndex));
|
||||
@ -174,17 +149,18 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
// If next {@docroot}/.. pattern found, append htmlstr up to start of tag
|
||||
buf.append(htmlstr.substring(previndex, index));
|
||||
previndex = index + 13; // length for {@docroot}/.. string
|
||||
previndex = index + docroot_parent.length();
|
||||
// Insert docrootparent absolute path where {@docRoot}/.. was located
|
||||
|
||||
buf.append(configuration.docrootparent);
|
||||
// Append slash if next character is not a slash
|
||||
if (previndex < htmlstr.length() && htmlstr.charAt(previndex) != '/') {
|
||||
buf.append(DirectoryManager.URL_FILE_SEPARATOR);
|
||||
buf.append('/');
|
||||
}
|
||||
} else {
|
||||
final String docroot = "{@docroot}";
|
||||
// Search for lowercase version of {@docRoot}
|
||||
index = lowerHtml.indexOf("{@docroot}", previndex);
|
||||
index = lowerHtml.indexOf(docroot, previndex);
|
||||
// If next {@docRoot} tag not found, append rest of htmlstr and exit loop
|
||||
if (index < 0) {
|
||||
buf.append(htmlstr.substring(previndex));
|
||||
@ -192,13 +168,12 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
// If next {@docroot} tag found, append htmlstr up to start of tag
|
||||
buf.append(htmlstr.substring(previndex, index));
|
||||
previndex = index + 10; // length for {@docroot} string
|
||||
previndex = index + docroot.length();
|
||||
// Insert relative path where {@docRoot} was located
|
||||
buf.append(relativepathNoSlash);
|
||||
buf.append(pathToRoot.isEmpty() ? "." : pathToRoot.getPath());
|
||||
// Append slash if next character is not a slash
|
||||
if (relativepathNoSlash.length() > 0 && previndex < htmlstr.length() &&
|
||||
htmlstr.charAt(previndex) != '/') {
|
||||
buf.append(DirectoryManager.URL_FILE_SEPARATOR);
|
||||
if (previndex < htmlstr.length() && htmlstr.charAt(previndex) != '/') {
|
||||
buf.append('/');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -312,7 +287,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
public Content getTargetPackageLink(PackageDoc pd, String target,
|
||||
Content label) {
|
||||
return getHyperLink(pathString(pd, "package-summary.html"), "", label, "", target);
|
||||
return getHyperLink(pathString(pd, DocPaths.PACKAGE_SUMMARY), "", label, "", target);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -539,8 +514,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkContents() {
|
||||
Content linkContent = getHyperLink(relativePath +
|
||||
"overview-summary.html", "", overviewLabel, "", "");
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_SUMMARY),
|
||||
"", overviewLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -584,7 +559,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param prev File name for the prev link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public Content getNavLinkPrevious(String prev) {
|
||||
public Content getNavLinkPrevious(DocPath prev) {
|
||||
Content li;
|
||||
if (prev != null) {
|
||||
li = HtmlTree.LI(getHyperLink(prev, "", prevLabel, "", ""));
|
||||
@ -601,7 +576,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param next File name for the next link
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
public Content getNavLinkNext(String next) {
|
||||
public Content getNavLinkNext(DocPath next) {
|
||||
Content li;
|
||||
if (next != null) {
|
||||
li = HtmlTree.LI(getHyperLink(next, "", nextLabel, "", ""));
|
||||
@ -617,9 +592,9 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param link File to be linked, "index.html"
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavShowLists(String link) {
|
||||
Content framesContent = getHyperLink(link + "?" + path +
|
||||
filename, "", framesLabel, "", "_top");
|
||||
protected Content getNavShowLists(DocPath link) {
|
||||
Content framesContent = getHyperLink(link.getPath() + "?" + path.getPath(),
|
||||
"", framesLabel, "", "_top");
|
||||
Content li = HtmlTree.LI(framesContent);
|
||||
return li;
|
||||
}
|
||||
@ -630,7 +605,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavShowLists() {
|
||||
return getNavShowLists(relativePath + "index.html");
|
||||
return getNavShowLists(pathToRoot.resolve(DocPaths.INDEX));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -639,7 +614,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param link File to be linked
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavHideLists(String link) {
|
||||
protected Content getNavHideLists(DocPath link) {
|
||||
Content noFramesContent = getHyperLink(link, "", noframesLabel, "", "_top");
|
||||
Content li = HtmlTree.LI(noFramesContent);
|
||||
return li;
|
||||
@ -658,10 +633,10 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
PackageDoc[] packages = configuration.root.specifiedPackages();
|
||||
if (packages.length == 1 && configuration.root.specifiedClasses().length == 0) {
|
||||
treeLinkContent = getHyperLink(pathString(packages[0],
|
||||
"package-tree.html"), "", treeLabel,
|
||||
DocPaths.PACKAGE_TREE), "", treeLabel,
|
||||
"", "");
|
||||
} else {
|
||||
treeLinkContent = getHyperLink(relativePath + "overview-tree.html",
|
||||
treeLinkContent = getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE),
|
||||
"", treeLabel, "", "");
|
||||
}
|
||||
Content li = HtmlTree.LI(treeLinkContent);
|
||||
@ -675,7 +650,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkMainTree(String label) {
|
||||
Content mainTreeContent = getHyperLink(relativePath + "overview-tree.html",
|
||||
Content mainTreeContent = getHyperLink(pathToRoot.resolve(DocPaths.OVERVIEW_TREE),
|
||||
new StringContent(label));
|
||||
Content li = HtmlTree.LI(mainTreeContent);
|
||||
return li;
|
||||
@ -697,8 +672,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkDeprecated() {
|
||||
Content linkContent = getHyperLink(relativePath +
|
||||
"deprecated-list.html", "", deprecatedLabel, "", "");
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(DocPaths.DEPRECATED_LIST),
|
||||
"", deprecatedLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
}
|
||||
@ -711,8 +686,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkClassIndex() {
|
||||
Content allClassesContent = getHyperLink(relativePath +
|
||||
AllClassesFrameWriter.OUTPUT_FILE_NAME_NOFRAMES, "",
|
||||
Content allClassesContent = getHyperLink(pathToRoot.resolve(
|
||||
DocPaths.ALLCLASSES_NOFRAME), "",
|
||||
allclassesLabel, "", "");
|
||||
Content li = HtmlTree.LI(allClassesContent);
|
||||
return li;
|
||||
@ -724,9 +699,10 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkIndex() {
|
||||
Content linkContent = getHyperLink(relativePath +(configuration.splitindex?
|
||||
DirectoryManager.getPath("index-files") + fileseparator: "") +
|
||||
(configuration.splitindex?"index-1.html" : "index-all.html"), "",
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(
|
||||
(configuration.splitindex
|
||||
? DocPaths.INDEX_FILES.resolve(DocPaths.indexN(1))
|
||||
: DocPaths.INDEX_ALL)), "",
|
||||
indexLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -740,16 +716,14 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @return a content tree for the link
|
||||
*/
|
||||
protected Content getNavLinkHelp() {
|
||||
String helpfilenm = configuration.helpfile;
|
||||
if (helpfilenm.equals("")) {
|
||||
helpfilenm = "help-doc.html";
|
||||
String helpfile = configuration.helpfile;
|
||||
DocPath helpfilenm;
|
||||
if (helpfile.isEmpty()) {
|
||||
helpfilenm = DocPaths.HELP_DOC;
|
||||
} else {
|
||||
int lastsep;
|
||||
if ((lastsep = helpfilenm.lastIndexOf(File.separatorChar)) != -1) {
|
||||
helpfilenm = helpfilenm.substring(lastsep + 1);
|
||||
}
|
||||
helpfilenm = DocPath.create(new File(helpfile).getName());
|
||||
}
|
||||
Content linkContent = getHyperLink(relativePath + helpfilenm, "",
|
||||
Content linkContent = getHyperLink(pathToRoot.resolve(helpfilenm), "",
|
||||
helpLabel, "", "");
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -883,18 +857,6 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Return path to the class page for a classdoc. For example, the class
|
||||
* name is "java.lang.Object" and if the current file getting generated is
|
||||
* "java/io/File.html", then the path string to the class, returned is
|
||||
* "../../java/lang.Object.html".
|
||||
*
|
||||
* @param cd Class to which the path is requested.
|
||||
*/
|
||||
protected String pathToClass(ClassDoc cd) {
|
||||
return pathString(cd.containingPackage(), cd.name() + ".html");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path to the class page for a classdoc. Works same as
|
||||
* {@link #pathToClass(ClassDoc)}.
|
||||
@ -902,7 +864,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param cd Class to which the path is requested.
|
||||
* @param name Name of the file(doesn't include path).
|
||||
*/
|
||||
protected String pathString(ClassDoc cd, String name) {
|
||||
protected DocPath pathString(ClassDoc cd, DocPath name) {
|
||||
return pathString(cd.containingPackage(), name);
|
||||
}
|
||||
|
||||
@ -915,10 +877,8 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param pd Package in which the file name is assumed to be.
|
||||
* @param name File name, to which path string is.
|
||||
*/
|
||||
protected String pathString(PackageDoc pd, String name) {
|
||||
StringBuilder buf = new StringBuilder(relativePath);
|
||||
buf.append(DirectoryManager.getPathToPackage(pd, name));
|
||||
return buf.toString();
|
||||
protected DocPath pathString(PackageDoc pd, DocPath name) {
|
||||
return pathToRoot.resolve(DocPath.forPackage(pd).resolve(name));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -956,12 +916,12 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
}
|
||||
if (included || pkg == null) {
|
||||
return getHyperLinkString(pathString(pkg, "package-summary.html"),
|
||||
return getHyperLinkString(pathString(pkg, DocPaths.PACKAGE_SUMMARY),
|
||||
"", label, isStrong, style);
|
||||
} else {
|
||||
String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
|
||||
if (crossPkgLink != null) {
|
||||
return getHyperLinkString(crossPkgLink, "", label, isStrong, style);
|
||||
return getHyperLinkString(/*TEMP*/ DocPath.create(crossPkgLink), "", label, isStrong, style);
|
||||
} else {
|
||||
return label;
|
||||
}
|
||||
@ -987,12 +947,12 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
}
|
||||
if (included || pkg == null) {
|
||||
return getHyperLink(pathString(pkg, "package-summary.html"),
|
||||
return getHyperLink(pathString(pkg, DocPaths.PACKAGE_SUMMARY),
|
||||
"", label);
|
||||
} else {
|
||||
String crossPkgLink = getCrossPackageLink(Util.getPackageName(pkg));
|
||||
if (crossPkgLink != null) {
|
||||
return getHyperLink(crossPkgLink, "", label);
|
||||
return getHyperLink(/*TEMP*/ DocPath.create(crossPkgLink), "", label);
|
||||
} else {
|
||||
return label;
|
||||
}
|
||||
@ -1020,10 +980,10 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
//d must be a class doc since in has no containing class.
|
||||
cd = (ClassDoc) doc;
|
||||
}
|
||||
String href = relativePath + DocletConstants.SOURCE_OUTPUT_DIR_NAME
|
||||
+ DirectoryManager.getDirectoryPath(cd.containingPackage())
|
||||
+ cd.name() + ".html#" + SourceToHTMLConverter.getAnchorName(doc);
|
||||
Content linkContent = getHyperLink(href, "", label, "", "");
|
||||
DocPath href = pathToRoot
|
||||
.resolve(DocPaths.SOURCE_OUTPUT)
|
||||
.resolve(DocPath.forClass(cd));
|
||||
Content linkContent = getHyperLink(href, SourceToHTMLConverter.getAnchorName(doc), label, "", "");
|
||||
htmltree.addContent(linkContent);
|
||||
}
|
||||
|
||||
@ -1085,7 +1045,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
//exists, but no way to determine if the external class exists. We just
|
||||
//have to assume that it does.
|
||||
return getHyperLinkString(
|
||||
configuration.extern.getExternalLink(packageName, relativePath,
|
||||
configuration.extern.getExternalLink(packageName, pathToRoot,
|
||||
className + ".html?is-external=true"),
|
||||
refMemName == null ? "" : refMemName,
|
||||
label == null || label.length() == 0 ? defaultLabel : label,
|
||||
@ -1105,7 +1065,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
}
|
||||
|
||||
public String getCrossPackageLink(String pkgName) {
|
||||
return configuration.extern.getExternalLink(pkgName, relativePath,
|
||||
return configuration.extern.getExternalLink(pkgName, pathToRoot,
|
||||
"package-summary.html?is-external=true");
|
||||
}
|
||||
|
||||
@ -1321,7 +1281,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
String classCrossLink, packageCrossLink = getCrossPackageLink(refClassName);
|
||||
if (packageCrossLink != null) {
|
||||
//Package cross link found
|
||||
return getHyperLinkString(packageCrossLink, "",
|
||||
return getHyperLinkString(/*TEMP*/ DocPath.create(packageCrossLink), "",
|
||||
(label.isEmpty() ? text : label), false);
|
||||
} else if ((classCrossLink = getCrossClassLink(refClassName,
|
||||
refMemName, label, false, "", !plain)) != null) {
|
||||
@ -1450,7 +1410,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
* @param doc the doc for which the comment tags will be generated
|
||||
* @param tags the first sentence tags for the doc
|
||||
* @param depr true if it is deprecated
|
||||
* @param first true if the first sentenge tags should be added
|
||||
* @param first true if the first sentence tags should be added
|
||||
* @param htmltree the documentation tree to which the comment tags will be added
|
||||
*/
|
||||
private void addCommentTags(Doc doc, Tag[] tags, boolean depr,
|
||||
@ -1561,7 +1521,7 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
|
||||
/**
|
||||
* Suppose a piece of documentation has a relative link. When you copy
|
||||
* that documetation to another place such as the index or class-use page,
|
||||
* that documentation to another place such as the index or class-use page,
|
||||
* that relative link will no longer work. We should redirect those links
|
||||
* so that they will work again.
|
||||
* <p>
|
||||
@ -1587,21 +1547,17 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
return text;
|
||||
}
|
||||
|
||||
String redirectPathFromRoot;
|
||||
DocPath redirectPathFromRoot;
|
||||
if (doc instanceof ClassDoc) {
|
||||
redirectPathFromRoot = DirectoryManager.getDirectoryPath(((ClassDoc) doc).containingPackage());
|
||||
redirectPathFromRoot = DocPath.forPackage(((ClassDoc) doc).containingPackage());
|
||||
} else if (doc instanceof MemberDoc) {
|
||||
redirectPathFromRoot = DirectoryManager.getDirectoryPath(((MemberDoc) doc).containingPackage());
|
||||
redirectPathFromRoot = DocPath.forPackage(((MemberDoc) doc).containingPackage());
|
||||
} else if (doc instanceof PackageDoc) {
|
||||
redirectPathFromRoot = DirectoryManager.getDirectoryPath((PackageDoc) doc);
|
||||
redirectPathFromRoot = DocPath.forPackage((PackageDoc) doc);
|
||||
} else {
|
||||
return text;
|
||||
}
|
||||
|
||||
if (! redirectPathFromRoot.endsWith(DirectoryManager.URL_FILE_SEPARATOR)) {
|
||||
redirectPathFromRoot += DirectoryManager.URL_FILE_SEPARATOR;
|
||||
}
|
||||
|
||||
//Redirect all relative links.
|
||||
int end, begin = text.toLowerCase().indexOf("<a");
|
||||
if(begin >= 0){
|
||||
@ -1627,22 +1583,21 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
//might be missing '>' character because the href has an inline tag.
|
||||
break;
|
||||
}
|
||||
if(textBuff.substring(begin, end).indexOf("\"") != -1){
|
||||
if (textBuff.substring(begin, end).indexOf("\"") != -1){
|
||||
begin = textBuff.indexOf("\"", begin) + 1;
|
||||
end = textBuff.indexOf("\"", begin +1);
|
||||
if(begin == 0 || end == -1){
|
||||
if (begin == 0 || end == -1){
|
||||
//Link is missing a quote.
|
||||
break;
|
||||
}
|
||||
}
|
||||
String relativeLink = textBuff.substring(begin, end);
|
||||
if(!(relativeLink.toLowerCase().startsWith("mailto:") ||
|
||||
relativeLink.toLowerCase().startsWith("http:") ||
|
||||
relativeLink.toLowerCase().startsWith("https:") ||
|
||||
relativeLink.toLowerCase().startsWith("file:"))){
|
||||
relativeLink = "{@"+(new DocRootTaglet()).getName() + "}"
|
||||
+ redirectPathFromRoot
|
||||
+ relativeLink;
|
||||
if (!(relativeLink.toLowerCase().startsWith("mailto:") ||
|
||||
relativeLink.toLowerCase().startsWith("http:") ||
|
||||
relativeLink.toLowerCase().startsWith("https:") ||
|
||||
relativeLink.toLowerCase().startsWith("file:"))) {
|
||||
relativeLink = "{@"+(new DocRootTaglet()).getName() + "}/"
|
||||
+ redirectPathFromRoot.resolve(relativeLink).getPath();
|
||||
textBuff.replace(begin, end, relativeLink);
|
||||
}
|
||||
begin = textBuff.toString().toLowerCase().indexOf("<a", begin + 1);
|
||||
@ -1715,17 +1670,15 @@ public class HtmlDocletWriter extends HtmlDocWriter {
|
||||
*/
|
||||
public HtmlTree getStyleSheetProperties() {
|
||||
String filename = configuration.stylesheetfile;
|
||||
DocPath stylesheet;
|
||||
if (filename.length() > 0) {
|
||||
File stylefile = new File(filename);
|
||||
String parent = stylefile.getParent();
|
||||
filename = (parent == null)?
|
||||
filename:
|
||||
filename.substring(parent.length() + 1);
|
||||
stylesheet = DocPath.create(new File(filename).getName());
|
||||
} else {
|
||||
filename = "stylesheet.css";
|
||||
stylesheet = DocPaths.STYLESHEET;
|
||||
}
|
||||
filename = relativePath + filename;
|
||||
HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
|
||||
HtmlTree link = HtmlTree.LINK("stylesheet", "text/css",
|
||||
pathToRoot.resolve(stylesheet).getPath(),
|
||||
"Style");
|
||||
return link;
|
||||
}
|
||||
|
||||
|
||||
@ -78,9 +78,9 @@ public class LinkFactoryImpl extends LinkFactory {
|
||||
LinkOutputImpl linkOutput = new LinkOutputImpl();
|
||||
if (classDoc.isIncluded()) {
|
||||
if (configuration.isGeneratedDoc(classDoc)) {
|
||||
String filename = pathString(classLinkInfo);
|
||||
DocPath filename = getPath(classLinkInfo);
|
||||
if (linkInfo.linkToSelf ||
|
||||
!(linkInfo.classDoc.name() + ".html").equals(m_writer.filename)) {
|
||||
!(DocPath.forName(classDoc)).equals(m_writer.filename)) {
|
||||
linkOutput.append(m_writer.getHyperLinkString(filename,
|
||||
classLinkInfo.where, label.toString(),
|
||||
classLinkInfo.isStrong, classLinkInfo.styleName,
|
||||
@ -161,16 +161,12 @@ public class LinkFactoryImpl extends LinkFactory {
|
||||
*
|
||||
* @param linkInfo the information about the link.
|
||||
*/
|
||||
private String pathString(LinkInfoImpl linkInfo) {
|
||||
private DocPath getPath(LinkInfoImpl linkInfo) {
|
||||
if (linkInfo.context == LinkInfoImpl.PACKAGE_FRAME) {
|
||||
//Not really necessary to do this but we want to be consistent
|
||||
//with 1.4.2 output.
|
||||
return linkInfo.classDoc.name() + ".html";
|
||||
return DocPath.forName(linkInfo.classDoc);
|
||||
}
|
||||
StringBuilder buf = new StringBuilder(m_writer.relativePath);
|
||||
buf.append(DirectoryManager.getPathToPackage(
|
||||
linkInfo.classDoc.containingPackage(),
|
||||
linkInfo.classDoc.name() + ".html"));
|
||||
return buf.toString();
|
||||
return m_writer.pathToRoot.resolve(DocPath.forClass(linkInfo.classDoc));
|
||||
}
|
||||
}
|
||||
|
||||
@ -400,7 +400,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", (cd == null)?
|
||||
return writer.getHyperLink((cd == null)?
|
||||
"method_summary":
|
||||
"methods_inherited_from_class_" +
|
||||
configuration().getClassName(cd),
|
||||
@ -415,7 +415,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
|
||||
*/
|
||||
protected void addNavDetailLink(boolean link, Content liNav) {
|
||||
if (link) {
|
||||
liNav.addContent(writer.getHyperLink("", "method_detail",
|
||||
liNav.addContent(writer.getHyperLink("method_detail",
|
||||
writer.getResource("doclet.navMethod")));
|
||||
} else {
|
||||
liNav.addContent(writer.getResource("doclet.navMethod"));
|
||||
|
||||
@ -203,9 +203,8 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
|
||||
*/
|
||||
protected Content getNavSummaryLink(ClassDoc cd, boolean link) {
|
||||
if (link) {
|
||||
return writer.getHyperLink("", (cd == null) ? "nested_class_summary":
|
||||
"nested_classes_inherited_from_class_" +
|
||||
cd.qualifiedName(),
|
||||
return writer.getHyperLink((cd == null) ? "nested_class_summary":
|
||||
"nested_classes_inherited_from_class_" + cd.qualifiedName(),
|
||||
writer.getResource("doclet.navNested"));
|
||||
} else {
|
||||
return writer.getResource("doclet.navNested");
|
||||
|
||||
@ -59,18 +59,13 @@ public class PackageFrameWriter extends HtmlDocletWriter {
|
||||
*/
|
||||
private Set<ClassDoc> documentedClasses;
|
||||
|
||||
/**
|
||||
* The name of the output file.
|
||||
*/
|
||||
public static final String OUTPUT_FILE_NAME = "package-frame.html";
|
||||
|
||||
/**
|
||||
* Constructor to construct PackageFrameWriter object and to generate
|
||||
* "package-frame.html" file in the respective package directory.
|
||||
* For example for package "java.lang" this will generate file
|
||||
* "package-frame.html" file in the "java/lang" directory. It will also
|
||||
* create "java/lang" directory in the current or the destination directory
|
||||
* if it doesen't exist.
|
||||
* if it doesn't exist.
|
||||
*
|
||||
* @param configuration the configuration of the doclet.
|
||||
* @param packageDoc PackageDoc under consideration.
|
||||
@ -78,7 +73,7 @@ public class PackageFrameWriter extends HtmlDocletWriter {
|
||||
public PackageFrameWriter(ConfigurationImpl configuration,
|
||||
PackageDoc packageDoc)
|
||||
throws IOException {
|
||||
super(configuration, DirectoryManager.getDirectoryPath(packageDoc), OUTPUT_FILE_NAME, DirectoryManager.getRelativePath(packageDoc));
|
||||
super(configuration, DocPath.forPackage(packageDoc).resolve(DocPaths.PACKAGE_FRAME));
|
||||
this.packageDoc = packageDoc;
|
||||
if (configuration.root.specifiedPackages().length == 0) {
|
||||
documentedClasses = new HashSet<ClassDoc>(Arrays.asList(configuration.root.classes()));
|
||||
@ -113,7 +108,7 @@ public class PackageFrameWriter extends HtmlDocletWriter {
|
||||
} catch (IOException exc) {
|
||||
configuration.standardmessage.error(
|
||||
"doclet.exception_encountered",
|
||||
exc.toString(), OUTPUT_FILE_NAME);
|
||||
exc.toString(), DocPaths.PACKAGE_FRAME.getPath());
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
* @param filename Name of the package index file to be generated.
|
||||
*/
|
||||
public PackageIndexFrameWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
DocPath filename) throws IOException {
|
||||
super(configuration, filename);
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
*/
|
||||
public static void generate(ConfigurationImpl configuration) {
|
||||
PackageIndexFrameWriter packgen;
|
||||
String filename = "overview-frame.html";
|
||||
DocPath filename = DocPaths.OVERVIEW_FRAME;
|
||||
try {
|
||||
packgen = new PackageIndexFrameWriter(configuration, filename);
|
||||
packgen.buildPackageIndexFile("doclet.Window_Overview", false);
|
||||
@ -109,11 +109,11 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
if (pd.name().length() > 0) {
|
||||
packageLabel = getPackageLabel(pd.name());
|
||||
packageLinkContent = getHyperLink(pathString(pd,
|
||||
"package-frame.html"), "", packageLabel, "",
|
||||
DocPaths.PACKAGE_FRAME), "", packageLabel, "",
|
||||
"packageFrame");
|
||||
} else {
|
||||
packageLabel = new RawHtml("<unnamed package>");
|
||||
packageLinkContent = getHyperLink("package-frame.html",
|
||||
packageLinkContent = getHyperLink(DocPaths.PACKAGE_FRAME,
|
||||
"", packageLabel, "", "packageFrame");
|
||||
}
|
||||
Content li = HtmlTree.LI(packageLinkContent);
|
||||
@ -148,7 +148,7 @@ public class PackageIndexFrameWriter extends AbstractPackageIndexWriter {
|
||||
* @param body the Content object to which the all classes link should be added
|
||||
*/
|
||||
protected void addAllClassesLink(Content body) {
|
||||
Content linkContent = getHyperLink("allclasses-frame.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.ALLCLASSES_FRAME, "",
|
||||
allclassesLabel, "", "packageFrame");
|
||||
Content div = HtmlTree.DIV(HtmlStyle.indexHeader, linkContent);
|
||||
body.addContent(div);
|
||||
|
||||
@ -36,7 +36,7 @@ import com.sun.tools.doclets.internal.toolkit.util.*;
|
||||
/**
|
||||
* Generate the package index page "overview-summary.html" for the right-hand
|
||||
* frame. A click on the package name on this page will update the same frame
|
||||
* with the "pacakge-summary.html" file for the clicked package.
|
||||
* with the "package-summary.html" file for the clicked package.
|
||||
*
|
||||
* <p><b>This is NOT part of any supported API.
|
||||
* If you write code that depends on this, you do so at your own risk.
|
||||
@ -73,7 +73,7 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
* @see Group
|
||||
*/
|
||||
public PackageIndexWriter(ConfigurationImpl configuration,
|
||||
String filename)
|
||||
DocPath filename)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
this.root = configuration.root;
|
||||
@ -88,7 +88,7 @@ public class PackageIndexWriter extends AbstractPackageIndexWriter {
|
||||
*/
|
||||
public static void generate(ConfigurationImpl configuration) {
|
||||
PackageIndexWriter packgen;
|
||||
String filename = "overview-summary.html";
|
||||
DocPath filename = DocPaths.OVERVIEW_SUMMARY;
|
||||
try {
|
||||
packgen = new PackageIndexWriter(configuration, filename);
|
||||
packgen.buildPackageIndexFile("doclet.Window_Overview_Summary", true);
|
||||
|
||||
@ -67,15 +67,14 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
public PackageTreeWriter(ConfigurationImpl configuration,
|
||||
String path, String filename,
|
||||
DocPath path,
|
||||
PackageDoc packagedoc,
|
||||
PackageDoc prev, PackageDoc next)
|
||||
throws IOException {
|
||||
super(configuration, path, filename,
|
||||
super(configuration, path,
|
||||
new ClassTree(
|
||||
configuration.classDocCatalog.allClasses(packagedoc),
|
||||
configuration),
|
||||
packagedoc);
|
||||
configuration));
|
||||
this.packagedoc = packagedoc;
|
||||
this.prev = prev;
|
||||
this.next = next;
|
||||
@ -96,17 +95,16 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
PackageDoc pkg, PackageDoc prev,
|
||||
PackageDoc next, boolean noDeprecated) {
|
||||
PackageTreeWriter packgen;
|
||||
String path = DirectoryManager.getDirectoryPath(pkg);
|
||||
String filename = "package-tree.html";
|
||||
DocPath path = DocPath.forPackage(pkg).resolve(DocPaths.PACKAGE_TREE);
|
||||
try {
|
||||
packgen = new PackageTreeWriter(configuration, path, filename, pkg,
|
||||
packgen = new PackageTreeWriter(configuration, path, pkg,
|
||||
prev, next);
|
||||
packgen.generatePackageTreeFile();
|
||||
packgen.close();
|
||||
} catch (IOException exc) {
|
||||
configuration.standardmessage.error(
|
||||
"doclet.exception_encountered",
|
||||
exc.toString(), filename);
|
||||
exc.toString(), path.getPath());
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
@ -175,9 +173,8 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
if (prev == null) {
|
||||
return getNavLinkPrevious(null);
|
||||
} else {
|
||||
String path = DirectoryManager.getRelativePath(packagedoc.name(),
|
||||
prev.name());
|
||||
return getNavLinkPrevious(path + "package-tree.html");
|
||||
DocPath path = DocPath.relativePath(packagedoc, prev);
|
||||
return getNavLinkPrevious(path.resolve(DocPaths.PACKAGE_TREE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -190,9 +187,8 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
if (next == null) {
|
||||
return getNavLinkNext(null);
|
||||
} else {
|
||||
String path = DirectoryManager.getRelativePath(packagedoc.name(),
|
||||
next.name());
|
||||
return getNavLinkNext(path + "package-tree.html");
|
||||
DocPath path = DocPath.relativePath(packagedoc, next);
|
||||
return getNavLinkNext(path.resolve(DocPaths.PACKAGE_TREE));
|
||||
}
|
||||
}
|
||||
|
||||
@ -202,7 +198,7 @@ public class PackageTreeWriter extends AbstractTreeWriter {
|
||||
* @return a content tree for the package link
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink("package-summary.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY, "",
|
||||
packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
|
||||
@ -57,11 +57,9 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
public PackageUseWriter(ConfigurationImpl configuration,
|
||||
ClassUseMapper mapper, String filename,
|
||||
ClassUseMapper mapper, DocPath filename,
|
||||
PackageDoc pkgdoc) throws IOException {
|
||||
super(configuration, DirectoryManager.getDirectoryPath(pkgdoc),
|
||||
filename,
|
||||
DirectoryManager.getRelativePath(pkgdoc.name()));
|
||||
super(configuration, DocPath.forPackage(pkgdoc).resolve(filename));
|
||||
this.pkgdoc = pkgdoc;
|
||||
|
||||
// by examining all classes in this package, find what packages
|
||||
@ -98,7 +96,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
ClassUseMapper mapper, PackageDoc pkgdoc) {
|
||||
PackageUseWriter pkgusegen;
|
||||
String filename = "package-use.html";
|
||||
DocPath filename = DocPaths.PACKAGE_USE;
|
||||
try {
|
||||
pkgusegen = new PackageUseWriter(configuration,
|
||||
mapper, filename, pkgdoc);
|
||||
@ -232,8 +230,8 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected void addClassRow(ClassDoc usedClass, String packageName,
|
||||
Content contentTree) {
|
||||
String path = pathString(usedClass,
|
||||
"class-use/" + usedClass.name() + ".html");
|
||||
DocPath path = pathString(usedClass,
|
||||
DocPaths.CLASS_USE.resolve(DocPath.forName(usedClass)));
|
||||
Content td = HtmlTree.TD(HtmlStyle.colOne,
|
||||
getHyperLink(path, packageName, new StringContent(usedClass.name())));
|
||||
addIndexComment(usedClass, td);
|
||||
@ -248,7 +246,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
*/
|
||||
protected void addPackageUse(PackageDoc pkg, Content contentTree) throws IOException {
|
||||
Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst,
|
||||
getHyperLink("", Util.getPackageName(pkg),
|
||||
getHyperLink(Util.getPackageName(pkg),
|
||||
new RawHtml(Util.getPackageName(pkg))));
|
||||
contentTree.addContent(tdFirst);
|
||||
HtmlTree tdLast = new HtmlTree(HtmlTag.TD);
|
||||
@ -288,7 +286,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
* @return a content tree for the package link
|
||||
*/
|
||||
protected Content getNavLinkPackage() {
|
||||
Content linkContent = getHyperLink("package-summary.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_SUMMARY, "",
|
||||
packageLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
@ -310,7 +308,7 @@ public class PackageUseWriter extends SubWriterHolderWriter {
|
||||
* @return a content tree for the tree link
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content linkContent = getHyperLink("package-tree.html", "",
|
||||
Content linkContent = getHyperLink(DocPaths.PACKAGE_TREE, "",
|
||||
treeLabel);
|
||||
Content li = HtmlTree.LI(linkContent);
|
||||
return li;
|
||||
|
||||
@ -64,18 +64,13 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
*/
|
||||
protected PackageDoc packageDoc;
|
||||
|
||||
/**
|
||||
* The name of the output file.
|
||||
*/
|
||||
private static final String OUTPUT_FILE_NAME = "package-summary.html";
|
||||
|
||||
/**
|
||||
* Constructor to construct PackageWriter object and to generate
|
||||
* "package-summary.html" file in the respective package directory.
|
||||
* For example for package "java.lang" this will generate file
|
||||
* "package-summary.html" file in the "java/lang" directory. It will also
|
||||
* create "java/lang" directory in the current or the destination directory
|
||||
* if it doesen't exist.
|
||||
* if it doesn't exist.
|
||||
*
|
||||
* @param configuration the configuration of the doclet.
|
||||
* @param packageDoc PackageDoc under consideration.
|
||||
@ -83,24 +78,14 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
* @param next Next package in the sorted array.
|
||||
*/
|
||||
public PackageWriterImpl(ConfigurationImpl configuration,
|
||||
PackageDoc packageDoc, PackageDoc prev, PackageDoc next)
|
||||
throws IOException {
|
||||
super(configuration, DirectoryManager.getDirectoryPath(packageDoc), OUTPUT_FILE_NAME,
|
||||
DirectoryManager.getRelativePath(packageDoc.name()));
|
||||
PackageDoc packageDoc, PackageDoc prev, PackageDoc next)
|
||||
throws IOException {
|
||||
super(configuration, DocPath.forPackage(packageDoc).resolve(DocPaths.PACKAGE_SUMMARY));
|
||||
this.prev = prev;
|
||||
this.next = next;
|
||||
this.packageDoc = packageDoc;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the name of the output file.
|
||||
*
|
||||
* @return the name of the output file.
|
||||
*/
|
||||
public String getOutputFileName() {
|
||||
return OUTPUT_FILE_NAME;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@ -265,7 +250,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
* @return a content tree for the class use link
|
||||
*/
|
||||
protected Content getNavLinkClassUse() {
|
||||
Content useLink = getHyperLink("package-use.html", "",
|
||||
Content useLink = getHyperLink(DocPaths.PACKAGE_USE, "",
|
||||
useLabel, "", "");
|
||||
Content li = HtmlTree.LI(useLink);
|
||||
return li;
|
||||
@ -281,9 +266,8 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
if (prev == null) {
|
||||
li = HtmlTree.LI(prevpackageLabel);
|
||||
} else {
|
||||
String path = DirectoryManager.getRelativePath(packageDoc.name(),
|
||||
prev.name());
|
||||
li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
|
||||
DocPath path = DocPath.relativePath(packageDoc, prev);
|
||||
li = HtmlTree.LI(getHyperLink(path.resolve(DocPaths.PACKAGE_SUMMARY), "",
|
||||
prevpackageLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
@ -299,9 +283,8 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
if (next == null) {
|
||||
li = HtmlTree.LI(nextpackageLabel);
|
||||
} else {
|
||||
String path = DirectoryManager.getRelativePath(packageDoc.name(),
|
||||
next.name());
|
||||
li = HtmlTree.LI(getHyperLink(path + "package-summary.html", "",
|
||||
DocPath path = DocPath.relativePath(packageDoc, next);
|
||||
li = HtmlTree.LI(getHyperLink(path.resolve(DocPaths.PACKAGE_SUMMARY), "",
|
||||
nextpackageLabel, "", ""));
|
||||
}
|
||||
return li;
|
||||
@ -314,7 +297,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
|
||||
* @return a content tree for the tree link
|
||||
*/
|
||||
protected Content getNavLinkTree() {
|
||||
Content useLink = getHyperLink("package-tree.html", "",
|
||||
Content useLink = getHyperLink(DocPaths.PACKAGE_TREE, "",
|
||||
treeLabel, "", "");
|
||||
Content li = HtmlTree.LI(useLink);
|
||||
return li;
|
||||
|
||||
@ -29,6 +29,7 @@ import java.io.*;
|
||||
import com.sun.javadoc.*;
|
||||
import com.sun.tools.doclets.formats.html.markup.*;
|
||||
import com.sun.tools.doclets.internal.toolkit.*;
|
||||
import com.sun.tools.doclets.internal.toolkit.util.DocPaths;
|
||||
import com.sun.tools.doclets.internal.toolkit.util.DocletAbortException;
|
||||
|
||||
/**
|
||||
@ -44,14 +45,12 @@ import com.sun.tools.doclets.internal.toolkit.util.DocletAbortException;
|
||||
public class SerializedFormWriterImpl extends SubWriterHolderWriter
|
||||
implements SerializedFormWriter {
|
||||
|
||||
private static final String FILE_NAME = "serialized-form.html";
|
||||
|
||||
/**
|
||||
* @throws IOException
|
||||
* @throws DocletAbortException
|
||||
*/
|
||||
public SerializedFormWriterImpl() throws IOException {
|
||||
super(ConfigurationImpl.getInstance(), FILE_NAME);
|
||||
super(ConfigurationImpl.getInstance(), DocPaths.SERIALIZED_FORM);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -55,11 +55,9 @@ public class SingleIndexWriter extends AbstractIndexWriter {
|
||||
* @param indexbuilder Unicode based Index from {@link IndexBuilder}
|
||||
*/
|
||||
public SingleIndexWriter(ConfigurationImpl configuration,
|
||||
String filename,
|
||||
DocPath filename,
|
||||
IndexBuilder indexbuilder) throws IOException {
|
||||
super(configuration, filename, indexbuilder);
|
||||
relativepathNoSlash = ".";
|
||||
relativePath = "./";
|
||||
}
|
||||
|
||||
/**
|
||||
@ -71,7 +69,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
IndexBuilder indexbuilder) {
|
||||
SingleIndexWriter indexgen;
|
||||
String filename = "index-all.html";
|
||||
DocPath filename = DocPaths.INDEX_ALL;
|
||||
try {
|
||||
indexgen = new SingleIndexWriter(configuration,
|
||||
filename, indexbuilder);
|
||||
@ -117,7 +115,7 @@ public class SingleIndexWriter extends AbstractIndexWriter {
|
||||
for (int i = 0; i < indexbuilder.elements().length; i++) {
|
||||
String unicode = (indexbuilder.elements())[i].toString();
|
||||
contentTree.addContent(
|
||||
getHyperLink("#_" + unicode + "_", new StringContent(unicode)));
|
||||
getHyperLink("_" + unicode + "_", new StringContent(unicode)));
|
||||
contentTree.addContent(getSpace());
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,7 +62,7 @@ public class SourceToHTMLConverter {
|
||||
* Relative path from the documentation root to the file that is being
|
||||
* generated.
|
||||
*/
|
||||
private static String relativePath = "";
|
||||
private static DocPath relativePath = DocPath.empty;
|
||||
|
||||
/**
|
||||
* Source is converted to HTML using static methods below.
|
||||
@ -77,7 +77,7 @@ public class SourceToHTMLConverter {
|
||||
* @param outputdir the name of the directory to output to.
|
||||
*/
|
||||
public static void convertRoot(ConfigurationImpl configuration, RootDoc rd,
|
||||
String outputdir) {
|
||||
DocPath outputdir) {
|
||||
if (rd == null || outputdir == null) {
|
||||
return;
|
||||
}
|
||||
@ -108,11 +108,11 @@ public class SourceToHTMLConverter {
|
||||
* @param outputdir the name of the directory to output to.
|
||||
*/
|
||||
public static void convertPackage(ConfigurationImpl configuration, PackageDoc pd,
|
||||
String outputdir) {
|
||||
DocPath outputdir) {
|
||||
if (pd == null || outputdir == null) {
|
||||
return;
|
||||
}
|
||||
String classOutputdir = getPackageOutputDir(outputdir, pd);
|
||||
DocPath classOutputdir = getPackageOutputDir(outputdir, pd);
|
||||
ClassDoc[] cds = pd.allClasses();
|
||||
for (int i = 0; i < cds.length; i++) {
|
||||
// If -nodeprecated option is set and the class is marked as deprecated,
|
||||
@ -131,9 +131,8 @@ public class SourceToHTMLConverter {
|
||||
* @param pd the Package to generate output for.
|
||||
* @return the package output directory as a String.
|
||||
*/
|
||||
private static String getPackageOutputDir(String outputDir, PackageDoc pd) {
|
||||
return outputDir + File.separator +
|
||||
DirectoryManager.getDirectoryPath(pd) + File.separator;
|
||||
private static DocPath getPackageOutputDir(DocPath outputDir, PackageDoc pd) {
|
||||
return outputDir.resolve(DocPath.forPackage(pd));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -144,7 +143,7 @@ public class SourceToHTMLConverter {
|
||||
* @param outputdir the name of the directory to output to.
|
||||
*/
|
||||
public static void convertClass(ConfigurationImpl configuration, ClassDoc cd,
|
||||
String outputdir) {
|
||||
DocPath outputdir) {
|
||||
if (cd == null || outputdir == null) {
|
||||
return;
|
||||
}
|
||||
@ -168,8 +167,9 @@ public class SourceToHTMLConverter {
|
||||
LineNumberReader reader = new LineNumberReader(r);
|
||||
int lineno = 1;
|
||||
String line;
|
||||
relativePath = DirectoryManager.getRelativePath(DocletConstants.SOURCE_OUTPUT_DIR_NAME) +
|
||||
DirectoryManager.getRelativePath(cd.containingPackage());
|
||||
relativePath = DocPaths.SOURCE_OUTPUT
|
||||
.resolve(DocPath.forPackage(cd))
|
||||
.invert();
|
||||
Content body = getHeader();
|
||||
Content pre = new HtmlTree(HtmlTag.PRE);
|
||||
try {
|
||||
@ -198,7 +198,7 @@ public class SourceToHTMLConverter {
|
||||
* @param className the name of the class that I am converting to HTML.
|
||||
* @param configuration the Doclet configuration to pass notices to.
|
||||
*/
|
||||
private static void writeToFile(Content body, String outputDir,
|
||||
private static void writeToFile(Content body, DocPath outputDir,
|
||||
String className, ConfigurationImpl configuration) throws IOException {
|
||||
Content htmlDocType = DocType.Transitional();
|
||||
Content head = new HtmlTree(HtmlTag.HEAD);
|
||||
@ -208,7 +208,7 @@ public class SourceToHTMLConverter {
|
||||
Content htmlTree = HtmlTree.HTML(configuration.getLocale().getLanguage(),
|
||||
head, body);
|
||||
Content htmlDocument = new HtmlDocument(htmlDocType, htmlTree);
|
||||
File dir = new File(outputDir);
|
||||
File dir = outputDir.resolveAgainst(configuration.destDirName);
|
||||
dir.mkdirs();
|
||||
File newFile = new File(dir, className + ".html");
|
||||
configuration.message.notice("doclet.Generating_0", newFile.getPath());
|
||||
@ -227,17 +227,14 @@ public class SourceToHTMLConverter {
|
||||
*/
|
||||
public static HtmlTree getStyleSheetProperties(ConfigurationImpl configuration) {
|
||||
String filename = configuration.stylesheetfile;
|
||||
DocPath stylesheet;
|
||||
if (filename.length() > 0) {
|
||||
File stylefile = new File(filename);
|
||||
String parent = stylefile.getParent();
|
||||
filename = (parent == null)?
|
||||
filename:
|
||||
filename.substring(parent.length() + 1);
|
||||
stylesheet = DocPath.create(new File(filename).getName());
|
||||
} else {
|
||||
filename = "stylesheet.css";
|
||||
stylesheet = DocPaths.STYLESHEET;
|
||||
}
|
||||
filename = relativePath + filename;
|
||||
HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", filename, "Style");
|
||||
DocPath p = relativePath.resolve(stylesheet);
|
||||
HtmlTree link = HtmlTree.LINK("stylesheet", "text/css", p.getPath(), "Style");
|
||||
return link;
|
||||
}
|
||||
|
||||
|
||||
@ -67,10 +67,10 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
* @param indexbuilder Unicode based Index from {@link IndexBuilder}
|
||||
*/
|
||||
public SplitIndexWriter(ConfigurationImpl configuration,
|
||||
String path, String filename,
|
||||
String relpath, IndexBuilder indexbuilder,
|
||||
DocPath path,
|
||||
IndexBuilder indexbuilder,
|
||||
int prev, int next) throws IOException {
|
||||
super(configuration, path, filename, relpath, indexbuilder);
|
||||
super(configuration, path, indexbuilder);
|
||||
this.prev = prev;
|
||||
this.next = next;
|
||||
}
|
||||
@ -85,17 +85,16 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
IndexBuilder indexbuilder) {
|
||||
SplitIndexWriter indexgen;
|
||||
String filename = "";
|
||||
String path = DirectoryManager.getPath("index-files");
|
||||
String relpath = DirectoryManager.getRelativePath("index-files");
|
||||
DocPath filename = DocPath.empty;
|
||||
DocPath path = DocPaths.INDEX_FILES;
|
||||
try {
|
||||
for (int i = 0; i < indexbuilder.elements().length; i++) {
|
||||
int j = i + 1;
|
||||
int prev = (j == 1)? -1: i;
|
||||
int next = (j == indexbuilder.elements().length)? -1: j + 1;
|
||||
filename = "index-" + j +".html";
|
||||
filename = DocPaths.indexN(j);
|
||||
indexgen = new SplitIndexWriter(configuration,
|
||||
path, filename, relpath,
|
||||
path.resolve(filename),
|
||||
indexbuilder, prev, next);
|
||||
indexgen.generateIndexFile((Character)indexbuilder.
|
||||
elements()[i]);
|
||||
@ -104,7 +103,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
} catch (IOException exc) {
|
||||
configuration.standardmessage.error(
|
||||
"doclet.exception_encountered",
|
||||
exc.toString(), filename);
|
||||
exc.toString(), filename.getPath());
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
@ -142,7 +141,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
Object[] unicodeChars = indexbuilder.elements();
|
||||
for (int i = 0; i < unicodeChars.length; i++) {
|
||||
int j = i + 1;
|
||||
contentTree.addContent(getHyperLink("index-" + j + ".html",
|
||||
contentTree.addContent(getHyperLink(DocPaths.indexN(j),
|
||||
new StringContent(unicodeChars[i].toString())));
|
||||
contentTree.addContent(getSpace());
|
||||
}
|
||||
@ -159,7 +158,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
return HtmlTree.LI(prevletterLabel);
|
||||
}
|
||||
else {
|
||||
Content prevLink = getHyperLink("index-" + prev + ".html", "",
|
||||
Content prevLink = getHyperLink(DocPaths.indexN(prev), "",
|
||||
prevletterLabel);
|
||||
return HtmlTree.LI(prevLink);
|
||||
}
|
||||
@ -176,7 +175,7 @@ public class SplitIndexWriter extends AbstractIndexWriter {
|
||||
return HtmlTree.LI(nextletterLabel);
|
||||
}
|
||||
else {
|
||||
Content nextLink = getHyperLink("index-" + next + ".html","",
|
||||
Content nextLink = getHyperLink(DocPaths.indexN(next), "",
|
||||
nextletterLabel);
|
||||
return HtmlTree.LI(nextLink);
|
||||
}
|
||||
|
||||
@ -54,18 +54,11 @@ import com.sun.tools.doclets.internal.toolkit.util.*;
|
||||
*/
|
||||
public abstract class SubWriterHolderWriter extends HtmlDocletWriter {
|
||||
|
||||
public SubWriterHolderWriter(ConfigurationImpl configuration,
|
||||
String filename) throws IOException {
|
||||
public SubWriterHolderWriter(ConfigurationImpl configuration, DocPath filename)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
}
|
||||
|
||||
|
||||
public SubWriterHolderWriter(ConfigurationImpl configuration,
|
||||
String path, String filename, String relpath)
|
||||
throws IOException {
|
||||
super(configuration, path, filename, relpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the summary header.
|
||||
*
|
||||
|
||||
@ -66,8 +66,10 @@ public class TagletWriterImpl extends TagletWriter {
|
||||
public TagletOutput getDocRootOutput() {
|
||||
if (htmlWriter.configuration.docrootparent.length() > 0)
|
||||
return new TagletOutputImpl(htmlWriter.configuration.docrootparent);
|
||||
else if (htmlWriter.pathToRoot.isEmpty())
|
||||
return new TagletOutputImpl(".");
|
||||
else
|
||||
return new TagletOutputImpl(htmlWriter.relativepathNoSlash);
|
||||
return new TagletOutputImpl(htmlWriter.pathToRoot.getPath());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,18 +172,18 @@ public class TagletWriterImpl extends TagletWriter {
|
||||
htmlWriter instanceof ClassWriterImpl) {
|
||||
//Automatically add link to constant values page for constant fields.
|
||||
result = addSeeHeader(result);
|
||||
result += htmlWriter.getHyperLinkString(htmlWriter.relativePath +
|
||||
ConfigurationImpl.CONSTANTS_FILE_NAME
|
||||
+ "#" + ((ClassWriterImpl) htmlWriter).getClassDoc().qualifiedName()
|
||||
result += htmlWriter.getHyperLinkString(htmlWriter.pathToRoot.resolve(
|
||||
DocPaths.CONSTANT_VALUES),
|
||||
((ClassWriterImpl) htmlWriter).getClassDoc().qualifiedName()
|
||||
+ "." + ((FieldDoc) holder).name(),
|
||||
htmlWriter.configuration.getText("doclet.Constants_Summary"));
|
||||
htmlWriter.configuration.getText("doclet.Constants_Summary"), false);
|
||||
}
|
||||
if (holder.isClass() && ((ClassDoc)holder).isSerializable()) {
|
||||
//Automatically add link to serialized form page for serializable classes.
|
||||
if ((SerializedFormBuilder.serialInclude(holder) &&
|
||||
SerializedFormBuilder.serialInclude(((ClassDoc)holder).containingPackage()))) {
|
||||
result = addSeeHeader(result);
|
||||
result += htmlWriter.getHyperLinkString(htmlWriter.relativePath + "serialized-form.html",
|
||||
result += htmlWriter.getHyperLinkString(htmlWriter.pathToRoot.resolve(DocPaths.SERIALIZED_FORM),
|
||||
((ClassDoc)holder).qualifiedName(), htmlWriter.configuration.getText("doclet.Serialized_Form"), false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ public class TreeWriter extends AbstractTreeWriter {
|
||||
* @param classtree the tree being built.
|
||||
*/
|
||||
public TreeWriter(ConfigurationImpl configuration,
|
||||
String filename, ClassTree classtree)
|
||||
DocPath filename, ClassTree classtree)
|
||||
throws IOException {
|
||||
super(configuration, filename, classtree);
|
||||
packages = configuration.packages;
|
||||
@ -84,7 +84,7 @@ public class TreeWriter extends AbstractTreeWriter {
|
||||
public static void generate(ConfigurationImpl configuration,
|
||||
ClassTree classtree) {
|
||||
TreeWriter treegen;
|
||||
String filename = "overview-tree.html";
|
||||
DocPath filename = DocPaths.OVERVIEW_TREE;
|
||||
try {
|
||||
treegen = new TreeWriter(configuration, filename, classtree);
|
||||
treegen.generateTreeFile();
|
||||
@ -144,7 +144,7 @@ public class TreeWriter extends AbstractTreeWriter {
|
||||
(configuration.nodeprecated && Util.isDeprecated(packages[i]))) {
|
||||
continue;
|
||||
}
|
||||
String link = pathString(packages[i], "package-tree.html");
|
||||
DocPath link = pathString(packages[i], DocPaths.PACKAGE_TREE);
|
||||
Content li = HtmlTree.LI(getHyperLink(
|
||||
link, "", new StringContent(packages[i].name())));
|
||||
if (i < packages.length - 1) {
|
||||
|
||||
@ -31,6 +31,8 @@ import java.util.*;
|
||||
import com.sun.javadoc.*;
|
||||
import com.sun.tools.doclets.formats.html.ConfigurationImpl;
|
||||
import com.sun.tools.doclets.internal.toolkit.*;
|
||||
import com.sun.tools.doclets.internal.toolkit.util.DocPath;
|
||||
import com.sun.tools.doclets.internal.toolkit.util.DocPaths;
|
||||
|
||||
|
||||
/**
|
||||
@ -56,25 +58,11 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
*
|
||||
* @param filename String file name.
|
||||
*/
|
||||
public HtmlDocWriter(Configuration configuration,
|
||||
String filename) throws IOException {
|
||||
super(configuration,
|
||||
null, configuration.destDirName + filename,
|
||||
configuration.docencoding);
|
||||
// use File to normalize file separators
|
||||
public HtmlDocWriter(Configuration configuration, DocPath filename)
|
||||
throws IOException {
|
||||
super(configuration, filename);
|
||||
configuration.message.notice("doclet.Generating_0",
|
||||
new File(configuration.destDirName, filename));
|
||||
}
|
||||
|
||||
public HtmlDocWriter(Configuration configuration,
|
||||
String path, String filename) throws IOException {
|
||||
super(configuration,
|
||||
configuration.destDirName + path, filename,
|
||||
configuration.docencoding);
|
||||
// use File to normalize file separators
|
||||
configuration.message.notice("doclet.Generating_0",
|
||||
new File(configuration.destDirName,
|
||||
((path.length() > 0)? path + File.separator: "") + filename));
|
||||
filename.resolveAgainst(configuration.destDirName));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -92,7 +80,7 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param strong Boolean that sets label to strong.
|
||||
* @return String Hyper Link.
|
||||
*/
|
||||
public String getHyperLinkString(String link, String where,
|
||||
public String getHyperLinkString(DocPath link, String where,
|
||||
String label, boolean strong) {
|
||||
return getHyperLinkString(link, where, label, strong, "", "", "");
|
||||
}
|
||||
@ -108,12 +96,25 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param stylename String style of text defined in style sheet.
|
||||
* @return String Hyper Link.
|
||||
*/
|
||||
public String getHyperLinkString(String link, String where,
|
||||
public String getHyperLinkString(DocPath link, String where,
|
||||
String label, boolean strong,
|
||||
String stylename) {
|
||||
return getHyperLinkString(link, where, label, strong, stylename, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link string.
|
||||
*
|
||||
* @param where Position of the link in the file. Character '#' is not
|
||||
* needed.
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(String where,
|
||||
Content label) {
|
||||
return getHyperLink(DocPath.empty, where, label, "", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Html Hyper Link string.
|
||||
*
|
||||
@ -123,7 +124,7 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param label Tag for the link.
|
||||
* @return a content tree for the hyper link
|
||||
*/
|
||||
public Content getHyperLink(String link, String where,
|
||||
public Content getHyperLink(DocPath link, String where,
|
||||
Content label) {
|
||||
return getHyperLink(link, where, label, "", "");
|
||||
}
|
||||
@ -141,6 +142,13 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param target Target frame.
|
||||
* @return String Hyper Link.
|
||||
*/
|
||||
public String getHyperLinkString(DocPath link, String where,
|
||||
String label, boolean strong,
|
||||
String stylename, String title, String target) {
|
||||
return getHyperLinkString(link.getPath(), where, label, strong,
|
||||
stylename, title, target);
|
||||
}
|
||||
|
||||
public String getHyperLinkString(String link, String where,
|
||||
String label, boolean strong,
|
||||
String stylename, String title, String target) {
|
||||
@ -189,8 +197,13 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param target Target frame.
|
||||
* @return a content tree for the hyper link.
|
||||
*/
|
||||
public Content getHyperLink(DocPath link, String where,
|
||||
Content label, String title, String target) {
|
||||
return getHyperLink(link.getPath(), where, label, title, target);
|
||||
}
|
||||
public Content getHyperLink(String link, String where,
|
||||
Content label, String title, String target) {
|
||||
if (link.startsWith("/")) Thread.dumpStack();
|
||||
if (where != null && where.length() != 0) {
|
||||
link += "#" + where;
|
||||
}
|
||||
@ -211,7 +224,7 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param label Label for the link
|
||||
* @return a content for the hyperlink to the file
|
||||
*/
|
||||
public Content getHyperLink(String link, Content label) {
|
||||
public Content getHyperLink(DocPath link, Content label) {
|
||||
return getHyperLink(link, "", label);
|
||||
}
|
||||
|
||||
@ -222,7 +235,7 @@ public abstract class HtmlDocWriter extends HtmlWriter {
|
||||
* @param label Tag for the link.
|
||||
* @return Strign Hyper link.
|
||||
*/
|
||||
public String getHyperLinkString(String link, String label) {
|
||||
public String getHyperLinkString(DocPath link, String label) {
|
||||
return getHyperLinkString(link, "", label, false);
|
||||
}
|
||||
|
||||
|
||||
@ -46,22 +46,11 @@ import com.sun.tools.doclets.internal.toolkit.util.*;
|
||||
*/
|
||||
public class HtmlWriter {
|
||||
|
||||
/**
|
||||
* Name of the file, to which this writer is writing to.
|
||||
*/
|
||||
protected final String htmlFilename;
|
||||
|
||||
/**
|
||||
* The window title of this file
|
||||
*/
|
||||
protected String winTitle;
|
||||
|
||||
/**
|
||||
* URL file separator string("/").
|
||||
*/
|
||||
public static final String fileseparator =
|
||||
DirectoryManager.URL_FILE_SEPARATOR;
|
||||
|
||||
/**
|
||||
* The configuration
|
||||
*/
|
||||
@ -162,18 +151,15 @@ public class HtmlWriter {
|
||||
* or null if none to be created.
|
||||
* @param filename File Name to which the PrintWriter will
|
||||
* do the Output.
|
||||
* @param docencoding Encoding to be used for this file.
|
||||
* @exception IOException Exception raised by the FileWriter is passed on
|
||||
* to next level.
|
||||
* @exception UnsupportedEncodingException Exception raised by the
|
||||
* OutputStreamWriter is passed on to next level.
|
||||
*/
|
||||
public HtmlWriter(Configuration configuration,
|
||||
String path, String filename, String docencoding)
|
||||
throws IOException, UnsupportedEncodingException {
|
||||
writer = Util.genWriter(configuration, path, filename, docencoding);
|
||||
public HtmlWriter(Configuration configuration,DocPath path)
|
||||
throws IOException, UnsupportedEncodingException {
|
||||
writer = Util.genWriter(configuration, path);
|
||||
this.configuration = configuration;
|
||||
htmlFilename = filename;
|
||||
this.memberDetailsListPrinted = false;
|
||||
packageTableHeader = new String[] {
|
||||
configuration.getText("doclet.Package"),
|
||||
|
||||
@ -130,8 +130,8 @@ public abstract class AbstractDoclet {
|
||||
boolean first = true;
|
||||
while(pathTokens.hasMoreTokens()){
|
||||
Util.copyDocFiles(configuration,
|
||||
pathTokens.nextToken() + File.separator,
|
||||
DocletConstants.DOC_FILES_DIR_NAME, first);
|
||||
new File(pathTokens.nextToken()),
|
||||
DocPaths.DOC_FILES, first);
|
||||
first = false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -44,13 +44,6 @@ import com.sun.javadoc.*;
|
||||
|
||||
public interface PackageSummaryWriter {
|
||||
|
||||
/**
|
||||
* Return the name of the output file.
|
||||
*
|
||||
* @return the name of the output file.
|
||||
*/
|
||||
public abstract String getOutputFileName();
|
||||
|
||||
/**
|
||||
* Get the header for the summary.
|
||||
*
|
||||
|
||||
@ -141,11 +141,9 @@ public class AnnotationTypeBuilder extends AbstractBuilder {
|
||||
//documented AND if we have not documented a class from the same
|
||||
//package already. Otherwise, we are making duplicate copies.
|
||||
Util.copyDocFiles(configuration,
|
||||
Util.getPackageSourcePath(configuration,
|
||||
annotationTypeDoc.containingPackage()) +
|
||||
DirectoryManager.getDirectoryPath(
|
||||
annotationTypeDoc.containingPackage())
|
||||
+ File.separator, DocletConstants.DOC_FILES_DIR_NAME, true);
|
||||
new File(Util.getPackageSourcePath(configuration, containingPackage),
|
||||
DocPath.forPackage(annotationTypeDoc).getPath()),
|
||||
DocPaths.DOC_FILES, true);
|
||||
containingPackagesSeen.add(containingPackage.name());
|
||||
}
|
||||
}
|
||||
|
||||
@ -267,10 +267,9 @@ public class ClassBuilder extends AbstractBuilder {
|
||||
//documented AND if we have not documented a class from the same
|
||||
//package already. Otherwise, we are making duplicate copies.
|
||||
Util.copyDocFiles(configuration,
|
||||
Util.getPackageSourcePath(configuration,
|
||||
classDoc.containingPackage()) +
|
||||
DirectoryManager.getDirectoryPath(classDoc.containingPackage())
|
||||
+ File.separator, DocletConstants.DOC_FILES_DIR_NAME, true);
|
||||
new File(Util.getPackageSourcePath(configuration, containingPackage),
|
||||
DocPath.forPackage(classDoc).getPath()),
|
||||
DocPaths.DOC_FILES, true);
|
||||
containingPackagesSeen.add(containingPackage.name());
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,9 +122,7 @@ public class PackageSummaryBuilder extends AbstractBuilder {
|
||||
Util.copyDocFiles(
|
||||
configuration,
|
||||
Util.getPackageSourcePath(configuration, packageDoc),
|
||||
DirectoryManager.getDirectoryPath(packageDoc)
|
||||
+ File.separator
|
||||
+ DocletConstants.DOC_FILES_DIR_NAME,
|
||||
DocPath.forPackage(packageDoc).resolve(DocPaths.DOC_FILES),
|
||||
true);
|
||||
}
|
||||
|
||||
|
||||
@ -474,6 +474,8 @@ public class SerializedFormBuilder extends AbstractBuilder {
|
||||
Arrays.sort(tags);
|
||||
int tagsLength = tags.length;
|
||||
for (int i = 0; i < tagsLength; i++) {
|
||||
if (tags[i].fieldName() == null || tags[i].fieldType() == null) // ignore malformed @serialField tags
|
||||
continue;
|
||||
Content fieldsContentTree = fieldWriter.getFieldsContentHeader(
|
||||
(i == tagsLength - 1));
|
||||
fieldWriter.addMemberHeader(tags[i].fieldTypeDoc(),
|
||||
|
||||
@ -1,317 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2012, 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 com.sun.tools.doclets.internal.toolkit.util;
|
||||
|
||||
import com.sun.tools.doclets.internal.toolkit.*;
|
||||
import com.sun.javadoc.*;
|
||||
import java.io.*;
|
||||
|
||||
|
||||
/**
|
||||
* Handle the directory creations and the path string generations.
|
||||
* All static - never instaniated.
|
||||
*
|
||||
* This code is not part of an API.
|
||||
* It is implementation that is subject to change.
|
||||
* Do not use it as an API
|
||||
*
|
||||
* @since 1.2
|
||||
* @author Atul M Dambalkar
|
||||
*/
|
||||
public class DirectoryManager {
|
||||
|
||||
/**
|
||||
* The file separator string, "/", used in the formation of the URL path.
|
||||
*/
|
||||
public static final String URL_FILE_SEPARATOR = "/";
|
||||
|
||||
/**
|
||||
* Never instaniated.
|
||||
*/
|
||||
private DirectoryManager() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a PackageDoc, return its URL path string.
|
||||
*
|
||||
* @param pd PackageDoc
|
||||
* @see #getPath(String)
|
||||
*/
|
||||
public static String createPathString(PackageDoc pd) {
|
||||
if (pd == null) {
|
||||
return "";
|
||||
}
|
||||
return getPath(pd.name());
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a ClassDoc, return its URL path string.
|
||||
*
|
||||
* @param cd ClassDoc
|
||||
* @see #getPath(String)
|
||||
*/
|
||||
public static String createPathString(ClassDoc cd) {
|
||||
if (cd == null) {
|
||||
return "";
|
||||
}
|
||||
PackageDoc pd = cd.containingPackage();
|
||||
return (pd == null)? "": getPath(pd.name());
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a PackageDoc, return the corresponding directory name
|
||||
* with the platform-dependent file separator between subdirectory names.
|
||||
* For example, if name of the package is "java.lang" , then it
|
||||
* returns "java/lang" on Unix and "java\lang" on Windows.
|
||||
* If name of the package contains no dot, then the value
|
||||
* will be returned unchanged. Because package names cannot
|
||||
* end in a dot, the return value will never end with a slash.
|
||||
* <p>
|
||||
* Also see getPath for the URL separator version of this method
|
||||
* that takes a string instead of a PackageDoc.
|
||||
*
|
||||
* @param pd the PackageDoc
|
||||
* @return the platform-dependent directory path for the package
|
||||
*/
|
||||
public static String getDirectoryPath(PackageDoc pd) {
|
||||
return pd == null || pd.name().length() == 0 ? "" : getDirectoryPath(pd.name());
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package name, return the corresponding directory name
|
||||
* with the platform-dependent file separator between subdirectory names.
|
||||
* For example, if name of the package is "java.lang" , then it
|
||||
* returns "java/lang" on Unix and "java\lang" on Windows.
|
||||
* If name of the package contains no dot, then the value
|
||||
* will be returned unchanged. Because package names cannot
|
||||
* end in a dot, the return value will never end with a slash.
|
||||
* <p>
|
||||
* Also see getPath for the URL separator version of this method
|
||||
* that takes a string instead of a PackageDoc.
|
||||
*
|
||||
* @param packageName the name of the package
|
||||
* @return the platform-dependent directory path for the package
|
||||
*/
|
||||
public static String getDirectoryPath(String packageName) {
|
||||
if (packageName == null || packageName.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder pathstr = new StringBuilder();
|
||||
for (int i = 0; i < packageName.length(); i++) {
|
||||
char ch = packageName.charAt(i);
|
||||
if (ch == '.') {
|
||||
pathstr.append(URL_FILE_SEPARATOR);
|
||||
} else {
|
||||
pathstr.append(ch);
|
||||
}
|
||||
}
|
||||
if (pathstr.length() > 0 && ! pathstr.toString().endsWith(URL_FILE_SEPARATOR)) {
|
||||
pathstr.append(URL_FILE_SEPARATOR);
|
||||
}
|
||||
return pathstr.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package name (a string), return the path string,
|
||||
* with the URL separator "/" separating the subdirectory names.
|
||||
* If name of the package contains no dot, then the value
|
||||
* will be returned unchanged. Because package names cannot
|
||||
* end in a dot, the return value will never end with a slash.
|
||||
* <p>
|
||||
* For example if the string is "com.sun.javadoc" then the URL
|
||||
* path string will be "com/sun/javadoc".
|
||||
*
|
||||
* @param name the package name as a String
|
||||
* @return the String URL path
|
||||
*/
|
||||
public static String getPath(String name) {
|
||||
if (name == null || name.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder pathstr = new StringBuilder();
|
||||
for (int i = 0; i < name.length(); i++) {
|
||||
char ch = name.charAt(i);
|
||||
if (ch == '.') {
|
||||
pathstr.append(URL_FILE_SEPARATOR);
|
||||
} else {
|
||||
pathstr.append(ch);
|
||||
}
|
||||
}
|
||||
return pathstr.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Given two package names as strings, return the relative path
|
||||
* from the package directory corresponding to the first string
|
||||
* to the package directory corresponding to the second string,
|
||||
* with the URL file separator "/" separating subdirectory names.
|
||||
* <p>
|
||||
* For example, if the parameter "from" is "java.lang"
|
||||
* and parameter "to" is "java.applet", return string
|
||||
* "../../java/applet".
|
||||
*
|
||||
* @param from the package name from which path is calculated
|
||||
* @param to the package name to which path is calculated
|
||||
* @return relative path between "from" and "to" with URL
|
||||
* separators
|
||||
* @see #getRelativePath(String)
|
||||
* @see #getPath(String)
|
||||
*/
|
||||
public static String getRelativePath(String from, String to) {
|
||||
StringBuilder pathstr = new StringBuilder();
|
||||
pathstr.append(getRelativePath(from));
|
||||
pathstr.append(getPath(to));
|
||||
pathstr.append(URL_FILE_SEPARATOR);
|
||||
return pathstr.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package name as a string, return relative path string
|
||||
* from the corresponding package directory to the root of
|
||||
* the documentation, using the URL separator "/" between
|
||||
* subdirectory names.
|
||||
* <p>
|
||||
* For example, if the string "from" is "java.lang",
|
||||
* return "../../"
|
||||
*
|
||||
* @param from the package
|
||||
* @return String relative path from "from".
|
||||
* @see #getRelativePath(String, String)
|
||||
*/
|
||||
public static String getRelativePath(PackageDoc from) {
|
||||
return from == null || from.name().length() == 0 ? "" : getRelativePath(from.name());
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package name as a string, return relative path string
|
||||
* from the corresponding package directory to the root of
|
||||
* the documentation, using the URL separator "/" between
|
||||
* subdirectory names.
|
||||
* <p>
|
||||
* For example, if the string "from" is "java.lang",
|
||||
* return "../../"
|
||||
*
|
||||
* @param from the package name
|
||||
* @return String relative path from "from".
|
||||
* @see #getRelativePath(String, String)
|
||||
*/
|
||||
public static String getRelativePath(String from) {
|
||||
if (from == null || from.length() == 0) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder pathstr = new StringBuilder();
|
||||
for (int i = 0; i < from.length(); i++) {
|
||||
char ch = from.charAt(i);
|
||||
if (ch == '.') {
|
||||
pathstr.append(".." + URL_FILE_SEPARATOR);
|
||||
}
|
||||
}
|
||||
pathstr.append(".." + URL_FILE_SEPARATOR);
|
||||
return pathstr.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a relative or absolute path that might be empty,
|
||||
* convert it to a path that does not end with a
|
||||
* URL separator "/". Used for converting
|
||||
* HtmlStandardWriter.relativepath when replacing {@docRoot}.
|
||||
*
|
||||
* @param path the path to convert. An empty path represents
|
||||
* the current directory.
|
||||
*/
|
||||
public static String getPathNoTrailingSlash(String path) {
|
||||
if ( path.equals("") ) {
|
||||
return ".";
|
||||
}
|
||||
if ( path.equals("/") ) {
|
||||
return "/.";
|
||||
}
|
||||
if ( path.endsWith("/") ) {
|
||||
// Remove trailing slash
|
||||
path = path.substring(0, path.length() -1);
|
||||
}
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a path string create all the directories in the path. For example,
|
||||
* if the path string is "java/applet", the method will create directory
|
||||
* "java" and then "java/applet" if they don't exist. The file separator
|
||||
* string "/" is platform dependent system property.
|
||||
*
|
||||
* @param path Directory path string.
|
||||
*/
|
||||
public static void createDirectory(Configuration configuration,
|
||||
String path) {
|
||||
if (path == null || path.length() == 0) {
|
||||
return;
|
||||
}
|
||||
File dir = new File(path);
|
||||
if (dir.exists()) {
|
||||
return;
|
||||
} else {
|
||||
if (dir.mkdirs()) {
|
||||
return;
|
||||
} else {
|
||||
configuration.message.error(
|
||||
"doclet.Unable_to_create_directory_0", path);
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package name and a file name, return the full path to that file.
|
||||
* For example, if PackageDoc passed is for "java.lang" and the filename
|
||||
* passed is "package-summary.html", then the string returned is
|
||||
* "java/lang/package-summary.html".
|
||||
*
|
||||
* @param pd PackageDoc.
|
||||
* @param filename File name to be appended to the path of the package.
|
||||
*/
|
||||
public static String getPathToPackage(PackageDoc pd, String filename) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
String pathstr = createPathString(pd);
|
||||
if (pathstr.length() > 0) {
|
||||
buf.append(pathstr);
|
||||
buf.append(URL_FILE_SEPARATOR);
|
||||
}
|
||||
buf.append(filename);
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a class name return the full path to the class file.
|
||||
* For example, if ClassDoc passed is for "java.lang.Object" then the
|
||||
* string returned is "java/lang/Object.html".
|
||||
*
|
||||
* @param cd ClassDoc.
|
||||
*/
|
||||
public static String getPathToClass(ClassDoc cd) {
|
||||
return getPathToPackage(cd.containingPackage(), cd.name() + ".html");
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,188 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2012, 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 com.sun.tools.doclets.internal.toolkit.util;
|
||||
|
||||
import com.sun.javadoc.ClassDoc;
|
||||
import com.sun.javadoc.PackageDoc;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* Abstraction for immutable relative paths.
|
||||
* Paths always use '/' as a separator, and never begin or end with '/'.
|
||||
*/
|
||||
public class DocPath {
|
||||
private final String path;
|
||||
|
||||
/** The empty path. */
|
||||
public static final DocPath empty = new DocPath("");
|
||||
|
||||
/** The empty path. */
|
||||
public static final DocPath parent = new DocPath("..");
|
||||
|
||||
/**
|
||||
* Create a path from a string.
|
||||
*/
|
||||
public static DocPath create(String p) {
|
||||
return (p == null) || p.isEmpty() ? empty : new DocPath(p);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path for a class.
|
||||
* For example, if the class is java.lang.Object,
|
||||
* the path is java/lang/Object.html.
|
||||
*/
|
||||
public static DocPath forClass(ClassDoc cd) {
|
||||
return (cd == null) ? empty :
|
||||
forPackage(cd.containingPackage()).resolve(forName(cd));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path for the simple name of the class.
|
||||
* For example, if the class is java.lang.Object,
|
||||
* the path is Object.html.
|
||||
*/
|
||||
public static DocPath forName(ClassDoc cd) {
|
||||
return (cd == null) ? empty : new DocPath(cd.name() + ".html");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path for the package of a class.
|
||||
* For example, if the class is java.lang.Object,
|
||||
* the path is java/lang.
|
||||
*/
|
||||
public static DocPath forPackage(ClassDoc cd) {
|
||||
return (cd == null) ? empty : forPackage(cd.containingPackage());
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path for a package.
|
||||
* For example, if the package is java.lang,
|
||||
* the path is java/lang.
|
||||
*/
|
||||
public static DocPath forPackage(PackageDoc pd) {
|
||||
return (pd == null) ? empty : DocPath.create(pd.name().replace('.', '/'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the inverse path for a package.
|
||||
* For example, if the package is java.lang,
|
||||
* the inverse path is ../...
|
||||
*/
|
||||
public static DocPath forRoot(PackageDoc pd) {
|
||||
String name = (pd == null) ? "" : pd.name();
|
||||
if (name.isEmpty())
|
||||
return empty;
|
||||
return new DocPath(name.replace('.', '/').replaceAll("[^/]+", ".."));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the relative path from one package to another.
|
||||
*/
|
||||
public static DocPath relativePath(PackageDoc from, PackageDoc to) {
|
||||
return forRoot(from).resolve(forPackage(to));
|
||||
}
|
||||
|
||||
protected DocPath(String p) {
|
||||
path = (p.endsWith("/") ? p.substring(0, p.length() - 1) : p);
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
@Override
|
||||
public boolean equals(Object other) {
|
||||
return (other instanceof DocPath) && path.equals(((DocPath)other).path);
|
||||
}
|
||||
|
||||
/** @inheritDoc */
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return path.hashCode();
|
||||
}
|
||||
|
||||
public DocPath basename() {
|
||||
int sep = path.lastIndexOf("/");
|
||||
return (sep == -1) ? this : new DocPath(path.substring(sep + 1));
|
||||
}
|
||||
|
||||
public DocPath parent() {
|
||||
int sep = path.lastIndexOf("/");
|
||||
return (sep == -1) ? empty : new DocPath(path.substring(0, sep));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path formed by appending the specified string to the current path.
|
||||
*/
|
||||
public DocPath resolve(String p) {
|
||||
if (p == null || p.isEmpty())
|
||||
return this;
|
||||
if (path.isEmpty())
|
||||
return new DocPath(p);
|
||||
return new DocPath(path + "/" + p);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the path by appending the specified path to the current path.
|
||||
*/
|
||||
public DocPath resolve(DocPath p) {
|
||||
if (p == null || p.isEmpty())
|
||||
return this;
|
||||
if (path.isEmpty())
|
||||
return p;
|
||||
return new DocPath(path + "/" + p.getPath());
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the file created by evaluating the path against a specified directory.
|
||||
*/
|
||||
// Temporary: this signature should not use String for dir.
|
||||
// Eventually, this should involve javax.tools.Location.
|
||||
public File resolveAgainst(String dir) {
|
||||
return dir.isEmpty() ? new File(path) : new File(dir, path);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the inverse path for this path.
|
||||
* For example, if the path is a/b/c, the inverse path is ../../..
|
||||
*/
|
||||
public DocPath invert() {
|
||||
return new DocPath(path.replaceAll("[^/]+", ".."));
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if this path is empty.
|
||||
*/
|
||||
public boolean isEmpty() {
|
||||
return path.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return this path as a string.
|
||||
*/
|
||||
// This is provided instead of using toString() to help catch
|
||||
// unintended use of toString() in string concatenation sequences.
|
||||
public String getPath() {
|
||||
return path;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,110 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2012, 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 com.sun.tools.doclets.internal.toolkit.util;
|
||||
|
||||
/**
|
||||
* Standard DocPath objects.
|
||||
*
|
||||
* @since 8
|
||||
*/
|
||||
public class DocPaths {
|
||||
|
||||
/** The name of the file for all classes, using frames. */
|
||||
public static final DocPath ALLCLASSES_FRAME = DocPath.create("allclasses-frame.html");
|
||||
|
||||
/** The name of the file for all classes, without using frames. */
|
||||
public static final DocPath ALLCLASSES_NOFRAME = DocPath.create("allclasses-noframe.html");
|
||||
|
||||
/** The name of the sub-directory for storing class usage info. */
|
||||
public static final DocPath CLASS_USE = DocPath.create("class-use");
|
||||
|
||||
/** The name of the file for constant values. */
|
||||
public static final DocPath CONSTANT_VALUES = DocPath.create("constant-values.html");
|
||||
|
||||
/** The name of the fie for deprecated elements. */
|
||||
public static final DocPath DEPRECATED_LIST = DocPath.create("deprecated-list.html");
|
||||
|
||||
/** The name of the subdirectory for user-provided additional documentation files. */
|
||||
public static final DocPath DOC_FILES = DocPath.create("doc-files");
|
||||
|
||||
/** The name of the file for help info. */
|
||||
public static final DocPath HELP_DOC = DocPath.create("help-doc.html");
|
||||
|
||||
/** The name of the main index file. */
|
||||
public static final DocPath INDEX = DocPath.create("index.html");
|
||||
|
||||
/** The name of the single index file for all classes. */
|
||||
public static final DocPath INDEX_ALL = DocPath.create("index-all.html");
|
||||
|
||||
/** The name of the directory for the split index files. */
|
||||
public static final DocPath INDEX_FILES = DocPath.create("index-files");
|
||||
|
||||
/** Generate the name of one of the files in the split index. */
|
||||
public static final DocPath indexN(int n) {
|
||||
return DocPath.create("index-" + n + ".html");
|
||||
}
|
||||
|
||||
/** The name of the file for the overview frame. */
|
||||
public static final DocPath OVERVIEW_FRAME = DocPath.create("overview-frame.html");
|
||||
|
||||
/** The name of the file for the overview summary. */
|
||||
public static final DocPath OVERVIEW_SUMMARY = DocPath.create("overview-summary.html");
|
||||
|
||||
/** The name of the file for the overview tree. */
|
||||
public static final DocPath OVERVIEW_TREE = DocPath.create("overview-tree.html");
|
||||
|
||||
/** The name of the file for the package frame. */
|
||||
public static final DocPath PACKAGE_FRAME = DocPath.create("package-frame.html");
|
||||
|
||||
/** The name of the file for the package list. */
|
||||
public static final DocPath PACKAGE_LIST = DocPath.create("package-list");
|
||||
|
||||
/** The name of the file for the package summary. */
|
||||
public static final DocPath PACKAGE_SUMMARY = DocPath.create("package-summary.html");
|
||||
|
||||
/** The name of the file for the package tree. */
|
||||
public static final DocPath PACKAGE_TREE = DocPath.create("package-tree.html");
|
||||
|
||||
/** The name of the file for the package usage info. */
|
||||
public static final DocPath PACKAGE_USE = DocPath.create("package-use.html");
|
||||
|
||||
/** The name of the directory in which resources are generated.
|
||||
* Also the name of the sub-package from which resources are read.
|
||||
*/
|
||||
public static final DocPath RESOURCES = DocPath.create("resources");
|
||||
|
||||
/** The name of the file for the serialized form info. */
|
||||
public static final DocPath SERIALIZED_FORM = DocPath.create("serialized-form.html");
|
||||
|
||||
/** The name of the directory in which HTML versions of the source code
|
||||
* are generated.
|
||||
*/
|
||||
public static final DocPath SOURCE_OUTPUT = DocPath.create("src-html");
|
||||
|
||||
/** The name of the default stylesheet. */
|
||||
public static final DocPath STYLESHEET = DocPath.create("stylesheet.css");
|
||||
|
||||
}
|
||||
@ -39,6 +39,16 @@ package com.sun.tools.doclets.internal.toolkit.util;
|
||||
*/
|
||||
public class DocletConstants {
|
||||
|
||||
/**
|
||||
* The default amount of space between tab stops.
|
||||
*/
|
||||
public static final int DEFAULT_TAB_STOP_LENGTH = 8;
|
||||
|
||||
/**
|
||||
* The line separator for the current operating system.
|
||||
*/
|
||||
public static final String NL = System.getProperty("line.separator");
|
||||
|
||||
/**
|
||||
* The default package name.
|
||||
*/
|
||||
@ -53,34 +63,4 @@ public class DocletConstants {
|
||||
* The anchor for the default package.
|
||||
*/
|
||||
public static final String UNNAMED_PACKAGE_ANCHOR = "unnamed_package";
|
||||
|
||||
/**
|
||||
* The name of the doc files directory.
|
||||
*/
|
||||
public static final String DOC_FILES_DIR_NAME = "doc-files";
|
||||
|
||||
/**
|
||||
* The default amount of space between tab stops.
|
||||
*/
|
||||
public static final int DEFAULT_TAB_STOP_LENGTH = 8;
|
||||
|
||||
/**
|
||||
* The name of the directory where we will copy resource files to.
|
||||
*/
|
||||
public static final String RESOURE_DIR_NAME = "resources";
|
||||
|
||||
/**
|
||||
* The source output directory name
|
||||
*/
|
||||
public static final String SOURCE_OUTPUT_DIR_NAME = "src-html/";
|
||||
|
||||
/**
|
||||
* The name of the package list file.
|
||||
*/
|
||||
public static final String PACKAGE_LIST_FILE_NAME = "package-list";
|
||||
|
||||
/**
|
||||
* The line seperator for the current operating system.
|
||||
*/
|
||||
public static final String NL = System.getProperty("line.separator");
|
||||
}
|
||||
|
||||
@ -142,12 +142,15 @@ public class Extern {
|
||||
* @return if external return converted link else return null
|
||||
*/
|
||||
public String getExternalLink(String pkgName,
|
||||
String relativepath, String link) {
|
||||
DocPath relativepath, String link) {
|
||||
Item fnd = findPackageItem(pkgName);
|
||||
if (fnd != null) {
|
||||
String externlink = fnd.path + link;
|
||||
if (fnd.relative) { // it's a relative path.
|
||||
return relativepath + externlink;
|
||||
if (relativepath.isEmpty())
|
||||
return externlink;
|
||||
else
|
||||
return relativepath.getPath() + "/" + externlink;
|
||||
} else {
|
||||
return externlink;
|
||||
}
|
||||
|
||||
@ -52,8 +52,7 @@ public class PackageListWriter extends PrintWriter {
|
||||
* @param configuration the current configuration of the doclet.
|
||||
*/
|
||||
public PackageListWriter(Configuration configuration) throws IOException {
|
||||
super(Util.genWriter(configuration, configuration.destDirName,
|
||||
DocletConstants.PACKAGE_LIST_FILE_NAME, configuration.docencoding));
|
||||
super(Util.genWriter(configuration, DocPaths.PACKAGE_LIST));
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
@ -71,7 +70,7 @@ public class PackageListWriter extends PrintWriter {
|
||||
packgen.close();
|
||||
} catch (IOException exc) {
|
||||
configuration.message.error("doclet.exception_encountered",
|
||||
exc.toString(), DocletConstants.PACKAGE_LIST_FILE_NAME);
|
||||
exc.toString(), DocPaths.PACKAGE_LIST);
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2012, 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
|
||||
@ -38,8 +38,7 @@ import java.io.File;
|
||||
*
|
||||
* @author Atul M Dambalkar
|
||||
*/
|
||||
public
|
||||
class SourcePath {
|
||||
public class SourcePath {
|
||||
private final char dirSeparator = File.pathSeparatorChar;
|
||||
|
||||
/**
|
||||
@ -114,9 +113,9 @@ public
|
||||
* @param name Name of the directory to be searched for in the source path.
|
||||
* @return File Return the directory if found else return null.
|
||||
*/
|
||||
public File getDirectory(String name) {
|
||||
public File getDirectory(DocPath p) {
|
||||
for (int i = 0; i < sourcePath.length; i++) {
|
||||
File directoryNeeded = new File(sourcePath[i], name);
|
||||
File directoryNeeded = new File(sourcePath[i], p.getPath());
|
||||
if (directoryNeeded.isDirectory()) {
|
||||
return directoryNeeded;
|
||||
}
|
||||
|
||||
@ -51,11 +51,6 @@ public class Util {
|
||||
public static final String[][] HTML_ESCAPE_CHARS =
|
||||
{{"&", "&"}, {"<", "<"}, {">", ">"}};
|
||||
|
||||
/**
|
||||
* Name of the resource directory.
|
||||
*/
|
||||
public static final String RESOURCESDIR = "resources";
|
||||
|
||||
/**
|
||||
* Return array of class members whose documentation is to be generated.
|
||||
* If the member is deprecated do not include such a member in the
|
||||
@ -236,26 +231,20 @@ public class Util {
|
||||
* @param overwrite Overwrite files if true.
|
||||
*/
|
||||
public static void copyDocFiles(Configuration configuration,
|
||||
String path, String dir, boolean overwrite) {
|
||||
File path, DocPath dir, boolean overwrite) {
|
||||
if (checkCopyDocFilesErrors(configuration, path, dir)) {
|
||||
return;
|
||||
}
|
||||
String destname = configuration.docFileDestDirName;
|
||||
File srcdir = new File(path + dir);
|
||||
if (destname.length() > 0 && !destname.endsWith(
|
||||
DirectoryManager.URL_FILE_SEPARATOR)) {
|
||||
destname += DirectoryManager.URL_FILE_SEPARATOR;
|
||||
}
|
||||
String dest = destname + dir;
|
||||
File srcdir = new File(path, dir.getPath());
|
||||
File destdir = new File(configuration.docFileDestDirName, dir.getPath());
|
||||
try {
|
||||
File destdir = new File(dest);
|
||||
DirectoryManager.createDirectory(configuration, dest);
|
||||
createDirectory(configuration, destdir);
|
||||
String[] files = srcdir.list();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
File srcfile = new File(srcdir, files[i]);
|
||||
File destfile = new File(destdir, files[i]);
|
||||
if (srcfile.isFile()) {
|
||||
if(destfile.exists() && ! overwrite) {
|
||||
if (destfile.exists() && ! overwrite) {
|
||||
configuration.message.warning((SourcePosition) null,
|
||||
"doclet.Copy_Overwrite_warning",
|
||||
srcfile.toString(), destdir.toString());
|
||||
@ -265,12 +254,11 @@ public class Util {
|
||||
srcfile.toString(), destdir.toString());
|
||||
Util.copyFile(destfile, srcfile);
|
||||
}
|
||||
} else if(srcfile.isDirectory()) {
|
||||
if(configuration.copydocfilesubdirs
|
||||
} else if (srcfile.isDirectory()) {
|
||||
if (configuration.copydocfilesubdirs
|
||||
&& ! configuration.shouldExcludeDocFileDir(
|
||||
srcfile.getName())){
|
||||
copyDocFiles(configuration, path, dir +
|
||||
DirectoryManager.URL_FILE_SEPARATOR + srcfile.getName(),
|
||||
copyDocFiles(configuration, path, dir.resolve(files[i]),
|
||||
overwrite);
|
||||
}
|
||||
}
|
||||
@ -290,7 +278,7 @@ public class Util {
|
||||
* @param dirName The original directory name to copy from.
|
||||
*/
|
||||
private static boolean checkCopyDocFilesErrors (Configuration configuration,
|
||||
String path, String dirName) {
|
||||
File path, DocPath dirName) {
|
||||
if ((configuration.sourcepath == null || configuration.sourcepath.length() == 0) &&
|
||||
(configuration.destDirName == null || configuration.destDirName.length() == 0)) {
|
||||
//The destination path and source path are definitely equal.
|
||||
@ -309,7 +297,7 @@ public class Util {
|
||||
}
|
||||
}
|
||||
//Make sure the doc-file being copied exists.
|
||||
File srcdir = new File(path + dirName);
|
||||
File srcdir = new File(path, dirName.getPath());
|
||||
if (! srcdir.exists()) {
|
||||
return true;
|
||||
}
|
||||
@ -330,8 +318,7 @@ public class Util {
|
||||
*/
|
||||
public static void copyResourceFile(Configuration configuration,
|
||||
String resourcefile, boolean overwrite) {
|
||||
String destresourcesdir = configuration.destDirName + RESOURCESDIR;
|
||||
copyFile(configuration, resourcefile, RESOURCESDIR, destresourcesdir,
|
||||
copyFile(configuration, resourcefile, DocPaths.RESOURCES, DocPaths.RESOURCES,
|
||||
overwrite, false);
|
||||
}
|
||||
|
||||
@ -350,15 +337,24 @@ public class Util {
|
||||
* @param replaceNewLine true if the newline needs to be replaced with platform-
|
||||
* specific newline.
|
||||
*/
|
||||
public static void copyFile(Configuration configuration, String file, DocPath source,
|
||||
DocPath destination, boolean overwrite, boolean replaceNewLine) {
|
||||
copyFile(configuration, file, source.getPath(), destination.getPath(),
|
||||
overwrite, replaceNewLine);
|
||||
}
|
||||
|
||||
public static void copyFile(Configuration configuration, String file, String source,
|
||||
String destination, boolean overwrite, boolean replaceNewLine) {
|
||||
DirectoryManager.createDirectory(configuration, destination);
|
||||
File destfile = new File(destination, file);
|
||||
if(destfile.exists() && (! overwrite)) return;
|
||||
File destdir = configuration.destDirName.isEmpty() ?
|
||||
(destination.isEmpty() ? null : new File(destination)) :
|
||||
new File(configuration.destDirName, destination);
|
||||
File destfile = (destdir == null) ? new File(file) : new File(destdir, file);
|
||||
createDirectory(configuration, destfile.getParentFile());
|
||||
if (destfile.exists() && (! overwrite)) return;
|
||||
try {
|
||||
InputStream in = Configuration.class.getResourceAsStream(
|
||||
source + DirectoryManager.URL_FILE_SEPARATOR + file);
|
||||
if(in==null) return;
|
||||
source + '/' + file);
|
||||
if (in == null) return;
|
||||
OutputStream out = new FileOutputStream(destfile);
|
||||
try {
|
||||
if (!replaceNewLine) {
|
||||
@ -395,27 +391,47 @@ public class Util {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a path string create all the directories in the path. For example,
|
||||
* if the path string is "java/applet", the method will create directory
|
||||
* "java" and then "java/applet" if they don't exist. The file separator
|
||||
* string "/" is platform dependent system property.
|
||||
*
|
||||
* @param path Directory path string.
|
||||
*/
|
||||
public static void createDirectory(Configuration configuration, File dir) {
|
||||
if (dir == null) {
|
||||
return;
|
||||
}
|
||||
if (dir.exists()) {
|
||||
return;
|
||||
} else {
|
||||
if (dir.mkdirs()) {
|
||||
return;
|
||||
} else {
|
||||
configuration.message.error(
|
||||
"doclet.Unable_to_create_directory_0", dir.getPath());
|
||||
throw new DocletAbortException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a PackageDoc, return the source path for that package.
|
||||
* @param configuration The Configuration for the current Doclet.
|
||||
* @param pkgDoc The package to seach the path for.
|
||||
* @param pkgDoc The package to search the path for.
|
||||
* @return A string representing the path to the given package.
|
||||
*/
|
||||
public static String getPackageSourcePath(Configuration configuration,
|
||||
PackageDoc pkgDoc){
|
||||
try{
|
||||
String pkgPath = DirectoryManager.getDirectoryPath(pkgDoc);
|
||||
String completePath = new SourcePath(configuration.sourcepath).
|
||||
getDirectory(pkgPath) + DirectoryManager.URL_FILE_SEPARATOR;
|
||||
//Make sure that both paths are using the same separators.
|
||||
completePath = Util.replaceText(completePath, File.separator,
|
||||
DirectoryManager.URL_FILE_SEPARATOR);
|
||||
pkgPath = Util.replaceText(pkgPath, File.separator,
|
||||
DirectoryManager.URL_FILE_SEPARATOR);
|
||||
return completePath.substring(0, completePath.lastIndexOf(pkgPath));
|
||||
} catch (Exception e){
|
||||
return "";
|
||||
}
|
||||
public static File getPackageSourcePath(Configuration configuration,
|
||||
PackageDoc pkgDoc) {
|
||||
DocPath pkgPath = DocPath.forPackage(pkgDoc);
|
||||
File pkgDir = new SourcePath(configuration.sourcepath).getDirectory(pkgPath);
|
||||
if (pkgDir == null)
|
||||
return null;
|
||||
//Make sure that both paths are using the same separators.
|
||||
String completePath = Util.replaceText(pkgDir.getPath(), File.separator, "/");
|
||||
String pathForPkg = completePath.substring(0, completePath.lastIndexOf(pkgPath.getPath()));
|
||||
return new File(pathForPkg);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -552,7 +568,7 @@ public class Util {
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package, return it's name.
|
||||
* Given a package, return its name.
|
||||
* @param packageDoc the package to check.
|
||||
* @return the name of the given package.
|
||||
*/
|
||||
@ -562,7 +578,7 @@ public class Util {
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a package, return it's file name without the extension.
|
||||
* Given a package, return its file name without the extension.
|
||||
* @param packageDoc the package to check.
|
||||
* @return the file name of the given package.
|
||||
*/
|
||||
@ -572,7 +588,7 @@ public class Util {
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a string, replace all occurraces of 'newStr' with 'oldStr'.
|
||||
* Given a string, replace all occurrences of 'newStr' with 'oldStr'.
|
||||
* @param originalStr the string to modify.
|
||||
* @param oldStr the string to replace.
|
||||
* @param newStr the string to insert in place of the old string.
|
||||
@ -637,22 +653,15 @@ public class Util {
|
||||
* @see java.io.FileOutputStream
|
||||
* @see java.io.OutputStreamWriter
|
||||
*/
|
||||
public static Writer genWriter(Configuration configuration,
|
||||
String path, String filename,
|
||||
String docencoding)
|
||||
throws IOException, UnsupportedEncodingException {
|
||||
FileOutputStream fos;
|
||||
if (path != null) {
|
||||
DirectoryManager.createDirectory(configuration, path);
|
||||
fos = new FileOutputStream(((path.length() > 0)?
|
||||
path + File.separator: "") + filename);
|
||||
} else {
|
||||
fos = new FileOutputStream(filename);
|
||||
}
|
||||
if (docencoding == null) {
|
||||
public static Writer genWriter(Configuration configuration, DocPath path)
|
||||
throws IOException, UnsupportedEncodingException {
|
||||
File file = path.resolveAgainst(configuration.destDirName);
|
||||
createDirectory(configuration, file.getParentFile());
|
||||
FileOutputStream fos = new FileOutputStream(file);
|
||||
if (configuration.docencoding == null) {
|
||||
return new BufferedWriter(new OutputStreamWriter(fos));
|
||||
} else {
|
||||
return new BufferedWriter(new OutputStreamWriter(fos, docencoding));
|
||||
return new BufferedWriter(new OutputStreamWriter(fos, configuration.docencoding));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -237,6 +237,9 @@ class SerializedForm {
|
||||
|
||||
SerialFieldTag[] sfTag = spfDoc.serialFieldTags();
|
||||
for (int i = 0; i < sfTag.length; i++) {
|
||||
if (sfTag[i].fieldName() == null || sfTag[i].fieldType() == null) // ignore malformed @serialField tags
|
||||
continue;
|
||||
|
||||
Name fieldName = names.fromString(sfTag[i].fieldName());
|
||||
|
||||
// Look for a FieldDocImpl that is documented by serialFieldTagImpl.
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2012, 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
|
||||
@ -53,28 +53,28 @@ public class TestIndex extends JavadocTester {
|
||||
|
||||
//Test index-all.html
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<a href=\"./pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">C</span></a>" +
|
||||
" - Class in <a href=\"./pkg/package-summary.html\">pkg</a>"},
|
||||
"<a href=\"pkg/C.html\" title=\"class in pkg\"><span class=\"strong\">C</span></a>" +
|
||||
" - Class in <a href=\"pkg/package-summary.html\">pkg</a>"},
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<a href=\"./pkg/Interface.html\" title=\"interface in pkg\">" +
|
||||
"<a href=\"pkg/Interface.html\" title=\"interface in pkg\">" +
|
||||
"<span class=\"strong\">Interface</span></a> - Interface in " +
|
||||
"<a href=\"./pkg/package-summary.html\">pkg</a>"},
|
||||
"<a href=\"pkg/package-summary.html\">pkg</a>"},
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<a href=\"./pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
|
||||
"<a href=\"pkg/AnnotationType.html\" title=\"annotation in pkg\">" +
|
||||
"<span class=\"strong\">AnnotationType</span></a> - Annotation Type in " +
|
||||
"<a href=\"./pkg/package-summary.html\">pkg</a>"},
|
||||
"<a href=\"pkg/package-summary.html\">pkg</a>"},
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<a href=\"./pkg/Coin.html\" title=\"enum in pkg\">" +
|
||||
"<a href=\"pkg/Coin.html\" title=\"enum in pkg\">" +
|
||||
"<span class=\"strong\">Coin</span></a> - Enum in " +
|
||||
"<a href=\"./pkg/package-summary.html\">pkg</a>"},
|
||||
"<a href=\"pkg/package-summary.html\">pkg</a>"},
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"Class in <a href=\"./package-summary.html\"><Unnamed></a>"},
|
||||
"Class in <a href=\"package-summary.html\"><Unnamed></a>"},
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<dl>" + NL + "<dt><span class=\"strong\"><a href=\"./pkg/C.html#Java\">" +
|
||||
"Java</a></span> - Static variable in class pkg.<a href=\"./pkg/C.html\" " +
|
||||
"<dl>" + NL + "<dt><span class=\"strong\"><a href=\"pkg/C.html#Java\">" +
|
||||
"Java</a></span> - Static variable in class pkg.<a href=\"pkg/C.html\" " +
|
||||
"title=\"class in pkg\">C</a></dt>" + NL + "<dd> </dd>" + NL +
|
||||
"<dt><span class=\"strong\"><a href=\"./pkg/C.html#JDK\">JDK</a></span> " +
|
||||
"- Static variable in class pkg.<a href=\"./pkg/C.html\" title=\"class in pkg\">" +
|
||||
"<dt><span class=\"strong\"><a href=\"pkg/C.html#JDK\">JDK</a></span> " +
|
||||
"- Static variable in class pkg.<a href=\"pkg/C.html\" title=\"class in pkg\">" +
|
||||
"C</a></dt>" + NL + "<dd> </dd>" + NL + "</dl>"},
|
||||
};
|
||||
private static final String[][] NEGATED_TEST = NO_TEST;
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2012, 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
|
||||
@ -663,14 +663,14 @@ public class TestNewLanguageFeatures extends JavadocTester {
|
||||
// TYPE PARAMETER IN INDEX
|
||||
//=================================
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
|
||||
"<span class=\"strong\"><a href=\"pkg2/Foo.html#method(java.util.Vector)\">" +
|
||||
"method(Vector<Object>)</a></span>"
|
||||
},
|
||||
//=================================
|
||||
// TYPE PARAMETER IN INDEX
|
||||
//=================================
|
||||
{BUG_ID + FS + "index-all.html",
|
||||
"<span class=\"strong\"><a href=\"./pkg2/Foo.html#method(java.util.Vector)\">" +
|
||||
"<span class=\"strong\"><a href=\"pkg2/Foo.html#method(java.util.Vector)\">" +
|
||||
"method(Vector<Object>)</a></span>"
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2002, 2012, 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
|
||||
@ -52,7 +52,7 @@ public class TestPackagePage extends JavadocTester {
|
||||
"<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
|
||||
},
|
||||
{BUG_ID + "-1" + FS + "index-all.html",
|
||||
"<li><a href=\"./com/pkg/package-summary.html\">Package</a></li>"
|
||||
"<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
|
||||
},
|
||||
{BUG_ID + "-1" + FS + "help-doc.html",
|
||||
"<li><a href=\"com/pkg/package-summary.html\">Package</a></li>"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user