# HG changeset patch # User bpatel # Date 1378936211 25200 # Node ID cf37c3775397b7f4bcf650fb78a6a9ba1344215f # Parent 65c218b25b6130502ee905c5254b89146cc3e176 8015496: Information that package is deprecated is missing in profiles view Reviewed-by: jjg diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java --- a/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/AbstractPackageIndexWriter.java Wed Sep 11 14:50:11 2013 -0700 @@ -157,7 +157,7 @@ addAllProfilesLink(div); } body.addContent(div); - if (configuration.showProfiles) { + if (configuration.showProfiles && configuration.profilePackages.size() > 0) { Content profileSummary = configuration.getResource("doclet.Profiles"); addProfilesList(profileSummary, body); } diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java --- a/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDoclet.java Wed Sep 11 14:50:11 2013 -0700 @@ -205,13 +205,20 @@ * {@inheritDoc} */ protected void generateProfileFiles() throws Exception { - if (configuration.showProfiles) { + if (configuration.showProfiles && configuration.profilePackages.size() > 0) { ProfileIndexFrameWriter.generate(configuration); Profile prevProfile = null, nextProfile; + String profileName; for (int i = 1; i < configuration.profiles.getProfileCount(); i++) { - ProfilePackageIndexFrameWriter.generate(configuration, Profile.lookup(i).name); + profileName = Profile.lookup(i).name; + // Generate profile package pages only if there are any packages + // in a profile to be documented. The profilePackages map will not + // contain an entry for the profile if there are no packages to be documented. + if (!configuration.shouldDocumentProfile(profileName)) + continue; + ProfilePackageIndexFrameWriter.generate(configuration, profileName); PackageDoc[] packages = configuration.profilePackages.get( - Profile.lookup(i).name); + profileName); PackageDoc prev = null, next; for (int j = 0; j < packages.length; j++) { // if -nodeprecated option is set and the package is marked as diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java --- a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexWriter.java Wed Sep 11 14:50:11 2013 -0700 @@ -130,10 +130,14 @@ String profileName; for (int i = 1; i < configuration.profiles.getProfileCount(); i++) { profileName = Profile.lookup(i).name; - Content profileLinkContent = getTargetProfileLink("classFrame", - new StringContent(profileName), profileName); - Content li = HtmlTree.LI(profileLinkContent); - ul.addContent(li); + // If the profile has valid packages to be documented, add it to the + // profiles list on overview-summary.html page. + if (configuration.shouldDocumentProfile(profileName)) { + Content profileLinkContent = getTargetProfileLink("classFrame", + new StringContent(profileName), profileName); + Content li = HtmlTree.LI(profileLinkContent); + ul.addContent(li); + } } profilesDiv.addContent(ul); Content div = HtmlTree.DIV(HtmlStyle.contentContainer, profilesDiv); diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java --- a/src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java Wed Sep 11 14:50:11 2013 -0700 @@ -88,8 +88,13 @@ Content div = HtmlTree.DIV(HtmlStyle.indexContainer, heading); HtmlTree ul = new HtmlTree(HtmlTag.UL); ul.setTitle(profilesLabel); + String profileName; for (int i = 1; i < profiles.getProfileCount(); i++) { - ul.addContent(getProfile(i)); + profileName = (Profile.lookup(i)).name; + // If the profile has valid packages to be documented, add it to the + // left-frame generated for profile index. + if (configuration.shouldDocumentProfile(profileName)) + ul.addContent(getProfile(profileName)); } div.addContent(ul); body.addContent(div); @@ -98,13 +103,12 @@ /** * Gets each profile name as a separate link. * - * @param profile the profile being documented + * @param profileName the profile being documented * @return content for the profile link */ - protected Content getProfile(int profile) { + protected Content getProfile(String profileName) { Content profileLinkContent; Content profileLabel; - String profileName = (Profile.lookup(profile)).name; profileLabel = new StringContent(profileName); profileLinkContent = getHyperLink(DocPaths.profileFrame(profileName), profileLabel, "", "packageListFrame"); diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/formats/html/ProfileWriterImpl.java --- a/src/share/classes/com/sun/tools/doclets/formats/html/ProfileWriterImpl.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfileWriterImpl.java Wed Sep 11 14:50:11 2013 -0700 @@ -138,6 +138,7 @@ "classFrame", new StringContent(pkg.name()), profile.name); Content heading = HtmlTree.HEADING(HtmlTag.H3, pkgName); HtmlTree li = HtmlTree.LI(HtmlStyle.blockList, heading); + addPackageDeprecationInfo(li, pkg); return li; } @@ -175,6 +176,30 @@ } /** + * Add the profile package deprecation information to the documentation tree. + * + * @param li the content tree to which the deprecation information will be added + * @param pkg the PackageDoc that is added + */ + public void addPackageDeprecationInfo(Content li, PackageDoc pkg) { + Tag[] deprs; + if (Util.isDeprecated(pkg)) { + deprs = pkg.tags("deprecated"); + HtmlTree deprDiv = new HtmlTree(HtmlTag.DIV); + deprDiv.addStyle(HtmlStyle.deprecatedContent); + Content deprPhrase = HtmlTree.SPAN(HtmlStyle.strong, deprecatedPhrase); + deprDiv.addContent(deprPhrase); + if (deprs.length > 0) { + Tag[] commentTags = deprs[0].inlineTags(); + if (commentTags.length > 0) { + addInlineDeprecatedComment(pkg, deprs[0], deprDiv); + } + } + li.addContent(deprDiv); + } + } + + /** * Get "PREV PROFILE" link in the navigation bar. * * @return a content tree for the previous link diff -r 65c218b25b61 -r cf37c3775397 src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java Wed Sep 11 08:30:58 2013 -0400 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java Wed Sep 11 14:50:11 2013 -0700 @@ -396,6 +396,9 @@ interimResults.put(p, new ArrayList()); for (PackageDoc pkg: packages) { + if (nodeprecated && Util.isDeprecated(pkg)) { + continue; + } // the getProfile method takes a type name, not a package name, // but isn't particularly fussy about the simple name -- so just use * int i = profiles.getProfile(pkg.name().replace(".", "/") + "/*"); @@ -409,12 +412,17 @@ // Build the profilePackages structure used by the doclet profilePackages = new HashMap(); List prev = Collections.emptyList(); + int size; for (Map.Entry> e: interimResults.entrySet()) { Profile p = e.getKey(); List pkgs = e.getValue(); pkgs.addAll(prev); // each profile contains all lower profiles Collections.sort(pkgs); - profilePackages.put(p.name, pkgs.toArray(new PackageDoc[pkgs.size()])); + size = pkgs.size(); + // For a profile, if there are no packages to be documented, do not add + // it to profilePackages map. + if (size > 0) + profilePackages.put(p.name, pkgs.toArray(new PackageDoc[pkgs.size()])); prev = pkgs; } @@ -719,6 +727,17 @@ } /** + * Check the validity of the given profile. Return false if there are no + * valid packages to be documented for the profile. + * + * @param profileName the profile that needs to be validated. + * @return true if the profile has valid packages to be documented. + */ + public boolean shouldDocumentProfile(String profileName) { + return profilePackages.containsKey(profileName); + } + + /** * Check the validity of the given Source or Output File encoding on this * platform. * diff -r 65c218b25b61 -r cf37c3775397 test/com/sun/javadoc/testProfiles/TestProfilesConfiguration.java --- a/test/com/sun/javadoc/testProfiles/TestProfilesConfiguration.java Wed Sep 11 08:30:58 2013 -0400 +++ b/test/com/sun/javadoc/testProfiles/TestProfilesConfiguration.java Wed Sep 11 14:50:11 2013 -0700 @@ -23,7 +23,7 @@ /* * @test - * @bug 8006124 8009684 8015663 + * @bug 8006124 8009684 8015663 8015496 * @summary Test javadoc options support for profiles. * @author Evgeniya Stepanova * @library ../lib/ @@ -35,6 +35,7 @@ //Test information. private static final String BUG_ID = "8006124-8009684"; private static final String PROFILE_CONFIGURATION_BUG_ID = BUG_ID + "-3"; + private static final String NODEPR_NOPKGS_BUG_ID = BUG_ID + "-4"; //Javadoc arguments. private static final String[] ARGS3 = new String[]{ "-d", PROFILE_CONFIGURATION_BUG_ID, "-sourcepath", SRC_DIR, "-nocomment", @@ -42,6 +43,30 @@ "-doctitle", "Simple doctitle", "-use", "pkg3", "pkg1", "pkg2", "pkg4", "pkg5", "-packagesheader", "Simple packages header","pkgDeprecated" }; + private static final String[] ARGS4 = new String[]{ + "-d", NODEPR_NOPKGS_BUG_ID, "-sourcepath", SRC_DIR, "-nocomment", "-nodeprecated", + "-keywords", "-Xprofilespath", SRC_DIR + FS + "profile-rtjar-includes-nopkgs.txt", + "-doctitle", "Simple doctitle", "-use", "-packagesheader", "Simple packages header", + "pkg1", "pkg2", "pkg3", "pkg4", "pkg5", "pkgDeprecated" + }; + private static final String[][] NODEPR_NOPKGS_TEST = { + {NODEPR_NOPKGS_BUG_ID + FS + "overview-summary.html", + "" + }, + {NODEPR_NOPKGS_BUG_ID + FS + "profile-overview-frame.html", + "" + } + }; + private static final String[][] NODEPR_NOPKGS_NEGATED_TEST = { + {NODEPR_NOPKGS_BUG_ID + FS + "overview-summary.html", + "compact1" + } + }; + private static final String[][] PROFILES_CONFIGURATION_TEST = { //-use option test string fo profile view page {PROFILE_CONFIGURATION_BUG_ID + FS + "compact1-summary.html","
  • Use
  • " @@ -57,6 +82,12 @@ //-keywords option test string for profiles {PROFILE_CONFIGURATION_BUG_ID + FS + "compact1-summary.html", "" + }, + //Deprecated information on a package + {PROFILE_CONFIGURATION_BUG_ID + FS + "compact1-summary.html", + "

    pkgDeprecated

    " + NL + "
    " + + "Deprecated.
    " } }; private static final String[][] PROFILES_CONFIGURATION_NEGATED_TEST = { @@ -75,6 +106,8 @@ TestProfilesConfiguration tester = new TestProfilesConfiguration(); run(tester, ARGS3, PROFILES_CONFIGURATION_TEST, PROFILES_CONFIGURATION_NEGATED_TEST); + run(tester, ARGS4, NODEPR_NOPKGS_TEST, + NODEPR_NOPKGS_NEGATED_TEST); tester.printSummary(); } diff -r 65c218b25b61 -r cf37c3775397 test/com/sun/javadoc/testProfiles/profile-rtjar-includes-nopkgs.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/com/sun/javadoc/testProfiles/profile-rtjar-includes-nopkgs.txt Wed Sep 11 14:50:11 2013 -0700 @@ -0,0 +1,41 @@ +PROFILE_1_RTJAR_INCLUDE_PACKAGES := + +PROFILE_1_RTJAR_INCLUDE_TYPES := + +PROFILE_1_RTJAR_EXCLUDE_TYPES := + +PROFILE_1_INCLUDE_METAINF_SERVICES := + + +PROFILE_2_RTJAR_INCLUDE_PACKAGES := \ + pkg4 \ + pkgDeprecated + +PROFILE_2_RTJAR_INCLUDE_TYPES := + +PROFILE_2_RTJAR_EXCLUDE_TYPES := \ + pkg4/Anno1Pkg4.class + +PROFILE_2_INCLUDE_METAINF_SERVICES := + + +PROFILE_3_RTJAR_INCLUDE_PACKAGES := \ + pkg5 + +PROFILE_3_RTJAR_INCLUDE_TYPES := + +PROFILE_3_RTJAR_EXCLUDE_TYPES := + +PROFILE_3_INCLUDE_METAINF_SERVICES := + + +PROFILE_4_RTJAR_INCLUDE_PACKAGES := \ + pkg1 + +PROFILE_4_RTJAR_INCLUDE_TYPES := + +PROFILE_4_RTJAR_EXCLUDE_TYPES := + +PROFILE_4_INCLUDE_METAINF_SERVICES := + +