// Language (will be something like "_fr")
String l = pathMatcher.group(3);
if (l != null && !"".equals(l)) {
l = l.substring(1);
Language language = site.getLanguage(l);
if (language == null) {
logger.debug("Switching request language {} for {}", l, site.getDefaultLanguage().getIdentifier());
this.language = site.getDefaultLanguage();
}
this.language = language;
}
// Flavor
String f = pathMatcher.group(4);
if (f != null && !"".equals(f))
try {
this.flavor = RequestFlavor.parseString(f);
} catch (IllegalArgumentException e) {
logger.debug("Found unknwon request flavor {}", f);
}
return trim(pathMatcher.group(1));
}
// Try the segmented approach for /path/to/resource/<language>/<flavor>
Matcher segmentMatcher = segmentInspector.matcher(path);
if (segmentMatcher.matches()) {
// Extract flavor and language
String url = trim(segmentMatcher.group(1));
String[] segments = url.split(Character.toString(separator));
for (int i = segments.length; i > 0; i--) {
String segment = segments[i - 1].replaceAll(Character.toString(separator), "");
boolean foundMetadata = false;
// Test for flavor
try {
this.flavor = RequestFlavor.parseString(segment);
url = url.substring(0, url.length() - segment.length() - 1);
foundMetadata = true;
continue;
} catch (IllegalArgumentException e) {
logger.debug("Found unknown request flavor {}", segment);
}
// Test group for language
Language language = site.getLanguage(segment);
if (language != null) {
this.language = language;
this.languageIsPathEncoded = true;
url = url.substring(0, url.length() - segment.length() - 1);
foundMetadata = true;