Package org.jibx.schema.codegen.custom
Class ComponentExtension
java.lang.Object
org.jibx.schema.codegen.custom.BaseExtension
org.jibx.schema.codegen.custom.ComponentExtension
- Direct Known Subclasses:
GlobalExtension
Extension information for all schema components other than the schema element itself. This is the basic extension
which associates schema components with values or classes for code generation.
- Author:
- Dennis M. Sosnoski
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ComponentCustom
Customization information for this component.private final GlobalExtension
Containing global definition extension.private boolean
Optional component flag.private QName
Override for type specified in schema (null
if none).private boolean
Component dropped from schema definition.private boolean
Repeated component flag.private int
Number of times a component is used in code generation.private static final Logger
Logger for class.Fields inherited from class org.jibx.schema.codegen.custom.BaseExtension
ARITY_OPTIONAL_COLLECTION, ARITY_OPTIONAL_SINGLETON, ARITY_REQUIRED_COLLECTION, ARITY_REQUIRED_SINGLETON
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
Apply extensions to schema definition component, deleting components flagged for skipping and substituting types as configured.private boolean
checkReference
(OpenAttrBase comp) Check a reference to a component.int
Get the xs:any handling type code to be applied for this component.Get base name for corresponding property.int
Get the xs:choice handling type code to be applied for this component.Get name to be used for generated class.private NestingCustomBase
Get the innermost customization which applies to this component.(package private) ComponentCustom
Get customization information for this component.Get the containing global extension.Get override type.int
Get the xs:union handling type code to be applied for this component.int
Get the use count for the component.int
Increment the use count for the component.boolean
Check if xs:choice selection state should be exposed for this component.boolean
Check if component is to be ignored.boolean
Check if schema component is to be generated inline.boolean
Check if optional component.boolean
Check if component to be removed from schema.boolean
Check if repeated component.boolean
Check if schema component is to be generated as a separate class.boolean
Check if xs:union selection state should be exposed for this component.protected boolean
normalize
(int depth) Normalize the child schema definition.private void
removeChild
(int index) Remove a child element.private QName
replaceAndReference
(QName type, ValidationContext vctx) Check for type substitution on a type reference, then record the reference.(package private) void
setCustom
(ComponentCustom custom) Set customization information for this component.void
setOptional
(boolean optional) Set optional component.void
setOverrideType
(QName qname) Set override type.void
setRemoved
(boolean removed) Set flag for component to be removed from schema.void
setRepeated
(boolean repeated) Set repeated component.private boolean
substituteTypeDerivation
(String lead, OpenAttrBase topcomp, OpenAttrBase childcomp, CommonTypeDerivation derive) Try to replace type definition with substitute type from derivation.Methods inherited from class org.jibx.schema.codegen.custom.BaseExtension
getComponent, getReplacementType, setTypeReplacer
-
Field Details
-
s_logger
private static final Logger s_loggerLogger for class. -
m_global
Containing global definition extension. -
m_removed
private boolean m_removedComponent dropped from schema definition. -
m_optional
private boolean m_optionalOptional component flag. -
m_repeated
private boolean m_repeatedRepeated component flag. -
m_custom
Customization information for this component. -
m_overrideType
Override for type specified in schema (null
if none). -
m_useCount
private int m_useCountNumber of times a component is used in code generation.
-
-
Constructor Details
-
ComponentExtension
Constructor.- Parameters:
comp
-global
- containing global definition extension (null
allowed only as special case when calling this constructor from the global extension subclass constructor)
-
-
Method Details
-
isRemoved
public boolean isRemoved()Check if component to be removed from schema.- Returns:
- removed flag
-
setRemoved
public void setRemoved(boolean removed) Set flag for component to be removed from schema.- Parameters:
removed
-
-
isIgnored
public boolean isIgnored()Check if component is to be ignored.- Returns:
- ignored flag
-
isOptional
public boolean isOptional()Check if optional component.- Returns:
- optional
-
setOptional
public void setOptional(boolean optional) Set optional component.- Parameters:
optional
-
-
isRepeated
public boolean isRepeated()Check if repeated component.- Returns:
- repeated
-
setRepeated
public void setRepeated(boolean repeated) Set repeated component.- Parameters:
repeated
-
-
isInlined
public boolean isInlined()Check if schema component is to be generated inline.- Returns:
true
if inlined,false
if not
-
isSeparateClass
public boolean isSeparateClass()Check if schema component is to be generated as a separate class.- Returns:
true
if separate class,false
if not
-
getGlobal
Get the containing global extension.- Returns:
- global
-
getOverrideType
Get override type.- Returns:
- type name (
null
if none)
-
setOverrideType
Set override type.- Parameters:
qname
- type name (null
if none)
-
incrementUseCount
public int incrementUseCount()Increment the use count for the component.- Returns:
- incremented use count
-
getUseCount
public int getUseCount()Get the use count for the component.- Returns:
- use count
-
getClassName
Get name to be used for generated class.- Returns:
- class name (
null
if not set)
-
getBaseName
Get base name for corresponding property.- Returns:
- property name (
null
if not set)
-
getCustom
ComponentCustom getCustom()Get customization information for this component.- Returns:
- custom
-
setCustom
Set customization information for this component.- Parameters:
custom
-
-
getContainingCustom
Get the innermost customization which applies to this component.- Returns:
- customization
-
getAnyType
public int getAnyType()Get the xs:any handling type code to be applied for this component. The default value isNestingCustomBase.ANY_DOM
if not overridden at any level.- Returns:
- code
-
getChoiceType
public int getChoiceType()Get the xs:choice handling type code to be applied for this component. The default value isNestingCustomBase.SELECTION_CHECKEDSET
if not overridden at any level.- Returns:
- code
-
isChoiceExposed
public boolean isChoiceExposed()Check if xs:choice selection state should be exposed for this component.- Returns:
- exposed flag
-
getUnionType
public int getUnionType()Get the xs:union handling type code to be applied for this component. The default value isNestingCustomBase.SELECTION_CHECKEDSET
if not overridden at any level.- Returns:
- code
-
isUnionExposed
public boolean isUnionExposed()Check if xs:union selection state should be exposed for this component.- Returns:
- exposed flag
-
replaceAndReference
Check for type substitution on a type reference, then record the reference. TODO: how to handle substitutions across namespaces? the problem here is that the returned name needs to be correct in the use context, which may be using a different namespace for the same definition (due to includes of no-namespace schemas into a namespaced schema). the current code is only an interim fix that will not always work- Parameters:
type
- original typevctx
- validation context- Returns:
- replacement type (may be the same as the original type;
null
if to be deleted)
-
checkReference
Check a reference to a component. If the reference component has been deleted this just returnsfalse
. If the component has not been deleted it counts the reference on that component, and records the dependency from this component before returningtrue
. For convenience, this may be called with anull
argument, which just returnstrue
.- Parameters:
comp
- component (call ignored ifnull
)- Returns:
true
if reference to be kept,false
if deleted
-
removeChild
private void removeChild(int index) Remove a child element. This checks to make sure the removal is valid, and also handles logging of the change.- Parameters:
index
-
-
applyAndCountUsage
Apply extensions to schema definition component, deleting components flagged for skipping and substituting types as configured. This code is not intended to handle the deletion of global definition components, which should be removed separately.- Parameters:
vctx
- validation context
-
substituteTypeDerivation
private boolean substituteTypeDerivation(String lead, OpenAttrBase topcomp, OpenAttrBase childcomp, CommonTypeDerivation derive) Try to replace type definition with substitute type from derivation. If- Parameters:
lead
- prefix text for indentation of logging messagestopcomp
- schema component being normalizedchildcomp
- current child of schema component being normalizedderive
- type derivation supplying substitute type- Returns:
true
if type modified,false
if not
-
normalize
protected boolean normalize(int depth) Normalize the child schema definition. This recursively traverses the schema model tree rooted in the component associated with this extension, normalizing each child component. TODO: handle revalidation for changed subtrees- Parameters:
depth
- nesting depth for validation- Returns:
true
if any part of tree under this component modified,false
if not
-