KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > javacore > parser > MemberClassScope


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 /*
20  * MemberClassScope.java
21  *
22  * Created on March 27, 2003, 3:33 PM
23  */

24
25 package org.netbeans.modules.javacore.parser;
26
27 import java.util.HashMap JavaDoc;
28 import java.util.Iterator JavaDoc;
29 import java.util.Map JavaDoc;
30 import org.netbeans.jmi.javamodel.JavaClass;
31 import org.netbeans.jmi.javamodel.JavaModelPackage;
32 import org.netbeans.modules.javacore.ClassIndex;
33 import org.netbeans.modules.javacore.jmiimpl.javamodel.JavaClassImpl;
34
35 /**
36  *
37  * @author Tomas Hurka
38  */

39 public class MemberClassScope implements ScopeMember {
40     private String JavaDoc fqn;
41     private ClassIndex index;
42     private Map JavaDoc inners;
43     
44     MemberClassScope(JavaClass jclass) {
45         if (jclass instanceof JavaClassImpl && ((JavaClassImpl)jclass).isTransient()) { // local class
46
JavaClassImpl jclsImpl=(JavaClassImpl)jclass;
47             Iterator JavaDoc iter = jclsImpl.getInnerClasses().iterator();
48             
49             inners=new HashMap JavaDoc();
50             while (iter.hasNext()) {
51                 JavaClass obj = (JavaClass)iter.next ();
52                 
53                 inners.put(obj.getSimpleName(),obj);
54             } // while
55

56         } else {
57             JavaModelPackage pck=(JavaModelPackage)jclass.refImmediatePackage();
58
59             index=ClassIndex.getIndex(pck);
60             fqn=jclass.getName().concat("."); // NOI18N
61
}
62     }
63     
64     public Object JavaDoc lookup(Object JavaDoc key) {
65         if (fqn!=null) {
66             String JavaDoc className=fqn.concat((String JavaDoc)key);
67
68             if (index.hasClass(className))
69                 return className;
70             return null;
71         }
72         return inners.get(key);
73     }
74 }
75
Popular Tags