org.jibx.schema.codegen.custom
Class GlobalExtension

java.lang.Object
  extended by org.jibx.schema.codegen.custom.BaseExtension
      extended by org.jibx.schema.codegen.custom.ComponentExtension
          extended by org.jibx.schema.codegen.custom.GlobalExtension

public class GlobalExtension
extends ComponentExtension

Extension information for a schema global definition component. This adds reference tracking to the basic extension information, along with a map for child components of the definition.

Author:
Dennis M. Sosnoski

Field Summary
private  ClassDecorator[] m_decorators
          Decorators to be called in order during class code generation.
private  DefinitionItem m_definition
          Definition item for this global definition.
private  java.util.ArrayList m_dependencies
          List of global definitions used by this definition (one entry per reference, may contain duplicates).
private  boolean m_included
          Component to be specifically included in code generation (requiring a separate class).
private  NameConverter m_nameConverter
          Name converter used for this component (may be null if no code generation).
private  PackageHolder m_package
          Package to be used for class generation (may be null if no code generation).
private  boolean m_preferInline
          Prefer inline definitions.
private  int m_referenceCount
          Number of references to this definition.
private  java.util.ArrayList m_references
          List of extensions for components referencing this definition.
private  boolean m_useInnerClasses
          Use inner classes for substructures.
(package private) static org.apache.log4j.Logger s_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
GlobalExtension(OpenAttrBase comp, NameConverter nconv, ClassDecorator[] decorators, PackageHolder pack, boolean prefinline, boolean useinner)
          Constructor.
 
Method Summary
 void addDependency(ComponentExtension anno)
          Add dependency extension.
 void addReference(ComponentExtension anno)
          Add reference extension.
 void checkRemovable()
          Check if the global definition can be removed from the schema.
 ClassDecorator[] getClassDecorators()
          Get code generation decorators used for this component.
 DefinitionItem getDefinition()
          Get definition item.
 GlobalExtension getDependency(int index)
          Get dependency extension by index position.
 int getDependencyCount()
          Get the number of dependencies for this component.
 NameConverter getNameConverter()
          Get name converter used for this component.
 PackageHolder getPackage()
          Get package for class generation.
 ComponentExtension getReference(int index)
          Get referencing extension by index position.
 boolean isIncluded()
          Check if component specifically included in code generation (requiring a separate class).
 boolean isPreferInline()
          Check if inlining of definition preferred.
 boolean isUseInnerClasses()
          Check if inner classes should be used for substructures.
 void normalize()
          Normalize the schema definition component.
 void resetDependencies()
          Reset the dependencies and references of this component.
 void setDefinition(DefinitionItem item)
          Set definition item.
 void setIncluded(boolean included)
          Set flag for component specifically included in code generation (requiring a separate class).
 
Methods inherited from class org.jibx.schema.codegen.custom.ComponentExtension
applyAndCountUsage, getAnyType, getBaseName, getChoiceType, getClassName, getCustom, getGlobal, getOverrideType, getUnionType, getUseCount, incrementUseCount, isChoiceExposed, isIgnored, isOptional, isRemoved, isRepeated, isSeparateClass, isUnionExposed, normalize, setCustom, setOptional, setOverrideType, setRemoved, setRepeated, setSeparateClass
 
Methods inherited from class org.jibx.schema.codegen.custom.BaseExtension
getComponent, getReplacementType, setTypeReplacer
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

s_logger

static final org.apache.log4j.Logger s_logger
Logger for class.


m_nameConverter

private final NameConverter m_nameConverter
Name converter used for this component (may be null if no code generation).


m_decorators

private final ClassDecorator[] m_decorators
Decorators to be called in order during class code generation.


m_package

private final PackageHolder m_package
Package to be used for class generation (may be null if no code generation).


m_preferInline

private final boolean m_preferInline
Prefer inline definitions.


m_useInnerClasses

private final boolean m_useInnerClasses
Use inner classes for substructures.


m_included

private boolean m_included
Component to be specifically included in code generation (requiring a separate class).


m_referenceCount

private int m_referenceCount
Number of references to this definition.


m_references

private java.util.ArrayList m_references
List of extensions for components referencing this definition.


m_dependencies

private java.util.ArrayList m_dependencies
List of global definitions used by this definition (one entry per reference, may contain duplicates).


m_definition

private DefinitionItem m_definition
Definition item for this global definition.

Constructor Detail

GlobalExtension

public GlobalExtension(OpenAttrBase comp,
                       NameConverter nconv,
                       ClassDecorator[] decorators,
                       PackageHolder pack,
                       boolean prefinline,
                       boolean useinner)
Constructor.

Parameters:
comp - actual component
nconv - name converter to be used (null if no code generation)
decorators - class decorators (null if no code generation)
pack - package to be used (null if no code generation)
prefinline - prefer inline (rather than separate class)
useinner - use inner classes for substructures
Method Detail

getNameConverter

public NameConverter getNameConverter()
Get name converter used for this component.

Returns:
converter

getClassDecorators

public ClassDecorator[] getClassDecorators()
Get code generation decorators used for this component.

Returns:
converter

getPackage

public PackageHolder getPackage()
Get package for class generation.

Returns:
package

isIncluded

public boolean isIncluded()
Check if component specifically included in code generation (requiring a separate class).

Returns:
included

setIncluded

public void setIncluded(boolean included)
Set flag for component specifically included in code generation (requiring a separate class).

Parameters:
included -

isPreferInline

public boolean isPreferInline()
Check if inlining of definition preferred.

Returns:
inline

isUseInnerClasses

public boolean isUseInnerClasses()
Check if inner classes should be used for substructures.

Returns:
inner

addReference

public void addReference(ComponentExtension anno)
Add reference extension.

Parameters:
anno -

getReference

public ComponentExtension getReference(int index)
Get referencing extension by index position.

Parameters:
index -
Returns:
reference

addDependency

public void addDependency(ComponentExtension anno)
Add dependency extension.

Parameters:
anno -

getDependencyCount

public int getDependencyCount()
Get the number of dependencies for this component.

Returns:
count

getDependency

public GlobalExtension getDependency(int index)
Get dependency extension by index position.

Parameters:
index -
Returns:
reference

resetDependencies

public void resetDependencies()
Reset the dependencies and references of this component. This must be called before beginning a reference tracking pass, to clear any information from prior passes.


checkRemovable

public void checkRemovable()
Check if the global definition can be removed from the schema. If it can, this adjusts the usage counts for all dependencies of the definition, forcing a check of each dependency as the counts are adjusted.


getDefinition

public DefinitionItem getDefinition()
Get definition item.

Returns:
item

setDefinition

public void setDefinition(DefinitionItem item)
Set definition item.

Parameters:
item -

normalize

public void normalize()
Normalize the schema definition component. This recursively traverses the schema model tree rooted in the global component, normalizing each child component.



Project Web Site