1 26 27 package org.objectweb.openccm.ast.lib; 28 29 30 import org.objectweb.openccm.ast.api.DeclarationKind; 31 32 33 import org.objectweb.openccm.ast.api.Declaration; 34 35 36 import org.objectweb.openccm.ast.api.PsdlTypeRef; 37 38 39 import org.objectweb.openccm.ast.api.StorageHomeDecl; 40 41 42 import org.objectweb.openccm.ast.api.StorageTypeStateMemberDecl; 43 44 45 import org.objectweb.openccm.ast.api.ASTError; 46 47 71 72 public class StorageTypeStoreDirectiveDeclImpl 73 extends DeclarationImpl 74 implements org.objectweb.openccm.ast.api.StorageTypeStoreDirectiveDecl 75 { 76 82 83 private String state_member_; 84 85 86 private PsdlTypeRef type_; 87 88 89 private StorageHomeDeclImpl storage_home_; 90 91 97 103 protected 104 StorageTypeStoreDirectiveDeclImpl(Repository rep, 105 ScopeImpl parent) 106 { 107 super(rep, parent); 109 110 state_member_ = null; 112 type_ = null; 113 storage_home_ = null;; 114 } 115 116 122 128 134 protected org.omg.CORBA.Contained 135 getContained() 136 { 137 return null; 139 } 140 141 146 public org.objectweb.openccm.ast.api.DeclarationCategory 147 getCategory() 148 { 149 return org.objectweb.openccm.ast.api.DeclarationCategory.dc_psdl; 150 } 151 152 158 164 170 178 public Declaration[] 179 getDependencies() 180 { 181 return null; 183 } 184 185 191 196 public long 197 getDeclKind() 198 { 199 return DeclarationKind.dk_storage_type_store_directive; 200 } 201 202 205 public void 206 create() 207 { 208 boolean found = false; 209 210 super.create(); 212 213 org.objectweb.openccm.ast.api.StorageTypeDecl st = null; 214 215 222 org.objectweb.openccm.ast.api.AbstractStorageTypeDecl[] ast_decls = null; 223 224 st = (org.objectweb.openccm.ast.api.StorageTypeDecl)getParent(); 225 ast_decls = st.getAllImplementedAbstractStorageTypes().getAbstractStorageTypes(); 228 int i = 0; 229 while ((!found) && (i<ast_decls.length)) 230 { 231 Declaration[] decls = null; 233 decls = ast_decls[i].getContents(true, org.objectweb.openccm.ast.api.DeclarationKind.dk_storage_type_state_member); 235 int j=0; 236 while ((!found) && (j<decls.length)) 237 { 238 StorageTypeStateMemberDecl member = (StorageTypeStateMemberDecl)decls[j]; 239 org.objectweb.openccm.ast.api.StorageTypeBase type = member.getType().getStorageTypeBase(); 240 if( member.getName().equals(getStateMember()) ) 242 found = true; 243 j++; 244 } 245 i++; 246 } 247 if (!found) 248 throw new ASTError( getStateMember() + " must be the name of a state member declared" 249 + " in this storagetype or in one of the abstract storagetype it implements."); 250 251 257 258 } 259 260 266 271 public void 272 setStateMember(String name) 273 { 274 state_member_ = name; 275 } 276 277 282 public String 283 getStateMember() 284 { 285 return state_member_; 286 } 287 288 293 public void 294 setType(PsdlTypeRef type) 295 { 296 type_ = type; 297 } 298 299 304 public PsdlTypeRef 305 getType() 306 { 307 return type_; 308 } 309 310 315 public void 316 setStorageHome(StorageHomeDecl sh) 317 { 318 storage_home_ = (StorageHomeDeclImpl)sh; 319 } 320 321 326 public StorageHomeDecl 327 getStorageHome() 328 { 329 return storage_home_; 330 } 331 } 332 | Popular Tags |