author | briangoetz |
Wed, 18 Dec 2013 10:29:25 -0500 | |
changeset 22159 | 682da512ec17 |
parent 22153 | f9f06fcca59d |
child 22163 | 3651128c74eb |
permissions | -rw-r--r-- |
10 | 1 |
/* |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
2 |
* Copyright (c) 1999, 2013, 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 |
||
26 |
package com.sun.tools.doclets.internal.toolkit.util; |
|
27 |
||
14258 | 28 |
import java.util.*; |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
29 |
import java.util.regex.Pattern; |
14258 | 30 |
|
10 | 31 |
import com.sun.javadoc.*; |
32 |
import com.sun.tools.doclets.internal.toolkit.*; |
|
33 |
||
34 |
/** |
|
35 |
* A data structure that encapsulates the visible members of a particular |
|
36 |
* type for a given class tree. To use this data structor, you must specify |
|
37 |
* the type of member you are interested in (nested class, field, constructor |
|
38 |
* or method) and the leaf of the class tree. The data structure will map |
|
39 |
* all visible members in the leaf and classes above the leaf in the tree. |
|
40 |
* |
|
14260
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
41 |
* <p><b>This is NOT part of any supported API. |
727a84636f12
8000665: fix "internal API" comments on javadoc files
jjg
parents:
14259
diff
changeset
|
42 |
* 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
|
43 |
* 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
|
44 |
* deletion without notice.</b> |
10 | 45 |
* |
46 |
* @author Atul M Dambalkar |
|
47 |
* @author Jamie Ho (rewrite) |
|
48 |
*/ |
|
49 |
public class VisibleMemberMap { |
|
50 |
||
51 |
private boolean noVisibleMembers = true; |
|
52 |
||
53 |
public static final int INNERCLASSES = 0; |
|
54 |
public static final int ENUM_CONSTANTS = 1; |
|
55 |
public static final int FIELDS = 2; |
|
56 |
public static final int CONSTRUCTORS = 3; |
|
57 |
public static final int METHODS = 4; |
|
20237
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
58 |
public static final int ANNOTATION_TYPE_FIELDS = 5; |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
59 |
public static final int ANNOTATION_TYPE_MEMBER_OPTIONAL = 6; |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
60 |
public static final int ANNOTATION_TYPE_MEMBER_REQUIRED = 7; |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
61 |
public static final int PROPERTIES = 8; |
10 | 62 |
|
63 |
/** |
|
64 |
* The total number of member types is {@value}. |
|
65 |
*/ |
|
20237
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
66 |
public static final int NUM_MEMBER_TYPES = 9; |
10 | 67 |
|
68 |
public static final String STARTLEVEL = "start"; |
|
69 |
||
70 |
/** |
|
71 |
* List of ClassDoc objects for which ClassMembers objects are built. |
|
72 |
*/ |
|
868 | 73 |
private final List<ClassDoc> visibleClasses = new ArrayList<ClassDoc>(); |
10 | 74 |
|
75 |
/** |
|
76 |
* Map for each member name on to a map which contains members with same |
|
77 |
* name-signature. The mapped map will contain mapping for each MemberDoc |
|
78 |
* onto it's respecive level string. |
|
79 |
*/ |
|
868 | 80 |
private final Map<Object,Map<ProgramElementDoc,String>> memberNameMap = new HashMap<Object,Map<ProgramElementDoc,String>>(); |
10 | 81 |
|
82 |
/** |
|
83 |
* Map of class and it's ClassMembers object. |
|
84 |
*/ |
|
868 | 85 |
private final Map<ClassDoc,ClassMembers> classMap = new HashMap<ClassDoc,ClassMembers>(); |
10 | 86 |
|
87 |
/** |
|
88 |
* Type whose visible members are requested. This is the leaf of |
|
89 |
* the class tree being mapped. |
|
90 |
*/ |
|
91 |
private final ClassDoc classdoc; |
|
92 |
||
93 |
/** |
|
94 |
* Member kind: InnerClasses/Fields/Methods? |
|
95 |
*/ |
|
96 |
private final int kind; |
|
97 |
||
98 |
/** |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
99 |
* The configuration this VisibleMemberMap was created with. |
10 | 100 |
*/ |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
101 |
private final Configuration configuration; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
102 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
103 |
private static final Map<ClassDoc, ProgramElementDoc[]> propertiesCache = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
104 |
new HashMap<ClassDoc, ProgramElementDoc[]>(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
105 |
private static final Map<ProgramElementDoc, ProgramElementDoc> classPropertiesMap = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
106 |
new HashMap<ProgramElementDoc, ProgramElementDoc>(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
107 |
private static final Map<ProgramElementDoc, GetterSetter> getterSetterMap = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
108 |
new HashMap<ProgramElementDoc, GetterSetter>(); |
10 | 109 |
|
110 |
/** |
|
111 |
* Construct a VisibleMemberMap of the given type for the given |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
112 |
* class. |
10 | 113 |
* |
114 |
* @param classdoc the class whose members are being mapped. |
|
115 |
* @param kind the kind of member that is being mapped. |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
116 |
* @param configuration the configuration to use to construct this |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
117 |
* VisibleMemberMap. If the field configuration.nodeprecated is true the |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
118 |
* deprecated members are excluded from the map. If the field |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
119 |
* configuration.javafx is true the JavaFX features are used. |
10 | 120 |
*/ |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
121 |
public VisibleMemberMap(ClassDoc classdoc, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
122 |
int kind, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
123 |
Configuration configuration) { |
10 | 124 |
this.classdoc = classdoc; |
125 |
this.kind = kind; |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
126 |
this.configuration = configuration; |
10 | 127 |
new ClassMembers(classdoc, STARTLEVEL).build(); |
128 |
} |
|
129 |
||
130 |
/** |
|
131 |
* Return the list of visible classes in this map. |
|
132 |
* |
|
133 |
* @return the list of visible classes in this map. |
|
134 |
*/ |
|
1789
7ac8c0815000
6765045: Remove rawtypes warnings from langtools
mcimadamore
parents:
1264
diff
changeset
|
135 |
public List<ClassDoc> getVisibleClassesList() { |
10 | 136 |
sort(visibleClasses); |
137 |
return visibleClasses; |
|
138 |
} |
|
139 |
||
140 |
/** |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
141 |
* Returns the property field documentation belonging to the given member. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
142 |
* @param ped the member for which the property documentation is needed. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
143 |
* @return the property field documentation, null if there is none. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
144 |
*/ |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
145 |
public ProgramElementDoc getPropertyMemberDoc(ProgramElementDoc ped) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
146 |
return classPropertiesMap.get(ped); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
147 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
148 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
149 |
/** |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
150 |
* Returns the getter documentation belonging to the given property method. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
151 |
* @param propertyMethod the method for which the getter is needed. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
152 |
* @return the getter documentation, null if there is none. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
153 |
*/ |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
154 |
public ProgramElementDoc getGetterForProperty(ProgramElementDoc propertyMethod) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
155 |
return getterSetterMap.get(propertyMethod).getGetter(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
156 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
157 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
158 |
/** |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
159 |
* Returns the setter documentation belonging to the given property method. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
160 |
* @param propertyMethod the method for which the setter is needed. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
161 |
* @return the setter documentation, null if there is none. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
162 |
*/ |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
163 |
public ProgramElementDoc getSetterForProperty(ProgramElementDoc propertyMethod) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
164 |
return getterSetterMap.get(propertyMethod).getSetter(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
165 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
166 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
167 |
/** |
10 | 168 |
* Return the package private members inherited by the class. Only return |
169 |
* if parent is package private and not documented. |
|
170 |
* |
|
14259 | 171 |
* @param configuration the current configuration of the doclet. |
10 | 172 |
* @return the package private members inherited by the class. |
173 |
*/ |
|
868 | 174 |
private List<ProgramElementDoc> getInheritedPackagePrivateMethods(Configuration configuration) { |
175 |
List<ProgramElementDoc> results = new ArrayList<ProgramElementDoc>(); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
176 |
for (ClassDoc currentClass : visibleClasses) { |
10 | 177 |
if (currentClass != classdoc && |
178 |
currentClass.isPackagePrivate() && |
|
179 |
!Util.isLinkable(currentClass, configuration)) { |
|
180 |
// Document these members in the child class because |
|
181 |
// the parent is inaccessible. |
|
182 |
results.addAll(getMembersFor(currentClass)); |
|
183 |
} |
|
184 |
} |
|
185 |
return results; |
|
186 |
} |
|
187 |
||
188 |
/** |
|
189 |
* Return the visible members of the class being mapped. Also append at the |
|
190 |
* end of the list members that are inherited by inaccessible parents. We |
|
191 |
* document these members in the child because the parent is not documented. |
|
192 |
* |
|
14259 | 193 |
* @param configuration the current configuration of the doclet. |
10 | 194 |
*/ |
868 | 195 |
public List<ProgramElementDoc> getLeafClassMembers(Configuration configuration) { |
196 |
List<ProgramElementDoc> result = getMembersFor(classdoc); |
|
10 | 197 |
result.addAll(getInheritedPackagePrivateMethods(configuration)); |
198 |
return result; |
|
199 |
} |
|
200 |
||
201 |
/** |
|
202 |
* Retrn the list of members for the given class. |
|
203 |
* |
|
204 |
* @param cd the class to retrieve the list of visible members for. |
|
205 |
* |
|
206 |
* @return the list of members for the given class. |
|
207 |
*/ |
|
868 | 208 |
public List<ProgramElementDoc> getMembersFor(ClassDoc cd) { |
209 |
ClassMembers clmembers = classMap.get(cd); |
|
10 | 210 |
if (clmembers == null) { |
868 | 211 |
return new ArrayList<ProgramElementDoc>(); |
10 | 212 |
} |
213 |
return clmembers.getMembers(); |
|
214 |
} |
|
215 |
||
216 |
/** |
|
217 |
* Sort the given mixed list of classes and interfaces to a list of |
|
218 |
* classes followed by interfaces traversed. Don't sort alphabetically. |
|
219 |
*/ |
|
868 | 220 |
private void sort(List<ClassDoc> list) { |
221 |
List<ClassDoc> classes = new ArrayList<ClassDoc>(); |
|
222 |
List<ClassDoc> interfaces = new ArrayList<ClassDoc>(); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
223 |
for (ClassDoc cd : list) { |
10 | 224 |
if (cd.isClass()) { |
225 |
classes.add(cd); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
226 |
} |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
227 |
else { |
10 | 228 |
interfaces.add(cd); |
229 |
} |
|
230 |
} |
|
231 |
list.clear(); |
|
232 |
list.addAll(classes); |
|
233 |
list.addAll(interfaces); |
|
234 |
} |
|
235 |
||
868 | 236 |
private void fillMemberLevelMap(List<ProgramElementDoc> list, String level) { |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
237 |
for (ProgramElementDoc element : list) { |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
238 |
Object key = getMemberKey(element); |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
239 |
Map<ProgramElementDoc, String> memberLevelMap = memberNameMap.get(key); |
10 | 240 |
if (memberLevelMap == null) { |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
241 |
memberLevelMap = new HashMap<ProgramElementDoc, String>(); |
10 | 242 |
memberNameMap.put(key, memberLevelMap); |
243 |
} |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
244 |
memberLevelMap.put(element, level); |
10 | 245 |
} |
246 |
} |
|
247 |
||
1789
7ac8c0815000
6765045: Remove rawtypes warnings from langtools
mcimadamore
parents:
1264
diff
changeset
|
248 |
private void purgeMemberLevelMap(List<ProgramElementDoc> list, String level) { |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
249 |
for (ProgramElementDoc element : list) { |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
250 |
Object key = getMemberKey(element); |
1789
7ac8c0815000
6765045: Remove rawtypes warnings from langtools
mcimadamore
parents:
1264
diff
changeset
|
251 |
Map<ProgramElementDoc, String> memberLevelMap = memberNameMap.get(key); |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
252 |
if (level.equals(memberLevelMap.get(element))) |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
253 |
memberLevelMap.remove(element); |
10 | 254 |
} |
255 |
} |
|
256 |
||
257 |
/** |
|
258 |
* Represents a class member. We should be able to just use a |
|
259 |
* ProgramElementDoc instead of this class, but that doesn't take |
|
260 |
* type variables in consideration when comparing. |
|
261 |
*/ |
|
262 |
private class ClassMember { |
|
868 | 263 |
private Set<ProgramElementDoc> members; |
10 | 264 |
|
265 |
public ClassMember(ProgramElementDoc programElementDoc) { |
|
868 | 266 |
members = new HashSet<ProgramElementDoc>(); |
10 | 267 |
members.add(programElementDoc); |
268 |
} |
|
269 |
||
270 |
public void addMember(ProgramElementDoc programElementDoc) { |
|
271 |
members.add(programElementDoc); |
|
272 |
} |
|
273 |
||
274 |
public boolean isEqual(MethodDoc member) { |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
275 |
for (ProgramElementDoc element : members) { |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
276 |
if (Util.executableMembersEqual(member, (MethodDoc) element)) { |
10 | 277 |
members.add(member); |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
278 |
return true; |
10 | 279 |
} |
280 |
} |
|
281 |
return false; |
|
282 |
} |
|
283 |
} |
|
284 |
||
285 |
/** |
|
286 |
* A data structure that represents the class members for |
|
287 |
* a visible class. |
|
288 |
*/ |
|
289 |
private class ClassMembers { |
|
290 |
||
291 |
/** |
|
292 |
* The mapping class, whose inherited members are put in the |
|
293 |
* {@link #members} list. |
|
294 |
*/ |
|
295 |
private ClassDoc mappingClass; |
|
296 |
||
297 |
/** |
|
298 |
* List of inherited members from the mapping class. |
|
299 |
*/ |
|
868 | 300 |
private List<ProgramElementDoc> members = new ArrayList<ProgramElementDoc>(); |
10 | 301 |
|
302 |
/** |
|
303 |
* Level/Depth of inheritance. |
|
304 |
*/ |
|
305 |
private String level; |
|
306 |
||
307 |
/** |
|
308 |
* Return list of inherited members from mapping class. |
|
309 |
* |
|
310 |
* @return List Inherited members. |
|
311 |
*/ |
|
868 | 312 |
public List<ProgramElementDoc> getMembers() { |
10 | 313 |
return members; |
314 |
} |
|
315 |
||
316 |
private ClassMembers(ClassDoc mappingClass, String level) { |
|
317 |
this.mappingClass = mappingClass; |
|
318 |
this.level = level; |
|
319 |
if (classMap.containsKey(mappingClass) && |
|
868 | 320 |
level.startsWith(classMap.get(mappingClass).level)) { |
10 | 321 |
//Remove lower level class so that it can be replaced with |
322 |
//same class found at higher level. |
|
323 |
purgeMemberLevelMap(getClassMembers(mappingClass, false), |
|
868 | 324 |
classMap.get(mappingClass).level); |
10 | 325 |
classMap.remove(mappingClass); |
326 |
visibleClasses.remove(mappingClass); |
|
327 |
} |
|
328 |
if (!classMap.containsKey(mappingClass)) { |
|
329 |
classMap.put(mappingClass, this); |
|
330 |
visibleClasses.add(mappingClass); |
|
331 |
} |
|
332 |
||
333 |
} |
|
334 |
||
335 |
private void build() { |
|
336 |
if (kind == CONSTRUCTORS) { |
|
337 |
addMembers(mappingClass); |
|
338 |
} else { |
|
339 |
mapClass(); |
|
340 |
} |
|
341 |
} |
|
342 |
||
343 |
private void mapClass() { |
|
344 |
addMembers(mappingClass); |
|
345 |
ClassDoc[] interfaces = mappingClass.interfaces(); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
346 |
for (ClassDoc anInterface : interfaces) { |
10 | 347 |
String locallevel = level + 1; |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
348 |
ClassMembers cm = new ClassMembers(anInterface, locallevel); |
10 | 349 |
cm.mapClass(); |
350 |
} |
|
351 |
if (mappingClass.isClass()) { |
|
352 |
ClassDoc superclass = mappingClass.superclass(); |
|
353 |
if (!(superclass == null || mappingClass.equals(superclass))) { |
|
354 |
ClassMembers cm = new ClassMembers(superclass, |
|
355 |
level + "c"); |
|
356 |
cm.mapClass(); |
|
357 |
} |
|
358 |
} |
|
359 |
} |
|
360 |
||
361 |
/** |
|
362 |
* Get all the valid members from the mapping class. Get the list of |
|
363 |
* members for the class to be included into(ctii), also get the level |
|
364 |
* string for ctii. If mapping class member is not already in the |
|
365 |
* inherited member list and if it is visible in the ctii and not |
|
366 |
* overridden, put such a member in the inherited member list. |
|
367 |
* Adjust member-level-map, class-map. |
|
368 |
*/ |
|
369 |
private void addMembers(ClassDoc fromClass) { |
|
868 | 370 |
List<ProgramElementDoc> cdmembers = getClassMembers(fromClass, true); |
371 |
List<ProgramElementDoc> incllist = new ArrayList<ProgramElementDoc>(); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
372 |
for (ProgramElementDoc pgmelem : cdmembers) { |
10 | 373 |
if (!found(members, pgmelem) && |
374 |
memberIsVisible(pgmelem) && |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
375 |
!isOverridden(pgmelem, level) && |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
376 |
!isTreatedAsPrivate(pgmelem)) { |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
377 |
incllist.add(pgmelem); |
10 | 378 |
} |
379 |
} |
|
380 |
if (incllist.size() > 0) { |
|
381 |
noVisibleMembers = false; |
|
382 |
} |
|
383 |
members.addAll(incllist); |
|
384 |
fillMemberLevelMap(getClassMembers(fromClass, false), level); |
|
385 |
} |
|
386 |
||
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
387 |
private boolean isTreatedAsPrivate(ProgramElementDoc pgmelem) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
388 |
if (!configuration.javafx) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
389 |
return false; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
390 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
391 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
392 |
Tag[] aspTags = pgmelem.tags("@treatAsPrivate"); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
393 |
boolean result = (aspTags != null) && (aspTags.length > 0); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
394 |
return result; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
395 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
396 |
|
10 | 397 |
/** |
398 |
* Is given doc item visible in given classdoc in terms fo inheritance? |
|
399 |
* The given doc item is visible in the given classdoc if it is public |
|
400 |
* or protected and if it is package-private if it's containing class |
|
401 |
* is in the same package as the given classdoc. |
|
402 |
*/ |
|
403 |
private boolean memberIsVisible(ProgramElementDoc pgmdoc) { |
|
404 |
if (pgmdoc.containingClass().equals(classdoc)) { |
|
405 |
//Member is in class that we are finding visible members for. |
|
406 |
//Of course it is visible. |
|
407 |
return true; |
|
408 |
} else if (pgmdoc.isPrivate()) { |
|
409 |
//Member is in super class or implemented interface. |
|
410 |
//Private, so not inherited. |
|
411 |
return false; |
|
412 |
} else if (pgmdoc.isPackagePrivate()) { |
|
413 |
//Member is package private. Only return true if its class is in |
|
414 |
//same package. |
|
415 |
return pgmdoc.containingClass().containingPackage().equals( |
|
416 |
classdoc.containingPackage()); |
|
417 |
} else { |
|
418 |
//Public members are always inherited. |
|
419 |
return true; |
|
420 |
} |
|
421 |
} |
|
422 |
||
423 |
/** |
|
424 |
* Return all available class members. |
|
425 |
*/ |
|
868 | 426 |
private List<ProgramElementDoc> getClassMembers(ClassDoc cd, boolean filter) { |
10 | 427 |
if (cd.isEnum() && kind == CONSTRUCTORS) { |
428 |
//If any of these rules are hit, return empty array because |
|
429 |
//we don't document these members ever. |
|
430 |
return Arrays.asList(new ProgramElementDoc[] {}); |
|
431 |
} |
|
432 |
ProgramElementDoc[] members = null; |
|
433 |
switch (kind) { |
|
20237
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
434 |
case ANNOTATION_TYPE_FIELDS: |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
435 |
members = cd.fields(filter); |
b6d89903c867
8015249: javadoc fails to document static final fields in annotation types
bpatel
parents:
16319
diff
changeset
|
436 |
break; |
10 | 437 |
case ANNOTATION_TYPE_MEMBER_OPTIONAL: |
438 |
members = cd.isAnnotationType() ? |
|
439 |
filter((AnnotationTypeDoc) cd, false) : |
|
440 |
new AnnotationTypeElementDoc[] {}; |
|
441 |
break; |
|
442 |
case ANNOTATION_TYPE_MEMBER_REQUIRED: |
|
443 |
members = cd.isAnnotationType() ? |
|
444 |
filter((AnnotationTypeDoc) cd, true) : |
|
445 |
new AnnotationTypeElementDoc[] {}; |
|
446 |
break; |
|
447 |
case INNERCLASSES: |
|
448 |
members = cd.innerClasses(filter); |
|
449 |
break; |
|
450 |
case ENUM_CONSTANTS: |
|
451 |
members = cd.enumConstants(); |
|
452 |
break; |
|
453 |
case FIELDS: |
|
454 |
members = cd.fields(filter); |
|
455 |
break; |
|
456 |
case CONSTRUCTORS: |
|
457 |
members = cd.constructors(); |
|
458 |
break; |
|
459 |
case METHODS: |
|
460 |
members = cd.methods(filter); |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
461 |
checkOnPropertiesTags((MethodDoc[])members); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
462 |
break; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
463 |
case PROPERTIES: |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
464 |
members = properties(cd, filter); |
10 | 465 |
break; |
466 |
default: |
|
467 |
members = new ProgramElementDoc[0]; |
|
468 |
} |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
469 |
// Deprected members should be excluded or not? |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
470 |
if (configuration.nodeprecated) { |
10 | 471 |
return Util.excludeDeprecatedMembersAsList(members); |
472 |
} |
|
473 |
return Arrays.asList(members); |
|
474 |
} |
|
475 |
||
476 |
/** |
|
477 |
* Filter the annotation type members and return either the required |
|
478 |
* members or the optional members, depending on the value of the |
|
479 |
* required parameter. |
|
480 |
* |
|
481 |
* @param doc The annotation type to process. |
|
482 |
* @param required |
|
483 |
* @return the annotation type members and return either the required |
|
484 |
* members or the optional members, depending on the value of the |
|
485 |
* required parameter. |
|
486 |
*/ |
|
487 |
private AnnotationTypeElementDoc[] filter(AnnotationTypeDoc doc, |
|
488 |
boolean required) { |
|
868 | 489 |
AnnotationTypeElementDoc[] members = doc.elements(); |
490 |
List<AnnotationTypeElementDoc> targetMembers = new ArrayList<AnnotationTypeElementDoc>(); |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
491 |
for (AnnotationTypeElementDoc member : members) { |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
492 |
if ((required && member.defaultValue() == null) || |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
493 |
((!required) && member.defaultValue() != null)) { |
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
494 |
targetMembers.add(member); |
10 | 495 |
} |
496 |
} |
|
868 | 497 |
return targetMembers.toArray(new AnnotationTypeElementDoc[]{}); |
10 | 498 |
} |
499 |
||
1789
7ac8c0815000
6765045: Remove rawtypes warnings from langtools
mcimadamore
parents:
1264
diff
changeset
|
500 |
private boolean found(List<ProgramElementDoc> list, ProgramElementDoc elem) { |
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
501 |
for (ProgramElementDoc pgmelem : list) { |
10 | 502 |
if (Util.matches(pgmelem, elem)) { |
503 |
return true; |
|
504 |
} |
|
505 |
} |
|
506 |
return false; |
|
507 |
} |
|
508 |
||
509 |
||
510 |
/** |
|
511 |
* Is member overridden? The member is overridden if it is found in the |
|
512 |
* same level hierarchy e.g. member at level "11" overrides member at |
|
513 |
* level "111". |
|
514 |
*/ |
|
515 |
private boolean isOverridden(ProgramElementDoc pgmdoc, String level) { |
|
1789
7ac8c0815000
6765045: Remove rawtypes warnings from langtools
mcimadamore
parents:
1264
diff
changeset
|
516 |
Map<?,String> memberLevelMap = (Map<?,String>) memberNameMap.get(getMemberKey(pgmdoc)); |
10 | 517 |
if (memberLevelMap == null) |
518 |
return false; |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
519 |
for (String mappedlevel : memberLevelMap.values()) { |
10 | 520 |
if (mappedlevel.equals(STARTLEVEL) || |
521 |
(level.startsWith(mappedlevel) && |
|
522 |
!level.equals(mappedlevel))) { |
|
523 |
return true; |
|
524 |
} |
|
525 |
} |
|
526 |
return false; |
|
527 |
} |
|
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
528 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
529 |
private ProgramElementDoc[] properties(final ClassDoc cd, final boolean filter) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
530 |
final MethodDoc[] allMethods = cd.methods(filter); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
531 |
final FieldDoc[] allFields = cd.fields(false); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
532 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
533 |
if (propertiesCache.containsKey(cd)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
534 |
return propertiesCache.get(cd); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
535 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
536 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
537 |
final List<MethodDoc> result = new ArrayList<MethodDoc>(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
538 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
539 |
for (final MethodDoc propertyMethod : allMethods) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
540 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
541 |
if (!isPropertyMethod(propertyMethod)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
542 |
continue; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
543 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
544 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
545 |
final MethodDoc getter = getterForField(allMethods, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
546 |
final MethodDoc setter = setterForField(allMethods, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
547 |
final FieldDoc field = fieldForProperty(allFields, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
548 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
549 |
addToPropertiesMap(setter, getter, propertyMethod, field); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
550 |
getterSetterMap.put(propertyMethod, new GetterSetter(getter, setter)); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
551 |
result.add(propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
552 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
553 |
final ProgramElementDoc[] resultAray = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
554 |
result.toArray(new ProgramElementDoc[result.size()]); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
555 |
propertiesCache.put(cd, resultAray); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
556 |
return resultAray; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
557 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
558 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
559 |
private void addToPropertiesMap(MethodDoc setter, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
560 |
MethodDoc getter, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
561 |
MethodDoc propertyMethod, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
562 |
FieldDoc field) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
563 |
if ((field == null) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
564 |
|| (field.getRawCommentText() == null) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
565 |
|| field.getRawCommentText().length() == 0) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
566 |
addToPropertiesMap(setter, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
567 |
addToPropertiesMap(getter, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
568 |
addToPropertiesMap(propertyMethod, propertyMethod); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
569 |
} else { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
570 |
addToPropertiesMap(getter, field); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
571 |
addToPropertiesMap(setter, field); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
572 |
addToPropertiesMap(propertyMethod, field); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
573 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
574 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
575 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
576 |
private void addToPropertiesMap(ProgramElementDoc propertyMethod, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
577 |
ProgramElementDoc commentSource) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
578 |
if (null == propertyMethod || null == commentSource) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
579 |
return; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
580 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
581 |
final String methodRawCommentText = propertyMethod.getRawCommentText(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
582 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
583 |
/* The second condition is required for the property buckets. In |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
584 |
* this case the comment is at the property method (not at the field) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
585 |
* and it needs to be listed in the map. |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
586 |
*/ |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
587 |
if ((null == methodRawCommentText || 0 == methodRawCommentText.length()) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
588 |
|| propertyMethod.equals(commentSource)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
589 |
classPropertiesMap.put(propertyMethod, commentSource); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
590 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
591 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
592 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
593 |
private MethodDoc getterForField(MethodDoc[] methods, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
594 |
MethodDoc propertyMethod) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
595 |
final String propertyMethodName = propertyMethod.name(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
596 |
final String fieldName = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
597 |
propertyMethodName.substring(0, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
598 |
propertyMethodName.lastIndexOf("Property")); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
599 |
final String fieldNameUppercased = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
600 |
"" + Character.toUpperCase(fieldName.charAt(0)) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
601 |
+ fieldName.substring(1); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
602 |
final String getterNamePattern; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
603 |
final String fieldTypeName = propertyMethod.returnType().toString(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
604 |
if ("boolean".equals(fieldTypeName) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
605 |
|| fieldTypeName.endsWith("BooleanProperty")) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
606 |
getterNamePattern = "(is|get)" + fieldNameUppercased; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
607 |
} else { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
608 |
getterNamePattern = "get" + fieldNameUppercased; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
609 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
610 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
611 |
for (MethodDoc methodDoc : methods) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
612 |
if (Pattern.matches(getterNamePattern, methodDoc.name())) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
613 |
if (0 == methodDoc.parameters().length |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
614 |
&& (methodDoc.isPublic() || methodDoc.isProtected())) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
615 |
return methodDoc; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
616 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
617 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
618 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
619 |
return null; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
620 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
621 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
622 |
private MethodDoc setterForField(MethodDoc[] methods, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
623 |
MethodDoc propertyMethod) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
624 |
final String propertyMethodName = propertyMethod.name(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
625 |
final String fieldName = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
626 |
propertyMethodName.substring(0, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
627 |
propertyMethodName.lastIndexOf("Property")); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
628 |
final String fieldNameUppercased = |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
629 |
"" + Character.toUpperCase(fieldName.charAt(0)) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
630 |
+ fieldName.substring(1); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
631 |
final String setter = "set" + fieldNameUppercased; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
632 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
633 |
for (MethodDoc methodDoc : methods) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
634 |
if (setter.equals(methodDoc.name())) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
635 |
if (1 == methodDoc.parameters().length |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
636 |
&& "void".equals(methodDoc.returnType().simpleTypeName()) |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
637 |
&& (methodDoc.isPublic() || methodDoc.isProtected())) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
638 |
return methodDoc; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
639 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
640 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
641 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
642 |
return null; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
643 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
644 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
645 |
private FieldDoc fieldForProperty(FieldDoc[] fields, MethodDoc property) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
646 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
647 |
for (FieldDoc field : fields) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
648 |
final String fieldName = field.name(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
649 |
final String propertyName = fieldName + "Property"; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
650 |
if (propertyName.equals(property.name())) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
651 |
return field; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
652 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
653 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
654 |
return null; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
655 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
656 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
657 |
// properties aren't named setA* or getA* |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
658 |
private final Pattern pattern = Pattern.compile("[sg]et\\p{Upper}.*"); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
659 |
private boolean isPropertyMethod(MethodDoc method) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
660 |
if (!method.name().endsWith("Property")) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
661 |
return false; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
662 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
663 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
664 |
if (! memberIsVisible(method)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
665 |
return false; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
666 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
667 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
668 |
if (pattern.matcher(method.name()).matches()) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
669 |
return false; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
670 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
671 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
672 |
return 0 == method.parameters().length |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
673 |
&& !"void".equals(method.returnType().simpleTypeName()); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
674 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
675 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
676 |
private void checkOnPropertiesTags(MethodDoc[] members) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
677 |
for (MethodDoc methodDoc: members) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
678 |
if (methodDoc.isIncluded()) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
679 |
for (Tag tag: methodDoc.tags()) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
680 |
String tagName = tag.name(); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
681 |
if (tagName.equals("@propertySetter") |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
682 |
|| tagName.equals("@propertyGetter") |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
683 |
|| tagName.equals("@propertyDescription")) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
684 |
if (!isPropertyGetterOrSetter(members, methodDoc)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
685 |
configuration.message.warning(tag.position(), |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
686 |
"doclet.javafx_tag_misuse"); |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
687 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
688 |
break; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
689 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
690 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
691 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
692 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
693 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
694 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
695 |
private boolean isPropertyGetterOrSetter(MethodDoc[] members, |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
696 |
MethodDoc methodDoc) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
697 |
boolean found = false; |
22153
f9f06fcca59d
8029800: Flags.java uses String.toLowerCase without specifying Locale
jlahoda
parents:
20237
diff
changeset
|
698 |
String propertyName = Util.propertyNameFromMethodName(configuration, methodDoc.name()); |
16319
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
699 |
if (!propertyName.isEmpty()) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
700 |
String propertyMethodName = propertyName + "Property"; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
701 |
for (MethodDoc member: members) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
702 |
if (member.name().equals(propertyMethodName)) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
703 |
found = true; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
704 |
break; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
705 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
706 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
707 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
708 |
return found; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
709 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
710 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
711 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
712 |
private class GetterSetter { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
713 |
private final ProgramElementDoc getter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
714 |
private final ProgramElementDoc setter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
715 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
716 |
public GetterSetter(ProgramElementDoc getter, ProgramElementDoc setter) { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
717 |
this.getter = getter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
718 |
this.setter = setter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
719 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
720 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
721 |
public ProgramElementDoc getGetter() { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
722 |
return getter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
723 |
} |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
724 |
|
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
725 |
public ProgramElementDoc getSetter() { |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
726 |
return setter; |
e586bfeb39c5
7112427: The doclet needs to be able to generate JavaFX documentation.
jjg
parents:
14260
diff
changeset
|
727 |
} |
10 | 728 |
} |
729 |
||
730 |
/** |
|
731 |
* Return true if this map has no visible members. |
|
732 |
* |
|
733 |
* @return true if this map has no visible members. |
|
734 |
*/ |
|
735 |
public boolean noVisibleMembers() { |
|
736 |
return noVisibleMembers; |
|
737 |
} |
|
738 |
||
739 |
private ClassMember getClassMember(MethodDoc member) { |
|
22159
682da512ec17
8030253: Update langtools to use strings-in-switch
briangoetz
parents:
22153
diff
changeset
|
740 |
for (Object key : memberNameMap.keySet()) { |
10 | 741 |
if (key instanceof String) { |
742 |
continue; |
|
743 |
} else if (((ClassMember) key).isEqual(member)) { |
|
744 |
return (ClassMember) key; |
|
745 |
} |
|
746 |
} |
|
747 |
return new ClassMember(member); |
|
748 |
} |
|
749 |
||
750 |
/** |
|
751 |
* Return the key to the member map for the given member. |
|
752 |
*/ |
|
753 |
private Object getMemberKey(ProgramElementDoc doc) { |
|
754 |
if (doc.isConstructor()) { |
|
755 |
return doc.name() + ((ExecutableMemberDoc)doc).signature(); |
|
756 |
} else if (doc.isMethod()) { |
|
757 |
return getClassMember((MethodDoc) doc); |
|
758 |
} else if (doc.isField() || doc.isEnumConstant() || doc.isAnnotationTypeElement()) { |
|
759 |
return doc.name(); |
|
760 |
} else { // it's a class or interface |
|
761 |
String classOrIntName = doc.name(); |
|
762 |
//Strip off the containing class name because we only want the member name. |
|
763 |
classOrIntName = classOrIntName.indexOf('.') != 0 ? classOrIntName.substring(classOrIntName.lastIndexOf('.'), classOrIntName.length()) : classOrIntName; |
|
764 |
return "clint" + classOrIntName; |
|
765 |
} |
|
766 |
} |
|
767 |
} |