- java.lang.Object
-
- com.sun.tools.xjc.generator.bean.field.ContentListField
-
- All Implemented Interfaces:
FieldOutline
public class ContentListField extends Object
Realizes a property as an untypedList
.List getXXX();
Default value handling
Since unmarshaller just adds new values into the storage, we can't fill the storage by default values at the time of instanciation. (or oherwise values found in the document will be appended to default values, where it should overwrite them.)
Therefore, when the object is created, the storage will be empty. When the getXXX method is called, we'll check if the storage is modified in anyway. If it is modified, it must mean that the values are found in the document, so we just return it. Otherwise we will fill in default values and return it to the user.
When a list has default values, its dirty flag is set to true. Marshaller will check this and treat it appropriately.
- Author:
- Kohsuke Kawaguchi ([email protected])
-
-
Field Summary
Fields Modifier and Type Field Description protected JCodeModel
codeModel
protected JType
exposedType
The publicly visible type of this field.protected JFieldVar
field
The field that stores the list.protected JType
implType
The type of this field, which can hold all the possible types.protected JClass
listT
protected ClassOutlineImpl
outline
protected JPrimitiveType
primitiveType
If this collection property is a collection of a primitive type, this variable refers to that primitive type.protected CPropertyInfo
prop
-
Constructor Summary
Constructors Modifier Constructor Description protected
ContentListField(ClassOutlineImpl context, CPropertyInfo prop, JClass coreList)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected void
annotate(JAnnotatable field)
Annotate the field according to the recipes given asCPropertyInfo
.protected JExpression
castToImplType(JExpression exp)
Case fromexposedType
toimplType
if necessary.FieldAccessor
create(JExpression targetObject)
Creates a newFieldAccessor
of this field for the specified object.protected void
fixNullRef(JBlock block)
Generates statement(s) so that the successiveAbstractListField.Accessor.ref(boolean)
with true will always return a non-null list.protected void
generate()
void
generateAccessors()
Generates accessor methods.protected JFieldVar
generateField(JType type)
Generates the field declaration.protected JClass
getCoreListType()
Concrete class that implements the List interface.protected Options
getOptions()
Gets theOptions
in the current compilation context.CPropertyInfo
getPropertyInfo()
Gets the corresponding model object.JType
getRawType()
Gets the type of the "raw value".protected JType
getType(Aspect aspect)
Compute the type of aCPropertyInfo
protected List<Object>
listPossibleTypes(CPropertyInfo prop)
Returns contents to be added to javadoc.ClassOutline
parent()
Gets the enclosingClassOutline
.
-
-
-
Field Detail
-
field
protected JFieldVar field
The field that stores the list.
-
primitiveType
protected final JPrimitiveType primitiveType
If this collection property is a collection of a primitive type, this variable refers to that primitive type. Otherwise null.
-
listT
protected final JClass listT
-
outline
protected final ClassOutlineImpl outline
-
prop
protected final CPropertyInfo prop
-
codeModel
protected final JCodeModel codeModel
-
implType
protected final JType implType
The type of this field, which can hold all the possible types.
-
exposedType
protected final JType exposedType
The publicly visible type of this field. If we are generating value classes implType==exposedType.
-
-
Constructor Detail
-
ContentListField
protected ContentListField(ClassOutlineImpl context, CPropertyInfo prop, JClass coreList)
- Parameters:
coreList
- A concrete class that implements the List interface. An instance of this class will be used to store data for this field.
-
-
Method Detail
-
getCoreListType
protected final JClass getCoreListType()
Concrete class that implements the List interface. Used as the actual data storage.
-
generateAccessors
public void generateAccessors()
Generates accessor methods.
-
create
public FieldAccessor create(JExpression targetObject)
Description copied from interface:FieldOutline
Creates a newFieldAccessor
of this field for the specified object.- Parameters:
targetObject
- Evaluates to an object, and the field on this object will be accessed.
-
getType
protected JType getType(Aspect aspect)
Compute the type of aCPropertyInfo
-
generate
protected final void generate()
-
fixNullRef
protected final void fixNullRef(JBlock block)
Generates statement(s) so that the successiveAbstractListField.Accessor.ref(boolean)
with true will always return a non-null list. This is useful to avoid generating redundant internal getter.
-
getRawType
public JType getRawType()
Description copied from interface:FieldOutline
Gets the type of the "raw value".This type can represent the entire value of this field. For fields that can carry multiple values, this is an array.
This type allows the client of the outline to generate code to set/get values from a property.
-
parent
public final ClassOutline parent()
Description copied from interface:FieldOutline
Gets the enclosingClassOutline
.- Specified by:
parent
in interfaceFieldOutline
-
getPropertyInfo
public final CPropertyInfo getPropertyInfo()
Description copied from interface:FieldOutline
Gets the corresponding model object.- Specified by:
getPropertyInfo
in interfaceFieldOutline
-
annotate
protected void annotate(JAnnotatable field)
Annotate the field according to the recipes given asCPropertyInfo
.
-
getOptions
protected final Options getOptions()
Gets theOptions
in the current compilation context.
-
castToImplType
protected final JExpression castToImplType(JExpression exp)
Case fromexposedType
toimplType
if necessary.
-
listPossibleTypes
protected final List<Object> listPossibleTypes(CPropertyInfo prop)
Returns contents to be added to javadoc.
-
-