From 9383f07e7acb9ee8979cb37ecc6b93972914ee55 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 21 Jun 2018 13:04:11 +0200 Subject: [PATCH] Fix JDK9 pattern handling Java 9's Pattern is reporting different error strings, deal with that. Change-Id: I8f3035530f10a77b23f1531c0ced0b0532795608 Signed-off-by: Robert Varga --- .../yangtools/yang/model/util/RegexUtils.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RegexUtils.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RegexUtils.java index 7aab1eaf94..e9f47a2d56 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RegexUtils.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/RegexUtils.java @@ -304,8 +304,10 @@ public final class RegexUtils { 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; } @@ -320,7 +322,12 @@ public final class RegexUtils { 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"); -- 2.36.6