Class NativeInfo

  • All Implemented Interfaces:
    java.io.Serializable, NodeInfo, Condition

    public class NativeInfo
    extends ComponentInfo
    Represents the component information about the native components.

    Note:it is not thread-safe.

    Since:
    3.0.0
    Author:
    tomyeh
    See Also:
    Serialized Form
    • Constructor Detail

      • NativeInfo

        public NativeInfo​(NodeInfo parent,
                          ComponentDefinition compdef,
                          java.lang.String tag)
        Constructs a native info with a parent.
        Parameters:
        parent - the parent info (never null).
        compdef - the component definition (never null).
        tag - the name of the tag
      • NativeInfo

        public NativeInfo​(EvaluatorRef evlar,
                          ComponentDefinition compdef,
                          java.lang.String tag)
        Constructs a native info without a parent.
        Parameters:
        evlar - the evaluator (never null).
        compdef - the component definition (never null).
        tag - the name of the tag
        Since:
        3.5.0
    • Method Detail

      • getDeclaredNamespaces

        public java.util.List<Namespace> getDeclaredNamespaces()
        Returns a readonly list of the declared namespaces (never null).
      • addDeclaredNamespace

        public void addDeclaredNamespace​(Namespace ns)
        Adds a declared namespace.
      • getPrologChildren

        public java.util.List<NodeInfo> getPrologChildren()
        Returns a readonly list of the prolog children (NativeInfo). A prolog child is a special child of NativeInfo. (it is not part of getChildren() that is used to optimize the native components such that ZK can use one native components to represent several NativeInfo. In other words, a prolog child won't be created as part of

        The prolog children must be rendered before getChildren().

      • getEpilogChildren

        public java.util.List<NodeInfo> getEpilogChildren()
        Returns a readonly list of the epilog children (NativeInfo). The epilog children must be rendered after getChildren().
      • addPrologChild

        public void addPrologChild​(NodeInfo child)
        Adds a prolog child.

        Note: if child belong to other ComponentInfo, you have to remove them first before calling this method. Otherwise, the result is unpredictable.

        Parameters:
        child - the prolog child.
        See Also:
        getPrologChildren()
      • addEpilogChild

        public void addEpilogChild​(NodeInfo child)
        Adds an epilog child.
        Parameters:
        child - the epilog child. If child belongs to getChildren(), it will be removed first.
        See Also:
        getPrologChildren()
      • getSplitChild

        public NativeInfo getSplitChild()
        Returns the split child, or null if not available. Each native info has at most one split child. If a native info has a single child and the child is also a native info, we can merge them by making the child as the split child.
        Since:
        3.0.0
      • resolveForEach

        public ForEach resolveForEach​(Page page,
                                      Component comp)
        Returns the forEach object if the forEach attribute is defined (or setForEach(java.lang.String, java.lang.String, java.lang.String) is called).

        If comp is not null, both pagedef and page are ignored. If comp is null, page must be specified.

        Parameters:
        page - the page. It is used only if comp is null.
        comp - the component.
        Returns:
        the forEach object to iterate this info multiple times, or null if this info shall be interpreted only once.
      • setForEach

        public void setForEach​(java.lang.String expr,
                               java.lang.String begin,
                               java.lang.String end)
        Sets the forEach attribute, which is usually an expression.
        Parameters:
        expr - the expression to return a collection of objects, or null/empty to denote no iteration.
      • setForEach

        public void setForEach​(java.lang.String expr,
                               java.lang.String begin,
                               java.lang.String end,
                               java.lang.String step)
        Sets the forEach attribute, which is usually an expression.
        Parameters:
        expr - the expression to return a collection of objects, or null/empty to denote no iteration.
        Since:
        8.0.0
      • withForEach

        public boolean withForEach()
        Returns whether the forEach condition is defined.
      • getCondition

        public ConditionImpl getCondition()
        Returns the effectiveness condition.
      • setCondition

        public void setCondition​(ConditionImpl cond)
        Sets the effectiveness condition.
      • withCondition

        public boolean withCondition()
        Tests if the condition is set
      • isEffective

        public boolean isEffective​(Component comp)
        Description copied from interface: Condition
        Used to evaluate whether it is effective.
        Specified by:
        isEffective in interface Condition
        Parameters:
        comp - used as the self variable. Ignored if null.
      • isEffective

        public boolean isEffective​(Page page)
        Description copied from interface: Condition
        Used to evaluate whether it is effective.
        Specified by:
        isEffective in interface Condition
        Parameters:
        page - used as the self variable. Ignored if null.
      • getPageDefinition

        public PageDefinition getPageDefinition()
        Description copied from interface: NodeInfo
        Returns the page definition, i.e., the root node, or null if not available.
        Specified by:
        getPageDefinition in interface NodeInfo
      • getParent

        public NodeInfo getParent()
        Description copied from interface: NodeInfo
        Returns the parent, or null if it has no parent.
        Specified by:
        getParent in interface NodeInfo