37 import java.util.TreeSet;
38
39 import javax.lang.model.element.Element;
40 import javax.lang.model.element.PackageElement;
41 import javax.lang.model.element.TypeElement;
42 import javax.tools.Diagnostic;
43
44 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
45 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
46 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
47 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
48 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
49 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
50 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
51 import jdk.javadoc.internal.doclets.toolkit.Content;
52 import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
53 import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper;
54 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
55 import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
56 import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
57
58
59 /**
60 * Generate class usage information.
61 *
62 * <p><b>This is NOT part of any supported API.
63 * If you write code that depends on this, you do so at your own risk.
64 * This code and its internal interfaces are subject to change or
65 * deletion without notice.</b>
66 */
67 public class ClassUseWriter extends SubWriterHolderWriter {
68
69 final TypeElement typeElement;
70 Set<PackageElement> pkgToPackageAnnotations = null;
71 final Map<PackageElement, List<Element>> pkgToClassTypeParameter;
72 final Map<PackageElement, List<Element>> pkgToClassAnnotations;
73 final Map<PackageElement, List<Element>> pkgToMethodTypeParameter;
74 final Map<PackageElement, List<Element>> pkgToMethodArgTypeParameter;
75 final Map<PackageElement, List<Element>> pkgToMethodReturnTypeParameter;
76 final Map<PackageElement, List<Element>> pkgToMethodAnnotations;
141 "Internal error: package sets don't match: "
142 + pkgSet + " with: " + mapper.classToPackage.get(this.typeElement));
143 }
144
145 methodSubWriter = new MethodWriterImpl(this);
146 constrSubWriter = new ConstructorWriterImpl(this);
147 fieldSubWriter = new FieldWriterImpl(this);
148 classSubWriter = new NestedClassWriterImpl(this);
149 this.navBar = new Navigation(typeElement, configuration, PageMode.USE, path);
150 }
151
152 /**
153 * Write out class use pages.
154 *
155 * @param configuration the configuration for this doclet
156 * @param classtree the class tree hierarchy
157 * @throws DocFileIOException if there is an error while generating the documentation
158 */
159 public static void generate(HtmlConfiguration configuration, ClassTree classtree) throws DocFileIOException {
160 ClassUseMapper mapper = new ClassUseMapper(configuration, classtree);
161 for (TypeElement aClass : configuration.getIncludedTypeElements()) {
162 // If -nodeprecated option is set and the containing package is marked
163 // as deprecated, do not generate the class-use page. We will still generate
164 // the class-use page if the class is marked as deprecated but the containing
165 // package is not since it could still be linked from that package-use page.
166 if (!(configuration.nodeprecated &&
167 configuration.utils.isDeprecated(configuration.utils.containingPackage(aClass))))
168 ClassUseWriter.generate(configuration, mapper, aClass);
169 }
170 for (PackageElement pkg : configuration.packages) {
171 // If -nodeprecated option is set and the package is marked
172 // as deprecated, do not generate the package-use page.
173 if (!(configuration.nodeprecated && configuration.utils.isDeprecated(pkg)))
174 PackageUseWriter.generate(configuration, mapper, pkg);
175 }
176 }
177
178 private Map<PackageElement, List<Element>> pkgDivide(Map<TypeElement, ? extends List<? extends Element>> classMap) {
179 Map<PackageElement, List<Element>> map = new HashMap<>();
180 List<? extends Element> elements = (List<? extends Element>) classMap.get(typeElement);
181 if (elements != null) {
182 Collections.sort(elements, utils.makeClassUseComparator());
183 for (Element e : elements) {
184 PackageElement pkg = utils.containingPackage(e);
185 pkgSet.add(pkg);
186 List<Element> inPkg = map.get(pkg);
187 if (inPkg == null) {
188 inPkg = new ArrayList<>();
189 map.put(pkg, inPkg);
190 }
191 inPkg.add(e);
192 }
193 }
|
37 import java.util.TreeSet;
38
39 import javax.lang.model.element.Element;
40 import javax.lang.model.element.PackageElement;
41 import javax.lang.model.element.TypeElement;
42 import javax.tools.Diagnostic;
43
44 import jdk.javadoc.internal.doclets.formats.html.markup.ContentBuilder;
45 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle;
46 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag;
47 import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTree;
48 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation;
49 import jdk.javadoc.internal.doclets.formats.html.markup.Navigation.PageMode;
50 import jdk.javadoc.internal.doclets.formats.html.markup.StringContent;
51 import jdk.javadoc.internal.doclets.toolkit.Content;
52 import jdk.javadoc.internal.doclets.toolkit.util.ClassTree;
53 import jdk.javadoc.internal.doclets.toolkit.util.ClassUseMapper;
54 import jdk.javadoc.internal.doclets.toolkit.util.DocFileIOException;
55 import jdk.javadoc.internal.doclets.toolkit.util.DocPath;
56 import jdk.javadoc.internal.doclets.toolkit.util.DocPaths;
57 import jdk.javadoc.internal.doclets.toolkit.util.Utils;
58
59
60 /**
61 * Generate class usage information.
62 *
63 * <p><b>This is NOT part of any supported API.
64 * If you write code that depends on this, you do so at your own risk.
65 * This code and its internal interfaces are subject to change or
66 * deletion without notice.</b>
67 */
68 public class ClassUseWriter extends SubWriterHolderWriter {
69
70 final TypeElement typeElement;
71 Set<PackageElement> pkgToPackageAnnotations = null;
72 final Map<PackageElement, List<Element>> pkgToClassTypeParameter;
73 final Map<PackageElement, List<Element>> pkgToClassAnnotations;
74 final Map<PackageElement, List<Element>> pkgToMethodTypeParameter;
75 final Map<PackageElement, List<Element>> pkgToMethodArgTypeParameter;
76 final Map<PackageElement, List<Element>> pkgToMethodReturnTypeParameter;
77 final Map<PackageElement, List<Element>> pkgToMethodAnnotations;
142 "Internal error: package sets don't match: "
143 + pkgSet + " with: " + mapper.classToPackage.get(this.typeElement));
144 }
145
146 methodSubWriter = new MethodWriterImpl(this);
147 constrSubWriter = new ConstructorWriterImpl(this);
148 fieldSubWriter = new FieldWriterImpl(this);
149 classSubWriter = new NestedClassWriterImpl(this);
150 this.navBar = new Navigation(typeElement, configuration, PageMode.USE, path);
151 }
152
153 /**
154 * Write out class use pages.
155 *
156 * @param configuration the configuration for this doclet
157 * @param classtree the class tree hierarchy
158 * @throws DocFileIOException if there is an error while generating the documentation
159 */
160 public static void generate(HtmlConfiguration configuration, ClassTree classtree) throws DocFileIOException {
161 ClassUseMapper mapper = new ClassUseMapper(configuration, classtree);
162 boolean nodeprecated = configuration.getOptions().noDeprecated;
163 Utils utils = configuration.utils;
164 for (TypeElement aClass : configuration.getIncludedTypeElements()) {
165 // If -nodeprecated option is set and the containing package is marked
166 // as deprecated, do not generate the class-use page. We will still generate
167 // the class-use page if the class is marked as deprecated but the containing
168 // package is not since it could still be linked from that package-use page.
169 if (!(nodeprecated &&
170 utils.isDeprecated(utils.containingPackage(aClass))))
171 ClassUseWriter.generate(configuration, mapper, aClass);
172 }
173 for (PackageElement pkg : configuration.packages) {
174 // If -nodeprecated option is set and the package is marked
175 // as deprecated, do not generate the package-use page.
176 if (!(nodeprecated && utils.isDeprecated(pkg)))
177 PackageUseWriter.generate(configuration, mapper, pkg);
178 }
179 }
180
181 private Map<PackageElement, List<Element>> pkgDivide(Map<TypeElement, ? extends List<? extends Element>> classMap) {
182 Map<PackageElement, List<Element>> map = new HashMap<>();
183 List<? extends Element> elements = (List<? extends Element>) classMap.get(typeElement);
184 if (elements != null) {
185 Collections.sort(elements, utils.makeClassUseComparator());
186 for (Element e : elements) {
187 PackageElement pkg = utils.containingPackage(e);
188 pkgSet.add(pkg);
189 List<Element> inPkg = map.get(pkg);
190 if (inPkg == null) {
191 inPkg = new ArrayList<>();
192 map.put(pkg, inPkg);
193 }
194 inPkg.add(e);
195 }
196 }
|