result = rootPackage.refClass( itemName );
namespace = ((RefPackage) namespace).refClass( name ); packageName = new ClassNameImpl((PackageName) packageName, name);
/** * @param qualifiedName not null, not empty qualified name of the Enum Class * @param targetExtent not null * @return the class name of that Enum */ private static Name<?> constructOwnerClassName(List<String> qualifiedName, RefPackage targetExtent) { Name<?> result; String name; RefBaseObject namespace; namespace = targetExtent; result = null; for (int i=0; i<qualifiedName.size()-1; i++) { name = qualifiedName.get( i ); if ( namespace instanceof RefPackage ) { // the current name is a name of a package or class, packageName is a name of a package so far try { namespace = ((RefPackage) namespace).refPackage( name ); result = new PackageNameImpl((PackageName) result, name); } catch (InvalidNameException ex) { // name is not a package, it could be only a class namespace = ((RefPackage) namespace).refClass( name ); result = new ClassNameImpl((PackageName) result, name); } } else { // namespace is a Class owning at most an enumeration throw new IllegalArgumentException("Resolving "+qualifiedName +" struct name, reached "+PRINT_MODEL_ELEMENT.execute( namespace ) +" which cannot contain nested "+name); } } return result; }
/** * @param rootPackage not null extent */ public RefClass getMetaClass(RefPackage rootPackage) throws JmiException { RefClass result; RefPackage ownerPackage; assert rootPackage != null : "Expected a non-null package"; if ( getOwner() == null ) { ownerPackage = rootPackage; } else if ( getOwner() instanceof PackageName ) { ownerPackage = ((PackageName) getOwner()).getMetaPackage( rootPackage ); } else { throw new IllegalArgumentException(this + " should be a class name in order to lookup the corresponding *Class instance"); } try { result = ownerPackage.refClass( getName() ); } catch (JmiException ex) { throw new IllegalArgumentException("Looking up the class "+ this + " reached " + PRINT_MODEL_ELEMENT.execute( ownerPackage ) + " for which retrieving the nested class '"+getName()+"'" + " caused ",ex); } return result; }
structClassClass = structClassNamespacePackage.refClass( structClassNamespace.getName() ); result = structClassClass.refCreateStruct(getName(), fieldValues );
enumClassClass = enumClassNamespacePackage.refClass( enumClassNamespace.getName() ); result = enumClassClass.refGetEnum( enumClassName.getName(), getName() );