Class UsageFinder

java.lang.Object
org.jibx.schema.UsageFinder

public class UsageFinder extends Object
Visitor to generate usage counts for schema components. This is somewhat messy, since there are so many different types of references in schema: 'ref' (attribute, attributeGroup, element, and group, to reference a global definition of same type), 'type' (attribute and element, reference a global type definition), 'base' (extension and restriction), 'itemType' (list), 'memberTypes' (union), 'substitutionGroup' (element), and 'refer' (unique). References can be recursively expanded by matching the reference set against the set of components processed, and processing any new references until the closure is obtained.
Author:
Dennis M. Sosnoski
  • Field Details

    • s_logger

      private static final Logger s_logger
      Logger for class.
    • m_visitor

      private final UsageFinder.UsageVisitor m_visitor
      Visitor used for finding references.
  • Constructor Details

    • UsageFinder

      public UsageFinder()
      Constructor.
  • Method Details

    • getUsageMap

      public ReferenceCountMap getUsageMap()
      Get map of reference counts per component.
      Returns:
      count map
    • getNonSingletonSet

      public Set getNonSingletonSet()
      Get the set of definitions referenced as optional or repeating.
      Returns:
      set
    • countSchemaTree

      public void countSchemaTree(SchemaElement schema)
      Add usage counts for a schema tree. This counts all references from the supplied schema, including references in other schemas referenced by the schema.
      Parameters:
      schema -
    • addReferenceClosure

      public void addReferenceClosure(AnnotatedBase comp)
      Add usage counts for the reference closure of a definition.
      Parameters:
      comp - definition to be processed
    • addReferenceClosure

      public void addReferenceClosure(List list)
      Add usage counts for the reference closure of a supplied list of components.
      Parameters:
      list - starting schema components
    • setNameRegister

      public void setNameRegister(NameRegister reg)
      Set the register to be used for resolving name references. This is not needed if counting references from a schema tree using countSchemaTree(SchemaElement), which always sets the register associated with the supplied schema.
      Parameters:
      reg -
    • reset

      public void reset()
      Clear the accumulated usage counts.