/[classpath]/gjdoc/src/gnu/classpath/tools/gjdoc/ClassDocImpl.java
ViewVC logotype

Diff of /gjdoc/src/gnu/classpath/tools/gjdoc/ClassDocImpl.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.19 by julian, Fri Dec 17 17:54:20 2004 UTC revision 1.20 by julian, Mon Dec 20 21:27:52 2004 UTC
# Line 84  public class ClassDocImpl Line 84  public class ClassDocImpl
84        return filter ? filteredFields : unfilteredFields;        return filter ? filteredFields : unfilteredFields;
85     }     }
86    
87       private static Set primitiveNames;
88       static {
89          primitiveNames = new HashSet();
90          primitiveNames.add("int");
91          primitiveNames.add("long");
92          primitiveNames.add("char");
93          primitiveNames.add("short");
94          primitiveNames.add("byte");
95          primitiveNames.add("float");
96          primitiveNames.add("double");
97          primitiveNames.add("boolean");
98       }
99    
100       private Map findClassCache = new HashMap();
101    
102       public ClassDoc findClass(String className)
103       {
104          String qualifiedName = Main.getRootDoc().resolveClassName(className, this);
105          ClassDoc rc=Main.getRootDoc().classNamed(qualifiedName);
106    
107          if (null == rc) {
108             for (ClassDoc cdi=this; cdi!=null; cdi=cdi.containingClass()) {
109                for (ClassDoc sdi=cdi; sdi!=null; sdi=sdi.superclass()) {
110                   if (sdi instanceof ClassDocProxy) {
111                      ClassDoc realClass = Main.getRootDoc().classNamed(sdi.qualifiedName());
112                      if (null != realClass) {
113                         sdi = realClass;
114                      }
115                   }
116                   rc=Main.getRootDoc().classNamed(sdi.qualifiedName()+"."+className);
117                   if (rc!=null) return rc;
118                }
119             }
120          }
121    
122          return rc;
123       }
124    
125    
126     /**     /**
127      *   Find a class within the context of this class.      *   Find a class within the context of this class.
128      *      *
129      *   @todo check this against java lang spec. (class id hiding)      *   @todo check this against java lang spec. (class id hiding)
130      */      */
131     public ClassDoc findClass(String className) {     public ClassDoc _findClass(String className) {
132    
133        //Debug.log(9,"findClass("+className+")");        //Debug.log(9,"findClass("+className+")");
134        ClassDoc rc;        ClassDoc rc;
# Line 109  public class ClassDocImpl Line 148  public class ClassDocImpl
148              rc=Main.getRootDoc().classNamed(importedClasses[i].qualifiedName());              rc=Main.getRootDoc().classNamed(importedClasses[i].qualifiedName());
149              if (rc!=null) return rc;              if (rc!=null) return rc;
150           }           }
151             if (null == importedClasses[i]) {
152                System.err.println("importedClasses[" + i + "]=null");
153             }
154             else if (null == className) {
155                System.err.println("className=null");
156             }
157           if (className.startsWith(importedClasses[i].name()+".")) {           if (className.startsWith(importedClasses[i].name()+".")) {
158              //Debug.log(9,"trying (by inner class) "+importedClasses[i].qualifiedName()+className.substring(importedClasses[i].name().length()));              //Debug.log(9,"trying (by inner class) "+importedClasses[i].qualifiedName()+className.substring(importedClasses[i].name().length()));
159              rc=Main.getRootDoc().classNamed(importedClasses[i].qualifiedName()+className.substring(importedClasses[i].name().length()));              rc=Main.getRootDoc().classNamed(importedClasses[i].qualifiedName()+className.substring(importedClasses[i].name().length()));
# Line 280  public class ClassDocImpl Line 325  public class ClassDocImpl
325                                               PackageDoc containingPackage,                                               PackageDoc containingPackage,
326                                               ClassDoc[] importedClasses,                                               ClassDoc[] importedClasses,
327                                               PackageDoc[] importedPackages,                                               PackageDoc[] importedPackages,
328                                               char[] source, int startIndex, int endIndex) throws ParseException, IOException {                                               char[] source, int startIndex, int endIndex,
329                                                 List importStatementList) throws ParseException, IOException {
330    
331        String superclassName = "java.lang.Object";        String superclassName = "java.lang.Object";
332    
# Line 289  public class ClassDocImpl Line 335  public class ClassDocImpl
335                                         importedClasses,                                         importedClasses,
336                                         importedPackages,                                         importedPackages,
337                                         null);                                         null);
338          rc.setImportStatementList(importStatementList);
339        List implementedInterfaces = new ArrayList();        List implementedInterfaces = new ArrayList();
340                
341        String word="";        String word="";
# Line 406  public class ClassDocImpl Line 453  public class ClassDocImpl
453    
454        ClassDoc[] interfaces=new ClassDoc[implementedInterfaces.size()];        ClassDoc[] interfaces=new ClassDoc[implementedInterfaces.size()];
455        for (int i=0; i<interfaces.length; ++i) {        for (int i=0; i<interfaces.length; ++i) {
456              interfaces[i]=new ClassDocProxy((String)implementedInterfaces.get(i), rc);           interfaces[i]=new ClassDocProxy((String)implementedInterfaces.get(i), rc);
457        }        }
458        rc.setInterfaces(interfaces);        rc.setInterfaces(interfaces);
459    
# Line 754  public class ClassDocImpl Line 801  public class ClassDocImpl
801     public ExecutableMemberDoc findExecutableRec(String nameAndSignature) {     public ExecutableMemberDoc findExecutableRec(String nameAndSignature) {
802    
803        ExecutableMemberDoc rc;        ExecutableMemberDoc rc;
804        for (ClassDocImpl cdi=this; cdi!=null; ) {        for (ClassDoc cdi=this; cdi!=null; ) {
805           rc=cdi.findMethod(nameAndSignature);           rc=findMethod(cdi, nameAndSignature);
806           if (rc!=null) return rc;           if (rc!=null) return rc;
807           rc=cdi.findConstructor(nameAndSignature);           rc=findConstructor(cdi, nameAndSignature);
808           if (rc!=null) return rc;           if (rc!=null) return rc;
809    
810           ClassDoc superclass = cdi.superclass();           ClassDoc superclass = cdi.superclass();
811           if (null == superclass) {           if (null == superclass) {
812              break;              break;
813           }           }
          else if (superclass instanceof ClassDocImpl) {  
             cdi=(ClassDocImpl) superclass;  
          }  
814           else {           else {
815              Main.getRootDoc().printWarning("In context "+qualifiedName()+": superclass "+superclass.qualifiedName()+" hasn't been loaded.");              cdi = superclass;
             break;  
816           }           }
817        }        }
818        return null;        return null;
819     }     }
820    
821     public ConstructorDoc findConstructor(String nameAndSignature) {     public static ConstructorDoc findConstructor(ClassDoc classDoc, String nameAndSignature) {
822        int ndx=nameAndSignature.indexOf('(');        int ndx=nameAndSignature.indexOf('(');
823        if (ndx<=0)        if (ndx<=0)
824           return null;           return null;
825        else {        else {
826           String fullSignature = resolveSignature(nameAndSignature.substring(ndx));           String fullSignature = resolveSignature(classDoc, nameAndSignature.substring(ndx));
827           return findConstructor(nameAndSignature.substring(0,ndx),           return findConstructor(classDoc,
828                                    nameAndSignature.substring(0,ndx),
829                                  fullSignature);                                  fullSignature);
830        }        }
831     }     }
832    
833     public ConstructorDoc findConstructor(String name, String signature) {     public static ConstructorDoc findConstructor(ClassDoc classDoc, String name, String signature) {
834          ConstructorDoc[] filteredConstructors = classDoc.constructors(true);
835        if (null != filteredConstructors) {        if (null != filteredConstructors) {
836           for (int i=0; i<filteredConstructors.length; ++i) {           for (int i=0; i<filteredConstructors.length; ++i) {
837              ConstructorDoc constructor = filteredConstructors[i];              ConstructorDoc constructor = filteredConstructors[i];
# Line 797  public class ClassDocImpl Line 842  public class ClassDocImpl
842        return null;        return null;
843     }     }
844    
845     public MethodDoc findMethod(String nameAndSignature) {     public static MethodDoc findMethod(ClassDoc classDoc, String nameAndSignature) {
846        int ndx=nameAndSignature.indexOf('(');        int ndx=nameAndSignature.indexOf('(');
847        if (ndx<=0) {        if (ndx<=0) {
848           return null;           return null;
849        }        }
850        else {        else {
851           String name = nameAndSignature.substring(0,ndx);           String name = nameAndSignature.substring(0,ndx);
852           String fullSignature = resolveSignature(nameAndSignature.substring(ndx));           String fullSignature = resolveSignature(classDoc, nameAndSignature.substring(ndx));
853           return findMethod(name, fullSignature);           return findMethod(classDoc, name, fullSignature);
854        }        }
855     }     }
856    
857     private String resolveSignature(String signature)     private static String resolveSignature(ClassDoc classDoc, String signature)
858     {     {
859        signature = signature.substring(1, signature.length() - 1).trim();        signature = signature.substring(1, signature.length() - 1).trim();
860        if (0 == signature.length()) {        if (0 == signature.length()) {
# Line 825  public class ClassDocImpl Line 870  public class ClassDocImpl
870           }           }
871           String dim = type.substring(ndx);           String dim = type.substring(ndx);
872           type = type.substring(0, ndx);           type = type.substring(0, ndx);
873           ClassDoc typeClass = findClass(type);           ClassDoc typeClass = classDoc.findClass(type);
874           if (fullSignature.length() > 1) {           if (fullSignature.length() > 1) {
875              fullSignature.append(",");              fullSignature.append(",");
876           }           }
# Line 841  public class ClassDocImpl Line 886  public class ClassDocImpl
886        return fullSignature.toString();        return fullSignature.toString();
887     }     }
888    
889     public MethodDoc findMethod(String name, String signature) {     public static MethodDoc findMethod(ClassDoc classDoc, String name, String signature) {
890          MethodDoc[] filteredMethods = classDoc.methods(true);
891        if (null != filteredMethods) {        if (null != filteredMethods) {
892           for (int i=0; i<filteredMethods.length; ++i) {           for (int i=0; i<filteredMethods.length; ++i) {
893              MethodDoc method = filteredMethods[i];              MethodDoc method = filteredMethods[i];
# Line 1020  public class ClassDocImpl Line 1066  public class ClassDocImpl
1066           return 1;           return 1;
1067        }        }
1068     }     }
1069    
1070       private List importStatementList;
1071    
1072       public void setImportStatementList(List importStatementList)
1073       {
1074          this.importStatementList = new LinkedList();
1075          this.importStatementList.addAll(importStatementList);
1076       }
1077      
1078       public List getImportSpecifierList()
1079       {
1080          return importStatementList;
1081       }
1082  }  }
1083    

Legend:
Removed from v.1.19  
changed lines
  Added in v.1.20

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26