1 19 package org.netbeans.modules.javacore.jmiimpl.javamodel; 20 21 import java.util.Collection ; 22 import java.util.Collections ; 23 import java.util.HashMap ; 24 import java.util.Map ; 25 import javax.jmi.reflect.ConstraintViolationException; 26 import org.netbeans.jmi.javamodel.*; 27 import org.netbeans.mdr.handlers.ClassProxyHandler; 28 import org.netbeans.mdr.persistence.MOFID; 29 import org.netbeans.mdr.persistence.StorageException; 30 import org.netbeans.mdr.storagemodel.StorableBaseObject; 31 import org.netbeans.mdr.storagemodel.StorableClass; 32 import org.netbeans.mdr.util.DebugException; 33 import org.netbeans.modules.javacore.api.JavaModel; 34 35 39 public abstract class PrimitiveTypeClassImpl extends ClassProxyHandler implements PrimitiveTypeClass { 40 private static final String MOFID_PREFIX = "primitive:"; private static Map allInstances; 42 43 44 public PrimitiveTypeClassImpl(StorableClass s) { 45 super(s); 46 } 47 48 public PrimitiveType createPrimitiveType(String name, PrimitiveTypeKind kind) { 49 throw new ConstraintViolationException(this, refMetaObject(), "Cannot explicitly create instances of PrimitiveType."); } 51 52 public PrimitiveType createPrimitiveType() { 53 throw new ConstraintViolationException(this, refMetaObject(), "Cannot explicitly create instances of PrimitiveType."); } 55 56 private void initInstances() { 57 if (allInstances == null) { 58 if (JavaModel.getDefaultExtent().equals(refImmediatePackage())) { 59 try { 60 StorableBaseObject s = _getDelegate(); 61 DeferredObject o; 62 PrimitiveTypeImpl pt; 63 PrimitiveTypeKind pk; 64 65 allInstances=new HashMap (); 66 pk = PrimitiveTypeKindEnum.VOID; 68 o = new DeferredObject(new MOFID(1, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 69 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 70 pt.kind = pk; 71 allInstances.put(pk.toString(), pt); 72 73 pk = PrimitiveTypeKindEnum.BOOLEAN; 75 o = new DeferredObject(new MOFID(2, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 76 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 77 pt.kind = pk; 78 allInstances.put(pk.toString(), pt); 79 80 pk = PrimitiveTypeKindEnum.BYTE; 82 o = new DeferredObject(new MOFID(3, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 83 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 84 pt.kind = pk; 85 allInstances.put(pk.toString(), pt); 86 87 pk = PrimitiveTypeKindEnum.CHAR; 89 o = new DeferredObject(new MOFID(4, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 90 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 91 pt.kind = pk; 92 allInstances.put(pk.toString(), pt); 93 94 pk = PrimitiveTypeKindEnum.DOUBLE; 96 o = new DeferredObject(new MOFID(5, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 97 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 98 pt.kind = pk; 99 allInstances.put(pk.toString(), pt); 100 101 pk = PrimitiveTypeKindEnum.FLOAT; 103 o = new DeferredObject(new MOFID(6, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 104 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 105 pt.kind = pk; 106 allInstances.put(pk.toString(), pt); 107 108 pk = PrimitiveTypeKindEnum.INT; 110 o = new DeferredObject(new MOFID(7, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 111 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 112 pt.kind = pk; 113 allInstances.put(pk.toString(), pt); 114 115 pk = PrimitiveTypeKindEnum.LONG; 117 o = new DeferredObject(new MOFID(8, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 118 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 119 pt.kind = pk; 120 allInstances.put(pk.toString(), pt); 121 122 pk = PrimitiveTypeKindEnum.SHORT; 124 o = new DeferredObject(new MOFID(9, MOFID_PREFIX + pk.toString()), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 125 pt = (PrimitiveTypeImpl) _getRepository().getHandler(o); 126 pt.kind = pk; 127 allInstances.put(pk.toString(), pt); 128 } catch (StorageException e) { 129 throw new DebugException(); 130 } 131 } else { 132 ((PrimitiveTypeClassImpl) JavaModel.getDefaultExtent().getPrimitiveType()).initInstances(); 133 } 134 } 135 } 136 137 PrimitiveType resolveType(String name) { 138 initInstances(); 139 return (PrimitiveType) allInstances.get(name); 140 } 141 142 protected Collection _allOfClass(boolean recursive) { 143 initInstances(); 144 return Collections.unmodifiableCollection(allInstances.values()); 145 } 146 147 public org.netbeans.jmi.javamodel.Type resolve(java.lang.String name) { 148 JavaModelPackage pkg = (JavaModelPackage) refImmediatePackage(); 149 return pkg.getType().resolve(name); 150 } 151 } 152 | Popular Tags |