public boolean match()

in chatterbox-xmpp/chatterbox-xmpp-impl/src/main/java/org/apache/tomee/chatterbox/xmpp/impl/Template.java [114:159]


    public boolean match(final String uri, final Map<String, List<String>> templateVariableToValue) {

        if (uri == null) {
            return (templateRegexPattern == null);
        }

        if (templateRegexPattern == null) {
            return false;
        }

        Matcher m = templateRegexPattern.matcher(uri);
        if (!m.matches()) {
            return false;
        }

        // Assign the matched template values to template variables
        final int groupCount = m.groupCount();

        int i = 1;
        for (final String name : variables) {
            while (i <= groupCount) {
                final String value = m.group(i++);
                if ((value == null || value.length() == 0 && i < groupCount)
                        && variables.size() + 1 < groupCount) {
                    continue;
                }

                if (templateVariableToValue.get(name) == null) {
                    templateVariableToValue.put(name, new ArrayList<>());
                }

                templateVariableToValue.get(name).add(value);
                break;
            }
        }
        // The right hand side value, might be used to further resolve
        // sub-resources.

        String finalGroup = m.group(groupCount);
        if (finalGroup == null) {
            finalGroup = "";
        }

        templateVariableToValue.put(FINAL_MATCH_GROUP, Collections.singletonList(finalGroup));
        return true;
    }