com.sun.tools.xjc.model
Class CEnumLeafInfo

java.lang.Object
  extended by com.sun.tools.xjc.model.CEnumLeafInfo
All Implemented Interfaces:
CCustomizable, CNonElement, CTypeInfo, NClass, NType, TypeUse, EnumLeafInfo<NType,NClass>, LeafInfo<NType,NClass>, MaybeElement<NType,NClass>, NonElement<NType,NClass>, TypeInfo<NType,NClass>

public final class CEnumLeafInfo
extends java.lang.Object
implements EnumLeafInfo<NType,NClass>, NClass, CNonElement

Transducer that converts a string into an "enumeration class." The structure of the generated class needs to precisely follow the JAXB spec.


Field Summary
 CNonElement base
          Represents the underlying type of this enumeration and its conversion.
 java.lang.String javadoc
           
 java.util.Collection<CEnumConstant> members
          List of enum members.
 Model model
          The Model object to which this bean belongs.
 CClassInfoParent parent
          The parent into which the enum class should be generated.
 java.lang.String shortName
          Short name of the generated type-safe enum.
 
Fields inherited from interface com.sun.xml.bind.v2.model.core.NonElement
ANYTYPE_NAME
 
Constructor Summary
CEnumLeafInfo(Model model, javax.xml.namespace.QName typeName, CClassInfoParent container, java.lang.String shortName, CNonElement base, java.util.Collection<CEnumConstant> _members, com.sun.xml.xsom.XSComponent source, CCustomizations customizations, org.xml.sax.Locator _sourceLocator)
           
 
Method Summary
 Element<NType,NClass> asElement()
          Returns the Element aspect of this ClassInfo.
 boolean canBeReferencedByIDREF()
          Deprecated. why are you calling the method whose return value is known?
 com.sun.codemodel.JExpression createConstant(Outline outline, com.sun.xml.xsom.XmlString literal)
          Creates a constant for the given lexical value.
 java.lang.String fullName()
          Human readable name of this type.
 CAdapter getAdapterUse()
          Deprecated. 
 NonElement<NType,NClass> getBaseType()
          Returns the base type of the enumeration.
 NClass getClazz()
          The same as TypeInfo.getType() but an EnumLeafInfo is guaranteed to represent an enum declaration, which is a kind of a class declaration.
 java.util.Collection<CEnumConstant> getConstants()
          Returns the read-only list of enumeration constants.
 CCustomizations getCustomizations()
          Gets the list of customizations attached to this model component.
 javax.xml.namespace.QName getElementName()
          Gets the element name of the class, if the class is bound to an element.
 javax.activation.MimeType getExpectedMimeType()
          A TypeUse can have an associated MIME type.
 CNonElement getInfo()
          Deprecated. 
 Location getLocation()
           
 org.xml.sax.Locator getLocator()
          Source line information that points to the place where this type-safe enum is defined.
 com.sun.xml.xsom.XSComponent getSchemaComponent()
          If this model object is built from XML Schema, this property returns a schema component from which the model is built.
 NType getType()
          Gets the underlying Java type that object represents.
 javax.xml.namespace.QName getTypeName()
          Gets the primary XML type ANYTYPE_NAME of the class.
 Locatable getUpstream()
           
 ID idUse()
          Whether the referenced type (individual item type in case of collection) is ID/IDREF.
 boolean isAbstract()
           
 boolean isBoxedType()
          Returns true iff this type represents a class that has a unboxed form.
 boolean isCollection()
          Deprecated. 
 boolean isElement()
          If the class is bound to an element, return true.
 boolean isPrimitive()
           
 boolean isSimpleType()
          Returns true if this NonElement maps to text in XML, without any attribute nor child elements.
 boolean needsValueField()
          The spec says the value field in the enum class will be generated only under certain circumstances.
 com.sun.codemodel.JClass toType(Outline o, Aspect aspect)
          Returns the representation of this type in code model.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

model

public final Model model
The Model object to which this bean belongs.


parent

public final CClassInfoParent parent
The parent into which the enum class should be generated.


shortName

public final java.lang.String shortName
Short name of the generated type-safe enum.


base

public final CNonElement base
Represents the underlying type of this enumeration and its conversion.

To parse XML into a constant, we use the base type to do lexical -> value, then use a map to pick up the right one.

Hence this also represents the type of the Java value. For example, if this is an enumeration of xs:int, then this field will be Java int.


members

public final java.util.Collection<CEnumConstant> members
List of enum members.


javadoc

public java.lang.String javadoc
Constructor Detail

CEnumLeafInfo

public CEnumLeafInfo(Model model,
                     javax.xml.namespace.QName typeName,
                     CClassInfoParent container,
                     java.lang.String shortName,
                     CNonElement base,
                     java.util.Collection<CEnumConstant> _members,
                     com.sun.xml.xsom.XSComponent source,
                     CCustomizations customizations,
                     org.xml.sax.Locator _sourceLocator)
Method Detail

getLocator

public org.xml.sax.Locator getLocator()
Source line information that points to the place where this type-safe enum is defined. Used to report error messages.

Specified by:
getLocator in interface CCustomizable
Returns:
never null.

getTypeName

public javax.xml.namespace.QName getTypeName()
Description copied from interface: NonElement
Gets the primary XML type ANYTYPE_NAME of the class.

A Java type can be mapped to multiple XML types, but one of them is considered "primary" and used when we generate a schema.

Specified by:
getTypeName in interface NonElement<NType,NClass>
Returns:
null if the object doesn't have an explicit type ANYTYPE_NAME (AKA anonymous.)

getType

public NType getType()
Description copied from interface: TypeInfo
Gets the underlying Java type that object represents.

Specified by:
getType in interface TypeInfo<NType,NClass>
Returns:
always non-null.

canBeReferencedByIDREF

public boolean canBeReferencedByIDREF()
Deprecated. why are you calling the method whose return value is known?

Description copied from interface: TypeInfo
True if this type is a valid target from a property annotated with XmlIDREF.

Specified by:
canBeReferencedByIDREF in interface TypeInfo<NType,NClass>

isElement

public boolean isElement()
Description copied from interface: MaybeElement
If the class is bound to an element, return true.

Note that when this is true, the class is bound to both an element and a type.

Specified by:
isElement in interface MaybeElement<NType,NClass>

getElementName

public javax.xml.namespace.QName getElementName()
Description copied from interface: MaybeElement
Gets the element name of the class, if the class is bound to an element.

Specified by:
getElementName in interface MaybeElement<NType,NClass>
Returns:
non-null iff MaybeElement.isElement().

asElement

public Element<NType,NClass> asElement()
Description copied from interface: MaybeElement
Returns the Element aspect of this ClassInfo.

Specified by:
asElement in interface MaybeElement<NType,NClass>
Returns:
null if MaybeElement.isElement()==false, non-null if MaybeElement.isElement()==true.

getClazz

public NClass getClazz()
Description copied from interface: EnumLeafInfo
The same as TypeInfo.getType() but an EnumLeafInfo is guaranteed to represent an enum declaration, which is a kind of a class declaration.

Specified by:
getClazz in interface EnumLeafInfo<NType,NClass>
Returns:
always non-null.

getSchemaComponent

public com.sun.xml.xsom.XSComponent getSchemaComponent()
Description copied from interface: CCustomizable
If this model object is built from XML Schema, this property returns a schema component from which the model is built.

Specified by:
getSchemaComponent in interface CCustomizable
Returns:
null if the model is built from sources other than XML Schema (such as DTD.)

toType

public com.sun.codemodel.JClass toType(Outline o,
                                       Aspect aspect)
Description copied from interface: NType
Returns the representation of this type in code model.

This operation requires the whole model to be built, and hence it takes Outline.

Under some code generation strategy, some bean classes are considered implementation specific (such as impl.FooImpl class) These classes always have accompanying "exposed" type (such as the Foo interface).

For such Jekyll and Hyde type, the aspect parameter determines which personality is returned.

Specified by:
toType in interface CTypeInfo
Specified by:
toType in interface NClass
Specified by:
toType in interface NType
aspect - If Aspect.IMPLEMENTATION, this method returns the implementation specific class that this type represents. If Aspect.EXPOSED, this method returns the publicly exposed type that this type represents. For ordinary classes, the aspect parameter is meaningless.
See Also:
NType.toType(Outline, Aspect)

isAbstract

public boolean isAbstract()
Specified by:
isAbstract in interface NClass

isBoxedType

public boolean isBoxedType()
Description copied from interface: NType
Returns true iff this type represents a class that has a unboxed form. For example, for String this is false, but for Integer this is true.

Specified by:
isBoxedType in interface NType

fullName

public java.lang.String fullName()
Description copied from interface: NType
Human readable name of this type.

Specified by:
fullName in interface NType

isPrimitive

public boolean isPrimitive()

isSimpleType

public boolean isSimpleType()
Description copied from interface: NonElement
Returns true if this NonElement maps to text in XML, without any attribute nor child elements.

Specified by:
isSimpleType in interface NonElement<NType,NClass>

needsValueField

public boolean needsValueField()
The spec says the value field in the enum class will be generated only under certain circumstances.

Returns:
true if the generated enum class should have the value field.

createConstant

public com.sun.codemodel.JExpression createConstant(Outline outline,
                                                    com.sun.xml.xsom.XmlString literal)
Description copied from interface: TypeUse
Creates a constant for the given lexical value.

For example, to create a constant 1 for xs:int, you'd do:

 CBuiltinLeafInfo.INT.createConstant( codeModel, "1", null );
 

This method is invoked at the backend as a part of the code generation process.

Specified by:
createConstant in interface TypeUse
Returns:
null if the constant cannot be created for this TypeUse (such as when it's a collection)

isCollection

@Deprecated
public boolean isCollection()
Deprecated. 

Description copied from interface: CNonElement
Guaranteed to return false.

Specified by:
isCollection in interface CNonElement
Specified by:
isCollection in interface TypeUse

getAdapterUse

@Deprecated
public CAdapter getAdapterUse()
Deprecated. 

Description copied from interface: CNonElement
Guaranteed to return null.

Specified by:
getAdapterUse in interface CNonElement
Specified by:
getAdapterUse in interface TypeUse

getInfo

@Deprecated
public CNonElement getInfo()
Deprecated. 

Description copied from interface: CNonElement
Guaranteed to return this.

Specified by:
getInfo in interface CNonElement
Specified by:
getInfo in interface TypeUse

idUse

public ID idUse()
Description copied from interface: TypeUse
Whether the referenced type (individual item type in case of collection) is ID/IDREF.

ID is a property of a relationship. When a bean Foo has an ID property called 'bar' whose type is String, Foo isn't an ID, String isn't an ID, but this relationship is an ID (in the sense that Foo uses this String as an ID.)

The same thing can be said with IDREF. When Foo refers to Bar by means of IDREF, neither Foo nor Bar is IDREF.

That's why we have this method in TypeUse.

Specified by:
idUse in interface TypeUse

getExpectedMimeType

public javax.activation.MimeType getExpectedMimeType()
Description copied from interface: TypeUse
A TypeUse can have an associated MIME type.

Specified by:
getExpectedMimeType in interface TypeUse

getConstants

public java.util.Collection<CEnumConstant> getConstants()
Description copied from interface: EnumLeafInfo
Returns the read-only list of enumeration constants.

Specified by:
getConstants in interface EnumLeafInfo<NType,NClass>
Returns:
never null. Can be empty (really?).

getBaseType

public NonElement<NType,NClass> getBaseType()
Description copied from interface: EnumLeafInfo
Returns the base type of the enumeration.

For example, with the following enum class, this method returns BuiltinLeafInfo for Integer.

 &XmlEnum(Integer.class)
 enum Foo {
   &XmlEnumValue("1")
   ONE,
   &XmlEnumValue("2")
   TWO
 }
 

Specified by:
getBaseType in interface EnumLeafInfo<NType,NClass>
Returns:
never null.

getCustomizations

public CCustomizations getCustomizations()
Description copied from interface: CCustomizable
Gets the list of customizations attached to this model component.

Specified by:
getCustomizations in interface CCustomizable
Returns:
can be an empty list but never be null. The returned list is read-only. Do not modify.
See Also:
Plugin.getCustomizationURIs()

getUpstream

public Locatable getUpstream()

getLocation

public Location getLocation()