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 ComponentCustomCustomization information for this component.private final GlobalExtensionContaining global definition extension.private booleanOptional component flag.private QNameOverride for type specified in schema (nullif none).private booleanComponent dropped from schema definition.private booleanRepeated component flag.private intNumber of times a component is used in code generation.private static final LoggerLogger 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 TypeMethodDescriptionvoidApply extensions to schema definition component, deleting components flagged for skipping and substituting types as configured.private booleancheckReference(OpenAttrBase comp) Check a reference to a component.intGet the xs:any handling type code to be applied for this component.Get base name for corresponding property.intGet the xs:choice handling type code to be applied for this component.Get name to be used for generated class.private NestingCustomBaseGet the innermost customization which applies to this component.(package private) ComponentCustomGet customization information for this component.Get the containing global extension.Get override type.intGet the xs:union handling type code to be applied for this component.intGet the use count for the component.intIncrement the use count for the component.booleanCheck if xs:choice selection state should be exposed for this component.booleanCheck if component is to be ignored.booleanCheck if schema component is to be generated inline.booleanCheck if optional component.booleanCheck if component to be removed from schema.booleanCheck if repeated component.booleanCheck if schema component is to be generated as a separate class.booleanCheck if xs:union selection state should be exposed for this component.protected booleannormalize(int depth) Normalize the child schema definition.private voidremoveChild(int index) Remove a child element.private QNamereplaceAndReference(QName type, ValidationContext vctx) Check for type substitution on a type reference, then record the reference.(package private) voidsetCustom(ComponentCustom custom) Set customization information for this component.voidsetOptional(boolean optional) Set optional component.voidsetOverrideType(QName qname) Set override type.voidsetRemoved(boolean removed) Set flag for component to be removed from schema.voidsetRepeated(boolean repeated) Set repeated component.private booleansubstituteTypeDerivation(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 (nullif 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 (nullallowed 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:
trueif inlined,falseif not
-
isSeparateClass
public boolean isSeparateClass()Check if schema component is to be generated as a separate class.- Returns:
trueif separate class,falseif not
-
getGlobal
Get the containing global extension.- Returns:
- global
-
getOverrideType
Get override type.- Returns:
- type name (
nullif none)
-
setOverrideType
Set override type.- Parameters:
qname- type name (nullif 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 (
nullif not set)
-
getBaseName
Get base name for corresponding property.- Returns:
- property name (
nullif 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_DOMif 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_CHECKEDSETif 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_CHECKEDSETif 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;
nullif 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 anullargument, which just returnstrue.- Parameters:
comp- component (call ignored ifnull)- Returns:
trueif reference to be kept,falseif 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:
trueif type modified,falseif 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:
trueif any part of tree under this component modified,falseif not
-