Class MemberMatcher

  • All Implemented Interfaces:
    ITargetSelector

    public final class MemberMatcher
    extends java.lang.Object
    implements ITargetSelector
    A Target Selector which matches an element of candidate members using a regular expression. This selector is not remappable and is not suitable for use in obfuscated environments.

    Regular expressions for this selector should be enclosed in / as a delimiter character, and \ characters must be escaped per normal Java conventions (eg. use \\s instead of \s since the backslash must be escaped). Forward slash (/) characters in the regex must be escaped as well to avoid being consumed as ending delimiters.

    By default the regex match is performed against the name of the candidate, to specify matching against owner or desc, each pattern should be prefixed with owner= or desc= outside the delimiting /.

    Some examples:

       // Matches candidates starting with "foo"
       /^foo/
       
       // Matches candidates ending with "Bar" and which take a single int
       /bar$/ desc=/^\\(I\\)/
       
       // The same example but with "name" explicitly specified (optional)
       name=/bar$/ desc=/^\\(I\\)/
       
       // Matches candidates whose name contains "Entity"
       /Entity/
       
       // Matches candidates whose owner contains "/google/", note the
       // escaping of the forward slash symbols
       owner=/\\/google\\//

    The owner, name and desc expressions can be provided in any order.

    • Method Detail

      • parse

        public static MemberMatcher parse​(java.lang.String input,
                                          ISelectorContext context)
        Parse a MemberMatcher from the supplied input string.
        Parameters:
        input - Raw input string
        context - selector context
        Returns:
        parsed MemberMatcher
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • next

        public ITargetSelector next()
        Description copied from interface: ITargetSelector
        Get the next target selector in this path (or null if this selector is the last selector in the chain. Called at recurse points in the subject in order to match against the child subject.

        Can return null

        Specified by:
        next in interface ITargetSelector
      • configure

        public ITargetSelector configure​(ITargetSelector.Configure request,
                                         java.lang.String... args)
        Description copied from interface: ITargetSelector
        Configure and return a modified version of this selector by consuming the supplied arguments. Results from this method should be idempotent in terms of the configuration of the returned object, but do not have to necessarily return the same object if the callee already matches the supplied configuration, or if the requested mutation is not supported by the selector, though this is generally the case.

        In other words, calling configure(Configure.ORPHAN) when this object is already an orphan or does not support orphaning, may simply return this object, or might return an identically-configured copy.

        Must not return null, defaults to returning unmodified selector.

        Specified by:
        configure in interface ITargetSelector
        Parameters:
        request - Requested operation
        args - Configuration arguments
        Returns:
        Configured selector, may return this selector if the specified condition is already satisfied
      • match

        public <TNode> MatchResult match​(ElementNode<TNode> node)
        Description copied from interface: ITargetSelector
        Test whether this selector matches the supplied element node
        Specified by:
        match in interface ITargetSelector
        Type Parameters:
        TNode - node type
        Parameters:
        node - node node to test
        Returns:
        true if this selector can match the supplied field