Bug 3051: Fixed pattern checks in generated DTOs 73/18973/6
authorTony Tkacik <ttkacik@cisco.com>
Thu, 23 Apr 2015 15:13:36 +0000 (17:13 +0200)
committerRobert Varga <nite@hq.sk>
Fri, 5 Jun 2015 10:47:39 +0000 (10:47 +0000)
Pattern checks in generated DTOs were generated as
OR checks in case model type specified multiple
patterns, but correct behaviour is to do AND.

So in order string needs to verified against
all patterns and match all of them.

Change-Id: If82e282312c82dd71de79534c7fa599fcdcefab4
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend
model/ietf/ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev100924/HostBuilderTest.java

index d9dd1c1c3bb3018cb56aaae372b1f4928fbb8b72..6ca20e3ae61f50a1b327f3b65e2a2257216bc793 100644 (file)
@@ -296,15 +296,10 @@ 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) {
-                if (p.matcher(_value).matches()) {
-                    valid = true;
-                    break;
-                }
+                «Preconditions.importedName».checkArgument(p.matcher(_value).matches(), "Supplied value \"%s\" does not match any of the permitted patterns %s", _value, «TypeConstants.PATTERN_CONSTANT_NAME»);
             }
 
-            «Preconditions.importedName».checkArgument(valid, "Supplied value \"%s\" does not match any of the permitted patterns %s", _value, «TypeConstants.PATTERN_CONSTANT_NAME»);
                 «ENDIF»
             «ENDFOR»
         «ENDIF»
index 1339fc06cf7e101ae6d1e1183a5c6aabeb9721db..d2259d006b21382a680aebf62da509e503065b1f 100644 (file)
@@ -16,24 +16,23 @@ public class HostBuilderTest {
 
     @Test
     public void testGetDefaultInstanceIpv4() throws Exception {
-        Host host = HostBuilder.getDefaultInstance("127.0.0.1");
+        final Host host = HostBuilder.getDefaultInstance("127.0.0.1");
         assertEquals(new Host(new IpAddress(new Ipv4Address("127.0.0.1"))), host);
     }
 
     @Test
     public void testGetDefaultInstanceIpv6() throws Exception {
-        testIpv6("2001:db8:8s5a3:0:0:8a2e:370:7334");
-        testIpv6("2001:db8:85a3::8a2e:370:7334");
+        testIpv6("1234:5678:9abc:def1:2345:6789:abcd:ef12");
     }
 
     private void testIpv6(final String ivp6string) {
-        Host host = HostBuilder.getDefaultInstance(ivp6string);
+        final Host host = HostBuilder.getDefaultInstance(ivp6string);
         assertEquals(new Host(new IpAddress(new Ipv6Address(ivp6string))), host);
     }
 
     @Test
     public void testGetDefaultInstanceDomain() throws Exception {
-        Host host = HostBuilder.getDefaultInstance("localhost");
+        final Host host = HostBuilder.getDefaultInstance("localhost");
         assertEquals(new Host(new DomainName("localhost")), host);
     }
 }
\ No newline at end of file