Java 9's Pattern is reporting different error strings, deal with
that.
Change-Id: I8f3035530f10a77b23f1531c0ced0b0532795608
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
return rawPattern;
} catch (final PatternSyntaxException ex) {
LOG.debug("Invalid regex pattern syntax in: {}", rawPattern, ex);
return rawPattern;
} catch (final PatternSyntaxException ex) {
LOG.debug("Invalid regex pattern syntax in: {}", rawPattern, ex);
- if (ex.getMessage().contains("Unknown character script name")) {
- rawPattern = fixUnknownScripts(ex.getMessage(), rawPattern);
+ final String msg = ex.getMessage();
+ if (msg.startsWith("Unknown character script name")
+ || msg.startsWith("Unknown character property name")) {
+ rawPattern = fixUnknownScripts(msg, rawPattern);
} else {
return rawPattern;
}
} else {
return rawPattern;
}
StringBuilder result = new StringBuilder(rawPattern);
final Matcher matcher = BETWEEN_CURLY_BRACES_PATTERN.matcher(exMessage);
if (matcher.find()) {
StringBuilder result = new StringBuilder(rawPattern);
final Matcher matcher = BETWEEN_CURLY_BRACES_PATTERN.matcher(exMessage);
if (matcher.find()) {
- final String capturedGroup = matcher.group(1);
+ String capturedGroup = matcher.group(1);
+ if (capturedGroup.startsWith("In/Is")) {
+ // Java 9 changed the reporting string
+ capturedGroup = capturedGroup.substring(5);
+ }
+
if (JAVA_UNICODE_BLOCKS.contains(capturedGroup)) {
final int idx = rawPattern.indexOf("Is" + capturedGroup);
result = result.replace(idx, idx + 2, "In");
if (JAVA_UNICODE_BLOCKS.contains(capturedGroup)) {
final int idx = rawPattern.indexOf("Is" + capturedGroup);
result = result.replace(idx, idx + 2, "In");