author | pmuthuswamy |
Tue, 23 Apr 2019 18:28:48 +0530 | |
changeset 54596 | 86c1da00dd6a |
parent 54060 | 53a95878619f |
child 58477 | d148a7e7160c |
permissions | -rw-r--r-- |
10 | 1 |
/* |
54060
53a95878619f
8220202: Simplify/standardize method naming for HtmlTree
jjg
parents:
52644
diff
changeset
|
2 |
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved. |
10 | 3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 |
* |
|
5 |
* This code is free software; you can redistribute it and/or modify it |
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
|
5520 | 7 |
* published by the Free Software Foundation. Oracle designates this |
10 | 8 |
* particular file as subject to the "Classpath" exception as provided |
5520 | 9 |
* by Oracle in the LICENSE file that accompanied this code. |
10 | 10 |
* |
11 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 |
* version 2 for more details (a copy is included in the LICENSE file that |
|
15 |
* accompanied this code). |
|
16 |
* |
|
17 |
* You should have received a copy of the GNU General Public License version |
|
18 |
* 2 along with this work; if not, write to the Free Software Foundation, |
|
19 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 |
* |
|
5520 | 21 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
22 |
* or visit www.oracle.com if you need additional information or have any |
|
23 |
* questions. |
|
10 | 24 |
*/ |
25 |
||
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
26 |
package jdk.javadoc.internal.doclets.toolkit.builders; |
10 | 27 |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
28 |
import java.text.MessageFormat; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
29 |
import java.util.*; |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
30 |
import java.util.stream.Collectors; |
14258 | 31 |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
32 |
import javax.lang.model.element.Element; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
33 |
import javax.lang.model.element.ExecutableElement; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
34 |
import javax.lang.model.element.TypeElement; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
35 |
import javax.lang.model.element.VariableElement; |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
36 |
import javax.lang.model.util.ElementFilter; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
37 |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
38 |
import com.sun.source.doctree.DocCommentTree; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
39 |
import com.sun.source.doctree.DocTree; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
40 |
import com.sun.source.doctree.DocTree.Kind; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
41 |
import jdk.javadoc.internal.doclets.toolkit.AnnotationTypeWriter; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
42 |
import jdk.javadoc.internal.doclets.toolkit.ClassWriter; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
43 |
import jdk.javadoc.internal.doclets.toolkit.Content; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
44 |
import jdk.javadoc.internal.doclets.toolkit.MemberSummaryWriter; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
45 |
import jdk.javadoc.internal.doclets.toolkit.WriterFactory; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
46 |
import jdk.javadoc.internal.doclets.toolkit.util.CommentHelper; |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
47 |
import jdk.javadoc.internal.doclets.toolkit.util.DocFinder; |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
48 |
import jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
49 |
import jdk.javadoc.internal.doclets.toolkit.CommentUtils; |
10 | 50 |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
51 |
import static jdk.javadoc.internal.doclets.toolkit.util.VisibleMemberTable.Kind.*; |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
52 |
|
10 | 53 |
/** |
54 |
* Builds the member summary. |
|
45599 | 55 |
* There are two anonymous subtype variants of this builder, created |
56 |
* in the {@link #getInstance} methods. One is for general types; |
|
57 |
* the other is for annotation types. |
|
10 | 58 |
* |
14260
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
59 |
* <p><b>This is NOT part of any supported API. |
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
60 |
* If you write code that depends on this, you do so at your own risk. |
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
61 |
* This code and its internal interfaces are subject to change or |
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
62 |
* deletion without notice.</b> |
10 | 63 |
* |
64 |
* @author Jamie Ho |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
65 |
* @author Bhavesh Patel (Modified) |
10 | 66 |
*/ |
45599 | 67 |
public abstract class MemberSummaryBuilder extends AbstractMemberBuilder { |
10 | 68 |
|
45599 | 69 |
/* |
70 |
* Comparator used to sort the members in the summary. |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
71 |
*/ |
45599 | 72 |
private final Comparator<Element> comparator; |
10 | 73 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
74 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
75 |
* The member summary writers for the given class. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
76 |
*/ |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
77 |
private final EnumMap<VisibleMemberTable.Kind, MemberSummaryWriter> memberSummaryWriters; |
10 | 78 |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
79 |
final PropertyHelper pHelper; |
10 | 80 |
|
14542 | 81 |
/** |
82 |
* Construct a new MemberSummaryBuilder. |
|
83 |
* |
|
84 |
* @param context the build context. |
|
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
85 |
* @param typeElement the type element. |
14542 | 86 |
*/ |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
87 |
private MemberSummaryBuilder(Context context, TypeElement typeElement) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
88 |
super(context, typeElement); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
89 |
memberSummaryWriters = new EnumMap<>(VisibleMemberTable.Kind.class); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
90 |
comparator = utils.makeIndexUseComparator(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
91 |
pHelper = new PropertyHelper(this); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
92 |
} |
10 | 93 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
94 |
/** |
45599 | 95 |
* Construct a new MemberSummaryBuilder for a general type. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
96 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
97 |
* @param classWriter the writer for the class whose members are being |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
98 |
* summarized. |
14542 | 99 |
* @param context the build context. |
45599 | 100 |
* @return the instance |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
101 |
*/ |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
102 |
public static MemberSummaryBuilder getInstance( |
40587 | 103 |
ClassWriter classWriter, Context context) { |
45599 | 104 |
MemberSummaryBuilder builder = new MemberSummaryBuilder(context, classWriter.getTypeElement()) { |
105 |
@Override |
|
106 |
public void build(Content contentTree) { |
|
107 |
buildPropertiesSummary(contentTree); |
|
108 |
buildNestedClassesSummary(contentTree); |
|
109 |
buildEnumConstantsSummary(contentTree); |
|
110 |
buildFieldsSummary(contentTree); |
|
111 |
buildConstructorsSummary(contentTree); |
|
112 |
buildMethodsSummary(contentTree); |
|
113 |
} |
|
114 |
||
115 |
@Override |
|
116 |
public boolean hasMembersToDocument() { |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
117 |
return visibleMemberTable.hasVisibleMembers(); |
45599 | 118 |
} |
119 |
}; |
|
14542 | 120 |
WriterFactory wf = context.configuration.getWriterFactory(); |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
121 |
for (VisibleMemberTable.Kind kind : VisibleMemberTable.Kind.values()) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
122 |
MemberSummaryWriter msw = builder.getVisibleMemberTable().hasVisibleMembers(kind) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
123 |
? wf.getMemberSummaryWriter(classWriter, kind) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
124 |
: null; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
125 |
builder.memberSummaryWriters.put(kind, msw); |
14542 | 126 |
} |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
127 |
return builder; |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
128 |
} |
10 | 129 |
|
130 |
/** |
|
45599 | 131 |
* Construct a new MemberSummaryBuilder for an annotation type. |
10 | 132 |
* |
133 |
* @param annotationTypeWriter the writer for the class whose members are |
|
134 |
* being summarized. |
|
45599 | 135 |
* @param context the build context. |
136 |
* @return the instance |
|
10 | 137 |
*/ |
138 |
public static MemberSummaryBuilder getInstance( |
|
40587 | 139 |
AnnotationTypeWriter annotationTypeWriter, Context context) { |
14542 | 140 |
MemberSummaryBuilder builder = new MemberSummaryBuilder(context, |
45599 | 141 |
annotationTypeWriter.getAnnotationTypeElement()) { |
142 |
@Override |
|
143 |
public void build(Content contentTree) { |
|
144 |
buildAnnotationTypeFieldsSummary(contentTree); |
|
145 |
buildAnnotationTypeRequiredMemberSummary(contentTree); |
|
146 |
buildAnnotationTypeOptionalMemberSummary(contentTree); |
|
147 |
} |
|
148 |
||
149 |
@Override |
|
150 |
public boolean hasMembersToDocument() { |
|
151 |
return !utils.getAnnotationMembers(typeElement).isEmpty(); |
|
152 |
} |
|
153 |
}; |
|
14542 | 154 |
WriterFactory wf = context.configuration.getWriterFactory(); |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
155 |
for (VisibleMemberTable.Kind kind : VisibleMemberTable.Kind.values()) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
156 |
MemberSummaryWriter msw = builder.getVisibleMemberTable().hasVisibleMembers(kind) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
157 |
? wf.getMemberSummaryWriter(annotationTypeWriter, kind) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
158 |
: null; |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
159 |
builder.memberSummaryWriters.put(kind, msw); |
10 | 160 |
} |
14542 | 161 |
return builder; |
10 | 162 |
} |
163 |
||
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
164 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
165 |
* Return the specified visible member map. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
166 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
167 |
* @return the specified visible member map. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
168 |
* @throws ArrayIndexOutOfBoundsException when the type is invalid. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
169 |
* @see VisibleMemberTable |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
170 |
*/ |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
171 |
public VisibleMemberTable getVisibleMemberTable() { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
172 |
return visibleMemberTable; |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
173 |
} |
10 | 174 |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
175 |
/**. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
176 |
* Return the specified member summary writer. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
177 |
* |
44460 | 178 |
* @param kind the kind of member summary writer to return. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
179 |
* @return the specified member summary writer. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
180 |
* @throws ArrayIndexOutOfBoundsException when the type is invalid. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
181 |
* @see VisibleMemberTable |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
182 |
*/ |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
183 |
public MemberSummaryWriter getMemberSummaryWriter(VisibleMemberTable.Kind kind) { |
44460 | 184 |
return memberSummaryWriters.get(kind); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
185 |
} |
10 | 186 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
187 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
188 |
* Returns a list of methods that will be documented for the given class. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
189 |
* This information can be used for doclet specific documentation |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
190 |
* generation. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
191 |
* |
44460 | 192 |
* @param kind the kind of elements to return. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
193 |
* @return a list of methods that will be documented. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
194 |
* @see VisibleMemberTable |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
195 |
*/ |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
196 |
public SortedSet<Element> members(VisibleMemberTable.Kind kind) { |
42000
8b7412f7eecd
8167967: javadoc should identify the ordinal value of enum constants
ksrini
parents:
41452
diff
changeset
|
197 |
TreeSet<Element> out = new TreeSet<>(comparator); |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
198 |
out.addAll(getVisibleMembers(kind)); |
42000
8b7412f7eecd
8167967: javadoc should identify the ordinal value of enum constants
ksrini
parents:
41452
diff
changeset
|
199 |
return out; |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
200 |
} |
10 | 201 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
202 |
/** |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
203 |
* Returns true if there are members of the given kind, false otherwise. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
204 |
* @param kind |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
205 |
* @return true if there are members of the given kind, false otherwise |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
206 |
*/ |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
207 |
public boolean hasMembers(VisibleMemberTable.Kind kind) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
208 |
return !getVisibleMembers(kind).isEmpty(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
209 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
210 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
211 |
/** |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
212 |
* Build the summary for the enum constants. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
213 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
214 |
* @param memberSummaryTree the content tree to which the documentation will be added |
10 | 215 |
*/ |
45599 | 216 |
protected void buildEnumConstantsSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
217 |
MemberSummaryWriter writer = memberSummaryWriters.get(ENUM_CONSTANTS); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
218 |
addSummary(writer, ENUM_CONSTANTS, false, memberSummaryTree); |
10 | 219 |
} |
220 |
||
221 |
/** |
|
20237
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
222 |
* Build the summary for fields. |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
223 |
* |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
224 |
* @param memberSummaryTree the content tree to which the documentation will be added |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
225 |
*/ |
45599 | 226 |
protected void buildAnnotationTypeFieldsSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
227 |
MemberSummaryWriter writer = memberSummaryWriters.get(ANNOTATION_TYPE_FIELDS); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
228 |
addSummary(writer, ANNOTATION_TYPE_FIELDS, false, memberSummaryTree); |
20237
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
229 |
} |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
230 |
|
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
18659
diff
changeset
|
231 |
/** |
10 | 232 |
* Build the summary for the optional members. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
233 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
234 |
* @param memberSummaryTree the content tree to which the documentation will be added |
10 | 235 |
*/ |
45599 | 236 |
protected void buildAnnotationTypeOptionalMemberSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
237 |
MemberSummaryWriter writer = memberSummaryWriters.get(ANNOTATION_TYPE_MEMBER_OPTIONAL); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
238 |
addSummary(writer, ANNOTATION_TYPE_MEMBER_OPTIONAL, false, memberSummaryTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
239 |
} |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
240 |
|
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
241 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
242 |
* Build the summary for the optional members. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
243 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
244 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
245 |
*/ |
45599 | 246 |
protected void buildAnnotationTypeRequiredMemberSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
247 |
MemberSummaryWriter writer = memberSummaryWriters.get(ANNOTATION_TYPE_MEMBER_REQUIRED); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
248 |
addSummary(writer, ANNOTATION_TYPE_MEMBER_REQUIRED, false, memberSummaryTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
249 |
} |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
250 |
|
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
251 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
252 |
* Build the summary for the fields. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
253 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
254 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
255 |
*/ |
45599 | 256 |
protected void buildFieldsSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
257 |
MemberSummaryWriter writer = memberSummaryWriters.get(FIELDS); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
258 |
addSummary(writer, FIELDS, true, memberSummaryTree); |
10 | 259 |
} |
260 |
||
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
261 |
/** |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
262 |
* Build the summary for the fields. |
45599 | 263 |
* |
264 |
* @param memberSummaryTree the content tree to which the documentation will be added |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
265 |
*/ |
45599 | 266 |
protected void buildPropertiesSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
267 |
MemberSummaryWriter writer = memberSummaryWriters.get(PROPERTIES); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
268 |
addSummary(writer, PROPERTIES, true, memberSummaryTree); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
269 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
270 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
271 |
/** |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
272 |
* Build the summary for the nested classes. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
273 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
274 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
275 |
*/ |
45599 | 276 |
protected void buildNestedClassesSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
277 |
MemberSummaryWriter writer = memberSummaryWriters.get(INNER_CLASSES); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
278 |
addSummary(writer, INNER_CLASSES, true, memberSummaryTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
279 |
} |
10 | 280 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
281 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
282 |
* Build the method summary. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
283 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
284 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
285 |
*/ |
45599 | 286 |
protected void buildMethodsSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
287 |
MemberSummaryWriter writer = memberSummaryWriters.get(METHODS); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
288 |
addSummary(writer, METHODS, true, memberSummaryTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
289 |
} |
10 | 290 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
291 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
292 |
* Build the constructor summary. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
293 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
294 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
295 |
*/ |
45599 | 296 |
protected void buildConstructorsSummary(Content memberSummaryTree) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
297 |
MemberSummaryWriter writer = memberSummaryWriters.get(CONSTRUCTORS); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
298 |
addSummary(writer, CONSTRUCTORS, false, memberSummaryTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
299 |
} |
10 | 300 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
301 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
302 |
* Build the member summary for the given members. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
303 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
304 |
* @param writer the summary writer to write the output. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
305 |
* @param kind the kind of members to summarize. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
306 |
* @param summaryTreeList list of content trees to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
307 |
*/ |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
308 |
private void buildSummary(MemberSummaryWriter writer, |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
309 |
VisibleMemberTable.Kind kind, LinkedList<Content> summaryTreeList) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
310 |
SortedSet<? extends Element> members = asSortedSet(getVisibleMembers(kind)); |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
311 |
if (!members.isEmpty()) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
312 |
for (Element member : members) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
313 |
final Element property = pHelper.getPropertyElement(member); |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
314 |
if (property != null) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
315 |
processProperty(member, property); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
316 |
} |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
317 |
List<? extends DocTree> firstSentenceTags = utils.getFirstSentenceTrees(member); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
318 |
if (utils.isExecutableElement(member) && firstSentenceTags.isEmpty()) { |
10 | 319 |
//Inherit comments from overriden or implemented method if |
320 |
//necessary. |
|
321 |
DocFinder.Output inheritedDoc = |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
322 |
DocFinder.search(configuration, |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
323 |
new DocFinder.Input(utils, (ExecutableElement) member)); |
14549
0599d73bf1da
8002304: Group methods by types in methods summary section
bpatel
parents:
14542
diff
changeset
|
324 |
if (inheritedDoc.holder != null |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
325 |
&& !utils.getFirstSentenceTrees(inheritedDoc.holder).isEmpty()) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
326 |
// let the comment helper know of the overridden element |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
327 |
CommentHelper ch = utils.getCommentHelper(member); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
328 |
ch.setOverrideElement(inheritedDoc.holder); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
329 |
firstSentenceTags = utils.getFirstSentenceTrees(inheritedDoc.holder); |
10 | 330 |
} |
331 |
} |
|
47846 | 332 |
writer.addMemberSummary(typeElement, member, firstSentenceTags); |
10 | 333 |
} |
47846 | 334 |
summaryTreeList.add(writer.getSummaryTableTree(typeElement)); |
10 | 335 |
} |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
336 |
} |
10 | 337 |
|
338 |
/** |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
339 |
* Process the property method, property setter and/or property getter |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
340 |
* comment text so that it contains the documentation from |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
341 |
* the property field. The method adds the leading sentence, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
342 |
* copied documentation including the defaultValue tag and |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
343 |
* the see tags if the appropriate property getter and setter are |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
344 |
* available. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
345 |
* |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
346 |
* @param member the member which is to be augmented. |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
347 |
* @param property the original property documentation. |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
348 |
*/ |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
349 |
private void processProperty(Element member, |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
350 |
Element property) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
351 |
CommentUtils cmtutils = configuration.cmtUtils; |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
352 |
final boolean isSetter = isSetter(member); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
353 |
final boolean isGetter = isGetter(member); |
41452 | 354 |
|
355 |
List<DocTree> fullBody = new ArrayList<>(); |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
356 |
List<DocTree> blockTags = new ArrayList<>(); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
357 |
if (isGetter || isSetter) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
358 |
//add "[GS]ets the value of the property PROPERTY_NAME." |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
359 |
if (isSetter) { |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
360 |
String text = MessageFormat.format( |
52644
43efb4ca6d6c
8214139: Remove wrapper methods from {Base,Html}Configuration
jjg
parents:
49879
diff
changeset
|
361 |
resources.getText("doclet.PropertySetterWithName"), |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
362 |
utils.propertyName((ExecutableElement)member)); |
41452 | 363 |
fullBody.addAll(cmtutils.makeFirstSentenceTree(text)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
364 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
365 |
if (isGetter) { |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
366 |
String text = MessageFormat.format( |
52644
43efb4ca6d6c
8214139: Remove wrapper methods from {Base,Html}Configuration
jjg
parents:
49879
diff
changeset
|
367 |
resources.getText("doclet.PropertyGetterWithName"), |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
368 |
utils.propertyName((ExecutableElement) member)); |
41452 | 369 |
fullBody.addAll(cmtutils.makeFirstSentenceTree(text)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
370 |
} |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
371 |
List<? extends DocTree> propertyTags = utils.getBlockTags(property, "propertyDescription"); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
372 |
if (propertyTags.isEmpty()) { |
41452 | 373 |
List<? extends DocTree> comment = utils.getFullBody(property); |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
374 |
blockTags.addAll(cmtutils.makePropertyDescriptionTree(comment)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
375 |
} |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
376 |
} else { |
41452 | 377 |
fullBody.addAll(utils.getFullBody(property)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
378 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
379 |
|
18659
5fe5650da7f9
8015720: since tag isn't copied while generating JavaFX documentation
janvalenta
parents:
16319
diff
changeset
|
380 |
// copy certain tags |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
381 |
List<? extends DocTree> tags = utils.getBlockTags(property, Kind.SINCE); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
382 |
blockTags.addAll(tags); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
383 |
|
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
384 |
List<? extends DocTree> bTags = utils.getBlockTags(property, Kind.UNKNOWN_BLOCK_TAG); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
385 |
CommentHelper ch = utils.getCommentHelper(property); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
386 |
for (DocTree dt : bTags) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
387 |
String tagName = ch.getTagName(dt); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
388 |
if ( "defaultValue".equals(tagName)) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
389 |
blockTags.add(dt); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
390 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
391 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
392 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
393 |
//add @see tags |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
394 |
if (!isGetter && !isSetter) { |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
395 |
ExecutableElement getter = pHelper.getGetterForProperty((ExecutableElement)member); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
396 |
ExecutableElement setter = pHelper.getSetterForProperty((ExecutableElement)member); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
397 |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
398 |
if (null != getter) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
399 |
StringBuilder sb = new StringBuilder("#"); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
400 |
sb.append(utils.getSimpleName(getter)).append("()"); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
401 |
blockTags.add(cmtutils.makeSeeTree(sb.toString(), getter)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
402 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
403 |
|
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
404 |
if (null != setter) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
405 |
VariableElement param = setter.getParameters().get(0); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
406 |
StringBuilder sb = new StringBuilder("#"); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
407 |
sb.append(utils.getSimpleName(setter)); |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
408 |
if (!utils.isTypeVariable(param.asType())) { |
44385
f777a2822087
8176231: javadoc -javafx creates bad link when Property is an array of objects
jjg
parents:
42827
diff
changeset
|
409 |
sb.append("(").append(utils.getTypeSignature(param.asType(), false, true)).append(")"); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
410 |
} |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
411 |
blockTags.add(cmtutils.makeSeeTree(sb.toString(), setter)); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
412 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
413 |
} |
41452 | 414 |
cmtutils.setDocCommentTree(member, fullBody, blockTags, utils); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
415 |
} |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
416 |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
417 |
/** |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
418 |
* Test whether the method is a getter. |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
419 |
* @param element property method documentation. Needs to be either property |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
420 |
* method, property getter, or property setter. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
421 |
* @return true if the given documentation belongs to a getter. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
422 |
*/ |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
423 |
private boolean isGetter(Element element) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
424 |
final String pedName = element.getSimpleName().toString(); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
425 |
return pedName.startsWith("get") || pedName.startsWith("is"); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
426 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
427 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
428 |
/** |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
429 |
* Test whether the method is a setter. |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
430 |
* @param element property method documentation. Needs to be either property |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
431 |
* method, property getter, or property setter. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
432 |
* @return true if the given documentation belongs to a setter. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
433 |
*/ |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
434 |
private boolean isSetter(Element element) { |
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
435 |
return element.getSimpleName().toString().startsWith("set"); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
436 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
437 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14549
diff
changeset
|
438 |
/** |
10 | 439 |
* Build the inherited member summary for the given methods. |
440 |
* |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
441 |
* @param writer the writer for this member summary. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
442 |
* @param kind the kind of members to document. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
443 |
* @param summaryTreeList list of content trees to which the documentation will be added |
10 | 444 |
*/ |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
445 |
private void buildInheritedSummary(MemberSummaryWriter writer, |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
446 |
VisibleMemberTable.Kind kind, LinkedList<Content> summaryTreeList) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
447 |
VisibleMemberTable visibleMemberTable = getVisibleMemberTable(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
448 |
SortedSet<? extends Element> inheritedMembersFromMap = asSortedSet(visibleMemberTable.getAllVisibleMembers(kind)); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
449 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
450 |
for (TypeElement inheritedClass : visibleMemberTable.getVisibleTypeElements()) { |
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
451 |
if (!(utils.isPublic(inheritedClass) || utils.isLinkable(inheritedClass))) { |
10 | 452 |
continue; |
453 |
} |
|
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
454 |
if (inheritedClass == typeElement) { |
10 | 455 |
continue; |
456 |
} |
|
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
457 |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
458 |
List<Element> members = inheritedMembersFromMap.stream() |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
459 |
.filter(e -> utils.getEnclosingTypeElement(e) == inheritedClass) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
460 |
.collect(Collectors.toList()); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
461 |
if (!members.isEmpty()) { |
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
462 |
SortedSet<Element> inheritedMembers = new TreeSet<>(comparator); |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
463 |
inheritedMembers.addAll(members); |
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
464 |
Content inheritedTree = writer.getInheritedSummaryHeader(inheritedClass); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
465 |
Content linksTree = writer.getInheritedSummaryLinksTree(); |
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
466 |
addSummaryFootNote(inheritedClass, inheritedMembers, linksTree, writer); |
54060
53a95878619f
8220202: Simplify/standardize method naming for HtmlTree
jjg
parents:
52644
diff
changeset
|
467 |
inheritedTree.add(linksTree); |
54596
86c1da00dd6a
8219998: Eliminate inherently singleton lists
pmuthuswamy
parents:
54060
diff
changeset
|
468 |
summaryTreeList.add(inheritedTree); |
10 | 469 |
} |
470 |
} |
|
471 |
} |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
472 |
|
47395
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
473 |
private void addSummaryFootNote(TypeElement inheritedClass, SortedSet<Element> inheritedMembers, |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
474 |
Content linksTree, MemberSummaryWriter writer) { |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
475 |
for (Element member : inheritedMembers) { |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
476 |
TypeElement t = (utils.isPackagePrivate(inheritedClass) && !utils.isLinkable(inheritedClass)) |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
477 |
? typeElement : inheritedClass; |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
478 |
writer.addInheritedMemberSummary(t, member, inheritedMembers.first() == member, |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
479 |
inheritedMembers.last() == member, linksTree); |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
480 |
} |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
481 |
} |
2ea4edfdef8e
8157000: Do not generate javadoc for overridden method with no spec change
ksrini
parents:
47216
diff
changeset
|
482 |
|
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
483 |
/** |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
484 |
* Add the summary for the documentation. |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
485 |
* |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
486 |
* @param writer the writer for this member summary. |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
487 |
* @param kind the kind of members to document. |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
488 |
* @param showInheritedSummary true if inherited summary should be documented |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
489 |
* @param memberSummaryTree the content tree to which the documentation will be added |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
490 |
*/ |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
491 |
private void addSummary(MemberSummaryWriter writer, |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
492 |
VisibleMemberTable.Kind kind, boolean showInheritedSummary, |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
493 |
Content memberSummaryTree) { |
22163 | 494 |
LinkedList<Content> summaryTreeList = new LinkedList<>(); |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
495 |
buildSummary(writer, kind, summaryTreeList); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
496 |
if (showInheritedSummary) |
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
497 |
buildInheritedSummary(writer, kind, summaryTreeList); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
498 |
if (!summaryTreeList.isEmpty()) { |
35426
374342e56a56
8035473: [javadoc] Revamp the existing Doclet APIs
ksrini
parents:
29957
diff
changeset
|
499 |
Content memberTree = writer.getMemberSummaryHeader(typeElement, memberSummaryTree); |
54060
53a95878619f
8220202: Simplify/standardize method naming for HtmlTree
jjg
parents:
52644
diff
changeset
|
500 |
summaryTreeList.stream().forEach(memberTree::add); |
29957
7740f9657f56
8072945: Javadoc should generate valid and compliant HTML5 output
bpatel
parents:
25874
diff
changeset
|
501 |
writer.addMemberTree(memberSummaryTree, memberTree); |
7614
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
502 |
} |
cfadc977ca75
6851834: Javadoc doclet needs a structured approach to generate the output HTML.
bpatel
parents:
5855
diff
changeset
|
503 |
} |
45599 | 504 |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
505 |
private SortedSet<? extends Element> asSortedSet(Collection<? extends Element> members) { |
45599 | 506 |
SortedSet<Element> out = new TreeSet<>(comparator); |
507 |
out.addAll(members); |
|
508 |
return out; |
|
509 |
} |
|
49879
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
510 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
511 |
static class PropertyHelper { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
512 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
513 |
private final Map<Element, Element> classPropertiesMap = new HashMap<>(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
514 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
515 |
private final MemberSummaryBuilder builder; |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
516 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
517 |
PropertyHelper(MemberSummaryBuilder builder) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
518 |
this.builder = builder; |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
519 |
computeProperties(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
520 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
521 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
522 |
private void computeProperties() { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
523 |
VisibleMemberTable vmt = builder.getVisibleMemberTable(); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
524 |
List<ExecutableElement> props = ElementFilter.methodsIn(vmt.getVisibleMembers(PROPERTIES)); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
525 |
for (ExecutableElement propertyMethod : props) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
526 |
ExecutableElement getter = vmt.getPropertyGetter(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
527 |
ExecutableElement setter = vmt.getPropertySetter(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
528 |
VariableElement field = vmt.getPropertyField(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
529 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
530 |
addToPropertiesMap(propertyMethod, field, getter, setter); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
531 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
532 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
533 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
534 |
private void addToPropertiesMap(ExecutableElement propertyMethod, |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
535 |
VariableElement field, |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
536 |
ExecutableElement getter, |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
537 |
ExecutableElement setter) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
538 |
if (field == null || builder.utils.getDocCommentTree(field) == null) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
539 |
addToPropertiesMap(propertyMethod, propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
540 |
addToPropertiesMap(getter, propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
541 |
addToPropertiesMap(setter, propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
542 |
} else { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
543 |
addToPropertiesMap(propertyMethod, field); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
544 |
addToPropertiesMap(getter, field); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
545 |
addToPropertiesMap(setter, field); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
546 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
547 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
548 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
549 |
private void addToPropertiesMap(Element propertyMethod, |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
550 |
Element commentSource) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
551 |
if (null == propertyMethod || null == commentSource) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
552 |
return; |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
553 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
554 |
DocCommentTree docTree = builder.utils.getDocCommentTree(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
555 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
556 |
/* The second condition is required for the property buckets. In |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
557 |
* this case the comment is at the property method (not at the field) |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
558 |
* and it needs to be listed in the map. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
559 |
*/ |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
560 |
if ((docTree == null) || propertyMethod.equals(commentSource)) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
561 |
classPropertiesMap.put(propertyMethod, commentSource); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
562 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
563 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
564 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
565 |
/** |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
566 |
* Returns the property field documentation belonging to the given member. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
567 |
* @param element the member for which the property documentation is needed. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
568 |
* @return the property field documentation, null if there is none. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
569 |
*/ |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
570 |
public Element getPropertyElement(Element element) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
571 |
return classPropertiesMap.get(element); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
572 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
573 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
574 |
/** |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
575 |
* Returns the getter documentation belonging to the given property method. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
576 |
* @param propertyMethod the method for which the getter is needed. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
577 |
* @return the getter documentation, null if there is none. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
578 |
*/ |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
579 |
public ExecutableElement getGetterForProperty(ExecutableElement propertyMethod) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
580 |
return builder.getVisibleMemberTable().getPropertyGetter(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
581 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
582 |
|
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
583 |
/** |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
584 |
* Returns the setter documentation belonging to the given property method. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
585 |
* @param propertyMethod the method for which the setter is needed. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
586 |
* @return the setter documentation, null if there is none. |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
587 |
*/ |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
588 |
public ExecutableElement getSetterForProperty(ExecutableElement propertyMethod) { |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
589 |
return builder.getVisibleMemberTable().getPropertySetter(propertyMethod); |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
590 |
} |
601277b1d582
8025091: VisibleMemberMap.java possible performance improvements
ksrini
parents:
48257
diff
changeset
|
591 |
} |
10 | 592 |
} |