KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > modules > javacore > jmiimpl > javamodel > UnresolvedClassClassImpl


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 package org.netbeans.modules.javacore.jmiimpl.javamodel;
20
21 import org.netbeans.jmi.javamodel.UnresolvedClass;
22 import org.netbeans.jmi.javamodel.UnresolvedClassClass;
23 import org.netbeans.mdr.handlers.ClassProxyHandler;
24 import org.netbeans.mdr.persistence.MOFID;
25 import org.netbeans.mdr.persistence.StorageException;
26 import org.netbeans.mdr.storagemodel.StorableBaseObject;
27 import org.netbeans.mdr.storagemodel.StorableClass;
28 import org.netbeans.mdr.util.DebugException;
29 import javax.jmi.reflect.ConstraintViolationException;
30 import java.util.Collection JavaDoc;
31 import java.util.Collections JavaDoc;
32 import org.netbeans.jmi.javamodel.JavaModelPackage;
33 import org.netbeans.modules.javacore.JMManager;
34 import org.netbeans.modules.javacore.api.JavaModel;
35 import org.openide.ErrorManager;
36
37 /**
38  *
39  * @author Martin Matula
40  */

41 public abstract class UnresolvedClassClassImpl extends ClassProxyHandler implements UnresolvedClassClass {
42     // [TODO] add support for refAllOfClass/Type
43

44     private static final String JavaDoc MOFID_PREFIX = "unresolved:"; // NOI18N
45
private static final InstanceMap allInstances = new InstanceMap();
46     
47     /** Creates a new instance of PackageClassImpl */
48     public UnresolvedClassClassImpl(StorableClass s) {
49         super(s);
50     }
51     
52     public UnresolvedClass createUnresolvedClass(java.lang.String JavaDoc name, java.util.List JavaDoc annotations, int modifiers, java.lang.String JavaDoc javadocText, org.netbeans.jmi.javamodel.JavaDoc javadoc, java.util.List JavaDoc contents, org.netbeans.jmi.javamodel.MultipartId superClassName, java.util.List JavaDoc interfaceNames, java.util.List JavaDoc typeArguments) {
53         throw new ConstraintViolationException(this, refMetaObject(), "Cannot create unresolved classes explicitly."); // NOI18N
54
}
55     
56     public UnresolvedClass createUnresolvedClass() {
57         throw new ConstraintViolationException(this, refMetaObject(), "Cannot create unresolved classes explicitly."); // NOI18N
58
}
59     
60     public UnresolvedClass resolveUnresolved(String JavaDoc name) {
61         if (name == null) {
62             JMManager.getLog().notify(ErrorManager.INFORMATIONAL, new Exception JavaDoc("!! Trying to get unresolved class for name == null")); // NOI18N
63
return null;
64         }
65         UnresolvedClassImpl result = (UnresolvedClassImpl) allInstances.get(name);
66         if (result == null) {
67             if (JavaModel.getDefaultExtent().equals(refImmediatePackage())) {
68                 try {
69                     // [TODO] better unify immediate package and class proxy
70
StorableBaseObject s = _getDelegate();
71                     MOFID mofId = new MOFID(name.hashCode(), MOFID_PREFIX + name);
72                     DeferredObject o = new DeferredObject(mofId, s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null);
73                     result = (UnresolvedClassImpl) _getRepository().getHandler(o);
74                     result.name = name;
75                     allInstances.put(name, result);
76                 } catch (StorageException e) {
77                     throw new DebugException();
78                 }
79             } else {
80                 return ((UnresolvedClassClassImpl) JavaModel.getDefaultExtent().getUnresolvedClass()).resolveUnresolved(name);
81         }
82         }
83         return result;
84     }
85     
86     protected Collection JavaDoc _allOfClass(boolean recursive) {
87         return Collections.unmodifiableCollection(allInstances.values());
88     }
89     
90     public org.netbeans.jmi.javamodel.Type resolve(java.lang.String JavaDoc name) {
91         JavaModelPackage pkg = (JavaModelPackage) refImmediatePackage();
92         return pkg.getType().resolve(name);
93     }
94 }
95
Popular Tags