68 * The XML root for this builder. |
68 * The XML root for this builder. |
69 */ |
69 */ |
70 public static final String NAME = "MemberSummary"; |
70 public static final String NAME = "MemberSummary"; |
71 |
71 |
72 /** |
72 /** |
73 * The visible members for the given class. |
|
74 */ |
|
75 private final EnumMap<VisibleMemberMap.Kind, VisibleMemberMap> visibleMemberMaps; |
|
76 /** |
|
77 * The member summary writers for the given class. |
73 * The member summary writers for the given class. |
78 */ |
74 */ |
79 private final EnumMap<VisibleMemberMap.Kind, MemberSummaryWriter> memberSummaryWriters; |
75 private final EnumMap<VisibleMemberMap.Kind, MemberSummaryWriter> memberSummaryWriters; |
80 |
76 |
81 /** |
77 /** |
92 */ |
88 */ |
93 private MemberSummaryBuilder(Context context, TypeElement typeElement) { |
89 private MemberSummaryBuilder(Context context, TypeElement typeElement) { |
94 super(context); |
90 super(context); |
95 this.typeElement = typeElement; |
91 this.typeElement = typeElement; |
96 memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class); |
92 memberSummaryWriters = new EnumMap<>(VisibleMemberMap.Kind.class); |
97 visibleMemberMaps = new EnumMap<>(VisibleMemberMap.Kind.class); |
|
98 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
|
99 visibleMemberMaps.put(kind, |
|
100 new VisibleMemberMap( |
|
101 typeElement, |
|
102 kind, |
|
103 configuration)); |
|
104 } |
|
105 } |
93 } |
106 |
94 |
107 /** |
95 /** |
108 * Construct a new MemberSummaryBuilder. |
96 * Construct a new MemberSummaryBuilder. |
109 * |
97 * |
115 ClassWriter classWriter, Context context) { |
103 ClassWriter classWriter, Context context) { |
116 MemberSummaryBuilder builder = new MemberSummaryBuilder(context, |
104 MemberSummaryBuilder builder = new MemberSummaryBuilder(context, |
117 classWriter.getTypeElement()); |
105 classWriter.getTypeElement()); |
118 WriterFactory wf = context.configuration.getWriterFactory(); |
106 WriterFactory wf = context.configuration.getWriterFactory(); |
119 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
107 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
120 MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers() |
108 MemberSummaryWriter msw = builder.getVisibleMemberMap(kind).noVisibleMembers() |
121 ? null |
109 ? null |
122 : wf.getMemberSummaryWriter(classWriter, kind); |
110 : wf.getMemberSummaryWriter(classWriter, kind); |
123 builder.memberSummaryWriters.put(kind, msw); |
111 builder.memberSummaryWriters.put(kind, msw); |
124 } |
112 } |
125 return builder; |
113 return builder; |
136 AnnotationTypeWriter annotationTypeWriter, Context context) { |
124 AnnotationTypeWriter annotationTypeWriter, Context context) { |
137 MemberSummaryBuilder builder = new MemberSummaryBuilder(context, |
125 MemberSummaryBuilder builder = new MemberSummaryBuilder(context, |
138 annotationTypeWriter.getAnnotationTypeElement()); |
126 annotationTypeWriter.getAnnotationTypeElement()); |
139 WriterFactory wf = context.configuration.getWriterFactory(); |
127 WriterFactory wf = context.configuration.getWriterFactory(); |
140 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
128 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
141 MemberSummaryWriter msw = builder.visibleMemberMaps.get(kind).noVisibleMembers() |
129 MemberSummaryWriter msw = builder.getVisibleMemberMap(kind).noVisibleMembers() |
142 ? null |
130 ? null |
143 : wf.getMemberSummaryWriter(annotationTypeWriter, kind); |
131 : wf.getMemberSummaryWriter(annotationTypeWriter, kind); |
144 builder.memberSummaryWriters.put(kind, msw); |
132 builder.memberSummaryWriters.put(kind, msw); |
145 } |
133 } |
146 return builder; |
134 return builder; |
155 } |
143 } |
156 |
144 |
157 /** |
145 /** |
158 * Return the specified visible member map. |
146 * Return the specified visible member map. |
159 * |
147 * |
160 * @param type the type of visible member map to return. |
148 * @param kind the kind of visible member map to return. |
161 * @return the specified visible member map. |
149 * @return the specified visible member map. |
162 * @throws ArrayIndexOutOfBoundsException when the type is invalid. |
150 * @throws ArrayIndexOutOfBoundsException when the type is invalid. |
163 * @see VisibleMemberMap |
151 * @see VisibleMemberMap |
164 */ |
152 */ |
165 public VisibleMemberMap getVisibleMemberMap(VisibleMemberMap.Kind type) { |
153 public VisibleMemberMap getVisibleMemberMap(VisibleMemberMap.Kind kind) { |
166 return visibleMemberMaps.get(type); |
154 return configuration.getVisibleMemberMap(typeElement, kind); |
167 } |
155 } |
168 |
156 |
169 /**. |
157 /**. |
170 * Return the specified member summary writer. |
158 * Return the specified member summary writer. |
171 * |
159 * |
172 * @param type the type of member summary writer to return. |
160 * @param kind the kind of member summary writer to return. |
173 * @return the specified member summary writer. |
161 * @return the specified member summary writer. |
174 * @throws ArrayIndexOutOfBoundsException when the type is invalid. |
162 * @throws ArrayIndexOutOfBoundsException when the type is invalid. |
175 * @see VisibleMemberMap |
163 * @see VisibleMemberMap |
176 */ |
164 */ |
177 public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberMap.Kind type) { |
165 public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberMap.Kind kind) { |
178 return memberSummaryWriters.get(type); |
166 return memberSummaryWriters.get(kind); |
179 } |
167 } |
180 |
168 |
181 /** |
169 /** |
182 * Returns a list of methods that will be documented for the given class. |
170 * Returns a list of methods that will be documented for the given class. |
183 * This information can be used for doclet specific documentation |
171 * This information can be used for doclet specific documentation |
184 * generation. |
172 * generation. |
185 * |
173 * |
186 * @param type the type of members to return. |
174 * @param kind the kind of elements to return. |
187 * @return a list of methods that will be documented. |
175 * @return a list of methods that will be documented. |
188 * @see VisibleMemberMap |
176 * @see VisibleMemberMap |
189 */ |
177 */ |
190 public SortedSet<Element> members(VisibleMemberMap.Kind type) { |
178 public SortedSet<Element> members(VisibleMemberMap.Kind kind) { |
191 TreeSet<Element> out = new TreeSet<>(comparator); |
179 TreeSet<Element> out = new TreeSet<>(comparator); |
192 out.addAll(visibleMemberMaps.get(type).getLeafMembers()); |
180 out.addAll(getVisibleMemberMap(kind).getLeafMembers()); |
193 return out; |
181 return out; |
194 } |
182 } |
195 |
183 |
196 /** |
184 /** |
197 * Return true it there are any members to summarize. |
185 * Return true it there are any members to summarize. |
202 public boolean hasMembersToDocument() { |
190 public boolean hasMembersToDocument() { |
203 if (utils.isAnnotationType(typeElement)) { |
191 if (utils.isAnnotationType(typeElement)) { |
204 return !utils.getAnnotationMethods(typeElement).isEmpty(); |
192 return !utils.getAnnotationMethods(typeElement).isEmpty(); |
205 } |
193 } |
206 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
194 for (VisibleMemberMap.Kind kind : VisibleMemberMap.Kind.values()) { |
207 VisibleMemberMap members = visibleMemberMaps.get(kind); |
195 VisibleMemberMap members = getVisibleMemberMap(kind); |
208 if (!members.noVisibleMembers()) { |
196 if (!members.noVisibleMembers()) { |
209 return true; |
197 return true; |
210 } |
198 } |
211 } |
199 } |
212 return false; |
200 return false; |
220 */ |
208 */ |
221 public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) { |
209 public void buildEnumConstantsSummary(XMLNode node, Content memberSummaryTree) { |
222 MemberSummaryWriter writer = |
210 MemberSummaryWriter writer = |
223 memberSummaryWriters.get(VisibleMemberMap.Kind.ENUM_CONSTANTS); |
211 memberSummaryWriters.get(VisibleMemberMap.Kind.ENUM_CONSTANTS); |
224 VisibleMemberMap visibleMemberMap = |
212 VisibleMemberMap visibleMemberMap = |
225 visibleMemberMaps.get(VisibleMemberMap.Kind.ENUM_CONSTANTS); |
213 getVisibleMemberMap(VisibleMemberMap.Kind.ENUM_CONSTANTS); |
226 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
214 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
227 } |
215 } |
228 |
216 |
229 /** |
217 /** |
230 * Build the summary for fields. |
218 * Build the summary for fields. |
234 */ |
222 */ |
235 public void buildAnnotationTypeFieldsSummary(XMLNode node, Content memberSummaryTree) { |
223 public void buildAnnotationTypeFieldsSummary(XMLNode node, Content memberSummaryTree) { |
236 MemberSummaryWriter writer = |
224 MemberSummaryWriter writer = |
237 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS); |
225 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS); |
238 VisibleMemberMap visibleMemberMap = |
226 VisibleMemberMap visibleMemberMap = |
239 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS); |
227 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_FIELDS); |
240 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
228 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
241 } |
229 } |
242 |
230 |
243 /** |
231 /** |
244 * Build the summary for the optional members. |
232 * Build the summary for the optional members. |
248 */ |
236 */ |
249 public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) { |
237 public void buildAnnotationTypeOptionalMemberSummary(XMLNode node, Content memberSummaryTree) { |
250 MemberSummaryWriter writer = |
238 MemberSummaryWriter writer = |
251 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL); |
239 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL); |
252 VisibleMemberMap visibleMemberMap = |
240 VisibleMemberMap visibleMemberMap = |
253 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL); |
241 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_OPTIONAL); |
254 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
242 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
255 } |
243 } |
256 |
244 |
257 /** |
245 /** |
258 * Build the summary for the optional members. |
246 * Build the summary for the optional members. |
262 */ |
250 */ |
263 public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) { |
251 public void buildAnnotationTypeRequiredMemberSummary(XMLNode node, Content memberSummaryTree) { |
264 MemberSummaryWriter writer = |
252 MemberSummaryWriter writer = |
265 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED); |
253 memberSummaryWriters.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED); |
266 VisibleMemberMap visibleMemberMap = |
254 VisibleMemberMap visibleMemberMap = |
267 visibleMemberMaps.get(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED); |
255 getVisibleMemberMap(VisibleMemberMap.Kind.ANNOTATION_TYPE_MEMBER_REQUIRED); |
268 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
256 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
269 } |
257 } |
270 |
258 |
271 /** |
259 /** |
272 * Build the summary for the fields. |
260 * Build the summary for the fields. |
276 */ |
264 */ |
277 public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) { |
265 public void buildFieldsSummary(XMLNode node, Content memberSummaryTree) { |
278 MemberSummaryWriter writer = |
266 MemberSummaryWriter writer = |
279 memberSummaryWriters.get(VisibleMemberMap.Kind.FIELDS); |
267 memberSummaryWriters.get(VisibleMemberMap.Kind.FIELDS); |
280 VisibleMemberMap visibleMemberMap = |
268 VisibleMemberMap visibleMemberMap = |
281 visibleMemberMaps.get(VisibleMemberMap.Kind.FIELDS); |
269 getVisibleMemberMap(VisibleMemberMap.Kind.FIELDS); |
282 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
270 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
283 } |
271 } |
284 |
272 |
285 /** |
273 /** |
286 * Build the summary for the fields. |
274 * Build the summary for the fields. |
287 */ |
275 */ |
288 public void buildPropertiesSummary(XMLNode node, Content memberSummaryTree) { |
276 public void buildPropertiesSummary(XMLNode node, Content memberSummaryTree) { |
289 MemberSummaryWriter writer = |
277 MemberSummaryWriter writer = |
290 memberSummaryWriters.get(VisibleMemberMap.Kind.PROPERTIES); |
278 memberSummaryWriters.get(VisibleMemberMap.Kind.PROPERTIES); |
291 VisibleMemberMap visibleMemberMap = |
279 VisibleMemberMap visibleMemberMap = |
292 visibleMemberMaps.get(VisibleMemberMap.Kind.PROPERTIES); |
280 getVisibleMemberMap(VisibleMemberMap.Kind.PROPERTIES); |
293 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
281 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
294 } |
282 } |
295 |
283 |
296 /** |
284 /** |
297 * Build the summary for the nested classes. |
285 * Build the summary for the nested classes. |
301 */ |
289 */ |
302 public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) { |
290 public void buildNestedClassesSummary(XMLNode node, Content memberSummaryTree) { |
303 MemberSummaryWriter writer = |
291 MemberSummaryWriter writer = |
304 memberSummaryWriters.get(VisibleMemberMap.Kind.INNER_CLASSES); |
292 memberSummaryWriters.get(VisibleMemberMap.Kind.INNER_CLASSES); |
305 VisibleMemberMap visibleMemberMap = |
293 VisibleMemberMap visibleMemberMap = |
306 visibleMemberMaps.get(VisibleMemberMap.Kind.INNER_CLASSES); |
294 getVisibleMemberMap(VisibleMemberMap.Kind.INNER_CLASSES); |
307 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
295 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
308 } |
296 } |
309 |
297 |
310 /** |
298 /** |
311 * Build the method summary. |
299 * Build the method summary. |
315 */ |
303 */ |
316 public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) { |
304 public void buildMethodsSummary(XMLNode node, Content memberSummaryTree) { |
317 MemberSummaryWriter writer = |
305 MemberSummaryWriter writer = |
318 memberSummaryWriters.get(VisibleMemberMap.Kind.METHODS); |
306 memberSummaryWriters.get(VisibleMemberMap.Kind.METHODS); |
319 VisibleMemberMap visibleMemberMap = |
307 VisibleMemberMap visibleMemberMap = |
320 visibleMemberMaps.get(VisibleMemberMap.Kind.METHODS); |
308 getVisibleMemberMap(VisibleMemberMap.Kind.METHODS); |
321 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
309 addSummary(writer, visibleMemberMap, true, memberSummaryTree); |
322 } |
310 } |
323 |
311 |
324 /** |
312 /** |
325 * Build the constructor summary. |
313 * Build the constructor summary. |
329 */ |
317 */ |
330 public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) { |
318 public void buildConstructorsSummary(XMLNode node, Content memberSummaryTree) { |
331 MemberSummaryWriter writer = |
319 MemberSummaryWriter writer = |
332 memberSummaryWriters.get(VisibleMemberMap.Kind.CONSTRUCTORS); |
320 memberSummaryWriters.get(VisibleMemberMap.Kind.CONSTRUCTORS); |
333 VisibleMemberMap visibleMemberMap = |
321 VisibleMemberMap visibleMemberMap = |
334 visibleMemberMaps.get(VisibleMemberMap.Kind.CONSTRUCTORS); |
322 getVisibleMemberMap(VisibleMemberMap.Kind.CONSTRUCTORS); |
335 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
323 addSummary(writer, visibleMemberMap, false, memberSummaryTree); |
336 } |
324 } |
337 |
325 |
338 /** |
326 /** |
339 * Build the member summary for the given members. |
327 * Build the member summary for the given members. |