Class DummyListField
- java.lang.Object
-
- com.sun.tools.xjc.generator.bean.field.DummyListField
-
- All Implemented Interfaces:
FieldOutline
public class DummyListField 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 (kohsuke.kawaguchi@sun.com)
-
-
Field Summary
Fields Modifier and Type Field Description protected JCodeModelcodeModelprotected JTypeexposedTypeThe publicly visible type of this field.protected JFieldVarfieldThe field that stores the list.protected JTypeimplTypeThe type of this field, which can hold all the possible types.protected JClasslistTprotected ClassOutlineImploutlineprotected JPrimitiveTypeprimitiveTypeIf this collection property is a collection of a primitive type, this variable refers to that primitive type.protected CPropertyInfoprop
-
Constructor Summary
Constructors Modifier Constructor Description protectedDummyListField(ClassOutlineImpl context, CPropertyInfo prop, JClass coreList)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidannotate(JAnnotatable field)Annotate the field according to the recipes given asCPropertyInfo.protected JExpressioncastToImplType(JExpression exp)Case fromexposedTypetoimplTypeif necessary.com.sun.tools.xjc.generator.bean.field.DummyListField.Accessorcreate(JExpression targetObject)Creates a newFieldAccessorof this field for the specified object.protected voidfixNullRef(JBlock block)Generates statement(s) so that the successiveAbstractListField.Accessor.ref(boolean)with true will always return a non-null list.protected voidgenerate()voidgenerateAccessors()Generates accessor methods.protected JFieldVargenerateField(JType type)Generates the field declaration.protected JClassgetCoreListType()Concrete class that implements the List interface.protected OptionsgetOptions()Gets theOptionsin the current compilation context.CPropertyInfogetPropertyInfo()Gets the corresponding model object.JTypegetRawType()Gets the type of the "raw value".protected JTypegetType(Aspect aspect)Compute the type of aCPropertyInfoprotected List<Object>listPossibleTypes(CPropertyInfo prop)Returns contents to be added to javadoc.ClassOutlineparent()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
-
DummyListField
protected DummyListField(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
-
annotate
protected void annotate(JAnnotatable field)
Annotate the field according to the recipes given asCPropertyInfo.
-
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 com.sun.tools.xjc.generator.bean.field.DummyListField.Accessor create(JExpression targetObject)
Description copied from interface:FieldOutlineCreates a newFieldAccessorof this field for the specified object.- Parameters:
targetObject- Evaluates to an object, and the field on this object will be accessed.
-
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:FieldOutlineGets 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:FieldOutlineGets the enclosingClassOutline.- Specified by:
parentin interfaceFieldOutline
-
getPropertyInfo
public final CPropertyInfo getPropertyInfo()
Description copied from interface:FieldOutlineGets the corresponding model object.- Specified by:
getPropertyInfoin interfaceFieldOutline
-
getOptions
protected final Options getOptions()
Gets theOptionsin the current compilation context.
-
castToImplType
protected final JExpression castToImplType(JExpression exp)
Case fromexposedTypetoimplTypeif necessary.
-
getType
protected JType getType(Aspect aspect)
Compute the type of aCPropertyInfo- Parameters:
aspect-
-
listPossibleTypes
protected final List<Object> listPossibleTypes(CPropertyInfo prop)
Returns contents to be added to javadoc.
-
-