Bug 3051: Fixed pattern checks in generated DTOs
authorTony Tkacik <ttkacik@cisco.com>
Thu, 23 Apr 2015 15:13:36 +0000 (17:13 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Thu, 23 Apr 2015 15:13:36 +0000 (17:13 +0200)
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 cc3a78809a8215943b3f82a2469f8f54ed705313..6699d502006c1682cea241daa1d322b033a67d8c 100644 (file)
@@ -290,15 +290,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