提交 e8ce578c 编写于 作者: T tbell

Merge

......@@ -25,12 +25,12 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
import java.util.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
/**
* Generate Index for all the Member Names with Indexing in
* Unicode Order. This class is a base class for {@link SingleIndexWriter} and
......@@ -100,8 +100,11 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
h2();
strong(unicode.toString());
h2End();
int memberListSize = memberlist.size();
// Display the list only if there are elements to be displayed.
if (memberListSize > 0) {
dl();
for (int i = 0; i < memberlist.size(); i++) {
for (int i = 0; i < memberListSize; i++) {
Doc element = memberlist.get(i);
if (element instanceof MemberDoc) {
printDescription((MemberDoc)element);
......@@ -112,6 +115,7 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
}
}
dlEnd();
}
hr();
}
......@@ -126,8 +130,10 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
printPackageLink(pkg, Util.getPackageName(pkg), true);
print(" - ");
print(configuration.getText("doclet.package") + " " + pkg.name());
dtEnd();
dd();
printSummaryComment(pkg);
ddEnd();
}
/**
......@@ -140,8 +146,10 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_INDEX, cd, true));
print(" - ");
printClassInfo(cd);
dtEnd();
dd();
printComment(cd);
ddEnd();
}
/**
......@@ -178,8 +186,10 @@ public class AbstractIndexWriter extends HtmlDocletWriter {
println(" - ");
printMemberDesc(member);
println();
dtEnd();
dd();
printComment(member);
ddEnd();
println();
}
......
......@@ -25,12 +25,12 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import java.lang.reflect.Modifier;
import java.util.*;
import com.sun.javadoc.*;
import java.util.*;
import java.lang.reflect.Modifier;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
/**
* The base class for member writers.
......@@ -38,6 +38,7 @@ import java.lang.reflect.Modifier;
* @author Robert Field
* @author Atul M Dambalkar
* @author Jamie Ho (Re-write)
* @author Bhavesh Patel (Modified)
*/
public abstract class AbstractMemberWriter {
......@@ -232,10 +233,26 @@ public abstract class AbstractMemberWriter {
}
}
/**
* Print the deprecated output for the given member.
*
* @param member the member being documented.
*/
protected void printDeprecated(ProgramElementDoc member) {
String output = (new DeprecatedTaglet()).getTagletOutput(member,
writer.getTagletWriterInstance(false)).toString().trim();
if (!output.isEmpty()) {
writer.printMemberDetailsListStartTag();
writer.print(output);
}
}
protected void printComment(ProgramElementDoc member) {
if (member.inlineTags().length > 0) {
writer.printMemberDetailsListStartTag();
writer.dd();
writer.printInlineComment(member);
writer.ddEnd();
}
}
......@@ -266,6 +283,14 @@ public abstract class AbstractMemberWriter {
writer.printTags(member);
}
/**
* Write the member footer.
*/
protected void printMemberFooter() {
writer.printMemberDetailsListEndTag();
assert !writer.getMemberDetailsListPrinted();
}
/**
* Forward to containing writer
*/
......
......@@ -25,11 +25,11 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.javadoc.*;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
/**
* Writes annotation type optional member documentation in HTML format.
*
......@@ -63,14 +63,20 @@ public class AnnotationTypeOptionalMemberWriterImpl extends
* {@inheritDoc}
*/
public void writeDefaultValueInfo(MemberDoc member) {
if (((AnnotationTypeElementDoc) member).defaultValue() != null) {
writer.printMemberDetailsListStartTag();
writer.dd();
writer.dl();
writer.dt();
writer.strong(ConfigurationImpl.getInstance().
getText("doclet.Default"));
writer.dtEnd();
writer.dd();
writer.print(((AnnotationTypeElementDoc) member).defaultValue());
writer.ddEnd();
writer.dlEnd();
writer.ddEnd();
}
}
/**
......
......@@ -25,12 +25,11 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.javadoc.*;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
/**
* Writes annotation type required member documentation in HTML format.
*
......@@ -134,17 +133,14 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
strong(member.name());
}
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
* {@inheritDoc}
*/
public void writeComments(MemberDoc member) {
if (member.inlineTags().length > 0) {
writer.dd();
writer.printInlineComment(member);
}
printComment(member);
}
/**
......@@ -160,7 +156,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
* Write the annotation type member footer.
*/
public void writeMemberFooter() {
writer.dlEnd();
printMemberFooter();
}
/**
......@@ -267,9 +263,7 @@ public class AnnotationTypeRequiredMemberWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
public void writeDeprecated(MemberDoc member) {
print(((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(member,
writer.getTagletWriterInstance(false))).toString());
printDeprecated(member);
}
private Type getType(MemberDoc member) {
......
......@@ -25,10 +25,10 @@
package com.sun.tools.doclets.formats.html;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.builders.*;
import com.sun.javadoc.*;
/**
* Generate the Class Information Page.
......@@ -165,8 +165,6 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
* {@inheritDoc}
*/
public void writeAnnotationTypeSignature(String modifiers) {
dl();
dt();
preNoNewLine();
writeAnnotationInfo(annotationType);
print(modifiers);
......@@ -178,7 +176,6 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
} else {
strong(name);
}
dlEnd();
preEnd();
p();
}
......@@ -334,6 +331,7 @@ public class AnnotationTypeWriterImpl extends SubWriterHolderWriter
} else {
strongText("doclet.Enclosing_Class");
}
dtEnd();
dd();
printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
false));
......
......@@ -25,12 +25,12 @@
package com.sun.tools.doclets.formats.html;
import java.util.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.builders.*;
import com.sun.javadoc.*;
import java.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
/**
......@@ -171,8 +171,6 @@ public class ClassWriterImpl extends SubWriterHolderWriter
*/
public void writeClassSignature(String modifiers) {
boolean isInterface = classDoc.isInterface();
dl();
dt();
preNoNewLine();
writeAnnotationInfo(classDoc);
print(modifiers);
......@@ -191,7 +189,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
Type superclass = Util.getFirstVisibleSuperClass(classDoc,
configuration());
if (superclass != null) {
dt();
println();
print("extends ");
printLink(new LinkInfoImpl(
LinkInfoImpl.CONTEXT_CLASS_SIGNATURE_PARENT_NAME,
......@@ -208,7 +206,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
continue;
}
if (counter == 0) {
dt();
println();
print(isInterface? "extends " : "implements ");
} else {
print(", ");
......@@ -219,7 +217,6 @@ public class ClassWriterImpl extends SubWriterHolderWriter
counter++;
}
}
dlEnd();
preEnd();
p();
}
......@@ -342,6 +339,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
TagletOutput output = (new ParamTaglet()).getTagletOutput(classDoc,
getTagletWriterInstance(false));
print(output.toString());
dtEnd();
dlEnd();
}
}
......@@ -360,8 +358,10 @@ public class ClassWriterImpl extends SubWriterHolderWriter
dl();
dt();
strongText("doclet.Subclasses");
dtEnd();
writeClassLinks(LinkInfoImpl.CONTEXT_SUBCLASSES,
subclasses);
dlEnd();
}
}
}
......@@ -376,8 +376,10 @@ public class ClassWriterImpl extends SubWriterHolderWriter
dl();
dt();
strongText("doclet.Subinterfaces");
dtEnd();
writeClassLinks(LinkInfoImpl.CONTEXT_SUBINTERFACES,
subInterfaces);
dlEnd();
}
}
}
......@@ -398,8 +400,10 @@ public class ClassWriterImpl extends SubWriterHolderWriter
dl();
dt();
strongText("doclet.Implementing_Classes");
dtEnd();
writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_CLASSES,
implcl);
dlEnd();
}
}
......@@ -414,8 +418,10 @@ public class ClassWriterImpl extends SubWriterHolderWriter
dl();
dt();
strongText("doclet.All_Implemented_Interfaces");
dtEnd();
writeClassLinks(LinkInfoImpl.CONTEXT_IMPLEMENTED_INTERFACES,
interfaceArray);
dlEnd();
}
}
......@@ -430,8 +436,10 @@ public class ClassWriterImpl extends SubWriterHolderWriter
dl();
dt();
strongText("doclet.All_Superinterfaces");
dtEnd();
writeClassLinks(LinkInfoImpl.CONTEXT_SUPER_INTERFACES,
interfaceArray);
dlEnd();
}
}
......@@ -455,7 +463,6 @@ public class ClassWriterImpl extends SubWriterHolderWriter
}
}
ddEnd();
dlEnd();
}
protected void navLinkTree() {
......@@ -574,6 +581,7 @@ public class ClassWriterImpl extends SubWriterHolderWriter
} else {
strongText("doclet.Enclosing_Class");
}
dtEnd();
dd();
printLink(new LinkInfoImpl(LinkInfoImpl.CONTEXT_CLASS, outerClass,
false));
......
......@@ -25,12 +25,12 @@
package com.sun.tools.doclets.formats.html;
import java.io.*;
import java.util.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.javadoc.*;
import java.util.*;
import java.io.*;
/**
* Writes constructor documentation.
......@@ -149,7 +149,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
writeParameters(constructor);
writeExceptions(constructor);
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
......@@ -158,12 +158,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
* @param constructor the constructor being documented.
*/
public void writeDeprecated(ConstructorDoc constructor) {
String output = ((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(constructor,
writer.getTagletWriterInstance(false))).toString();
if (output != null && output.trim().length() > 0) {
writer.print(output);
}
printDeprecated(constructor);
}
/**
......@@ -172,10 +167,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
* @param constructor the constructor being documented.
*/
public void writeComments(ConstructorDoc constructor) {
if (constructor.inlineTags().length > 0) {
writer.dd();
writer.printInlineComment(constructor);
}
printComment(constructor);
}
/**
......@@ -191,7 +183,7 @@ public class ConstructorWriterImpl extends AbstractExecutableMemberWriter
* Write the constructor footer.
*/
public void writeConstructorFooter() {
writer.dlEnd();
printMemberFooter();
}
/**
......
......@@ -25,12 +25,11 @@
package com.sun.tools.doclets.formats.html;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
/**
* Writes enum constant documentation in HTML format.
......@@ -146,26 +145,21 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
strong(enumConstant.name());
}
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
* {@inheritDoc}
*/
public void writeDeprecated(FieldDoc enumConstant) {
print(((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(enumConstant,
writer.getTagletWriterInstance(false))).toString());
printDeprecated(enumConstant);
}
/**
* {@inheritDoc}
*/
public void writeComments(FieldDoc enumConstant) {
if (enumConstant.inlineTags().length > 0) {
writer.dd();
writer.printInlineComment(enumConstant);
}
printComment(enumConstant);
}
/**
......@@ -179,7 +173,7 @@ public class EnumConstantWriterImpl extends AbstractMemberWriter
* {@inheritDoc}
*/
public void writeEnumConstantFooter() {
writer.dlEnd();
printMemberFooter();
}
/**
......
......@@ -25,12 +25,11 @@
package com.sun.tools.doclets.formats.html;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
/**
* Writes field documentation in HTML format.
......@@ -156,7 +155,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
strong(field.name());
}
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
......@@ -165,9 +164,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
* @param field the field being documented.
*/
public void writeDeprecated(FieldDoc field) {
print(((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(field,
writer.getTagletWriterInstance(false))).toString());
printDeprecated(field);
}
/**
......@@ -178,10 +175,12 @@ public class FieldWriterImpl extends AbstractMemberWriter
public void writeComments(FieldDoc field) {
ClassDoc holder = field.containingClass();
if (field.inlineTags().length > 0) {
writer.printMemberDetailsListStartTag();
if (holder.equals(classdoc) ||
(! (holder.isPublic() || Util.isLinkable(holder, configuration())))) {
writer.dd();
writer.printInlineComment(field);
writer.ddEnd();
} else {
String classlink = writer.codeText(
writer.getDocLink(LinkInfoImpl.CONTEXT_FIELD_DOC_COPY,
......@@ -196,6 +195,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
writer.ddEnd();
writer.dd();
writer.printInlineComment(field);
writer.ddEnd();
}
}
}
......@@ -213,7 +213,7 @@ public class FieldWriterImpl extends AbstractMemberWriter
* Write the field footer.
*/
public void writeFieldFooter() {
writer.dlEnd();
printMemberFooter();
}
/**
......
......@@ -24,17 +24,16 @@
*/
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.formats.html.markup.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.javadoc.*;
import java.io.*;
import java.text.SimpleDateFormat;
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.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
/**
* Class for the Html Format Code Generation specific to JavaDoc.
......@@ -44,6 +43,7 @@ import java.util.*;
* @since 1.2
* @author Atul M Dambalkar
* @author Robert Field
* @author Bhavesh Patel (Modified)
*/
public class HtmlDocletWriter extends HtmlDocWriter {
......@@ -205,7 +205,13 @@ public class HtmlDocletWriter extends HtmlDocWriter {
private void printMethodInfo(MethodDoc method) {
ClassDoc[] intfacs = method.containingClass().interfaces();
MethodDoc overriddenMethod = method.overriddenMethod();
if (intfacs.length > 0 || overriddenMethod != null) {
// Check whether there is any implementation or overridden info to be
// printed. If no overridden or implementation info needs to be
// printed, do not print this section.
if ((intfacs.length > 0 &&
new ImplementedMethods(method, this.configuration).build().length > 0) ||
overriddenMethod != null) {
printMemberDetailsListStartTag();
dd();
printTagsInfoHeader();
MethodWriterImpl.printImplementsInfo(this, method);
......@@ -216,7 +222,6 @@ public class HtmlDocletWriter extends HtmlDocWriter {
printTagsInfoFooter();
ddEnd();
}
dd();
}
protected void printTags(Doc doc) {
......@@ -230,41 +235,35 @@ public class HtmlDocletWriter extends HtmlDocWriter {
TagletWriter.genTagOuput(configuration.tagletManager, doc,
configuration.tagletManager.getCustomTags(doc),
getTagletWriterInstance(false), output);
if (output.toString().trim().length() > 0) {
printTagsInfoHeader();
print(output.toString());
printTagsInfoFooter();
} else if (! (doc instanceof ConstructorDoc ||
doc instanceof RootDoc || doc instanceof ClassDoc)) {
//To be consistent with 1.4.2 output.
//I hate to do this but we have to pass the diff test to prove
//nothing has broken.
String outputString = output.toString().trim();
// For RootDoc and ClassDoc, this section is not the definition description
// but the start of definition list.
if (!outputString.isEmpty()) {
if (!(doc instanceof RootDoc || doc instanceof ClassDoc)) {
printMemberDetailsListStartTag();
dd();
}
printTagsInfoHeader();
print(outputString);
printTagsInfoFooter();
if (!(doc instanceof RootDoc || doc instanceof ClassDoc))
ddEnd();
}
}
/**
* Check whether there are any tags to be printed.
* Check whether there are any tags for Serialization Overview
* section to be printed.
*
* @param doc the Doc object to check for tags.
* @param field the FieldDoc object to check for tags.
* @return true if there are tags to be printed else return false.
*/
protected boolean hasTagsToPrint(Doc doc) {
if (doc instanceof MethodDoc) {
ClassDoc[] intfacs = ((MethodDoc)doc).containingClass().interfaces();
MethodDoc overriddenMethod = ((MethodDoc)doc).overriddenMethod();
if ((intfacs.length > 0 &&
new ImplementedMethods((MethodDoc)doc, this.configuration).build().length > 0) ||
overriddenMethod != null) {
return true;
}
}
protected boolean hasSerializationOverviewTags(FieldDoc field) {
TagletOutputImpl output = new TagletOutputImpl("");
TagletWriter.genTagOuput(configuration.tagletManager, doc,
configuration.tagletManager.getCustomTags(doc),
TagletWriter.genTagOuput(configuration.tagletManager, field,
configuration.tagletManager.getCustomTags(field),
getTagletWriterInstance(false), output);
return (output.toString().trim().isEmpty());
return (!output.toString().trim().isEmpty());
}
/**
......
......@@ -25,11 +25,12 @@
package com.sun.tools.doclets.formats.html;
import java.util.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.util.*;
/**
* Generate serialized form for serializable fields.
......@@ -37,6 +38,7 @@ import java.util.*;
* <code>serialField</code> is processed.
*
* @author Joe Fialli
* @author Bhavesh Patel (Modified)
*/
public class HtmlSerialFieldWriter extends FieldWriterImpl
implements SerializedFormWriter.SerialFieldWriter {
......@@ -75,7 +77,7 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
writer.println();
if (heading.equals(
configuration().getText("doclet.Serialized_Form_class"))) {
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
} else {
writer.printTableHeadingBackground(heading);
......@@ -102,7 +104,7 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
print(fieldDimensions + ' ');
strong(fieldName);
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
......@@ -111,9 +113,7 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
* @param field the field to document.
*/
public void writeMemberDeprecatedInfo(FieldDoc field) {
print(((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(field,
writer.getTagletWriterInstance(false))).toString());
printDeprecated(field);
}
/**
......@@ -123,14 +123,17 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
*/
public void writeMemberDescription(FieldDoc field) {
if (field.inlineTags().length > 0) {
writer.printMemberDetailsListStartTag();
writer.dd();
writer.printInlineComment(field);
writer.ddEnd();
}
Tag[] tags = field.tags("serial");
if (tags.length > 0) {
writer.dt();
writer.printMemberDetailsListStartTag();
writer.dd();
writer.printInlineComment(field, tags[0]);
writer.ddEnd();
}
}
......@@ -140,10 +143,15 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
* @param serialFieldTag the field to document (represented by tag).
*/
public void writeMemberDescription(SerialFieldTag serialFieldTag) {
String serialFieldTagDesc = serialFieldTag.description().trim();
if (!serialFieldTagDesc.isEmpty()) {
writer.dl();
writer.dd();
writer.print(serialFieldTag.description());
writer.print(serialFieldTagDesc);
writer.ddEnd();
writer.dlEnd();
}
}
/**
* Write the tag information for this member.
......@@ -151,33 +159,57 @@ public class HtmlSerialFieldWriter extends FieldWriterImpl
* @param field the field to document.
*/
public void writeMemberTags(FieldDoc field) {
writer.dl();
TagletOutputImpl output = new TagletOutputImpl("");
TagletWriter.genTagOuput(configuration().tagletManager, field,
configuration().tagletManager.getCustomTags(field),
writer.getTagletWriterInstance(false), output);
if (output.toString().length() > 0) {
print(output.toString());
}
String outputString = output.toString().trim();
if (!outputString.isEmpty()) {
writer.printMemberDetailsListStartTag();
writer.dd();
writer.dl();
print(outputString);
writer.dlEnd();
writer.ddEnd();
}
public void writeMemberFooter(FieldDoc member) {
writer.dlEnd();
}
/**
* Check to see if member details should be printed. If
* Check to see if overview details should be printed. If
* nocomment option set or if there is no text to be printed
* for deprecation info, inline comment, no serial tag or inline tags,
* do not print member details.
* for deprecation info, comment or tags, do not print overview details.
*
* @param field the field to check overview details for.
* @return true if overview details need to be printed
*/
public boolean shouldPrintMemberDetails(FieldDoc field) {
if (!configuration().nocomment)
if((field.inlineTags().length > 0) ||
(field.tags("serial").length > 0) || (writer.hasTagsToPrint(field)))
public boolean shouldPrintOverview(FieldDoc field) {
if (!configuration().nocomment) {
if(!field.commentText().isEmpty() ||
writer.hasSerializationOverviewTags(field))
return true;
if (!Util.isDeprecated(field))
}
if (field.tags("deprecated").length > 0)
return true;
return false;
}
public void writeMemberFooter() {
printMemberFooter();
}
/**
* Write the footer information. If the serilization overview section was
* printed, check for definition list and close list tag.
*
* @param heading the heading that was written.
*/
public void writeFooter(String heading) {
if (printedOverallAnchor) {
if (heading.equals(
configuration().getText("doclet.Serialized_Form_class"))) {
writer.printMemberDetailsListEndTag();
assert !writer.getMemberDetailsListPrinted();
}
}
}
}
......@@ -25,9 +25,9 @@
package com.sun.tools.doclets.formats.html;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.javadoc.*;
/**
* Generate serialized form for Serializable/Externalizable methods.
......@@ -66,14 +66,12 @@ public class HtmlSerialMethodWriter extends MethodWriterImpl implements
writeSignature(member);
}
public void writeMemberFooter(MethodDoc member) {
writer.dlEnd();
public void writeMemberFooter() {
printMemberFooter();
}
public void writeDeprecatedMemberInfo(MethodDoc member) {
print(((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(member,
writer.getTagletWriterInstance(false))).toString());
printDeprecated(member);
}
public void writeMemberDescription(MethodDoc member) {
......@@ -81,23 +79,27 @@ public class HtmlSerialMethodWriter extends MethodWriterImpl implements
}
public void writeMemberTags(MethodDoc member) {
writer.dd();
writer.dl();
TagletOutputImpl output = new TagletOutputImpl("");
TagletManager tagletManager =
ConfigurationImpl.getInstance().tagletManager;
TagletWriter.genTagOuput(tagletManager, member,
tagletManager.getSerializedFormTags(),
writer.getTagletWriterInstance(false), output);
print(output.toString());
String outputString = output.toString().trim();
if (!outputString.isEmpty()) {
writer.printMemberDetailsListStartTag();
writer.dd();
writer.dl();
print(outputString);
writer.dlEnd();
writer.ddEnd();
}
MethodDoc method = member;
if (method.name().compareTo("writeExternal") == 0
&& method.tags("serialData").length == 0) {
serialWarning(member.position(), "doclet.MissingSerialDataTag",
method.containingClass().qualifiedName(), method.name());
}
writer.ddEnd();
writer.dlEnd();
}
protected void printTypeLinkNoDimension(Type type) {
......
......@@ -25,13 +25,13 @@
package com.sun.tools.doclets.formats.html;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import java.io.*;
import com.sun.javadoc.*;
/**
* Writes method documentation in HTML format.
*
......@@ -172,7 +172,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
writeParameters(method);
writeExceptions(method);
writer.preEnd();
writer.dl();
assert !writer.getMemberDetailsListPrinted();
}
/**
......@@ -181,12 +181,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
* @param method the method being documented.
*/
public void writeDeprecated(MethodDoc method) {
String output = ((TagletOutputImpl)
(new DeprecatedTaglet()).getTagletOutput(method,
writer.getTagletWriterInstance(false))).toString();
if (output != null && output.trim().length() > 0) {
writer.print(output);
}
printDeprecated(method);
}
/**
......@@ -197,11 +192,13 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
public void writeComments(Type holder, MethodDoc method) {
ClassDoc holderClassDoc = holder.asClassDoc();
if (method.inlineTags().length > 0) {
writer.printMemberDetailsListStartTag();
if (holder.asClassDoc().equals(classdoc) ||
(! (holderClassDoc.isPublic() ||
Util.isLinkable(holderClassDoc, configuration())))) {
writer.dd();
writer.printInlineComment(method);
writer.ddEnd();
} else {
String classlink = writer.codeText(
writer.getDocLink(LinkInfoImpl.CONTEXT_METHOD_DOC_COPY,
......@@ -217,6 +214,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
writer.ddEnd();
writer.dd();
writer.printInlineComment(method);
writer.ddEnd();
}
}
}
......@@ -234,8 +232,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
* Write the method footer.
*/
public void writeMethodFooter() {
writer.ddEnd();
writer.dlEnd();
printMemberFooter();
}
/**
......@@ -318,6 +315,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
String name = method.name();
writer.dt();
writer.strongText(label);
writer.dtEnd();
writer.dd();
String methLink = writer.codeText(
writer.getLink(
......@@ -326,6 +324,7 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
writer.getAnchor(method), name, false)
));
writer.printText("doclet.in_class", methLink, overriddenTypeLink);
writer.ddEnd();
}
}
......@@ -364,11 +363,13 @@ public class MethodWriterImpl extends AbstractExecutableMemberWriter
LinkInfoImpl.CONTEXT_METHOD_SPECIFIED_BY, intfac)));
writer.dt();
writer.strongText("doclet.Specified_By");
writer.dtEnd();
writer.dd();
methlink = writer.codeText(writer.getDocLink(
LinkInfoImpl.CONTEXT_MEMBER, implementedMeth,
implementedMeth.name(), false));
writer.printText("doclet.in_interface", methlink, intfaclink);
writer.ddEnd();
}
}
......
......@@ -25,11 +25,11 @@
package com.sun.tools.doclets.formats.html;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
/**
* Writes nested class documentation in HTML format.
......@@ -129,7 +129,6 @@ public class NestedClassWriterImpl extends AbstractMemberWriter
writer.println("");
}
writer.anchor(nestedClass.name());
writer.dl();
writer.h3();
writer.print(nestedClass.name());
writer.h3End();
......
......@@ -25,10 +25,11 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
/**
* Class to generate Tree page for a package. The name of the file generated is
* "package-tree.html" and it is generated in the respective package directory.
......@@ -145,8 +146,10 @@ public class PackageTreeWriter extends AbstractTreeWriter {
dl();
dt();
strongText("doclet.Package_Hierarchies");
dtEnd();
dd();
navLinkMainTree(configuration.getText("doclet.All_Packages"));
ddEnd();
dlEnd();
hr();
}
......
......@@ -25,17 +25,18 @@
package com.sun.tools.doclets.formats.html;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.builders.SerializedFormBuilder;
import com.sun.tools.doclets.internal.toolkit.taglets.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
/**
* The taglet writer that writes HTML.
*
* @since 1.5
* @author Jamie Ho
* @author Bhavesh Patel (Modified)
*/
public class TagletWriterImpl extends TagletWriter {
......@@ -99,11 +100,12 @@ public class TagletWriterImpl extends TagletWriter {
output.append(DocletConstants.NL + "<P>" +
DocletConstants.NL);
}
output.append("</DD>");
} else {
if (Util.isDeprecated(member.containingClass())) {
output.append("<DD><STRONG>" +
ConfigurationImpl.getInstance().
getText("doclet.Deprecated") + "</STRONG>&nbsp;");
getText("doclet.Deprecated") + "</STRONG>&nbsp;</DD>");
}
}
}
......@@ -123,7 +125,7 @@ public class TagletWriterImpl extends TagletWriter {
public TagletOutput getParamHeader(String header) {
StringBuffer result = new StringBuffer();
result.append("<DT>");
result.append("<STRONG>" + header + "</STRONG>");
result.append("<STRONG>" + header + "</STRONG></DT>");
return new TagletOutputImpl(result.toString());
}
......@@ -132,7 +134,7 @@ public class TagletWriterImpl extends TagletWriter {
*/
public TagletOutput paramTagOutput(ParamTag paramTag, String paramName) {
TagletOutput result = new TagletOutputImpl("<DD><CODE>" + paramName + "</CODE>"
+ " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false));
+ " - " + htmlWriter.commentTagsToString(paramTag, null, paramTag.inlineTags(), false) + "</DD>");
return result;
}
......@@ -142,9 +144,9 @@ public class TagletWriterImpl extends TagletWriter {
public TagletOutput returnTagOutput(Tag returnTag) {
TagletOutput result = new TagletOutputImpl(DocletConstants.NL + "<DT>" +
"<STRONG>" + htmlWriter.configuration.getText("doclet.Returns") +
"</STRONG>" + "<DD>" +
"</STRONG>" + "</DT>" + "<DD>" +
htmlWriter.commentTagsToString(returnTag, null, returnTag.inlineTags(),
false));
false) + "</DD>");
return result;
}
......@@ -174,22 +176,21 @@ public class TagletWriterImpl extends TagletWriter {
}
if (holder.isClass() && ((ClassDoc)holder).isSerializable()) {
//Automatically add link to serialized form page for serializable classes.
if (!(SerializedFormBuilder.serialInclude(holder) &&
if ((SerializedFormBuilder.serialInclude(holder) &&
SerializedFormBuilder.serialInclude(((ClassDoc)holder).containingPackage()))) {
return result.equals("") ? null : new TagletOutputImpl(result);
}
result = addSeeHeader(result);
result += htmlWriter.getHyperLink(htmlWriter.relativePath + "serialized-form.html",
((ClassDoc)holder).qualifiedName(), htmlWriter.configuration.getText("doclet.Serialized_Form"), false);
}
return result.equals("") ? null : new TagletOutputImpl(result);
}
return result.equals("") ? null : new TagletOutputImpl(result + "</DD>");
}
private String addSeeHeader(String result) {
if (result != null && result.length() > 0) {
return result + ", " + DocletConstants.NL;
} else {
return "<DT><STRONG>" + htmlWriter.configuration().getText("doclet.See_Also") + "</STRONG><DD>";
return "<DT><STRONG>" + htmlWriter.configuration().getText("doclet.See_Also") + "</STRONG></DT><DD>";
}
}
......@@ -205,7 +206,8 @@ public class TagletWriterImpl extends TagletWriter {
}
result += htmlWriter.commentTagsToString(simpleTags[i], null, simpleTags[i].inlineTags(), false);
}
return new TagletOutputImpl(result + "</DD>" + DocletConstants.NL);
result += "</DD>" + DocletConstants.NL;
return new TagletOutputImpl(result);
}
/**
......@@ -222,7 +224,7 @@ public class TagletWriterImpl extends TagletWriter {
*/
public TagletOutput getThrowsHeader() {
return new TagletOutputImpl(DocletConstants.NL + "<DT>" + "<STRONG>" +
htmlWriter.configuration().getText("doclet.Throws") + "</STRONG>");
htmlWriter.configuration().getText("doclet.Throws") + "</STRONG></DT>");
}
/**
......@@ -241,6 +243,7 @@ public class TagletWriterImpl extends TagletWriter {
if (text != null && text.toString().length() > 0) {
result += " - " + text;
}
result += "</DD>";
return new TagletOutputImpl(result);
}
......@@ -250,7 +253,7 @@ public class TagletWriterImpl extends TagletWriter {
public TagletOutput throwsTagOutput(Type throwsType) {
return new TagletOutputImpl(DocletConstants.NL + "<DD>" +
htmlWriter.codeText(htmlWriter.getLink(
new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))));
new LinkInfoImpl(LinkInfoImpl.CONTEXT_MEMBER, throwsType))) + "</DD>");
}
/**
......
......@@ -25,9 +25,11 @@
package com.sun.tools.doclets.formats.html;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.javadoc.*;
import java.io.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
/**
* Generate Class Hierarchy page for all the Classes in this run. Use
* ClassTree for building the Tree. The name of
......@@ -120,6 +122,7 @@ public class TreeWriter extends AbstractTreeWriter {
dl();
dt();
strongText("doclet.Package_Hierarchies");
dtEnd();
dd();
for (int i = 0; i < packages.length; i++) {
if (packages[i].name().length() == 0) {
......@@ -131,6 +134,7 @@ public class TreeWriter extends AbstractTreeWriter {
print(", ");
}
}
ddEnd();
dlEnd();
hr();
}
......
......@@ -244,6 +244,31 @@ public abstract class HtmlDocWriter extends HtmlWriter {
return "";
}
/**
* Keep track of member details list. Print the definition list start tag
* if it is not printed yet.
*/
public void printMemberDetailsListStartTag () {
if (!getMemberDetailsListPrinted()) {
dl();
memberDetailsListPrinted = true;
}
}
/**
* Print the definition list end tag if the list start tag was printed.
*/
public void printMemberDetailsListEndTag () {
if (getMemberDetailsListPrinted()) {
dlEnd();
memberDetailsListPrinted = false;
}
}
public boolean getMemberDetailsListPrinted() {
return memberDetailsListPrinted;
}
/**
* Print the frameset version of the Html file header.
* Called only when generating an HTML frameset file.
......
......@@ -25,9 +25,10 @@
package com.sun.tools.doclets.formats.html.markup;
import java.io.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import java.io.*;
/**
* Class for the Html format code generation.
......@@ -60,6 +61,11 @@ public class HtmlWriter extends PrintWriter {
*/
protected Configuration configuration;
/**
* The flag to indicate whether a member details list is printed or not.
*/
protected boolean memberDetailsListPrinted;
/**
* Constructor.
*
......@@ -79,6 +85,7 @@ public class HtmlWriter extends PrintWriter {
super(Util.genWriter(configuration, path, filename, docencoding));
this.configuration = configuration;
htmlFilename = filename;
this.memberDetailsListPrinted = false;
}
/**
......@@ -529,7 +536,14 @@ public class HtmlWriter extends PrintWriter {
}
/**
* Print &lt;DT&gt; tag.
* Print &lt;/DT&gt; tag.
*/
public void dtEnd() {
print("</DT>");
}
/**
* Print &lt;DD&gt; tag.
*/
public void dd() {
print("<DD>");
......
......@@ -25,9 +25,10 @@
package com.sun.tools.doclets.internal.toolkit;
import com.sun.javadoc.*;
import java.io.*;
import com.sun.javadoc.*;
/**
* The interface for writing serialized form output.
*
......@@ -147,22 +148,27 @@ public interface SerializedFormWriter {
String fieldDimensions, String fieldName);
/**
* Write the footer.
*
* @param member the member to write the header for.
* Write the member footer.
*/
public void writeMemberFooter(FieldDoc member);
public void writeMemberFooter();
/**
* Check to see if member details should be printed. If
* Check to see if overview details should be printed. If
* nocomment option set or if there is no text to be printed
* for deprecation info, inline comment, no serial tag or inline tags,
* do not print member details.
* for deprecation info, inline comment or tags,
* do not print overview details.
*
* @param member the member to check details for.
* @return true if details need to be printed
* @param field the field to check overview details for.
* @return true if overview details need to be printed
*/
public boolean shouldPrintMemberDetails(FieldDoc member);
public boolean shouldPrintOverview(FieldDoc field);
/**
* Write the footer.
*
* @param heading the heading that was written.
*/
public void writeFooter (String heading);
}
/**
......@@ -193,10 +199,8 @@ public interface SerializedFormWriter {
/**
* Write the footer.
*
* @param member the member to write the header for.
*/
public void writeMemberFooter(MethodDoc member);
public void writeMemberFooter();
/**
* Write the deprecated information for this member.
......
......@@ -25,13 +25,14 @@
package com.sun.tools.doclets.internal.toolkit.builders;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.*;
import com.sun.javadoc.*;
import java.io.*;
import java.lang.reflect.*;
import java.util.*;
import com.sun.javadoc.*;
import com.sun.tools.doclets.internal.toolkit.util.*;
import com.sun.tools.doclets.internal.toolkit.*;
/**
* Builds the serialized form.
*
......@@ -40,6 +41,7 @@ import java.util.*;
* Do not use it as an API
*
* @author Jamie Ho
* @author Bhavesh Patel (Modified)
* @since 1.5
*/
public class SerializedFormBuilder extends AbstractBuilder {
......@@ -379,7 +381,7 @@ public class SerializedFormBuilder extends AbstractBuilder {
* Build the method footer.
*/
public void buildMethodFooter() {
methodWriter.writeMemberFooter((MethodDoc) currentMember);
methodWriter.writeMemberFooter();
}
/**
......@@ -405,7 +407,7 @@ public class SerializedFormBuilder extends AbstractBuilder {
Util.asList(classDoc.serializableFields()).get(0);
// Check to see if there are inline comments, tags or deprecation
// information to be printed.
if (fieldWriter.shouldPrintMemberDetails(serialPersistentField)) {
if (fieldWriter.shouldPrintOverview(serialPersistentField)) {
fieldWriter.writeHeader(
configuration.getText("doclet.Serialized_Form_class"));
fieldWriter.writeMemberDeprecatedInfo(serialPersistentField);
......@@ -413,7 +415,10 @@ public class SerializedFormBuilder extends AbstractBuilder {
fieldWriter.writeMemberDescription(serialPersistentField);
fieldWriter.writeMemberTags(serialPersistentField);
}
fieldWriter.writeMemberFooter(serialPersistentField);
// Footer required to close the definition list tag
// for serialization overview.
fieldWriter.writeFooter(
configuration.getText("doclet.Serialized_Form_class"));
}
}
}
......@@ -476,11 +481,11 @@ public class SerializedFormBuilder extends AbstractBuilder {
}
/**
* Build the field footer.
* Build the field sub footer.
*/
public void buildFieldFooter() {
public void buildFieldSubFooter() {
if (! currentClass.definesSerializableFields()) {
fieldWriter.writeMemberFooter((FieldDoc) currentMember);
fieldWriter.writeMemberFooter();
}
}
......
......@@ -195,7 +195,7 @@
<FieldSubHeader/>
<FieldDeprecationInfo/>
<FieldInfo/>
<FieldFooter/>
<FieldSubFooter/>
</SerializableFields>
</ClassSerializedForm>
</PackageSerializedForm>
......
/*
* Copyright 2005-2008 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2005-2009 Sun Microsystems, Inc. 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
......@@ -111,6 +111,7 @@ public class JavacRoundEnvironment implements RoundEnvironment {
*/
public Set<? extends Element> getElementsAnnotatedWith(TypeElement a) {
Set<Element> result = Collections.emptySet();
Types typeUtil = processingEnv.getTypeUtils();
if (a.getKind() != ElementKind.ANNOTATION_TYPE)
throw new IllegalArgumentException(NOT_AN_ANNOTATION_TYPE + a);
......@@ -122,7 +123,7 @@ public class JavacRoundEnvironment implements RoundEnvironment {
throw new AssertionError("Bad implementation type for " + tm);
ElementScanner6<Set<Element>, DeclaredType> scanner =
new AnnotationSetScanner(result);
new AnnotationSetScanner(result, typeUtil);
for (Element element : rootElements)
result = scanner.scan(element, annotationTypeElement);
......@@ -135,9 +136,11 @@ public class JavacRoundEnvironment implements RoundEnvironment {
ElementScanner6<Set<Element>, DeclaredType> {
// Insertion-order preserving set
Set<Element> annotatedElements = new LinkedHashSet<Element>();
Types typeUtil;
AnnotationSetScanner(Set<Element> defaultSet) {
AnnotationSetScanner(Set<Element> defaultSet, Types typeUtil) {
super(defaultSet);
this.typeUtil = typeUtil;
}
@Override
......@@ -145,7 +148,7 @@ public class JavacRoundEnvironment implements RoundEnvironment {
java.util.List<? extends AnnotationMirror> annotationMirrors =
processingEnv.getElementUtils().getAllAnnotationMirrors(e);
for (AnnotationMirror annotationMirror : annotationMirrors) {
if (annotationMirror.getAnnotationType().equals(p))
if (typeUtil.isSameType(annotationMirror.getAnnotationType(), p))
annotatedElements.add(e);
}
e.accept(this, p);
......
......@@ -35,9 +35,11 @@ import java.io.IOException;
* processor. Files created in this way will be known to the
* annotation processing tool implementing this interface, better
* enabling the tool to manage them. Source and class files so
* created will be considered for processing by the tool after the
* {@code close} method has been called on the {@code Writer} or
* {@code OutputStream} used to write the contents of the file.
* created will be {@linkplain RoundEnvironment#getRootElements
* considered for processing} by the tool in a subsequent {@linkplain
* RoundEnvironment round of processing} after the {@code close}
* method has been called on the {@code Writer} or {@code
* OutputStream} used to write the contents of the file.
*
* Three kinds of files are distinguished: source files, class files,
* and auxiliary resource files.
......
......@@ -91,7 +91,7 @@ public class AuthorDD
// Test multiple @author tags:
{ "<DT><STRONG>Author:</STRONG></DT>"+NL+" <DD>Doug Kramer, Jamie, Neal</DD>"+NL,
{ "<DT><STRONG>Author:</STRONG></DT>"+NL+" <DD>Doug Kramer, Jamie, Neal</DD>",
BUGID + FS + "p1" + FS + "C1.html" },
};
......
......@@ -48,7 +48,7 @@ public class TestClassCrossReferences extends JavadocTester {
"<A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/math/BigInteger.html?is-external=true#gcd(java.math.BigInteger)\" " +
"title=\"class or interface in java.math\"><CODE>Link to external member gcd</CODE></A>"},
{BUG_ID + FS + "C.html",
"<STRONG>Overrides:</STRONG><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE>"}
"<STRONG>Overrides:</STRONG></DT><DD><CODE>toString</CODE> in class <CODE>java.lang.Object</CODE>"}
};
private static final String[][] NEGATED_TEST = NO_TEST;
private static final String[] ARGS =
......
......@@ -45,9 +45,10 @@ public class TestConstructorIndent extends JavadocTester {
//Input for string search tests.
private static final String[][] TEST = {
{BUG_ID + FS + "C.html", "<DL>"+NL+"<DD>This is just a simple constructor."+ NL +
"<P>"+NL+"<DL>"+NL+"<DT><STRONG>Parameters:</STRONG><DD><CODE>i</CODE> - a param.</DL>"+NL +
"</DL>"
{BUG_ID + FS + "C.html", "<DL>" + NL + "<DD>This is just a simple constructor." + NL +
"<P>" + NL + "</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Parameters:</STRONG>" +
"</DT><DD><CODE>i</CODE> - a param.</DD></DL>" + NL +
"</DD>" + NL + "</DL>"
}
};
private static final String[][] NEGATED_TEST = NO_TEST;
......
......@@ -78,13 +78,12 @@ public class TestDeprecatedDocs extends JavadocTester {
{TARGET_FILE2, "<STRONG>Deprecated.</STRONG>" + NL +
"<P>" + NL +
"<DL>" + NL +
"<DT><PRE><FONT SIZE=\"-1\">@Deprecated" + NL +
"<PRE><FONT SIZE=\"-1\">@Deprecated" + NL +
"</FONT>public class <STRONG>DeprecatedClassByAnnotation</STRONG>"},
{TARGET_FILE2, "public int <STRONG>field</STRONG></PRE>" + NL +
"<DL>" + NL +
"<DD><STRONG>Deprecated.</STRONG>&nbsp;<DL>"},
"<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD></DL>"},
{TARGET_FILE2, "<FONT SIZE=\"-1\">@Deprecated" + NL +
"</FONT>public <STRONG>DeprecatedClassByAnnotation</STRONG>()</PRE>" + NL +
......
......@@ -39,13 +39,13 @@ public class TestExternalOverridenMethod extends JavadocTester {
private static final String BUG_ID = "4857717";
private static final String[][] TEST = {
{BUG_ID + FS + "pkg" + FS + "XReader.html",
"<STRONG>Overrides:</STRONG><DD><CODE><A HREF=\"" +
"<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"" +
"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true#read()\"" +
" title=\"class or interface in java.io\">read</A></CODE> in class " +
"<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/FilterReader.html?is-external=true\"" +
" title=\"class or interface in java.io\">FilterReader</A>"},
{BUG_ID + FS + "pkg" + FS + "XReader.html",
"<STRONG>Specified by:</STRONG><DD><CODE><A HREF=\"" +
"<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"" +
"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true#readInt()\"" +
" title=\"class or interface in java.io\">readInt</A></CODE> in interface " +
"<CODE><A HREF=\"http://java.sun.com/j2se/1.4.1/docs/api/java/io/DataInput.html?is-external=true\"" +
......
......@@ -67,7 +67,7 @@ public class TestHref extends JavadocTester {
},
//@see test.
{BUG_ID + FS + "pkg" + FS + "C2.html",
"See Also:</STRONG><DD><A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
"See Also:</STRONG></DT><DD><A HREF=\"../pkg/C1.html#method(int, int, java.util.ArrayList)\">"
},
//Header does not link to the page itself.
......
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
import java.io.IOException;
import java.io.Serializable;
/**
* A class comment for testing.
*
* @author Bhavesh Patel
* @see C2
* @since JDK1.0
*/
public class C1 implements Serializable {
/**
* This field indicates whether the C1 is undecorated.
*
* @see #setUndecorated(boolean)
* @since 1.4
* @serial
* @deprecated As of JDK version 1.5, replaced by
* {@link C1#setUndecorated(boolean) setUndecorated(boolean)}.
*/
@Deprecated
public boolean undecorated = false;
private String title;
/**
* This enum specifies the possible modal exclusion types.
*
* @since 1.6
*/
public static enum ModalExclusionType {
/**
* No modal exclusion.
*/
NO_EXCLUDE,
/**
* <code>APPLICATION_EXCLUDE</code> indicates that a top-level window
* won't be blocked by any application-modal dialogs. Also, it isn't
* blocked by document-modal dialogs from outside of its child hierarchy.
*/
APPLICATION_EXCLUDE
};
/**
* Constructor.
*
* @param title the title
* @param test boolean value
* @exception IllegalArgumentException if the <code>owner</code>'s
* <code>GraphicsConfiguration</code> is not from a screen device
* @exception HeadlessException
*/
public C1(String title, boolean test) {
}
public C1(String title) {
}
/**
* Method comments.
* @param undecorated <code>true</code> if no decorations are
* to be enabled;
* <code>false</code> if decorations are to be enabled.
* @see #readObject()
* @since 1.4
*/
public void setUndecorated(boolean undecorated) {
/* Make sure we don't run in the middle of peer creation.*/
}
/**
* @see #setUndecorated(boolean)
*/
public void readObject() throws IOException {
}
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
import java.io.ObjectInputStream;
import java.io.IOException;
import java.io.Serializable;
/**
* A class comment for testing.
*
* @author Bhavesh Patel
* @see C1
* @since JDK1.0
*/
public class C2 implements Serializable {
/**
* This field indicates title.
*/
String title;
public static enum ModalType {
NO_EXCLUDE
};
/**
* Constructor.
*
*/
public C2() {
}
public C2(String title) {
}
/**
* Set visible.
*
* @param set boolean
* @since 1.4
* @deprecated As of JDK version 1.5, replaced by
* {@link C1#setUndecorated(boolean) setUndecorated(boolean)}.
*/
@Deprecated
public void setVisible(boolean set) {
}
/**
* Reads the object stream.
*
* @param s ObjectInputStream
* @throws <code>IOException</code>
* @deprecated As of JDK version 1.5, replaced by
* {@link C1#setUndecorated(boolean) setUndecorated(boolean)}.
*/
@Deprecated
public void readObject(ObjectInputStream s) throws IOException {
}
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
import java.lang.annotation.*;
/**
* Test Annotation class.
*
* @author Bhavesh Patel
* @since 1.5
*/
@Retention(RetentionPolicy.SOURCE)
public @interface C3 {
/**
* Comment.
*/
String[] value();
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
import java.lang.annotation.*;
/*
* The @Inherited annotation has no effect when applied to an interface.
*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface C4 {
boolean value() default true;
}
/*
* Copyright 2009 Sun Microsystems, Inc. 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. Sun designates this
* particular file as subject to the "Classpath" exception as provided
* by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
package pkg1;
import java.io.Serializable;
/**
* Test for Serializable
*
* @author Bhavesh Patel
* @deprecated This class is no longer used.
*/
@Deprecated
public abstract class C5 implements Serializable {
/**
* The name for this class.
*
* @serial
*/
private String name;
/**
* @serial
*/
private int publicKey;
/**
* Constructor for serialization only.
*/
protected C5() {
}
/**
* Prints general information.
*
*/
public void printInfo() {
}
}
......@@ -73,10 +73,10 @@ public class TestIndex extends JavadocTester {
{BUG_ID + FS + "index-all.html",
"<DT><A HREF=\"./pkg/C.html#Java\"><STRONG>Java</STRONG></A> - " + NL +
"Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
"<DD>&nbsp;" + NL +
"</DT><DD>&nbsp;</DD>" + NL + NL +
"<DT><A HREF=\"./pkg/C.html#JDK\"><STRONG>JDK</STRONG></A> - " + NL +
"Static variable in class pkg.<A HREF=\"./pkg/C.html\" title=\"class in pkg\">C</A>" + NL +
"<DD>&nbsp;"},
"</DT><DD>&nbsp;</DD>"},
};
private static final String[][] NEGATED_TEST = NO_TEST;
......
......@@ -55,7 +55,7 @@ public class TestInterface extends JavadocTester {
// Make sure known implementing class list is correct and omits type parameters.
{BUG_ID + FS + "pkg" + FS + "Interface.html",
"<DT><STRONG>All Known Implementing Classes:</STRONG> " +
"<DT><STRONG>All Known Implementing Classes:</STRONG></DT> " +
"<DD><A HREF=\"../pkg/Child.html\" " +
"title=\"class in pkg\">Child</A>, " +
"<A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">" +
......@@ -63,7 +63,9 @@ public class TestInterface extends JavadocTester {
// Make sure "All Implemented Interfaces": has substituted type parameters
{BUG_ID + FS + "pkg" + FS + "Child.html",
"<STRONG>All Implemented Interfaces:</STRONG> <DD><A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">Interface</A>&lt;T&gt;"
"<STRONG>All Implemented Interfaces:</STRONG></DT> <DD>" +
"<A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">" +
"Interface</A>&lt;T&gt;"
},
//Make sure Class Tree has substituted type parameters.
{BUG_ID + FS + "pkg" + FS + "Child.html",
......@@ -75,15 +77,15 @@ public class TestInterface extends JavadocTester {
},
//Make sure "Direct Know Subclasses" omits type parameters
{BUG_ID + FS + "pkg" + FS + "Parent.html",
"<STRONG>Direct Known Subclasses:</STRONG> <DD><A HREF=\"../pkg/Child.html\" title=\"class in pkg\">Child</A>"
"<STRONG>Direct Known Subclasses:</STRONG></DT> <DD><A HREF=\"../pkg/Child.html\" title=\"class in pkg\">Child</A>"
},
//Make sure "Specified By" has substituted type parameters.
{BUG_ID + FS + "pkg" + FS + "Child.html",
"<STRONG>Specified by:</STRONG><DD><CODE><A HREF=\"../pkg/Interface.html#method()\">method</A></CODE> in interface <CODE><A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">Interface</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
"<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Interface.html#method()\">method</A></CODE> in interface <CODE><A HREF=\"../pkg/Interface.html\" title=\"interface in pkg\">Interface</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
},
//Make sure "Overrides" has substituted type parameters.
{BUG_ID + FS + "pkg" + FS + "Child.html",
"<STRONG>Overrides:</STRONG><DD><CODE><A HREF=\"../pkg/Parent.html#method()\">method</A></CODE> in class <CODE><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">Parent</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
"<STRONG>Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg/Parent.html#method()\">method</A></CODE> in class <CODE><A HREF=\"../pkg/Parent.html\" title=\"class in pkg\">Parent</A>&lt;<A HREF=\"../pkg/Child.html\" title=\"type parameter in Child\">T</A>&gt;</CODE>"
},
};
private static final String[][] NEGATED_TEST = {
......
......@@ -63,7 +63,8 @@ public class TestLinkOption extends JavadocTester {
"title=\"class or interface in java.lang\">Object</A>&nbsp;p3)"
},
{BUG_ID + "-1" + FS + "java" + FS + "lang" + FS + "StringBuilderChild.html",
"public abstract class <STRONG>StringBuilderChild</STRONG><DT>extends <A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</A>"
"public abstract class <STRONG>StringBuilderChild</STRONG>" + NL +
"extends <A HREF=\"http://java.sun.com/j2se/1.4/docs/api/java/lang/Object.html?is-external=true\" title=\"class or interface in java.lang\">Object</A>"
},
};
......
......@@ -59,7 +59,7 @@ public class TestLinkTaglet extends JavadocTester {
" Link to another inner class: <A HREF=\"../pkg/C.InnerC2.html\" title=\"class in pkg\"><CODE>C.InnerC2</CODE></A>"
},
{BUG_ID + FS + "pkg" + FS + "C.InnerC2.html",
"Enclosing class:</STRONG><DD><A HREF=\"../pkg/C.html\" title=\"class in pkg\">C</A>"
"Enclosing class:</STRONG></DT><DD><A HREF=\"../pkg/C.html\" title=\"class in pkg\">C</A>"
},
};
private static final String[][] NEGATED_TEST = {
......
......@@ -74,7 +74,7 @@ public class TestMemberInheritence extends JavadocTester {
// Test overriding/implementing methods with generic parameters.
{BUG_ID + FS + "pkg" + FS + "BaseClass.html",
"<DT><STRONG>Specified by:</STRONG><DD><CODE><A HREF=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">getAnnotation</A></CODE> in interface <CODE><A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</A></CODE></DL>"},
"<DT><STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg/BaseInterface.html#getAnnotation(java.lang.Class)\">getAnnotation</A></CODE> in interface <CODE><A HREF=\"../pkg/BaseInterface.html\" title=\"interface in pkg\">BaseInterface</A></CODE></DD>"+NL+"</DL>"},
// Test diamond inheritence member summary (6256068)
{BUG_ID + FS + "diamond" + FS + "Z.html",
......
......@@ -54,7 +54,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
{BUG_ID + FS + "pkg" + FS + "Coin.html", "Enum Coin</H2>"},
//Make sure enum signature is correct.
{BUG_ID + FS + "pkg" + FS + "Coin.html", "public enum "+
"<STRONG>Coin</STRONG><DT>extends java.lang.Enum&lt;" +
"<STRONG>Coin</STRONG>" + NL + "extends java.lang.Enum&lt;" +
"<A HREF=\"../pkg/Coin.html\" title=\"enum in pkg\">Coin</A>&gt;"
},
//Check for enum constant section
......@@ -79,20 +79,20 @@ public class TestNewLanguageFeatures extends JavadocTester {
"Class TypeParameters&lt;E&gt;</H2>"},
//Check class type parameters section.
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
"<DT><STRONG>Type Parameters:</STRONG><DD><CODE>E</CODE> - " +
"<DT><STRONG>Type Parameters:</STRONG></DT><DD><CODE>E</CODE> - " +
"the type parameter for this class."},
//Type parameters in @see/@link
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
"<DT><STRONG>See Also:</STRONG><DD><A HREF=\"../pkg/TypeParameters.html\" " +
"title=\"class in pkg\"><CODE>TypeParameters</CODE></A></DL>"},
"<DT><STRONG>See Also:</STRONG></DT><DD><A HREF=\"../pkg/TypeParameters.html\" " +
"title=\"class in pkg\"><CODE>TypeParameters</CODE></A></DD></DL>"},
//Method that uses class type parameter.
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
"(<A HREF=\"../pkg/TypeParameters.html\" title=\"type " +
"parameter in TypeParameters\">E</A>&nbsp;param)"},
//Method type parameter section.
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
"<STRONG>Type Parameters:</STRONG><DD><CODE>T</CODE> - This is the first " +
"type parameter.<DD><CODE>V</CODE> - This is the second type " +
"<STRONG>Type Parameters:</STRONG></DT><DD><CODE>T</CODE> - This is the first " +
"type parameter.</DD><DD><CODE>V</CODE> - This is the second type " +
"parameter."},
//Signature of method with type parameters
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
......@@ -117,17 +117,17 @@ public class TestNewLanguageFeatures extends JavadocTester {
//Signature of subclass that has type parameters.
{BUG_ID + FS + "pkg" + FS + "TypeParameterSubClass.html",
"public class <STRONG>TypeParameterSubClass&lt;T extends java.lang.String&gt;" +
"</STRONG><DT>extends <A HREF=\"../pkg/TypeParameterSuperClass.html\" " +
"</STRONG>" + NL + "extends <A HREF=\"../pkg/TypeParameterSuperClass.html\" " +
"title=\"class in pkg\">TypeParameterSuperClass</A>&lt;T&gt;"},
//Interface generic parameter substitution
//Signature of subclass that has type parameters.
{BUG_ID + FS + "pkg" + FS + "TypeParameters.html",
"<STRONG>All Implemented Interfaces:</STRONG> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;E&gt;, <A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;E&gt;</DD>"},
"<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;E&gt;, <A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;E&gt;</DD>"},
{BUG_ID + FS + "pkg" + FS + "SuperInterface.html",
"<STRONG>All Known Subinterfaces:</STRONG> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;V&gt;</DD>"},
"<STRONG>All Known Subinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SubInterface.html\" title=\"interface in pkg\">SubInterface</A>&lt;V&gt;</DD>"},
{BUG_ID + FS + "pkg" + FS + "SubInterface.html",
"<STRONG>All Superinterfaces:</STRONG> <DD><A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;V&gt;</DD>"},
"<STRONG>All Superinterfaces:</STRONG></DT> <DD><A HREF=\"../pkg/SuperInterface.html\" title=\"interface in pkg\">SuperInterface</A>&lt;V&gt;</DD>"},
//=================================
// VAR ARG TESTING
......@@ -166,7 +166,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
"Element Detail"},
//Make sure default annotation type value is printed when necessary.
{BUG_ID + FS + "pkg" + FS + "AnnotationType.html",
"<STRONG>Default:</STRONG><DD>\"unknown\"</DD>"},
"<STRONG>Default:</STRONG></DT><DD>\"unknown\"</DD>"},
//=================================
// ANNOTATION TYPE USAGE TESTING
......@@ -182,7 +182,8 @@ public class TestNewLanguageFeatures extends JavadocTester {
"<FONT SIZE=\"-1\">" +
"<A HREF=\"../pkg/AnnotationType.html\" title=\"annotation in pkg\">@AnnotationType</A>(<A HREF=\"../pkg/AnnotationType.html#optional()\">optional</A>=\"Class Annotation\","+NL +
" <A HREF=\"../pkg/AnnotationType.html#required()\">required</A>=1994)"+NL +
"</FONT>public class <STRONG>AnnotationTypeUsage</STRONG><DT>extends java.lang.Object</DL>"},
"</FONT>public class <STRONG>AnnotationTypeUsage</STRONG>" + NL +
"extends java.lang.Object"},
//FIELD
{BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
......@@ -270,8 +271,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
{BUG_ID + FS + "pkg1" + FS + "B.html",
"<PRE><FONT SIZE=\"-1\"><A HREF=\"../pkg1/A.html\" title=\"annotation in pkg1\">@A</A>"},
{BUG_ID + FS + "pkg1" + FS + "B.html",
"</FONT>public interface <STRONG>B</STRONG></DL>" + NL +
"</PRE>"},
"</FONT>public interface <STRONG>B</STRONG></PRE>"},
//==============================================================
......@@ -525,7 +525,7 @@ public class TestNewLanguageFeatures extends JavadocTester {
"<FONT SIZE=\"-1\">" + NL +
"<A HREF=\"../pkg/AnnotationTypeUndocumented.html\" title=\"annotation in pkg\">@AnnotationTypeUndocumented</A>(<A HREF=\"../pkg/AnnotationType.html#optional\">optional</A>=\"Class Annotation\"," + NL +
" <A HREF=\"../pkg/AnnotationType.html#required\">required</A>=1994)" + NL +
"</FONT>public class <STRONG>AnnotationTypeUsage</STRONG><DT>extends java.lang.Object</DL>"},
"</FONT>public class <STRONG>AnnotationTypeUsage</STRONG></DT><DT>extends java.lang.Object</DT></DL>"},
//FIELD
{BUG_ID + FS + "pkg" + FS + "AnnotationTypeUsage.html",
......
......@@ -40,11 +40,11 @@ public class TestOverridenPrivateMethods extends JavadocTester {
private static final String[][] TEST = {
//The public method should be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
//The public method in different package should be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"}
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"}
};
private static final String[][] NEGATED_TEST = {
......@@ -52,20 +52,20 @@ public class TestOverridenPrivateMethods extends JavadocTester {
//The package private method should be overriden since the base and sub class are in the same
//package. However, the link should not show up because the package private methods are not documented.
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
//The private method in should not be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The private method in different package should not be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The package private method should not be overriden since the base and sub class are in
//different packages.
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
};
private static final String[] ARGS =
......
......@@ -40,32 +40,32 @@ public class TestOverridenPrivateMethodsWithPackageFlag extends JavadocTester {
private static final String[][] TEST = {
//The public method should be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
//The public method in different package should be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
//The package private method should be overriden since the base and sub class are in the same
//package.
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
};
private static final String[][] NEGATED_TEST = {
//The private method in should not be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The private method in different package should not be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The package private method should not be overriden since the base and sub class are in
//different packages.
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
};
private static final String[] ARGS =
......
......@@ -40,32 +40,32 @@ public class TestOverridenPrivateMethodsWithPrivateFlag extends JavadocTester {
private static final String[][] TEST = {
//The public method should be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
//The package private method should be overriden since the base and sub class are in the same
//package.
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"},
//The public method in different package should be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#publicMethod"},
};
private static final String[][] NEGATED_TEST = {
//The private method in should not be overriden
{BUG_ID + FS + "pkg1" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The private method in different package should not be overriden
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#privateMethod"},
//The package private method should not be overriden since the base and sub class are in
//different packages.
{BUG_ID + FS + "pkg2" + FS + "SubClass.html",
"Overrides:</STRONG><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
"Overrides:</STRONG></DT><DD><CODE><A HREF=\"../pkg1/BaseClass.html#packagePrivateMethod"}
};
......
......@@ -48,12 +48,12 @@ public class TestParamTaglet extends JavadocTester {
private static final String[][] TEST = {
//Regular param tags.
{BUG_ID + FS + "pkg" + FS + "C.html",
"<STRONG>Parameters:</STRONG><DD><CODE>param1</CODE> - testing 1 2 3." +
"<STRONG>Parameters:</STRONG></DT><DD><CODE>param1</CODE> - testing 1 2 3.</DD>" +
"<DD><CODE>param2</CODE> - testing 1 2 3."
},
//Param tags that don't match with any real parameters.
{BUG_ID + FS + "pkg" + FS + "C.html",
"<STRONG>Parameters:</STRONG><DD><CODE><I>p1</I></CODE> - testing 1 2 3." +
"<STRONG>Parameters:</STRONG></DT><DD><CODE><I>p1</I></CODE> - testing 1 2 3.</DD>" +
"<DD><CODE><I>p2</I></CODE> - testing 1 2 3."
},
//{@inherit} doc misuse does not cause doclet to throw exception.
......
......@@ -96,11 +96,11 @@ public class TestPrivateClasses extends JavadocTester {
//Make sure implemented interfaces from private superclass are inherited
{BUG_ID + "-1" + FS + "pkg" + FS + "PublicInterface.html",
"<STRONG>All Known Implementing Classes:</STRONG> <DD><A HREF=\"../pkg/PublicChild.html\" " +
"<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PublicChild.html\" " +
"title=\"class in pkg\">PublicChild</A>"},
{BUG_ID + "-1" + FS + "pkg" + FS + "PublicChild.html",
"<STRONG>All Implemented Interfaces:</STRONG> <DD><A HREF=\"../pkg/PublicInterface.html\" " +
"<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PublicInterface.html\" " +
"title=\"interface in pkg\">PublicInterface</A>"},
//Generic interface method test.
......@@ -174,18 +174,18 @@ public class TestPrivateClasses extends JavadocTester {
},
// Should document that a method overrides method from private class.
{BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
"<STRONG>Overrides:</STRONG><DD><CODE>" +
"<STRONG>Overrides:</STRONG></DT><DD><CODE>" +
"<A HREF=\"../pkg/PrivateParent.html#methodOverridenFromParent(char[], int, T, V, java.util.List)\">" +
"methodOverridenFromParent</A></CODE> in class <CODE>" +
"<A HREF=\"../pkg/PrivateParent.html\" title=\"class in pkg\">" +
"PrivateParent</A></CODE></DL>"},
"PrivateParent</A></CODE></DD>" + NL + "</DL>"},
// Should document that a method is specified by private interface.
{BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
"<STRONG>Specified by:</STRONG><DD><CODE>" +
"<STRONG>Specified by:</STRONG></DT><DD><CODE>" +
"<A HREF=\"../pkg/PrivateInterface.html#methodInterface(int)\">" +
"methodInterface</A></CODE> in interface <CODE>" +
"<A HREF=\"../pkg/PrivateInterface.html\" title=\"interface in pkg\">" +
"PrivateInterface</A></CODE></DL>" + NL + "</DD>"},
"PrivateInterface</A></CODE></DD>" + NL + "</DL>" + NL + "</DD>"},
// Method inheritence from non-public superinterface.
{BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
"Methods inherited from interface " +
......@@ -209,12 +209,12 @@ public class TestPrivateClasses extends JavadocTester {
//Make sure implemented interfaces from private superclass are inherited
{BUG_ID + "-2" + FS + "pkg" + FS + "PublicInterface.html",
"<STRONG>All Known Implementing Classes:</STRONG> <DD><A HREF=\"../pkg/PrivateParent.html\" " +
"<STRONG>All Known Implementing Classes:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateParent.html\" " +
"title=\"class in pkg\">PrivateParent</A>, " +
"<A HREF=\"../pkg/PublicChild.html\" title=\"class in pkg\">PublicChild</A>"},
{BUG_ID + "-2" + FS + "pkg" + FS + "PublicChild.html",
"<STRONG>All Implemented Interfaces:</STRONG> <DD><A HREF=\"../pkg/PrivateInterface.html\" " +
"<STRONG>All Implemented Interfaces:</STRONG></DT> <DD><A HREF=\"../pkg/PrivateInterface.html\" " +
"title=\"interface in pkg\">PrivateInterface</A>, " +
"<A HREF=\"../pkg/PublicInterface.html\" title=\"interface in pkg\">" +
"PublicInterface</A>"},
......@@ -226,7 +226,7 @@ public class TestPrivateClasses extends JavadocTester {
"<CODE><A HREF=\"../pkg2/I.html#hello(T)\">I</A></CODE></STRONG>"},
{BUG_ID + "-2" + FS + "pkg2" + FS + "C.html",
"<STRONG>Specified by:</STRONG><DD><CODE><A HREF=\"../pkg2/I.html#hello(T)\">" +
"<STRONG>Specified by:</STRONG></DT><DD><CODE><A HREF=\"../pkg2/I.html#hello(T)\">" +
"hello</A></CODE> in interface <CODE><A HREF=\"../pkg2/I.html\" " +
"title=\"interface in pkg2\">I</A>"},
};
......
......@@ -41,39 +41,39 @@ public class TestSerializedFormDeprecationInfo extends JavadocTester {
// Test for normal run of javadoc. The serialized-form.html should
// display the inline comments, tags and deprecation information if any.
private static final String[][] TEST_CMNT_DEPR = {
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL + NL +
"<DT><STRONG>Throws:</STRONG>" + NL + "<DD><CODE>" +
"java.io.IOException</CODE><DT><STRONG>See Also:</STRONG>" +
"<DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>C1.setUndecorated(boolean)</CODE></A></DD>" + NL +
"</DL>" + NL + "</DL>"},
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><DL>" + NL +
"<DT><STRONG>Throws:</STRONG></DT>" + NL + "<DD><CODE>" +
"java.io.IOException</CODE></DD><DT><STRONG>See Also:</STRONG>" +
"</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
"</DD>" + NL + "</DL>"},
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
"<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
" 1.5, replaced by" + NL +
"<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version " +
"1.5, replaced by" + NL +
" <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>setUndecorated(boolean)</CODE></A>.</I>" +
"<CODE>setUndecorated(boolean)</CODE></A>.</I></DD>" +
"<DD>This field indicates whether the C1 is undecorated." + NL +
"<P>" + NL + "<DT><DD>&nbsp;<DL>" + NL +
"<DT><STRONG>Since:</STRONG></DT>" + NL +
"<P>" + NL + "</DD>" + NL + "<DD>&nbsp;</DD>" + NL +
"<DD><DL>" + NL + "<DT><STRONG>Since:</STRONG></DT>" + NL +
" <DD>1.4</DD>" + NL + "<DT><STRONG>See Also:</STRONG>" +
"<DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>C1.setUndecorated(boolean)</CODE></A></DL>" + NL +
"</DL>"},
"</DT><DD><A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>C1.setUndecorated(boolean)</CODE></A></DD></DL>" + NL +
"</DD>" + NL + "</DL>"},
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
"<DD><STRONG>Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
" 1.5, replaced by" + NL +
" <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
"<DD>Reads the object stream." + NL + "<P>" + NL +
"<DD><DL>" + NL + NL + "<DT><STRONG>Throws:" +
"</STRONG>" + NL + "<DD><CODE><code>" +
"IOException</code></CODE>" + NL +
"<DD><CODE>java.io.IOException</CODE></DD>" + NL +
"</DL>" + NL + "</DL>"},
"</DD><DD>Reads the object stream." + NL + "<P>" + NL +
"</DD>" + NL + "<DD><DL>" + NL + "<DT><STRONG>Throws:" +
"</STRONG></DT>" + NL + "<DD><CODE><code>" +
"IOException</code></CODE></DD>" + NL +
"<DD><CODE>java.io.IOException</CODE></DD></DL>" + NL +
"</DD>" + NL + "</DL>"},
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL +
"<DD><STRONG>Deprecated.</STRONG>&nbsp;<DD>" +
"The name for this class." + NL + "<P>" + NL +
"<DT><DD>&nbsp;<DL>" + NL + "</DL>" + NL + "</DL>"}};
"<DD><STRONG>Deprecated.</STRONG>&nbsp;</DD><DD>" +
"The name for this class." + NL + "<P>" + NL + "</DD>" + NL +
"<DD>&nbsp;</DD>" + NL + "</DL>"}};
// Test with -nocomment option. The serialized-form.html should
// not display the inline comments and tags but should display deprecation
......@@ -83,16 +83,16 @@ public class TestSerializedFormDeprecationInfo extends JavadocTester {
"undecorated</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
"Deprecated.</STRONG>&nbsp;<I>As of JDK version 1.5, replaced by" + NL +
" <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\"><CODE>" +
"setUndecorated(boolean)</CODE></A>.</I></DL>"},
"setUndecorated(boolean)</CODE></A>.</I></DD></DL>"},
{BUG_ID + FS + "serialized-form.html", "<DL>" + NL + "<DD><STRONG>" +
"Deprecated.</STRONG>&nbsp;<I>As of JDK version" +
" 1.5, replaced by" + NL +
" <A HREF=\"pkg1/C1.html#setUndecorated(boolean)\">" +
"<CODE>setUndecorated(boolean)</CODE></A>.</I>" + NL + "<P>" + NL +
"</DL>"},
"</DD></DL>"},
{BUG_ID + FS + "serialized-form.html", "<PRE>" + NL + "int <STRONG>" +
"publicKey</STRONG></PRE>" + NL + "<DL>" + NL + "<DD><STRONG>" +
"Deprecated.</STRONG>&nbsp;</DL>"}};
"Deprecated.</STRONG>&nbsp;</DD></DL>"}};
// Test with -nodeprecated option. The serialized-form.html should
// ignore the -nodeprecated tag and display the deprecation info. This
......
......@@ -46,14 +46,14 @@ public class TestThrowsTag extends JavadocTester {
//Input for string search tests.
private static final String[][] TEST = {
{BUG_ID + FS + "pkg" + FS + "C.html",
"<DD><CODE><A HREF=\"../pkg/T1.html\" title=\"class in pkg\">T1</A></CODE> - the first throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T2.html\" title=\"class in pkg\">T2</A></CODE> - the second throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T3.html\" title=\"class in pkg\">T3</A></CODE> - the third throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T4.html\" title=\"class in pkg\">T4</A></CODE> - the fourth throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T5.html\" title=\"class in pkg\">T5</A></CODE> - the first inherited throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T6.html\" title=\"class in pkg\">T6</A></CODE> - the second inherited throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T7.html\" title=\"class in pkg\">T7</A></CODE> - the third inherited throws tag." + NL +
"<DD><CODE><A HREF=\"../pkg/T8.html\" title=\"class in pkg\">T8</A></CODE> - the fourth inherited throws tag."
"<DD><CODE><A HREF=\"../pkg/T1.html\" title=\"class in pkg\">T1</A></CODE> - the first throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T2.html\" title=\"class in pkg\">T2</A></CODE> - the second throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T3.html\" title=\"class in pkg\">T3</A></CODE> - the third throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T4.html\" title=\"class in pkg\">T4</A></CODE> - the fourth throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T5.html\" title=\"class in pkg\">T5</A></CODE> - the first inherited throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T6.html\" title=\"class in pkg\">T6</A></CODE> - the second inherited throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T7.html\" title=\"class in pkg\">T7</A></CODE> - the third inherited throws tag.</DD>" + NL +
"<DD><CODE><A HREF=\"../pkg/T8.html\" title=\"class in pkg\">T8</A></CODE> - the fourth inherited throws tag.</DD>"
},
};
private static final String[][] NEGATED_TEST = NO_TEST;
......
/*
* Copyright 2006 Sun Microsystems, Inc. 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.
*
* 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
@AnnotatedElementInfo(annotationName="AnnotatedElementInfo",
expectedSize=1,
names="Foo")
public class Foo {}
/*
* Copyright 2006-2007 Sun Microsystems, Inc. All Rights Reserved.
* Copyright 2006-2009 Sun Microsystems, Inc. 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
......@@ -23,7 +23,7 @@
/*
* @test
* @bug 6397298 6400986 6425592 6449798 6453386 6508401
* @bug 6397298 6400986 6425592 6449798 6453386 6508401 6498938
* @summary Tests that getElementsAnnotatedWith works properly.
* @author Joseph D. Darcy
* @compile TestElementsAnnotatedWith.java
......@@ -31,16 +31,22 @@
* @compile -processor TestElementsAnnotatedWith -proc:only SurfaceAnnotations.java
* @compile -processor TestElementsAnnotatedWith -proc:only BuriedAnnotations.java
* @compile -processor TestElementsAnnotatedWith -proc:only Part1.java Part2.java
* @compile -processor TestElementsAnnotatedWith -proc:only TestElementsAnnotatedWith.java
* @compile -processor TestElementsAnnotatedWith -proc:only C2.java
* @compile -processor TestElementsAnnotatedWith -proc:only Foo.java
* @compile -XD-d=. Foo.java
* @compile -processor TestElementsAnnotatedWith -proc:only TestElementsAnnotatedWith.java
*/
import java.lang.annotation.Annotation;
import java.io.*;
import java.util.Collections;
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
import javax.annotation.processing.*;
import javax.tools.*;
import javax.lang.model.SourceVersion;
import javax.lang.model.element.*;
import javax.lang.model.util.*;
......@@ -120,6 +126,9 @@ public class TestElementsAnnotatedWith extends AbstractProcessor {
System.err.println("AnnotatedElementInfo: " + annotatedElementInfo);
throw new RuntimeException();
}
if("TestElementsAnnotatedWith".equals(firstType.getSimpleName().toString()))
writeClassFile(); // Start another round to test class file input
} else {
// If processing is over without an error, the specified
// elements should be empty so an empty set should be returned.
......@@ -161,6 +170,37 @@ public class TestElementsAnnotatedWith extends AbstractProcessor {
} catch(IllegalArgumentException iae) {}
}
/*
* Hack alert! The class file read below is generated by the
* "@compile -XD-d=. Foo.java" directive above. This sneakily
* overrides the output location to the current directory where a
* subsequent @compile can read the file. This could be improved
* if either a new directive like @process accepted class file
* arguments (the javac command accepts such arguments but
* @compile does not) or the test.src and test.classes properties
* were set to be read with @compile jobs.
*/
private void writeClassFile() {
try {
Filer filer = processingEnv.getFiler();
JavaFileObject jfo = filer.createClassFile("Foo");
OutputStream os = jfo.openOutputStream();
// Copy the bytes over
System.out.println((new File(".")).getAbsolutePath());
InputStream io = new BufferedInputStream(new FileInputStream(new File(".", "Foo.class")));
int datum = io.read();
while(datum != -1) {
os.write(datum);
datum = io.read();
}
os.close();
} catch (IOException io) {
throw new RuntimeException(io);
}
}
@Override
public SourceVersion getSupportedSourceVersion() {
return SourceVersion.latest();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册