in chatterbox-imap/chatterbox-imap-impl/src/main/java/org/apache/tomee/chatterbox/imap/adapter/Template.java [42:79]
public Template(final String theTemplate) {
template = theTemplate;
final StringBuilder literalChars = new StringBuilder();
final StringBuilder patternBuilder = new StringBuilder();
final CurlyBraceTokenizer tok = new CurlyBraceTokenizer(template);
uriChunks = new ArrayList<>();
while (tok.hasNext()) {
final String templatePart = tok.next();
final UriChunk chunk = UriChunk.createUriChunk(templatePart);
uriChunks.add(chunk);
if (chunk instanceof Literal) {
final String substr = escapeCharacters(chunk.getValue());
literalChars.append(substr);
patternBuilder.append(substr);
} else if (chunk instanceof Variable) {
final Variable var = (Variable) chunk;
variables.add(var.getName());
if (var.getPattern() != null) {
customVariables.add(var.getName());
patternBuilder.append('(');
patternBuilder.append(var.getPattern());
patternBuilder.append(')');
} else {
patternBuilder.append(DEFAULT_PATH_VARIABLE_REGEX);
}
}
}
literals = literalChars.toString();
final int endPos = patternBuilder.length() - 1;
final boolean endsWithSlash = (endPos >= 0) && patternBuilder.charAt(endPos) == '/';
if (endsWithSlash) {
patternBuilder.deleteCharAt(endPos);
}
patternBuilder.append(LIMITED_REGEX_SUFFIX);
templateRegexPattern = Pattern.compile(patternBuilder.toString());
}