public abstract class CPropertyInfo extends Object implements PropertyInfo<NType,NClass>, CCustomizable
Modifier and Type | Field and Description |
---|---|
JType |
baseType
If the base type of the property is overriden,
this field is set to non-null.
|
CDefaultValue |
defaultValue
If non-null, keeps the default value in Java representation.
|
boolean |
inlineBinaryData
Property annotated with
XmlInlineBinaryData . |
String |
javadoc
Javadoc for this property.
|
Locator |
locator |
FieldRenderer |
realization
Specifies how the field is generated by the backend.
|
Modifier | Constructor and Description |
---|---|
protected |
CPropertyInfo(String name,
boolean collection,
XSComponent source,
CCustomizations customizations,
Locator locator) |
Modifier and Type | Method and Description |
---|---|
abstract <V> V |
accept(CPropertyVisitor<V> visitor) |
abstract <R,P> R |
accept(CPropertyVisitor2<R,P> visitor,
P p) |
QName |
collectElementNames(Map<QName,CPropertyInfo> table)
Puts the element names that this property possesses to the map,
so that we can find two properties that own the same element name,
which is an error.
|
String |
displayName()
Gets the display name of the property.
|
abstract CAdapter |
getAdapter() |
CCustomizations |
getCustomizations()
Gets the list of customizations attached to this model component.
|
Locator |
getLocator()
Gets the source location in the schema from which this model component is created.
|
String |
getName()
Deprecated.
marked as deprecated so that we can spot the use of this method.
|
String |
getName(boolean isPublic)
Gets the name of the property.
|
XSComponent |
getSchemaComponent()
If this model object is built from XML Schema,
this property returns a schema component from which the model is built.
|
boolean |
hasAnnotation(Class<? extends Annotation> annotationType)
Returns true if the property has the specified annotation.
|
boolean |
inlineBinaryData()
If this is true and this property indeed represents a binary data,
it should be always inlined.
|
boolean |
isCollection()
Returns true if this is a multi-valued collection property.
|
boolean |
isOptionalPrimitive()
Returns true if this property needs to represent null
just for the purpose of representing an absence of the property.
|
boolean |
isUnboxable()
Returns true if this property is "unboxable".
|
protected static boolean |
needsExplicitTypeName(TypeUse type,
QName typeName)
Checks if the given
TypeUse would need an explicit XmlSchemaType
annotation with the given type name. |
CTypeInfo |
parent()
Gets the
ClassInfo or ElementInfo to which this property belongs. |
<A extends Annotation> |
readAnnotation(Class<A> annotationType)
Gets the value of the specified annotation from the given property.
|
abstract Collection<? extends CTypeInfo> |
ref()
List of
TypeInfo s that this property references. |
void |
setName(boolean isPublic,
String newName)
Overrides the name of the property.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getExpectedMimeType, getSchemaType, id, kind
public final Locator locator
public JType baseType
public String javadoc
public boolean inlineBinaryData
XmlInlineBinaryData
.public FieldRenderer realization
public CDefaultValue defaultValue
isCollection
is true, this field is always null,
for we don't handle default values for a list.protected CPropertyInfo(String name, boolean collection, XSComponent source, CCustomizations customizations, Locator locator)
public CTypeInfo parent()
PropertyInfo
ClassInfo
or ElementInfo
to which this property belongs.parent
in interface PropertyInfo<NType,NClass>
public Locator getLocator()
CCustomizable
getLocator
in interface CCustomizable
public final XSComponent getSchemaComponent()
getSchemaComponent
in interface CCustomizable
public abstract CAdapter getAdapter()
getAdapter
in interface PropertyInfo<NType,NClass>
public String getName()
This method is implemented to follow the contract of
PropertyInfo.getName()
, and therefore it always
returns the name of the annotated field.
This name is normally not useful for the rest of XJC, which usually wants to access the "public name" of the property. A "public name" of the property is a name like "FooBar" which is used as a seed for generating the accessor methods. This is the name controlled by the schema customization via users.
If the caller is calling this method statically, it's usually
the sign of a mistake. Use getName(boolean)
method instead,
which forces you to think about which name you want to get.
getName
in interface PropertyInfo<NType,NClass>
getName(boolean)
public String getName(boolean isPublic)
isPublic
- if true, this method returns a name like "FooBar", which
should be used as a seed for generating user-visible names
(such as accessors like "getFooBar".)
if false, this method returns the "name of the property" as defined in the j2s side of the spec. This name is usually something like "fooBar", which often corresponds to the XML element/attribute name of this property (for taking advantage of annotation defaulting as much as possible)
public void setName(boolean isPublic, String newName)
Plugin.postProcessModel(Model, ErrorHandler)
.
But the caller should do so with the understanding that this is inherently
dangerous method.public String displayName()
PropertyInfo
This is a convenience method for
parent().getName()+'#'+getName()
.
displayName
in interface PropertyInfo<NType,NClass>
public boolean isCollection()
PropertyInfo
isCollection
in interface PropertyInfo<NType,NClass>
public abstract Collection<? extends CTypeInfo> ref()
PropertyInfo
TypeInfo
s that this property references.
This allows the caller to traverse the reference graph without
getting into the details of each different property type.ref
in interface PropertyInfo<NType,NClass>
public boolean isUnboxable()
In general, a property often has to be capable of representing null
to indicate the absence of the value. This requires properties
to be generated as @XmlElement Float f
, not as
@XmlElement float f;
. But this is slow.
Fortunately, there are cases where we know that the property can never legally be absent. When this condition holds we can generate the optimized "unboxed form".
The exact such conditions depend on the kind of properties, so refer to the implementation code for the details.
This method returns true when the property can be generated as "unboxed form", false otherwise.
When this property is a collection, this method returns true if items in the collection is unboxable. Obviously, the collection itself is always a reference type.
public boolean isOptionalPrimitive()
public CCustomizations getCustomizations()
CCustomizable
getCustomizations
in interface CCustomizable
Plugin.getCustomizationURIs()
public boolean inlineBinaryData()
PropertyInfo
inlineBinaryData
in interface PropertyInfo<NType,NClass>
public abstract <V> V accept(CPropertyVisitor<V> visitor)
public abstract <R,P> R accept(CPropertyVisitor2<R,P> visitor, P p)
protected static boolean needsExplicitTypeName(TypeUse type, QName typeName)
TypeUse
would need an explicit XmlSchemaType
annotation with the given type name.public QName collectElementNames(Map<QName,CPropertyInfo> table)
public final <A extends Annotation> A readAnnotation(Class<A> annotationType)
AnnotationSource
When this method is used for a property that consists of a getter and setter, it returns the annotation on either of those methods. If both methods have the same annotation, it is an error.
readAnnotation
in interface AnnotationSource
public final boolean hasAnnotation(Class<? extends Annotation> annotationType)
AnnotationSource
Short for readAnnotation(annotationType)!=null
,
but this method is typically faster.
hasAnnotation
in interface AnnotationSource
Copyright © 2021 JBoss by Red Hat. All rights reserved.