Package gw.internal.gosu.parser
Class JavaEnumType
- java.lang.Object
-
- gw.lang.reflect.AbstractType
-
- gw.lang.reflect.InnerClassCapableType
-
- gw.internal.gosu.parser.JavaEnumType
-
- All Implemented Interfaces:
IJavaEnumTypeInternal
,IJavaTypeInternal
,IParameterizableType
,IFileRepositoryBasedType
,IHasInnerClass
,ICanBeAnnotation
,IDefaultArrayType
,IEnhanceableType
,IEnumData
,IEnumType
,IHasJavaClass
,IType
,IJavaArrayType
,IJavaBackedType
,IJavaBackedTypeData
,IJavaEnumType
,IJavaType
,Serializable
public class JavaEnumType extends InnerClassCapableType implements IJavaEnumTypeInternal, IJavaEnumType
Provides an implementation of IEnumeratedType for java enums- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected IJavaClassInfo
_classInfo
-
Fields inherited from interface gw.internal.gosu.parser.IJavaTypeInternal
TYPES_BY_CLASS
-
Fields inherited from interface gw.lang.reflect.IType
EMPTY_ARRAY, EMPTY_TYPE_ARRAY, EMPTY_TYPE_LIST
-
-
Constructor Summary
Constructors Constructor Description JavaEnumType(IJavaClassInfo cls, DefaultTypeLoader loader)
JavaEnumType(Class cls, DefaultTypeLoader loader)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description GenericTypeVariable[]
assignGenericTypeVariables()
byte[]
compile()
static IJavaType[]
convertClassArray(Class[] args)
static IJavaTypeInternal
create(IJavaClassInfo cls, DefaultTypeLoader loader)
IGosuClassInternal
createAdapterClass()
Creates the Gosu proxy type for this class.boolean
equals(Object o)
static IJavaTypeInternal
get(Class cls, DefaultTypeLoader loader)
IGosuClassInternal
getAdapterClass()
Returns the Gosu proxy for this class.IGosuClassInternal
getAdapterClassDirectly()
Set<IType>
getAllTypesInHierarchy()
Returns a Set of all IIntrinsicTypes that this class is assignable from, including this class.Object
getArrayComponent(Object array, int iIndex)
Returns the value of the indexed component in the specified array object.int
getArrayLength(Object array)
Returns the length of the specified array object.IType
getArrayType()
Make an array type from this type.Class
getBackingClass()
IJavaClassInfo
getBackingClassInfo()
ClassType
getClassType()
IJavaTypeInternal
getComponentType()
If this is an array type, a type representing the component type of the array.Set<IType>
getCompoundTypeComponents()
IJavaClassInfo
getConcreteClass()
String
getDisplayName()
The display name of this intrinsic type.IType
getEnclosingType()
Returns the type immediately enclosing this type.List<String>
getEnumConstants()
IType
getEnumType()
IEnumValue
getEnumValue(String strName)
List<IEnumValue>
getEnumValues()
ITypeInfo
getExplicitTypeInfo()
IFunctionType
getFunctionalInterface()
IJavaTypeInternal
getGenericType()
If this is a parameterized type, returns the generic type this type parameterizes.GenericTypeVariable[]
getGenericTypeVariables()
Returns an array of GenericTypeVariables declared with this Generic Type.IType
getInnerClass(CharSequence name)
returns the appropriate inner classList<IJavaType>
getInnerClasses()
IType[]
getInterfaces()
Class
getIntrinsicClass()
Returns the java class for this java typeList<? extends IType>
getLoadedInnerClasses()
IType[]
getLoaderParameterizedTypes()
int
getModifiers()
Returns the modifiers for this type, encoded in an integer.String
getName()
The fully qualified name of this intrinsic type.String
getNamespace()
The namespace for this class.IType
getParameterizedType(IType... paramTypes)
Assuming this intrinsic type is a Generic type, return the parameterized type associated with the given list of type parameters.static IJavaType
getPrimitiveType(String strPrimitiveClassName)
String
getRelativeName()
The relative or unqualified name.ObjectSize
getRetainedMemory()
String
getSimpleName()
ISourceFileHandle
getSourceFileHandle()
IFile[]
getSourceFiles()
IType
getSupertype()
Returns the type representing the supertype of this type.protected IType
getTheRef()
IType
getTypeFromJavaBackedType()
ITypeInfo
getTypeInfo()
Get the type information for this intrinsic type.int
getTypeInfoChecksum()
DefaultTypeLoader
getTypeLoader()
Returns the type loader responsible for loading this intrinsic type.IType[]
getTypeParameters()
If this is a parameterized type, returns the specific types used to create this type, null otherwies.boolean
hasAncestorBeenUpdated()
static boolean
hasBeenUpdated(IJavaTypeInternal type, int tiChecksum, Set<IType> visited)
int
hashCode()
boolean
isAbstract()
boolean
isAnnotation()
boolean
isArray()
True if this is an array.boolean
isAssignableFrom(IType type)
Determines if the type represented by this intrinsic type is either the same as, or is a super-type of the type represented by the specified type parameter.boolean
isCompilable()
boolean
isCompoundType()
boolean
isDefiningGenericTypes()
boolean
isDiscarded()
True if this type has been replaced with a newer version of the same name in the type system.boolean
isEnum()
Returns true if this type is an enumeration.boolean
isFinal()
True if this type cannot be extended.boolean
isGenericType()
Returns true if this ia a Generic Type.boolean
isInterface()
Returns true if this type is an interface.boolean
isMutable()
Note eventhough some classes are indeed immutable (e.g.boolean
isParameterizedType()
Returns true if this ia a Parameterized Type.boolean
isPrimitive()
True if this type represents a primitive type e.g., Java int, char, etc.boolean
isStrictGenerics()
boolean
isValid()
Defines this type if it is not yet fully defined.Object
makeArrayInstance(int iLength)
Construct an array instance of specified length.Object
readResolve()
IType requires this method be implemented to ensure IType instances can be centrally defined and cached.void
setAdapterClass(IGosuClassInternal adapterClass)
void
setArrayComponent(Object array, int iIndex, Object value)
Sets the value of the indexed component in the specified array object.void
setComponentType(IJavaTypeInternal componentType)
void
setDiscarded(boolean bDiscarded)
String
toString()
void
unloadTypeInfo()
Unload or nullify any references to this IType's ITypeInfo.static void
unloadTypes()
Object
writeReplace()
-
Methods inherited from class gw.lang.reflect.InnerClassCapableType
resolveRelativeInnerClass
-
Methods inherited from class gw.lang.reflect.AbstractType
getLiteralMetaType, getMetaType
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface gw.lang.reflect.ICanBeAnnotation
isAnnotation
-
Methods inherited from interface gw.lang.reflect.IDefaultArrayType
getConcreteClass
-
Methods inherited from interface gw.lang.parser.IFileRepositoryBasedType
getClassType, getJavaName, getSourceFileHandle
-
Methods inherited from interface gw.lang.parser.IHasInnerClass
getInnerClass, getLoadedInnerClasses, resolveRelativeInnerClass
-
Methods inherited from interface gw.lang.reflect.IHasJavaClass
getBackingClass
-
Methods inherited from interface gw.lang.reflect.java.IJavaBackedType
getTypeFromJavaBackedType
-
Methods inherited from interface gw.lang.reflect.java.IJavaType
createAdapterClass, getBackingClassInfo, getGenericType, getInnerClasses, getIntrinsicClass, getRetainedMemory
-
Methods inherited from interface gw.internal.gosu.parser.IJavaTypeInternal
assignGenericTypeVariables, getAdapterClass, getAdapterClassDirectly, getExplicitTypeInfo, getSimpleName, getTypeInfoChecksum, hasAncestorBeenUpdated, isDefiningGenericTypes, setAdapterClass, setComponentType, writeReplace
-
Methods inherited from interface gw.internal.gosu.parser.IParameterizableType
getLoaderParameterizedTypes, isStrictGenerics
-
Methods inherited from interface gw.lang.reflect.IType
compile, getAllTypesInHierarchy, getArrayComponent, getArrayLength, getArrayType, getComponentType, getCompoundTypeComponents, getDisplayName, getEnclosingType, getFunctionalInterface, getGenericTypeVariables, getInterfaces, getLiteralMetaType, getMetaType, getModifiers, getName, getNamespace, getParameterizedType, getRelativeName, getSourceFiles, getSupertype, getTypeInfo, getTypeLoader, getTypeParameters, isAbstract, isArray, isAssignableFrom, isCompilable, isCompoundType, isDiscarded, isDynamic, isEnum, isFinal, isGenericType, isInterface, isMutable, isParameterizedType, isPrimitive, isValid, makeArrayInstance, readResolve, setArrayComponent, setDiscarded, unloadTypeInfo
-
-
-
-
Field Detail
-
_classInfo
protected transient IJavaClassInfo _classInfo
-
-
Constructor Detail
-
JavaEnumType
public JavaEnumType(Class cls, DefaultTypeLoader loader)
-
JavaEnumType
public JavaEnumType(IJavaClassInfo cls, DefaultTypeLoader loader)
-
-
Method Detail
-
getEnumType
public IType getEnumType()
- Specified by:
getEnumType
in interfaceIJavaEnumTypeInternal
-
getEnumConstants
public List<String> getEnumConstants()
- Specified by:
getEnumConstants
in interfaceIEnumData
-
getEnumValues
public List<IEnumValue> getEnumValues()
- Specified by:
getEnumValues
in interfaceIEnumData
-
getEnumValue
public IEnumValue getEnumValue(String strName)
- Specified by:
getEnumValue
in interfaceIEnumData
-
get
public static IJavaTypeInternal get(Class cls, DefaultTypeLoader loader)
-
create
public static IJavaTypeInternal create(IJavaClassInfo cls, DefaultTypeLoader loader)
-
isDefiningGenericTypes
public boolean isDefiningGenericTypes()
- Specified by:
isDefiningGenericTypes
in interfaceIJavaTypeInternal
-
assignGenericTypeVariables
public GenericTypeVariable[] assignGenericTypeVariables()
- Specified by:
assignGenericTypeVariables
in interfaceIJavaTypeInternal
-
getTypeLoader
public DefaultTypeLoader getTypeLoader()
Description copied from interface:IType
Returns the type loader responsible for loading this intrinsic type.- Specified by:
getTypeLoader
in interfaceIType
-
getName
public String getName()
Description copied from interface:IType
The fully qualified name of this intrinsic type.
-
getDisplayName
public String getDisplayName()
Description copied from interface:IType
The display name of this intrinsic type. Often this is simply the same asIType.getName()
, but in some cases a type may want to modify it's name for presentation to the user.- Specified by:
getDisplayName
in interfaceIType
-
getRelativeName
public String getRelativeName()
Description copied from interface:IType
The relative or unqualified name. For a class this should be just the class name without the package name.- Specified by:
getRelativeName
in interfaceIType
-
getSimpleName
public String getSimpleName()
- Specified by:
getSimpleName
in interfaceIJavaTypeInternal
-
getNamespace
public String getNamespace()
Description copied from interface:IType
The namespace for this class. For a java class this will be the package, while for other types of intrinsic types it could be another logical name.- Specified by:
getNamespace
in interfaceIType
-
isArray
public boolean isArray()
Description copied from interface:IType
True if this is an array.
-
isPrimitive
public boolean isPrimitive()
Description copied from interface:IType
True if this type represents a primitive type e.g., Java int, char, etc.- Specified by:
isPrimitive
in interfaceIType
-
makeArrayInstance
public Object makeArrayInstance(int iLength)
Description copied from interface:IType
Construct an array instance of specified length.- Specified by:
makeArrayInstance
in interfaceIType
-
isAssignableFrom
public boolean isAssignableFrom(IType type)
Description copied from interface:IType
Determines if the type represented by this intrinsic type is either the same as, or is a super-type of the type represented by the specified type parameter.- Specified by:
isAssignableFrom
in interfaceIType
-
isMutable
public boolean isMutable()
Note eventhough some classes are indeed immutable (e.g. java.lang.String) there's no such info in a java class, so we default to mutable.
-
getIntrinsicClass
public Class getIntrinsicClass()
Description copied from interface:IJavaType
Returns the java class for this java type- Specified by:
getIntrinsicClass
in interfaceIJavaType
- Returns:
- the java class for this java type
-
getBackingClassInfo
public IJavaClassInfo getBackingClassInfo()
- Specified by:
getBackingClassInfo
in interfaceIJavaBackedTypeData
- Specified by:
getBackingClassInfo
in interfaceIJavaType
-
getBackingClass
public Class getBackingClass()
- Specified by:
getBackingClass
in interfaceIHasJavaClass
-
getTypeInfo
public ITypeInfo getTypeInfo()
Description copied from interface:IType
Get the type information for this intrinsic type.- Specified by:
getTypeInfo
in interfaceIType
- See Also:
ITypeInfo
-
getAdapterClass
public IGosuClassInternal getAdapterClass()
Description copied from interface:IJavaType
Returns the Gosu proxy for this class.- Specified by:
getAdapterClass
in interfaceIJavaType
- Specified by:
getAdapterClass
in interfaceIJavaTypeInternal
-
getAdapterClassDirectly
public IGosuClassInternal getAdapterClassDirectly()
- Specified by:
getAdapterClassDirectly
in interfaceIJavaTypeInternal
-
unloadTypeInfo
public void unloadTypeInfo()
Description copied from interface:IType
Unload or nullify any references to this IType's ITypeInfo.- Specified by:
unloadTypeInfo
in interfaceIType
-
isInterface
public boolean isInterface()
Description copied from interface:IType
Returns true if this type is an interface.- Specified by:
isInterface
in interfaceIType
-
isEnum
public boolean isEnum()
Description copied from interface:IType
Returns true if this type is an enumeration.
-
getInterfaces
public IType[] getInterfaces()
- Specified by:
getInterfaces
in interfaceIType
- Returns:
- If this is a class, returns a list of all the interfaces this type implements. Similarly, if this is an interface, returns a list of all the interfaces this type extends. In any case, returns an empty list if this type neither implements nor extends interfaces.
-
getSupertype
public IType getSupertype()
Description copied from interface:IType
Returns the type representing the supertype of this type. Returns null if this type has no supertype.- Specified by:
getSupertype
in interfaceIType
-
getInnerClasses
public List<IJavaType> getInnerClasses()
- Specified by:
getInnerClasses
in interfaceIHasInnerClass
- Specified by:
getInnerClasses
in interfaceIJavaType
- Returns:
- An array of Java types reflecting all the classes and interfaces declared as members of the class represented by this Class object. These include public, protected, internal, and private classes and interfaces declared by the class, but excludes inherited classes and interfaces.
-
getInnerClass
public IType getInnerClass(CharSequence name)
Description copied from interface:IHasInnerClass
returns the appropriate inner class- Specified by:
getInnerClass
in interfaceIHasInnerClass
- Returns:
-
getSourceFileHandle
public ISourceFileHandle getSourceFileHandle()
- Specified by:
getSourceFileHandle
in interfaceIFileRepositoryBasedType
-
getLoadedInnerClasses
public List<? extends IType> getLoadedInnerClasses()
- Specified by:
getLoadedInnerClasses
in interfaceIHasInnerClass
-
getClassType
public ClassType getClassType()
- Specified by:
getClassType
in interfaceIFileRepositoryBasedType
-
getEnclosingType
public IType getEnclosingType()
Description copied from interface:IType
Returns the type immediately enclosing this type. If this type is not enclosed, returns null.- Specified by:
getEnclosingType
in interfaceIType
-
getGenericType
public IJavaTypeInternal getGenericType()
Description copied from interface:IType
If this is a parameterized type, returns the generic type this type parameterizes. Otherwise, returns null.- Specified by:
getGenericType
in interfaceIJavaType
- Specified by:
getGenericType
in interfaceIType
-
isFinal
public boolean isFinal()
Description copied from interface:IType
True if this type cannot be extended.
-
isParameterizedType
public boolean isParameterizedType()
Description copied from interface:IType
Returns true if this ia a Parameterized Type. Note a Parameterzied Type is not the same as a Generic Type. The difference is that a Parameterized Type is a concrete version of a Generic Type. For instance, the class ArrayListis a Generic Type, while the class ArrayList is a Parameterized Type of the the Generic Type ArrayList . - Specified by:
isParameterizedType
in interfaceIType
-
isGenericType
public boolean isGenericType()
Description copied from interface:IType
Returns true if this ia a Generic Type.- Specified by:
isGenericType
in interfaceIType
- See Also:
IType.isParameterizedType()
-
getGenericTypeVariables
public GenericTypeVariable[] getGenericTypeVariables()
Description copied from interface:IType
Returns an array of GenericTypeVariables declared with this Generic Type. Otherwise, returns null if this is not a Generic Type.- Specified by:
getGenericTypeVariables
in interfaceIType
-
getTypeParameters
public IType[] getTypeParameters()
Description copied from interface:IType
If this is a parameterized type, returns the specific types used to create this type, null otherwies.- Specified by:
getTypeParameters
in interfaceIType
-
getParameterizedType
public IType getParameterizedType(IType... paramTypes)
Description copied from interface:IType
Assuming this intrinsic type is a Generic type, return the parameterized type associated with the given list of type parameters. If the type has not been created yet, creates the parameterized type. Successive calls to this method having identical parameter types must return the identical parameterized type.- Specified by:
getParameterizedType
in interfaceIType
- Parameters:
paramTypes
- The type parameters.- Returns:
- The concrete type associated with the type parameters.
-
getAllTypesInHierarchy
public Set<IType> getAllTypesInHierarchy()
Description copied from interface:IType
Returns a Set of all IIntrinsicTypes that this class is assignable from, including this class. This includes implemented interfaces and superclasses, recursively up the hieararchy. For array types, this will be a Set of all types that its component type is assignable from.- Specified by:
getAllTypesInHierarchy
in interfaceIType
-
getArrayType
public IType getArrayType()
Description copied from interface:IType
Make an array type from this type. E.g., String -> String[]- Specified by:
getArrayType
in interfaceIType
-
getArrayComponent
public Object getArrayComponent(Object array, int iIndex) throws IllegalArgumentException, ArrayIndexOutOfBoundsException
Description copied from interface:IType
Returns the value of the indexed component in the specified array object.- Specified by:
getArrayComponent
in interfaceIType
- Parameters:
array
- An array instance of this intrinsic type.iIndex
- The index of the component to get.- Returns:
- The value of the indexed component in the specified array.
- Throws:
IllegalArgumentException
- If the specified object is not an array.ArrayIndexOutOfBoundsException
- If the specified index argument is negative, or if it is greater than or equal to the length of the specified array
-
setArrayComponent
public void setArrayComponent(Object array, int iIndex, Object value) throws IllegalArgumentException, ArrayIndexOutOfBoundsException
Description copied from interface:IType
Sets the value of the indexed component in the specified array object.- Specified by:
setArrayComponent
in interfaceIType
- Parameters:
array
- An array instance of this intrinsic type.iIndex
- The index of the component to set.value
- The new value of the indexed component.- Throws:
IllegalArgumentException
- If the specified object is not an array.ArrayIndexOutOfBoundsException
- If the specified index argument is negative, or if it is greater than or equal to the length of the specified array
-
getArrayLength
public int getArrayLength(Object array) throws IllegalArgumentException
Description copied from interface:IType
Returns the length of the specified array object.- Specified by:
getArrayLength
in interfaceIType
- Parameters:
array
- An array instance of this intrinsic type.- Returns:
- The length of the array.
- Throws:
IllegalArgumentException
- If the object argument is not an array.
-
getComponentType
public IJavaTypeInternal getComponentType()
Description copied from interface:IType
If this is an array type, a type representing the component type of the array. Otherwise null.- Specified by:
getComponentType
in interfaceIType
-
setComponentType
public void setComponentType(IJavaTypeInternal componentType)
- Specified by:
setComponentType
in interfaceIJavaTypeInternal
-
getTypeInfoChecksum
public int getTypeInfoChecksum()
- Specified by:
getTypeInfoChecksum
in interfaceIJavaTypeInternal
-
hasAncestorBeenUpdated
public boolean hasAncestorBeenUpdated()
- Specified by:
hasAncestorBeenUpdated
in interfaceIJavaTypeInternal
-
hasBeenUpdated
public static boolean hasBeenUpdated(IJavaTypeInternal type, int tiChecksum, Set<IType> visited)
-
writeReplace
public Object writeReplace()
- Specified by:
writeReplace
in interfaceIJavaTypeInternal
-
readResolve
public Object readResolve() throws ObjectStreamException
Description copied from interface:IType
IType requires this method be implemented to ensure IType instances can be centrally defined and cached.- Specified by:
readResolve
in interfaceIType
- Throws:
ObjectStreamException
-
isValid
public boolean isValid()
Description copied from interface:IType
Defines this type if it is not yet fully defined. For instance, if this type has source code associated with it, it must fully compile the source for it to be fully defined.
-
getModifiers
public int getModifiers()
Description copied from interface:IType
Returns the modifiers for this type, encoded in an integer. The modifiers consist of the constants forpublic
,protected
,private
,final
,static
,abstract
they should be decoded using the methods of classModifier
.- Specified by:
getModifiers
in interfaceIType
- See Also:
Modifier
-
isAbstract
public boolean isAbstract()
- Specified by:
isAbstract
in interfaceIType
-
getExplicitTypeInfo
public ITypeInfo getExplicitTypeInfo()
- Specified by:
getExplicitTypeInfo
in interfaceIJavaTypeInternal
-
setAdapterClass
public void setAdapterClass(IGosuClassInternal adapterClass)
- Specified by:
setAdapterClass
in interfaceIJavaTypeInternal
-
createAdapterClass
public IGosuClassInternal createAdapterClass()
Description copied from interface:IJavaType
Creates the Gosu proxy type for this class.- Specified by:
createAdapterClass
in interfaceIJavaType
- Returns:
- The newly created proxy type.
-
unloadTypes
public static void unloadTypes()
-
isDiscarded
public boolean isDiscarded()
Description copied from interface:IType
True if this type has been replaced with a newer version of the same name in the type system.- Specified by:
isDiscarded
in interfaceIType
-
setDiscarded
public void setDiscarded(boolean bDiscarded)
- Specified by:
setDiscarded
in interfaceIType
-
isCompoundType
public boolean isCompoundType()
- Specified by:
isCompoundType
in interfaceIType
-
getCompoundTypeComponents
public Set<IType> getCompoundTypeComponents()
- Specified by:
getCompoundTypeComponents
in interfaceIType
-
getConcreteClass
public IJavaClassInfo getConcreteClass()
- Specified by:
getConcreteClass
in interfaceIDefaultArrayType
-
getTypeFromJavaBackedType
public IType getTypeFromJavaBackedType()
- Specified by:
getTypeFromJavaBackedType
in interfaceIJavaBackedType
-
getRetainedMemory
public ObjectSize getRetainedMemory()
- Specified by:
getRetainedMemory
in interfaceIJavaType
-
getLoaderParameterizedTypes
public IType[] getLoaderParameterizedTypes()
- Specified by:
getLoaderParameterizedTypes
in interfaceIParameterizableType
-
isStrictGenerics
public boolean isStrictGenerics()
- Specified by:
isStrictGenerics
in interfaceIParameterizableType
-
getSourceFiles
public IFile[] getSourceFiles()
- Specified by:
getSourceFiles
in interfaceIType
-
isAnnotation
public boolean isAnnotation()
- Specified by:
isAnnotation
in interfaceICanBeAnnotation
-
getFunctionalInterface
public IFunctionType getFunctionalInterface()
- Specified by:
getFunctionalInterface
in interfaceIType
-
getTheRef
protected IType getTheRef()
- Overrides:
getTheRef
in classAbstractType
-
isCompilable
public boolean isCompilable()
- Specified by:
isCompilable
in interfaceIType
-
-