KickJava   Java API By Example, From Geeks To Geeks.

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


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

42 public abstract class UnresolvedAnnotationTypeClassImpl extends ClassProxyHandler implements UnresolvedAnnotationTypeClass {
43     // [TODO] add support for refAllOfClass/Type
44

45     private static final String JavaDoc MOFID_PREFIX = "unresolvedAnn:"; // NOI18N
46
private static final InstanceMap allInstances = new InstanceMap();
47     
48     public UnresolvedAnnotationTypeClassImpl(StorableClass s) {
49         super(s);
50     }
51     
52     public UnresolvedAnnotationType createUnresolvedClass(String JavaDoc name, java.util.List JavaDoc annotations, int modifiers, 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 AnnotationType explicitly."); // NOI18N
54
}
55     
56     public UnresolvedAnnotationType createUnresolvedClass() {
57         throw new ConstraintViolationException(this, refMetaObject(), "Cannot create unresolved AnnotationType explicitly."); // NOI18N
58
}
59     
60     public UnresolvedAnnotationType resolveUnresolved(String JavaDoc name) {
61         if (name == null) {
62             JMManager.getLog().notify(ErrorManager.INFORMATIONAL, new Exception JavaDoc("!! Trying to get unresolved AnnotationType for name == null")); // NOI18N
63
return null;
64         }
65         UnresolvedAnnotationTypeImpl result = (UnresolvedAnnotationTypeImpl) allInstances.get(name);
66         if (result == null) {
67             try {
68                 // [TODO] better unify immediate package and class proxy
69
StorableBaseObject s = _getDelegate();
70                 MOFID mofId = new MOFID(name.hashCode(), MOFID_PREFIX + name);
71                 DeferredObject o = new DeferredObject(mofId, s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null);
72                 result = (UnresolvedAnnotationTypeImpl) _getRepository().getHandler(o);
73                 result.name = name;
74                 allInstances.put(name, result);
75             } catch (StorageException e) {
76                 throw new DebugException();
77             }
78         }
79         return result;
80     }
81     
82     protected Collection JavaDoc _allOfClass(boolean recursive) {
83         return Collections.unmodifiableCollection(allInstances.values());
84     }
85     
86     public Type resolve(String JavaDoc name) {
87         JavaModelPackage pkg = (JavaModelPackage) refImmediatePackage();
88         return pkg.getType().resolve(name);
89     }
90 }
91
Popular Tags