public class StructureClassHolder extends ClassHolder
ClassHolder.DataNode, ClassHolder.LeafNode, ClassHolder.ParentNode
Modifier and Type | Field and Description |
---|---|
private static java.lang.String |
LIST_DESERIALIZE_PREFIX |
private static java.lang.String |
LIST_SERIALIZE_PREFIX |
private ContainerElementBase |
m_bindingElement
Binding definition element for this class.
|
private boolean |
m_collectionPresent
Flag for collection present in class.
|
private ClassHolder.ParentNode |
m_dataRoot
Root node for data structure of class.
|
protected UniqueNameSet |
m_selectSet
Selection property names used in class (lazy create,
null if none). |
private static java.util.Map |
s_formatMap
Default format definitions map.
|
private static org.apache.log4j.Logger |
s_logger
Logger for class.
|
COLLECTION_VARIABLE_NAME, COLLECTION_VARIABLE_TYPE, m_baseName, m_decorators, m_holder, m_importsTracker, m_inners, m_listImplClass, m_nameConverter, m_nameSet, m_outerClass, m_package, m_useInnerClasses
Modifier | Constructor and Description |
---|---|
|
StructureClassHolder(java.lang.String name,
java.lang.String base,
PackageHolder pack,
BindingHolder holder,
NameConverter nconv,
ClassDecorator[] decorators,
boolean inner)
Constructor.
|
private |
StructureClassHolder(java.lang.String name,
StructureClassHolder context)
Constructor for creating a child inner class definition.
|
Modifier and Type | Method and Description |
---|---|
private void |
addFixedNames(ClassHolder.ParentNode wrapper)
Add all fixed names in a group to the set of names defined for this class.
|
private void |
addFlagProperty(java.lang.String basename,
ClassHolder.DataNode node,
ClassBuilder builder)
Add a flag property to the class.
|
private void |
addInnerFormats(MappingElementBase mapping)
Recursively add all inner enumeration classes as formats to a <mapping> definition.
|
private StructureElement |
addReferenceStructure(ClassHolder.LeafNode leaf,
DefinitionItem def,
boolean single,
BindingHolder holder,
ContainerElementBase bindcomp)
Build the binding structure element for a reference to a class.
|
private void |
addRepeatedProperty(java.lang.String basename,
ClassHolder.DataNode node,
ClassBuilder builder)
Add a multiple-valued property to the class.
|
private void |
addSimpleProperty(java.lang.String basename,
ClassHolder.DataNode node,
ClassBuilder builder)
Add a simple property to the class.
|
private void |
addToBinding(ClassHolder.ParentNode parent,
QName wrapname,
boolean wrapopt,
boolean single,
ContainerElementBase bindcomp,
BindingHolder holder)
Generate the binding for a parent node of the data structure tree.
|
private void |
addToClass(ClassHolder.ParentNode parent)
Generate the fields and methods for a wrapper around one or more properties.
|
private void |
addToTree(GroupItem struct,
java.lang.String supertext,
ClassHolder.ParentNode parent,
BindingHolder bindhold)
Populate a class data representation tree based on a supplied item tree.
|
void |
buildDataStructure(GroupItem group,
BindingHolder bindhold)
Convert an item structure to a class representation.
|
private ValueElement |
buildValueBinding(ClassHolder.DataNode node,
QName wrapname,
java.lang.String gname,
java.lang.String sname,
BindingHolder holder)
Build a <value> binding component for a field.
|
private void |
checkIfMethod(ClassHolder.DataNode node,
java.lang.String seldesc,
java.lang.String valdesc,
ClassBuilder builder)
Generate a test method for a value, if it's part of a group with a selector.
|
private java.lang.String |
findDocumentation(boolean top,
ClassHolder.DataNode node)
Find the schema documentation associated with a data node.
|
private void |
fixFlexibleNames(ClassHolder.ParentNode parent,
boolean innamed)
Handle value name assignments for a group within this class.
|
void |
generate(boolean verbose,
SourceBuilder builder)
Generate this class.
|
private void |
generateSelectorCheck(ClassHolder.DataNode value,
BlockBuilder block,
ClassBuilder builder)
Generate the code to check the selection on any containing selector group.
|
private void |
generateSelectorSet(ClassHolder.DataNode value,
BlockBuilder block,
ClassBuilder builder)
Generate the code to check and set the selection on any containing selector group.
|
private CollectionElement |
newCollection(QName wrapname,
boolean wrapopt,
BindingHolder holder,
ClassHolder.DataNode node)
Create a new collection element for the binding.
|
void |
setBinding(ContainerElementBase container)
Set the binding component linked to this class.
|
private void |
setCollectionName(java.lang.String base,
Item item)
Convert base name to collection name.
|
private void |
setMemberNames(java.lang.String basename,
ClassHolder.DataNode node)
Set the field and get/set access method names for a property.
|
private static void |
setName(QName qname,
BindingHolder holder,
StructureElementBase struct)
Set the name and namespace URI for a <structure> or <collection> binding component.
|
private static void |
setName(QName qname,
BindingHolder holder,
ValueElement value)
Set the name and namespace URI for a <value> binding component.
|
private void |
setStructureOptional(ClassHolder.DataNode value,
boolean force,
StructureElementBase struct)
Set the optional state of a structure or collection element in the binding.
|
private void |
setValueHandlingOptions(Item item,
ValueElement value,
BindingHolder holder)
Set serializer/deserializer options for a <value> component of the binding.
|
addField, addImport, addInterface, addMethod, addType, describe, extractDocumentation, finishClass, generateInner, getBuilder, getFields, getImports, getInterfaces, getMethods, getName, getOuterClass, getPackage, getSchemaCustom, getSortedFields, getSuperClass, getSuperClassName, getTypeName, importValueType, initClass, isGenerated, isSuperClassForced, setListImplementation, setSuperClass, setSuperClassName
getBindingName, getFullName, isPregenerated, isSimpleValue
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getFullName
private static final java.lang.String LIST_DESERIALIZE_PREFIX
private static final java.lang.String LIST_SERIALIZE_PREFIX
private static final org.apache.log4j.Logger s_logger
private static final java.util.Map s_formatMap
private boolean m_collectionPresent
private ClassHolder.ParentNode m_dataRoot
private ContainerElementBase m_bindingElement
protected UniqueNameSet m_selectSet
null
if none).public StructureClassHolder(java.lang.String name, java.lang.String base, PackageHolder pack, BindingHolder holder, NameConverter nconv, ClassDecorator[] decorators, boolean inner)
name
- class namebase
- base class namepack
- package informationholder
- binding holdernconv
- name converterdecorators
- class decoratorsinner
- use inner classes for substructuresprivate StructureClassHolder(java.lang.String name, StructureClassHolder context)
name
- class namecontext
- parent classprivate void addToTree(GroupItem struct, java.lang.String supertext, ClassHolder.ParentNode parent, BindingHolder bindhold)
struct
- root item in treesupertext
- schema documentation passed in for item treeparent
- containing data nodebindhold
- associated binding definition holderpublic void buildDataStructure(GroupItem group, BindingHolder bindhold)
buildDataStructure
in class ClassHolder
group
- item groupbindhold
- associated binding definition holderpublic void setBinding(ContainerElementBase container)
container
- binding definition element (<mapping> or <structure>)private void addInnerFormats(MappingElementBase mapping)
mapping
- private void addFixedNames(ClassHolder.ParentNode wrapper)
wrapper
- private void setCollectionName(java.lang.String base, Item item)
java.util.List
representation the name is converted
to singular form and "List" is appended; if using an array representation the name is converted to plural form.base
- item
- private void fixFlexibleNames(ClassHolder.ParentNode parent, boolean innamed)
parent
- innamed
- flag for parent group name already fixedprivate void generateSelectorSet(ClassHolder.DataNode value, BlockBuilder block, ClassBuilder builder)
value
- block
- builder
- private void generateSelectorCheck(ClassHolder.DataNode value, BlockBuilder block, ClassBuilder builder)
value
- block
- builder
- private void checkIfMethod(ClassHolder.DataNode node, java.lang.String seldesc, java.lang.String valdesc, ClassBuilder builder)
node
- seldesc
- containing group descriptionvaldesc
- description of this value within groupbuilder
- private void setStructureOptional(ClassHolder.DataNode value, boolean force, StructureElementBase struct)
value
- nodeforce
- optional state forced flagstruct
- binding structureprivate static void setName(QName qname, BindingHolder holder, ValueElement value)
qname
- qualified name to be set (null
if none)holder
- binding containing the value definitionvalue
- binding componentprivate static void setName(QName qname, BindingHolder holder, StructureElementBase struct)
qname
- qualified name to be set (null
if none)holder
- binding containing the structure or collection definitionstruct
- binding componentprivate ValueElement buildValueBinding(ClassHolder.DataNode node, QName wrapname, java.lang.String gname, java.lang.String sname, BindingHolder holder)
node
- wrapname
- gname
- sname
- holder
- private void setMemberNames(java.lang.String basename, ClassHolder.DataNode node)
basename
- node
- private void addSimpleProperty(java.lang.String basename, ClassHolder.DataNode node, ClassBuilder builder)
basename
- node
- builder
- private void addRepeatedProperty(java.lang.String basename, ClassHolder.DataNode node, ClassBuilder builder)
basename
- node
- builder
- private void addFlagProperty(java.lang.String basename, ClassHolder.DataNode node, ClassBuilder builder)
basename
- node
- builder
- private java.lang.String findDocumentation(boolean top, ClassHolder.DataNode node)
top
- use topmost documentation found flagnode
- starting nodeprivate void addToClass(ClassHolder.ParentNode parent)
parent
- private StructureElement addReferenceStructure(ClassHolder.LeafNode leaf, DefinitionItem def, boolean single, BindingHolder holder, ContainerElementBase bindcomp)
leaf
- reference nodedef
- target definitionsingle
- flag for single childholder
- holder for binding definitionbindcomp
- containing binding elementprivate CollectionElement newCollection(QName wrapname, boolean wrapopt, BindingHolder holder, ClassHolder.DataNode node)
wrapname
- name to be used for wrapper collection or structure, null
if nonewrapopt
- wrapper element optional flag (should be false
if wrapname is null
)holder
- binding definition tracking informationnode
- data node associated with collectionprivate void setValueHandlingOptions(Item item, ValueElement value, BindingHolder holder)
item
- value
- holder
- private void addToBinding(ClassHolder.ParentNode parent, QName wrapname, boolean wrapopt, boolean single, ContainerElementBase bindcomp, BindingHolder holder)
parent
- node to be added to bindingwrapname
- name to be used for wrapper collection or structure, null
if nonewrapopt
- wrapper element optional flag (should be false
if wrapname is null
)single
- parent node binding component can be modified by child flag (single path from parent)bindcomp
- binding definition component corresponding to the parent nodeholder
- binding definition tracking informationpublic void generate(boolean verbose, SourceBuilder builder)
generate
in class ClassHolder
verbose
- builder
- class source file builder