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
public class ComponentExtension extends BaseExtension
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
Fields Modifier and Type Field Description private ComponentCustomm_customCustomization information for this component.private GlobalExtensionm_globalContaining global definition extension.private booleanm_optionalOptional component flag.private QNamem_overrideTypeOverride for type specified in schema (nullif none).private booleanm_removedComponent dropped from schema definition.private booleanm_repeatedRepeated component flag.private intm_useCountNumber of times a component is used in code generation.private static Loggers_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 Constructor Description ComponentExtension(OpenAttrBase comp, GlobalExtension global)Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapplyAndCountUsage(ValidationContext vctx)Apply 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.intgetAnyType()Get the xs:any handling type code to be applied for this component.java.lang.StringgetBaseName()Get base name for corresponding property.intgetChoiceType()Get the xs:choice handling type code to be applied for this component.java.lang.StringgetClassName()Get name to be used for generated class.private NestingCustomBasegetContainingCustom()Get the innermost customization which applies to this component.(package private) ComponentCustomgetCustom()Get customization information for this component.GlobalExtensiongetGlobal()Get the containing global extension.QNamegetOverrideType()Get override type.intgetUnionType()Get the xs:union handling type code to be applied for this component.intgetUseCount()Get the use count for the component.intincrementUseCount()Increment the use count for the component.booleanisChoiceExposed()Check if xs:choice selection state should be exposed for this component.booleanisIgnored()Check if component is to be ignored.booleanisInlined()Check if schema component is to be generated inline.booleanisOptional()Check if optional component.booleanisRemoved()Check if component to be removed from schema.booleanisRepeated()Check if repeated component.booleanisSeparateClass()Check if schema component is to be generated as a separate class.booleanisUnionExposed()Check 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(java.lang.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 Detail
-
s_logger
private static final Logger s_logger
Logger for class.
-
m_global
private final GlobalExtension m_global
Containing global definition extension.
-
m_removed
private boolean m_removed
Component dropped from schema definition.
-
m_optional
private boolean m_optional
Optional component flag.
-
m_repeated
private boolean m_repeated
Repeated component flag.
-
m_custom
private ComponentCustom m_custom
Customization information for this component.
-
m_overrideType
private QName m_overrideType
Override for type specified in schema (nullif none).
-
m_useCount
private int m_useCount
Number of times a component is used in code generation.
-
-
Constructor Detail
-
ComponentExtension
public ComponentExtension(OpenAttrBase comp, GlobalExtension global)
Constructor.- Parameters:
comp-global- containing global definition extension (nullallowed only as special case when calling this constructor from the global extension subclass constructor)
-
-
Method Detail
-
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
public GlobalExtension getGlobal()
Get the containing global extension.- Returns:
- global
-
getOverrideType
public QName getOverrideType()
Get override type.- Returns:
- type name (
nullif none)
-
setOverrideType
public void setOverrideType(QName qname)
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
public java.lang.String getClassName()
Get name to be used for generated class.- Returns:
- class name (
nullif not set)
-
getBaseName
public java.lang.String 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
void setCustom(ComponentCustom custom)
Set customization information for this component.- Parameters:
custom-
-
getContainingCustom
private NestingCustomBase 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
private QName replaceAndReference(QName type, ValidationContext vctx)
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
private boolean checkReference(OpenAttrBase comp)
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
public void applyAndCountUsage(ValidationContext vctx)
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(java.lang.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
-
-