Bump xtendbeans version for AssertBeans to support YANG union types 37/50137/6
authorMichael Vorburger <vorburger@redhat.com>
Mon, 9 Jan 2017 16:02:45 +0000 (17:02 +0100)
committerMichael Vorburger <vorburger@redhat.com>
Tue, 10 Jan 2017 10:01:17 +0000 (11:01 +0100)
Change-Id: If6998d3e5dc766e67ca7bfa5f1954197759bc05f
Signed-off-by: Michael Vorburger <vorburger@redhat.com>
binding/mdsal-binding-test-utils/pom.xml
binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java
binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/AssertDataObjectsTest.java
binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/UnionTest.java [new file with mode: 0644]

index e108a761456001427b27576e9b705e5d5dcc1a97..985cc685f57eeb31b37aa42da84e60a511635917 100644 (file)
@@ -48,7 +48,7 @@
       <groupId>ch.vorburger</groupId>
       <artifactId>xtendbeans</artifactId>
       <scope>compile</scope>
-      <version>1.2.0</version>
+      <version>1.2.1</version>
     </dependency>
     <dependency>
       <groupId>com.googlecode.java-diff-utils</groupId>
index 2f7f7aab67522d7a65848935d34aad796e87190c..fb12ea3e7da50d7ebaa59fcd3180dd13572429f0 100644 (file)
@@ -76,9 +76,13 @@ class XtendYangBeanGenerator extends XtendBeanGenerator {
     protected CharSequence getNewBeanExpression(Object bean) {
         if (bean instanceof DataContainer) {
             DataContainer dataContainerBean = (DataContainer) bean;
-            Class<?> builderClass = getBuilderClassByAppendingBuilderToClassName(
+            Optional<Class<?>> optBuilderClass = getOptionalBuilderClassByAppendingBuilderToClassName(
                     dataContainerBean.getImplementedInterface());
-            return super.getNewBeanExpression(dataContainerBean, builderClass);
+            if (optBuilderClass.isPresent()) {
+                return super.getNewBeanExpression(dataContainerBean, optBuilderClass.get());
+            } else {
+                throw new IllegalArgumentException("DataContainer has no *Builder class: " + bean.getClass());
+            }
         } else {
             return super.getNewBeanExpression(bean);
         }
index e446193d8e71e2fea3446ed264342f075822aa60..89b4d0ff688e2a1c8ca5b5ab34ccaee4d8ac12d9 100644 (file)
@@ -32,12 +32,12 @@ public class AssertDataObjectsTest extends AbstractDataBrokerTest {
 
     @Test
     public void testAssertDataObjectsWithTopLevelListKey() {
-        AssertDataObjects.assertEqualByText("new TopLevelListKey(\"test\")\n", new TopLevelListKey("test"));
+        AssertDataObjects.assertEqualByText("new TopLevelListKey(\"test\")", new TopLevelListKey("test"));
     }
 
     @Test
     public void testAssertDataObjectsWithEmptyTop() {
-        AssertDataObjects.assertEqualByText(HEADER + "new TopBuilder\n", ExampleYangObjects.topEmpty().getValue());
+        AssertDataObjects.assertEqualByText(HEADER + "new TopBuilder", ExampleYangObjects.topEmpty().getValue());
     }
 
     @Test
diff --git a/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/UnionTest.java b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/UnionTest.java
new file mode 100644 (file)
index 0000000..def91b1
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2017 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.mdsal.binding.testutils;
+
+import ch.vorburger.xtendbeans.AssertBeans;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.LowestLevel2;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.UnionTestType;
+
+/**
+ * Tests YANG "type union" gen. code. These used to confuse the hell out of
+ * ch.vorburger.xtendbeans v1.2.0, and required a number of fixes in
+ * v1.2.1.
+ *
+ * @author Michael Vorburger
+ */
+public class UnionTest {
+
+    @Test
+    public void testUnionType() {
+        AssertBeans.assertEqualByText(
+                "new UnionTestType(new LowestLevel2(\"testValue\"))",
+                new UnionTestType(new LowestLevel2("testValue")));
+    }
+
+}