Package gw.internal.gosu.parser
Class JavaPropertyInfo
java.lang.Object
gw.lang.reflect.BaseFeatureInfo
gw.internal.gosu.parser.JavaBaseFeatureInfo
gw.internal.gosu.parser.JavaPropertyInfo
- All Implemented Interfaces:
IAnnotatedFeatureInfo
,IAttributedFeatureInfo
,IFeatureInfo
,IIntrinsicTypeReference
,IMethodBackedPropertyInfo
,IPropertyInfo
,IJavaBasePropertyInfo
,IJavaPropertyInfo
- Direct Known Subclasses:
LengthProperty
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
IAnnotatedFeatureInfo.IAnnotationInfoHelper
Nested classes/interfaces inherited from interface gw.lang.reflect.IAttributedFeatureInfo
IAttributedFeatureInfo.MODIFIER
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate IPropertyAccessor
private LockingLazyVar<IJavaAnnotatedElement>
private IType
private boolean
private Boolean
private IJavaClassMethod
private String
private IJavaPropertyDescriptor
private IPresentationInfo
private IType
private IJavaClassField
private IJavaClassMethod
Fields inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
ANNOTATION_HELPER
-
Constructor Summary
ConstructorsModifierConstructorDescription(package private)
JavaPropertyInfo
(IFeatureInfo container, IJavaPropertyDescriptor pd) private
JavaPropertyInfo
(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType) private
JavaPropertyInfo
(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType, IPresentationInfo presInfo) -
Method Summary
Modifier and TypeMethodDescriptionprivate void
findFieldOn
(IJavaClassInfo clazz, boolean setter) protected IJavaAnnotatedElement
The type this feature can be assigned from.private IJavaClassInfo
A full description of this feature.Gets the display name of this feature.The type of this feature e.g., for a property this is the property's type.getName()
Gets the programmatic name or identifier of this feature.private IType
private IType[]
getTypesFromClasses
(IJavaClassInfo[] types) private void
boolean
protected boolean
boolean
boolean
isFinal()
protected boolean
boolean
True if this feature is internal.boolean
True if this feature is private.boolean
True if this feature is protected.boolean
isPublic()
True if this feature is public.boolean
boolean
isStatic()
True if this feature is static, meaning the feature is not specific to a particular instance of the feature's containing type.protected boolean
isVisibleViaFeatureDescriptor
(IScriptabilityModifier constraint) boolean
boolean
isWritable
(IType whosAskin) static IJavaPropertyInfo
newInstance
(IFeatureInfo container, IJavaPropertyDescriptor pd) static IJavaPropertyInfo
newInstance
(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType) static IJavaPropertyInfo
newInstance
(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType, IPresentationInfo presInfo) toString()
Methods inherited from class gw.internal.gosu.parser.JavaBaseFeatureInfo
isHidden, isVisible, makeDeprecated
Methods inherited from class gw.lang.reflect.BaseFeatureInfo
getAnnotation, getAnnotations, getAnnotationsOfType, getContainer, getOwnersType, getParamTypes, getSuperAnnotatedElements, hasAnnotation, hasDeclaredAnnotation, isDefaultImpl, isInternalAPI, isReified, isScriptable
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface gw.lang.reflect.IAnnotatedFeatureInfo
getAnnotation, getAnnotations, getAnnotationsOfType, hasAnnotation, hasDeclaredAnnotation, isDefaultImpl
Methods inherited from interface gw.lang.reflect.IAttributedFeatureInfo
isHidden, isReified, isScriptable, isVisible
Methods inherited from interface gw.lang.reflect.IFeatureInfo
getContainer, getOwnersType
Methods inherited from interface gw.lang.reflect.IPropertyInfo
isReadable
-
Field Details
-
_pd
-
_propertyTypeWithTypeVars
-
_assignablePropertyTypeWithTypeVars
-
_accessor
-
_bStatic
-
_bReadable
private boolean _bReadable -
_getMethod
-
_setMethod
-
_publicField
-
_presInfo
-
_name
-
_annotatedElement
-
-
Constructor Details
-
JavaPropertyInfo
JavaPropertyInfo(IFeatureInfo container, IJavaPropertyDescriptor pd) - Parameters:
container
- Typically this will be the containing ITypeInfopd
- The property descriptor (from BeanInfo)
-
JavaPropertyInfo
-
JavaPropertyInfo
private JavaPropertyInfo(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType, IPresentationInfo presInfo)
-
-
Method Details
-
newInstance
-
newInstance
public static IJavaPropertyInfo newInstance(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType) -
newInstance
public static IJavaPropertyInfo newInstance(IFeatureInfo container, IJavaPropertyDescriptor pd, IType propertyType, IPresentationInfo presInfo) -
initFlags
private void initFlags() -
findFieldOn
-
getFeatureType
Description copied from interface:IIntrinsicTypeReference
The type of this feature e.g., for a property this is the property's type.- Specified by:
getFeatureType
in interfaceIIntrinsicTypeReference
-
getAssignableFeatureType
Description copied from interface:IIntrinsicTypeReference
The type this feature can be assigned from. Most of the time this is the same type as getFeatureType(), however it can be different and when it is it should almost always be contravariant with getFeatureType(). A property setter method is the primary use-case. For instance:interface Foo { property Name: CharSequence } class FooImpl implements Foo { var _name: String override property get Name(): String { return _name } override property set Name( cs: CharSequence ) { _name = cs.toString() } }
Here FooImpl overrides Foo's Name property with covariance on the getter's return type. This establishes that Name wrt FooImpl is of type String. Yet Foo's setter method must be overridden as-is, a method cannot override another method with covariant parameters. So, in terms of FooImpl's Name property, the setter method is contravariant with String, which again is Name's type wrt of FooImpl. Therefore, FooImpl's Name property should implement getAssignableFeatureType() and return CharSequence.- Specified by:
getAssignableFeatureType
in interfaceIIntrinsicTypeReference
-
getTypeFromMethod
-
getDeclaringClass
-
isReadable
public boolean isReadable()- Specified by:
isReadable
in interfaceIPropertyInfo
- Returns:
- true if the property is readable given the visibility constraint passed in, false otherwise.
-
isWritable
- Specified by:
isWritable
in interfaceIPropertyInfo
- Parameters:
whosAskin
- The type querying the property writability. For example, passing in the type the property is on will allow properties that have private access in the setter to be written to. Passing in an unrelated type will only allow properties that are to be written to.- Returns:
- True if the property is writable given the visibility constraint passed in, false otherwise.
-
isWritable
public boolean isWritable()- Specified by:
isWritable
in interfaceIPropertyInfo
- Returns:
- True if the property is writable given the visibility constraint passed in, false otherwise.
-
getDeclaredAnnotations
- Specified by:
getDeclaredAnnotations
in interfaceIAnnotatedFeatureInfo
- Overrides:
getDeclaredAnnotations
in classJavaBaseFeatureInfo
- Returns:
- A map of AnnotationInfo objects by type representing all the annotations associated with this feature, or an empty map if there are no annotations.
-
getMethodDocs
- Specified by:
getMethodDocs
in interfaceIJavaPropertyInfo
-
getReturnDescription
- Specified by:
getReturnDescription
in interfaceIJavaBasePropertyInfo
-
isStatic
public boolean isStatic()Description copied from interface:IAttributedFeatureInfo
True if this feature is static, meaning the feature is not specific to a particular instance of the feature's containing type.- Specified by:
isStatic
in interfaceIAttributedFeatureInfo
-
isPrivate
public boolean isPrivate()Description copied from interface:IAttributedFeatureInfo
True if this feature is private. Private features are only accessible from within the type that owns them.- Specified by:
isPrivate
in interfaceIAttributedFeatureInfo
- Overrides:
isPrivate
in classBaseFeatureInfo
-
isInternal
public boolean isInternal()Description copied from interface:IAttributedFeatureInfo
True if this feature is internal. Internal features are accessible from within the type that owns them and from other types in the same namespace.- Specified by:
isInternal
in interfaceIAttributedFeatureInfo
- Overrides:
isInternal
in classBaseFeatureInfo
-
isProtected
public boolean isProtected()Description copied from interface:IAttributedFeatureInfo
True if this feature is protected. Protected features are accessible from within the type that owns them and from derived containers.- Specified by:
isProtected
in interfaceIAttributedFeatureInfo
- Overrides:
isProtected
in classBaseFeatureInfo
-
isPublic
public boolean isPublic()Description copied from interface:IAttributedFeatureInfo
True if this feature is public. Public features are not restricted.- Specified by:
isPublic
in interfaceIAttributedFeatureInfo
- Overrides:
isPublic
in classBaseFeatureInfo
-
isAbstract
public boolean isAbstract()- Specified by:
isAbstract
in interfaceIAttributedFeatureInfo
- Overrides:
isAbstract
in classBaseFeatureInfo
-
isFinal
public boolean isFinal()- Specified by:
isFinal
in interfaceIAttributedFeatureInfo
- Overrides:
isFinal
in classBaseFeatureInfo
-
getAnnotatedElement
- Specified by:
getAnnotatedElement
in classJavaBaseFeatureInfo
-
isVisibleViaFeatureDescriptor
- Specified by:
isVisibleViaFeatureDescriptor
in classJavaBaseFeatureInfo
-
isHiddenViaFeatureDescriptor
protected boolean isHiddenViaFeatureDescriptor()- Specified by:
isHiddenViaFeatureDescriptor
in classJavaBaseFeatureInfo
-
isDefaultEnumFeature
protected boolean isDefaultEnumFeature()- Specified by:
isDefaultEnumFeature
in classJavaBaseFeatureInfo
-
isDeprecated
public boolean isDeprecated()- Specified by:
isDeprecated
in interfaceIAnnotatedFeatureInfo
- Overrides:
isDeprecated
in classBaseFeatureInfo
- Returns:
- True if this feature is deprecated.
-
getDeprecatedReason
- Specified by:
getDeprecatedReason
in interfaceIAnnotatedFeatureInfo
- Overrides:
getDeprecatedReason
in classBaseFeatureInfo
- Returns:
- The deprecation message, or null if the feature is not deprecated.
-
getAccessor
- Specified by:
getAccessor
in interfaceIPropertyInfo
- Returns:
- the PropertyAccessor (for getting and setting) this property.
-
getPresentationInfo
- Specified by:
getPresentationInfo
in interfaceIPropertyInfo
-
getName
Description copied from interface:IFeatureInfo
Gets the programmatic name or identifier of this feature. Note this name should follow Java identifier naming conventions (alpha-num and underscores, but can't start with a digit).- Specified by:
getName
in interfaceIFeatureInfo
-
getDisplayName
Description copied from interface:IFeatureInfo
Gets the display name of this feature. There is no guarantee this display name is localized.- Specified by:
getDisplayName
in interfaceIFeatureInfo
- Overrides:
getDisplayName
in classBaseFeatureInfo
-
getShortDescription
- Specified by:
getShortDescription
in interfaceIJavaPropertyInfo
-
getDescription
Description copied from interface:IFeatureInfo
A full description of this feature.- Specified by:
getDescription
in interfaceIFeatureInfo
- Overrides:
getDescription
in classBaseFeatureInfo
-
getReadMethodInfo
- Specified by:
getReadMethodInfo
in interfaceIJavaPropertyInfo
- Specified by:
getReadMethodInfo
in interfaceIMethodBackedPropertyInfo
-
getPublicField
- Specified by:
getPublicField
in interfaceIJavaPropertyInfo
-
getWriteMethodInfo
- Specified by:
getWriteMethodInfo
in interfaceIJavaPropertyInfo
- Specified by:
getWriteMethodInfo
in interfaceIMethodBackedPropertyInfo
-
getTypesFromClasses
-
toString
- Overrides:
toString
in classBaseFeatureInfo
-
getPropertyDescriptor
- Specified by:
getPropertyDescriptor
in interfaceIJavaPropertyInfo
-
getLocationInfo
- Specified by:
getLocationInfo
in interfaceIFeatureInfo
-