From: Robert Varga Date: Sun, 29 May 2016 18:52:53 +0000 (+0200) Subject: BUG-5280: validate FrontendType regular expression X-Git-Tag: release/boron~154 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=93fd13870364f77c234d6bd981906d7ef3bd3b46 BUG-5280: validate FrontendType regular expression Isolate the regular expresison to a constant so it can be compile-time tested via @RegEx. Change-Id: I35277fe1e7c6c741ef286b577bb8da7b165e3481 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java index 806a7ad104..471b489046 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/concepts/FrontendType.java @@ -20,6 +20,7 @@ import java.io.ObjectInput; import java.io.ObjectOutput; import java.nio.charset.StandardCharsets; import java.util.regex.Pattern; +import javax.annotation.RegEx; import org.opendaylight.yangtools.concepts.Identifier; /** @@ -61,7 +62,9 @@ public final class FrontendType implements Comparable, Identifier, } } - private static final Pattern SIMPLE_STRING_PATTERN = Pattern.compile("^[a-zA-Z-_.*+:=,!~';]+$"); + @RegEx + private static final String SIMPLE_STRING_REGEX = "^[a-zA-Z0-9-_.*+:=,!~';]+$"; + private static final Pattern SIMPLE_STRING_PATTERN = Pattern.compile(SIMPLE_STRING_REGEX); private static final long serialVersionUID = 1L; private final String name; private volatile byte[] serialized; @@ -78,7 +81,7 @@ public final class FrontendType implements Comparable, Identifier, /** * Return a {@link FrontendType} corresponding to a string representation. Input string has constraints * on what characters it can contain. It may contain the following: - * - US-ASCII letters + * - US-ASCII letters and numbers * - special characters: -_.*+:=,!~'; * * @return A {@link FrontendType} instance @@ -86,7 +89,8 @@ public final class FrontendType implements Comparable, Identifier, */ public static FrontendType forName(final String name) { Preconditions.checkArgument(!Strings.isNullOrEmpty(name)); - Preconditions.checkArgument(SIMPLE_STRING_PATTERN.matcher(name).matches()); + Preconditions.checkArgument(SIMPLE_STRING_PATTERN.matcher(name).matches(), + "Supplied name %s does not patch pattern %s", name, SIMPLE_STRING_REGEX); return new FrontendType(name); }