BUG-1485: store patterns in an array
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / ClassTemplate.xtend
index 6699d502006c1682cea241daa1d322b033a67d8c..6da9c0a7b199e216d5aade24feec09e65e49d57d 100644 (file)
@@ -290,10 +290,15 @@ class ClassTemplate extends BaseTemplate {
 
             «FOR c : consts»
                 «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME && c.value instanceof List<?>»
+            boolean valid = false;
             for (Pattern p : patterns) {
-                «Preconditions.importedName».checkArgument(p.matcher(_value).matches(), "Supplied value \"%s\" does not match any of the permitted patterns %s", _value, «TypeConstants.PATTERN_CONSTANT_NAME»);
+                if (p.matcher(_value).matches()) {
+                    valid = true;
+                    break;
+                }
             }
 
+            «Preconditions.importedName».checkArgument(valid, "Supplied value \"%s\" does not match any of the permitted patterns %s", _value, «TypeConstants.PATTERN_CONSTANT_NAME»);
                 «ENDIF»
             «ENDFOR»
         «ENDIF»
@@ -467,7 +472,7 @@ class ClassTemplate extends BaseTemplate {
                 «IF c.name == TypeConstants.PATTERN_CONSTANT_NAME»
                     «val cValue = c.value»
                     «IF cValue instanceof List<?>»
-                        private static final «List.importedName»<«Pattern.importedName»> «Constants.MEMBER_PATTERN_LIST»;
+                        private static final «Pattern.importedName»[] «Constants.MEMBER_PATTERN_LIST»;
                         public static final «List.importedName»<String> «TypeConstants.PATTERN_CONSTANT_NAME» = «ImmutableList.importedName».of(«
                         FOR v : cValue SEPARATOR ", "»«
                             IF v instanceof String»"«
@@ -491,12 +496,13 @@ class ClassTemplate extends BaseTemplate {
      */
     def protected generateStaticInicializationBlock() '''
         static {
-            final «List.importedName»<«Pattern.importedName»> l = new «ArrayList.importedName»<«Pattern.importedName»>();
+            final «Pattern.importedName» a[] = new «Pattern.importedName»[«TypeConstants.PATTERN_CONSTANT_NAME».size()];
+            int i = 0;
             for (String regEx : «TypeConstants.PATTERN_CONSTANT_NAME») {
-                l.add(Pattern.compile(regEx));
+                a[i++] = Pattern.compile(regEx);
             }
 
-            «Constants.MEMBER_PATTERN_LIST» = «ImmutableList.importedName».copyOf(l);
+            «Constants.MEMBER_PATTERN_LIST» = a;
         }
     '''