com.sun.tools.xjc.generator.bean.field
Class DummyListField

java.lang.Object
  extended by com.sun.tools.xjc.generator.bean.field.DummyListField
All Implemented Interfaces:
FieldOutline

public class DummyListField
extends java.lang.Object

Realizes a property as an untyped List.

 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.


Field Summary
protected  com.sun.codemodel.JCodeModel codeModel
           
protected  com.sun.codemodel.JType exposedType
          The publicly visible type of this field.
protected  com.sun.codemodel.JFieldVar field
          The field that stores the list.
protected  com.sun.codemodel.JType implType
          The type of this field, which can hold all the possible types.
protected  com.sun.codemodel.JClass listT
           
protected  ClassOutlineImpl outline
           
protected  com.sun.codemodel.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
protected DummyListField(ClassOutlineImpl context, CPropertyInfo prop, com.sun.codemodel.JClass coreList)
           
 
Method Summary
protected  void annotate(com.sun.codemodel.JAnnotatable field)
          Annotate the field according to the recipes given as CPropertyInfo.
protected  com.sun.codemodel.JExpression castToImplType(com.sun.codemodel.JExpression exp)
          Case from exposedType to implType if necessary.
 com.sun.tools.xjc.generator.bean.field.DummyListField.Accessor create(com.sun.codemodel.JExpression targetObject)
          Creates a new FieldAccessor of this field for the specified object.
protected  void fixNullRef(com.sun.codemodel.JBlock block)
          Generates statement(s) so that the successive Accessor#ref(boolean) with true will always return a non-null list.
protected  void generate()
           
 void generateAccessors()
          Generates accessor methods.
protected  com.sun.codemodel.JFieldVar generateField(com.sun.codemodel.JType type)
          Generates the field declaration.
protected  com.sun.codemodel.JClass getCoreListType()
          Concrete class that implements the List interface.
protected  Options getOptions()
          Gets the Options in the current compilation context.
 CPropertyInfo getPropertyInfo()
          Gets the corresponding model object.
 com.sun.codemodel.JType getRawType()
          Gets the type of the "raw value".
protected  com.sun.codemodel.JType getType(Aspect aspect)
          Compute the type of a CPropertyInfo
protected  java.util.List<java.lang.Object> listPossibleTypes(CPropertyInfo prop)
          Returns contents to be added to javadoc.
 ClassOutline parent()
          Gets the enclosing ClassOutline.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

field

protected com.sun.codemodel.JFieldVar field
The field that stores the list.


primitiveType

protected final com.sun.codemodel.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 com.sun.codemodel.JClass listT

outline

protected final ClassOutlineImpl outline

prop

protected final CPropertyInfo prop

codeModel

protected final com.sun.codemodel.JCodeModel codeModel

implType

protected final com.sun.codemodel.JType implType
The type of this field, which can hold all the possible types.


exposedType

protected final com.sun.codemodel.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,
                         com.sun.codemodel.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(com.sun.codemodel.JAnnotatable field)
Annotate the field according to the recipes given as CPropertyInfo.


getCoreListType

protected final com.sun.codemodel.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(com.sun.codemodel.JExpression targetObject)
Description copied from interface: FieldOutline
Creates a new FieldAccessor of 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(com.sun.codemodel.JBlock block)
Generates statement(s) so that the successive Accessor#ref(boolean) with true will always return a non-null list. This is useful to avoid generating redundant internal getter.


getRawType

public com.sun.codemodel.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 enclosing ClassOutline.

Specified by:
parent in interface FieldOutline

getPropertyInfo

public final CPropertyInfo getPropertyInfo()
Description copied from interface: FieldOutline
Gets the corresponding model object.

Specified by:
getPropertyInfo in interface FieldOutline

getOptions

protected final Options getOptions()
Gets the Options in the current compilation context.


generateField

protected final com.sun.codemodel.JFieldVar generateField(com.sun.codemodel.JType type)
Generates the field declaration.


castToImplType

protected final com.sun.codemodel.JExpression castToImplType(com.sun.codemodel.JExpression exp)
Case from exposedType to implType if necessary.


getType

protected com.sun.codemodel.JType getType(Aspect aspect)
Compute the type of a CPropertyInfo

Parameters:
aspect -

listPossibleTypes

protected final java.util.List<java.lang.Object> listPossibleTypes(CPropertyInfo prop)
Returns contents to be added to javadoc.