Class NestedBase

All Implemented Interfaces:
IComponent, IContainer, ILinkable
Direct Known Subclasses:
NestedCollection, NestedStructure

public abstract class NestedBase extends BindingBuilder.ContainerBase implements IComponent, IContainer
Base class for structure and collection binding definitions. This handles one or more child components, which may be ordered or unordered.
Author:
Dennis M. Sosnoski
  • Field Details

    • m_contextObject

      private IContextObj m_contextObject
      Context object for this definition.
    • m_hasContext

      private final boolean m_hasContext
      Flag for context defined at level.
    • m_isOrdered

      protected final boolean m_isOrdered
      Flag for ordered child content (used by subclasses).
    • m_isFlexible

      protected final boolean m_isFlexible
      Flag for flexible element handling (used by subclasses).
    • m_defContext

      private final DefinitionContext m_defContext
      Definition context for container (may be same as parent).
    • m_attributes

      protected ArrayList m_attributes
      Included attribute definitions (lazy create, only if needed).
    • m_contents

      protected ArrayList m_contents
      Nested content definitions (initially used for all child components).
  • Constructor Details

    • NestedBase

      public NestedBase(IContainer contain, IContextObj objc, boolean ord, boolean flex, boolean defc)
      Constructor.
      Parameters:
      contain - containing binding definition context
      objc - current object context
      ord - ordered content flag
      flex - flexible element handling flag
      defc - define context for structure flag
  • Method Details

    • setObjectContext

      public void setObjectContext(IContextObj objc)
      Set the object context.
      Parameters:
      objc - object context
    • getAttributes

      public ArrayList getAttributes()
      Get the attribute children of this mapping.
      Returns:
      list of attribute children (null if none; should not be modified)
    • getContents

      public ArrayList getContents()
      Get the content children of this mapping.
      Returns:
      list of content children (should not be modified)
    • addComponent

      public void addComponent(IComponent comp)
      Add child component to nested structure. All components are initially assumed to contain content. When ILinkable.setLinkages() is called the components are checked to determine whether they actually supply attribute(s), content, or both.
      Parameters:
      comp - child component to be added to structure
    • isFlexible

      public boolean isFlexible()
      Check if flexible unmarshalling.
      Returns:
      flexible flag
    • isContentOrdered

      public boolean isContentOrdered()
      Description copied from interface: IContainer
      Check if content children are ordered.
      Specified by:
      isContentOrdered in interface IContainer
      Returns:
      true if ordered, false if not
    • hasNamespaces

      public boolean hasNamespaces()
    • getBindingRoot

      public BindingDefinition getBindingRoot()
      Description copied from interface: IContainer
      Get root of binding definition.
      Specified by:
      getBindingRoot in interface IContainer
      Returns:
      binding definition root
    • getDefinitionContext

      public DefinitionContext getDefinitionContext()
      Description copied from interface: IContainer
      Get definition context for binding element.
      Specified by:
      getDefinitionContext in interface IContainer
      Returns:
      binding definition context
    • isOptional

      public boolean isOptional()
      Description copied from interface: IComponent
      Check if component is an optional item.
      Specified by:
      isOptional in interface IComponent
      Returns:
      true if optional, false if required
    • hasContent

      public boolean hasContent()
      Description copied from interface: IComponent
      Check if component defines one or more elements or text values as children of the containing element. This method is only valid after the call to ILinkable.setLinkages().
      Specified by:
      hasContent in interface IComponent
      Returns:
      true if one or more content values defined for containing element, false if not
    • genContentPresentTest

      public void genContentPresentTest(ContextMethodBuilder mb) throws JiBXException
      Description copied from interface: IComponent
      Generate code to test for content present. This generates code that tests if a required element is present, leaving the result of the test (zero if missing, nonzero if present) on the stack. This call is only valid if this component has one or more content components for the containing element.
      Specified by:
      genContentPresentTest in interface IComponent
      Parameters:
      mb - method builder
      Throws:
      JiBXException - if configuration error
    • getType

      public String getType()
      Description copied from interface: IComponent
      Get type expected by component.
      Specified by:
      getType in interface IComponent
      Returns:
      fully qualified class name of expected type
    • getWrapperName

      public NameDefinition getWrapperName()
      Description copied from interface: IComponent
      Get element wrapper name. If the component defines an element as the container for content, this returns the name information for that element.
      Specified by:
      getWrapperName in interface IComponent
      Returns:
      component element name, null if no wrapper element