com.sun.tools.xjc.reader.xmlschema.bindinfo

Class BIProperty

final class BIProperty extends AbstractDeclarationImpl

Property customization. This customization turns an arbitrary schema component into a Java property (some restrictions apply.)

All the getter methods (such as getBaseType or getBindStyle) honors the delegation chain of property customization specified in the spec. Namely, if two property customizations are attached to an attribute use and an attribute decl, then anything unspecified in the attribute use defaults to attribute decl.

Property customizations are acknowledged (1) when they are actually used, and (2) when they are given at the component, which is mapped to a class. (so-called "point of declaration" customization)

Field Summary
BIProperty.BaseTypeBeanbaseType
CollectionTypeAttributecollectionType
BooleangenerateElementProperty
booleangenerateFailFastSetterMethod
BooleanisConstantProperty
Stringjavadoc
Stringname
static QNameNAME
Name of this declaration.
OptionalPropertyModeoptionalProperty
Constructor Summary
BIProperty(Locator loc, String _propName, String _javadoc, BIProperty.BaseTypeBean _baseType, CollectionTypeAttribute collectionType, Boolean isConst, OptionalPropertyMode optionalProperty, Boolean genElemProp)
protected BIProperty()
Method Summary
CAttributePropertyInfocreateAttributeProperty(XSAttributeUse use, TypeUse tu)
CReferencePropertyInfocreateContentExtendedMixedReferenceProperty(String defaultName, XSComponent source, RawTypeSet types)
CReferencePropertyInfocreateDummyExtendedMixedReferenceProperty(String defaultName, XSComponent source, RawTypeSet types)
CPropertyInfocreateElementOrReferenceProperty(String defaultName, boolean forConstant, XSParticle source, RawTypeSet types)
CElementPropertyInfocreateElementProperty(String defaultName, boolean forConstant, XSParticle source, RawTypeSet types)
CReferencePropertyInfocreateReferenceProperty(String defaultName, boolean forConstant, XSComponent source, RawTypeSet types, boolean isMixed, boolean dummy, boolean content, boolean isMixedExtended)
CValuePropertyInfocreateValueProperty(String defaultName, boolean forConstant, XSComponent source, TypeUse tu, QName typeName)
JTypegetBaseType()
Collection<BIDeclaration>getChildren()
CollectionTypeAttributegetCollectionType()
Gets the realization of this field.
BIConversiongetConv()
static BIPropertygetCustomization(XSComponent c)
Finds a property customization that describes how the given component should be mapped to a property (if it's mapped to a property at all.)
protected BIPropertygetDefault()
Finds a BIProperty which this object should delegate to.
StringgetJavadoc()
Gets the associated javadoc.
QNamegetName()
OptionalPropertyModegetOptionalPropertyMode()
StringgetPropertyName(boolean forConstant)
Returns the customized property name.
booleanisConstantProperty()
Gets the inherited value of the "fixedAttrToConstantProperty" customization.
voidmarkAsAcknowledged()
voidsetGenerateIsSetMethod(boolean b)
voidsetParent(BindInfo parent)

Field Detail

baseType

BIProperty.BaseTypeBean baseType

collectionType

CollectionTypeAttribute collectionType

generateElementProperty

Boolean generateElementProperty

generateFailFastSetterMethod

boolean generateFailFastSetterMethod

isConstantProperty

Boolean isConstantProperty

javadoc

String javadoc

name

String name

NAME

public static final QName NAME
Name of this declaration.

optionalProperty

OptionalPropertyMode optionalProperty

Constructor Detail

BIProperty

public BIProperty(Locator loc, String _propName, String _javadoc, BIProperty.BaseTypeBean _baseType, CollectionTypeAttribute collectionType, Boolean isConst, OptionalPropertyMode optionalProperty, Boolean genElemProp)

BIProperty

protected BIProperty()

Method Detail

createAttributeProperty

public CAttributePropertyInfo createAttributeProperty(XSAttributeUse use, TypeUse tu)

createContentExtendedMixedReferenceProperty

public CReferencePropertyInfo createContentExtendedMixedReferenceProperty(String defaultName, XSComponent source, RawTypeSet types)

createDummyExtendedMixedReferenceProperty

public CReferencePropertyInfo createDummyExtendedMixedReferenceProperty(String defaultName, XSComponent source, RawTypeSet types)

createElementOrReferenceProperty

public CPropertyInfo createElementOrReferenceProperty(String defaultName, boolean forConstant, XSParticle source, RawTypeSet types)

createElementProperty

public CElementPropertyInfo createElementProperty(String defaultName, boolean forConstant, XSParticle source, RawTypeSet types)

Parameters: defaultName If the name is not customized, this name will be used as the default. Note that the name conversion MUST be applied before this method is called if necessary. source Source schema component from which a field is built.

createReferenceProperty

public CReferencePropertyInfo createReferenceProperty(String defaultName, boolean forConstant, XSComponent source, RawTypeSet types, boolean isMixed, boolean dummy, boolean content, boolean isMixedExtended)

createValueProperty

public CValuePropertyInfo createValueProperty(String defaultName, boolean forConstant, XSComponent source, TypeUse tu, QName typeName)

getBaseType

public JType getBaseType()

getChildren

Collection<BIDeclaration> getChildren()

getCollectionType

CollectionTypeAttribute getCollectionType()
Gets the realization of this field.

Returns: Always return non-null.

getConv

public BIConversion getConv()

getCustomization

public static BIProperty getCustomization(XSComponent c)
Finds a property customization that describes how the given component should be mapped to a property (if it's mapped to a property at all.)

Consider an attribute use that does NOT carry a property customization. This schema component is nonetheless considered to carry a (sort of) implicit property customization, whose values are defaulted.

This method can be think of the method that returns this implied property customization.

Note that this doesn't mean the given component needs to be mapped to a property. But if it does map to a property, it needs to follow this customization. I think this semantics is next to non-sense but I couldn't think of any other way to follow the spec.

Parameters: c A customization effective on this component will be returned. Can be null just to get the global customization.

Returns: Always return non-null valid object.

getDefault

protected BIProperty getDefault()
Finds a BIProperty which this object should delegate to.

Returns: always return non-null for normal BIProperties. If this object is contained in the BIGlobalBinding, then this method returns null to indicate that there's no more default.

getJavadoc

public String getJavadoc()
Gets the associated javadoc.

Returns: null if none is specfieid.

getName

public QName getName()

getOptionalPropertyMode

public OptionalPropertyMode getOptionalPropertyMode()

getPropertyName

public String getPropertyName(boolean forConstant)
Returns the customized property name. This method honors the "enableJavaNamingConvention" customization and formats the property name accordingly if necessary. Thus the caller should NOT apply the XML-to-Java name conversion algorithm to the value returned from this method.

Parameters: forConstant If the property name is intended for a constant property name, set to true. This will change the result

Returns: This method can return null if the customization doesn't specify the name.

isConstantProperty

public boolean isConstantProperty()
Gets the inherited value of the "fixedAttrToConstantProperty" customization.

Note that returning true from this method doesn't necessarily mean that a property needs to be mapped to a constant property. It just means that it's mapped to a constant property if an attribute use carries a fixed value.

I don't like this semantics but that's what the spec implies.

markAsAcknowledged

public void markAsAcknowledged()

setGenerateIsSetMethod

void setGenerateIsSetMethod(boolean b)

setParent

public void setParent(BindInfo parent)