langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/util/VisibleMemberMap.java
changeset 1789 7ac8c0815000
parent 1264 076a3cde30d5
child 5520 86e4b9a9da40
equal deleted inserted replaced
1788:ced0a1a7ec80 1789:7ac8c0815000
   114     /**
   114     /**
   115      * Return the list of visible classes in this map.
   115      * Return the list of visible classes in this map.
   116      *
   116      *
   117      * @return the list of visible classes in this map.
   117      * @return the list of visible classes in this map.
   118      */
   118      */
   119     public List getVisibleClassesList() {
   119     public List<ClassDoc> getVisibleClassesList() {
   120         sort(visibleClasses);
   120         sort(visibleClasses);
   121         return visibleClasses;
   121         return visibleClasses;
   122     }
   122     }
   123 
   123 
   124     /**
   124     /**
   128      * @param configuation the current configuration of the doclet.
   128      * @param configuation the current configuration of the doclet.
   129      * @return the package private members inherited by the class.
   129      * @return the package private members inherited by the class.
   130      */
   130      */
   131     private List<ProgramElementDoc> getInheritedPackagePrivateMethods(Configuration configuration) {
   131     private List<ProgramElementDoc> getInheritedPackagePrivateMethods(Configuration configuration) {
   132         List<ProgramElementDoc> results = new ArrayList<ProgramElementDoc>();
   132         List<ProgramElementDoc> results = new ArrayList<ProgramElementDoc>();
   133         for (Iterator iter = visibleClasses.iterator(); iter.hasNext(); ) {
   133         for (Iterator<ClassDoc> iter = visibleClasses.iterator(); iter.hasNext(); ) {
   134             ClassDoc currentClass = (ClassDoc) iter.next();
   134             ClassDoc currentClass = iter.next();
   135             if (currentClass != classdoc &&
   135             if (currentClass != classdoc &&
   136                 currentClass.isPackagePrivate() &&
   136                 currentClass.isPackagePrivate() &&
   137                 !Util.isLinkable(currentClass, configuration)) {
   137                 !Util.isLinkable(currentClass, configuration)) {
   138                 // Document these members in the child class because
   138                 // Document these members in the child class because
   139                 // the parent is inaccessible.
   139                 // the parent is inaccessible.
   201             }
   201             }
   202             memberLevelMap.put(list.get(i), level);
   202             memberLevelMap.put(list.get(i), level);
   203         }
   203         }
   204     }
   204     }
   205 
   205 
   206     private void purgeMemberLevelMap(List list, String level) {
   206     private void purgeMemberLevelMap(List<ProgramElementDoc> list, String level) {
   207         for (int i = 0; i < list.size(); i++) {
   207         for (int i = 0; i < list.size(); i++) {
   208             Object key = getMemberKey((ProgramElementDoc)list.get(i));
   208             Object key = getMemberKey(list.get(i));
   209             Map memberLevelMap = (Map) memberNameMap.get(key);
   209             Map<ProgramElementDoc, String> memberLevelMap = memberNameMap.get(key);
   210             if (level.equals(memberLevelMap.get(list.get(i))))
   210             if (level.equals(memberLevelMap.get(list.get(i))))
   211                 memberLevelMap.remove(list.get(i));
   211                 memberLevelMap.remove(list.get(i));
   212         }
   212         }
   213     }
   213     }
   214 
   214 
   228         public void addMember(ProgramElementDoc programElementDoc) {
   228         public void addMember(ProgramElementDoc programElementDoc) {
   229             members.add(programElementDoc);
   229             members.add(programElementDoc);
   230         }
   230         }
   231 
   231 
   232         public boolean isEqual(MethodDoc member) {
   232         public boolean isEqual(MethodDoc member) {
   233             for (Iterator iter = members.iterator(); iter.hasNext(); ) {
   233             for (Iterator<ProgramElementDoc> iter = members.iterator(); iter.hasNext(); ) {
   234                 MethodDoc member2 = (MethodDoc) iter.next();
   234                 MethodDoc member2 = (MethodDoc) iter.next();
   235                 if (Util.executableMembersEqual(member, member2)) {
   235                 if (Util.executableMembersEqual(member, member2)) {
   236                     members.add(member);
   236                     members.add(member);
   237                         return true;
   237                         return true;
   238                 }
   238                 }
   436                 }
   436                 }
   437             }
   437             }
   438             return targetMembers.toArray(new AnnotationTypeElementDoc[]{});
   438             return targetMembers.toArray(new AnnotationTypeElementDoc[]{});
   439         }
   439         }
   440 
   440 
   441         private boolean found(List list, ProgramElementDoc elem) {
   441         private boolean found(List<ProgramElementDoc> list, ProgramElementDoc elem) {
   442             for (int i = 0; i < list.size(); i++) {
   442             for (int i = 0; i < list.size(); i++) {
   443                 ProgramElementDoc pgmelem = (ProgramElementDoc)list.get(i);
   443                 ProgramElementDoc pgmelem = list.get(i);
   444                 if (Util.matches(pgmelem, elem)) {
   444                 if (Util.matches(pgmelem, elem)) {
   445                     return true;
   445                     return true;
   446                 }
   446                 }
   447             }
   447             }
   448             return false;
   448             return false;
   453          * Is member overridden? The member is overridden if it is found in the
   453          * Is member overridden? The member is overridden if it is found in the
   454          * same level hierarchy e.g. member at level "11" overrides member at
   454          * same level hierarchy e.g. member at level "11" overrides member at
   455          * level "111".
   455          * level "111".
   456          */
   456          */
   457         private boolean isOverridden(ProgramElementDoc pgmdoc, String level) {
   457         private boolean isOverridden(ProgramElementDoc pgmdoc, String level) {
   458             Map memberLevelMap = (Map) memberNameMap.get(getMemberKey(pgmdoc));
   458             Map<?,String> memberLevelMap = (Map<?,String>) memberNameMap.get(getMemberKey(pgmdoc));
   459             if (memberLevelMap == null)
   459             if (memberLevelMap == null)
   460                 return false;
   460                 return false;
   461             String mappedlevel = null;
   461             String mappedlevel = null;
   462             Iterator iterator = memberLevelMap.values().iterator();
   462             Iterator<String> iterator = memberLevelMap.values().iterator();
   463             while (iterator.hasNext()) {
   463             while (iterator.hasNext()) {
   464                 mappedlevel = (String)(iterator.next());
   464                 mappedlevel = iterator.next();
   465                 if (mappedlevel.equals(STARTLEVEL) ||
   465                 if (mappedlevel.equals(STARTLEVEL) ||
   466                     (level.startsWith(mappedlevel) &&
   466                     (level.startsWith(mappedlevel) &&
   467                      !level.equals(mappedlevel))) {
   467                      !level.equals(mappedlevel))) {
   468                     return true;
   468                     return true;
   469                 }
   469                 }
   480     public boolean noVisibleMembers() {
   480     public boolean noVisibleMembers() {
   481         return noVisibleMembers;
   481         return noVisibleMembers;
   482     }
   482     }
   483 
   483 
   484     private ClassMember getClassMember(MethodDoc member) {
   484     private ClassMember getClassMember(MethodDoc member) {
   485         for (Iterator iter = memberNameMap.keySet().iterator(); iter.hasNext();) {
   485         for (Iterator<?> iter = memberNameMap.keySet().iterator(); iter.hasNext();) {
   486             Object key = iter.next();
   486             Object key = iter.next();
   487             if (key instanceof String) {
   487             if (key instanceof String) {
   488                 continue;
   488                 continue;
   489             } else if (((ClassMember) key).isEqual(member)) {
   489             } else if (((ClassMember) key).isEqual(member)) {
   490                 return (ClassMember) key;
   490                 return (ClassMember) key;