Class WithDefaultsRulesWrapper

  • All Implemented Interfaces:
    Rules

    public class WithDefaultsRulesWrapper
    extends 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
    • Constructor Detail

      • WithDefaultsRulesWrapper

        public WithDefaultsRulesWrapper​(Rules wrappedRules)
        Base constructor.
        Parameters:
        wrappedRules - the wrapped Rules implementation, not null
        Throws:
        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 String getNamespaceURI()
        Gets namespace to apply to Rules added
        Specified by:
        getNamespaceURI in interface Rules
      • setNamespaceURI

        public void setNamespaceURI​(String namespaceURI)
        Sets namespace to apply to Rules 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 List<Rule> getDefaults()
        Gets Rule's which will be fired when the wrapped implementation returns no matches
      • match

        public List<Rule> match​(String namespaceURI,
                                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 List<Rule> rules()
        Gets all rules
        Specified by:
        rules in interface Rules
      • clear

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

        public void add​(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