com.opensymphony.xwork2.util

## Class NamedVariablePatternMatcher

- java.lang.Object
- - com.opensymphony.xwork2.util.NamedVariablePatternMatcher

- All Implemented Interfaces:
    PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>

      public class NamedVariablePatternMatcher
      extends Object
      implements PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>

  An implementation of a pattern matcher that uses simple named wildcards. The named wildcards are defined using the `{VARIABLE_NAME}` syntax and will match any characters that aren't '/'. Internally, the pattern is converted into a regular expression where the named wildcard will be translated into `([^/]+)` so that at least one character must match in order for the wildcard to be matched successfully. Matched values will be available in the variable map, indexed by the name they were given in the pattern.

  For example, the following patterns will be processed as so:

  Pattern | Example | Variable Map Contents
  --- | --- | ---
  `/animals/{animal}` | `/animals/dog` | {animal -> dog}
  `/animals/{animal}/tag/No{id}` | `/animals/dog/tag/No23` | {animal -> dog, id -> 23}
  `/{language}` | `/en` | {language -> en}

  Excaping hasn't been implemented since the intended use of these patterns will be in matching URLs.

  Since:
    2.1

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `NamedVariablePatternMatcher.CompiledPattern` Stores the compiled pattern and the variable names matches will correspond to.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `NamedVariablePatternMatcher()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `NamedVariablePatternMatcher.CompiledPattern` | `compilePattern(String data)` Compiles the pattern.
    `boolean` | `isLiteral(String pattern)` Determines if the pattern is a simple literal string or contains wildcards that will need to be processed
    `boolean` | `match(Map<String,String> map, String data, NamedVariablePatternMatcher.CompiledPattern expr)` Tries to process the data against the compiled expression.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### NamedVariablePatternMatcher

          public NamedVariablePatternMatcher()

  - ### Method Detail

    - #### isLiteral

          public boolean isLiteral(String pattern)

      Description copied from interface: `PatternMatcher`
      Determines if the pattern is a simple literal string or contains wildcards that will need to be processed
      Specified by:
        `isLiteral` in interface `PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>`
      Parameters:
        `pattern` - The string pattern
      Returns:
        True if the pattern doesn't contain processing elements, false otherwise

    - #### compilePattern

          public NamedVariablePatternMatcher.CompiledPattern compilePattern(String data)

      Compiles the pattern.
      Specified by:
        `compilePattern` in interface `PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>`
      Parameters:
        `data` - The pattern, must not be null or empty
      Returns:
        The compiled pattern, null if the pattern was null or empty

    - #### match

          public boolean match(Map<String,String> map,
                               String data,
                               NamedVariablePatternMatcher.CompiledPattern expr)

      Tries to process the data against the compiled expression. If successful, the map will contain the matched data, using the specified variable names in the original pattern.
      Specified by:
        `match` in interface `PatternMatcher<NamedVariablePatternMatcher.CompiledPattern>`
      Parameters:
        `map` - The map of variables
        `data` - The data to match
        `expr` - The compiled pattern
      Returns:
        True if matched, false if not matched, the data was null, or the data was an empty string

Copyright © 2000–2023 Apache Software Foundation. All rights reserved.