Class WithDefaultsRulesWrapper

  • All Implemented Interfaces:
    Rules

    public class WithDefaultsRulesWrapper
    extends java.lang.Object
    implements Rules

    Rules Decorator that returns default rules when no matches are returned by the wrapped implementation.

    This allows default Rule instances to be added to any existing Rules implementation. These default Rule instances will be returned for any match for which the wrapped implementation does not return any matches.

    For example,

       Rule alpha;
       ...
       WithDefaultsRulesWrapper rules = new WithDefaultsRulesWrapper(new BaseRules());
       rules.addDefault(alpha);
       ...
       digester.setRules(rules);
       ...
     
    when a pattern does not match any other rule, then rule alpha will be called.

    WithDefaultsRulesWrapper follows the Decorator pattern.

    Since:
    1.6
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.List allRules
      All rules (preserves order in which they were originally added)
      private java.util.List defaultRules
      Rules to be fired when the wrapped implementations returns none.
      private Rules wrappedRules
      The Rules implementation that this class wraps.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void add​(java.lang.String pattern, Rule rule)
      Adds a Rule to be fired on given pattern.
      void addDefault​(Rule rule)
      Adds a rule to be fired when wrapped implementation returns no matches
      void clear()
      Clears all Rule's
      java.util.List getDefaults()
      Gets Rule's which will be fired when the wrapped implementation returns no matches
      Digester getDigester()
      Gets digester using these Rules
      java.lang.String getNamespaceURI()
      Gets namespace to apply to Rule's added
      java.util.List match​(java.lang.String pattern)
      Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if there are no matches.
      java.util.List match​(java.lang.String namespaceURI, java.lang.String pattern)
      Return list of rules matching given pattern.
      java.util.List rules()
      Gets all rules
      void setDigester​(Digester digester)
      Sets digeseter using these Rules
      void setNamespaceURI​(java.lang.String namespaceURI)
      Sets namespace to apply to Rule's added subsequently
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • wrappedRules

        private Rules wrappedRules
        The Rules implementation that this class wraps.
      • defaultRules

        private java.util.List defaultRules
        Rules to be fired when the wrapped implementations returns none.
      • allRules

        private java.util.List allRules
        All rules (preserves order in which they were originally added)
    • Constructor Detail

      • WithDefaultsRulesWrapper

        public WithDefaultsRulesWrapper​(Rules wrappedRules)
        Base constructor.
        Parameters:
        wrappedRules - the wrapped Rules implementation, not null
        Throws:
        java.lang.IllegalArgumentException - when wrappedRules is null
    • Method Detail

      • getDigester

        public Digester getDigester()
        Gets digester using these Rules
        Specified by:
        getDigester in interface Rules
      • setDigester

        public void setDigester​(Digester digester)
        Sets digeseter using these Rules
        Specified by:
        setDigester in interface Rules
        Parameters:
        digester - The newly associated Digester instance
      • getNamespaceURI

        public java.lang.String getNamespaceURI()
        Gets namespace to apply to Rule's added
        Specified by:
        getNamespaceURI in interface Rules
      • setNamespaceURI

        public void setNamespaceURI​(java.lang.String namespaceURI)
        Sets namespace to apply to Rule's added subsequently
        Specified by:
        setNamespaceURI in interface Rules
        Parameters:
        namespaceURI - Namespace URI that must match on all subsequently added rules, or null for matching regardless of the current namespace URI
      • getDefaults

        public java.util.List getDefaults()
        Gets Rule's which will be fired when the wrapped implementation returns no matches
      • match

        public java.util.List match​(java.lang.String pattern)
        Description copied from interface: Rules
        Return a List of all registered Rule instances that match the specified nesting pattern, or a zero-length List if there are no matches. If more than one Rule instance matches, they must be returned in the order originally registered through the add() method.
        Specified by:
        match in interface Rules
        Parameters:
        pattern - Nesting pattern to be matched
      • match

        public java.util.List match​(java.lang.String namespaceURI,
                                    java.lang.String pattern)
        Return list of rules matching given pattern. If wrapped implementation returns any matches return those. Otherwise, return default matches.
        Specified by:
        match in interface Rules
        Parameters:
        namespaceURI - Namespace URI for which to select matching rules, or null to match regardless of namespace URI
        pattern - Nesting pattern to be matched
      • addDefault

        public void addDefault​(Rule rule)
        Adds a rule to be fired when wrapped implementation returns no matches
      • rules

        public java.util.List rules()
        Gets all rules
        Specified by:
        rules in interface Rules
      • clear

        public void clear()
        Clears all Rule's
        Specified by:
        clear in interface Rules
      • add

        public void add​(java.lang.String pattern,
                        Rule rule)
        Adds a Rule to be fired on given pattern. Pattern matching is delegated to wrapped implementation.
        Specified by:
        add in interface Rules
        Parameters:
        pattern - Nesting pattern to be matched for this Rule
        rule - Rule instance to be registered