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 26 import javax.jmi.reflect.ConstraintViolationException; 27 28 import org.netbeans.jmi.javamodel.TagDefinition; 29 import org.netbeans.jmi.javamodel.TagDefinitionClass; 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.mdr.util.DebugException; 36 37 41 public abstract class TagDefinitionClassImpl extends ClassProxyHandler implements TagDefinitionClass { 42 private static final String MOFID_PREFIX = "tagdefinition:"; private static Map allInstances; 44 45 46 public TagDefinitionClassImpl(StorableClass s) { 47 super(s); 48 } 49 50 51 public TagDefinition resolve(String name) { 52 if (name == null) 53 throw new ConstraintViolationException(this, refMetaObject(), "Cannot create instances of TagDefinition with null name supplied."); 55 initInstances(); 56 try { 57 return _createTagDefinition(name); 58 } 59 catch (StorageException e) { 60 throw new DebugException(); 61 } 62 } 63 64 70 public TagDefinition createTagDefinition(String name) { 71 return resolve(name); 72 } 73 74 78 public TagDefinition createTagDefinition() { 79 throw new ConstraintViolationException(this, refMetaObject(), "Cannot create instances of TagDefinition without name supplied."); } 81 82 83 private TagDefinition _createTagDefinition(String name) throws StorageException { 84 TagDefinitionImpl tagDefinition = (TagDefinitionImpl) allInstances.get(name); 85 if (tagDefinition != null) 86 return tagDefinition; 87 88 try { 89 StorableBaseObject s = _getDelegate(); 90 DeferredObject o = new DeferredObject(new MOFID(name.hashCode(), MOFID_PREFIX + name), s.getMdrStorage(), s.getImmediatePackageId(), s.getOutermostPackageId(), s.getMetaObject(), (StorableClass) s, null); 91 tagDefinition = (TagDefinitionImpl) _getRepository().getHandler(o); 92 tagDefinition.name = name; 93 allInstances.put(name, tagDefinition); 94 } 95 catch (StorageException e) { 96 throw new DebugException(); 97 } 98 99 return tagDefinition; 100 } 101 102 private void initInstances() { 103 if (allInstances == null) { 104 allInstances=new HashMap (); 105 try { 106 _createTagDefinition("author"); _createTagDefinition("version"); _createTagDefinition("param"); _createTagDefinition("return"); _createTagDefinition("exception"); _createTagDefinition("see"); _createTagDefinition("since"); _createTagDefinition("serial"); _createTagDefinition("deprecated"); } 116 catch (StorageException e) { 117 throw new DebugException(); 118 } 119 } 120 } 121 122 protected Collection _allOfClass(boolean recursive) { 123 initInstances(); 124 return Collections.unmodifiableCollection(allInstances.values()); 125 } 126 } 127 | Popular Tags |