From 8ef68c1f7a6ce99e5a7cafe58babd70c1518b180 Mon Sep 17 00:00:00 2001 From: Michael Vorburger Date: Mon, 9 Jan 2017 17:02:45 +0100 Subject: [PATCH] Bump xtendbeans version for AssertBeans to support YANG union types Change-Id: If6998d3e5dc766e67ca7bfa5f1954197759bc05f Signed-off-by: Michael Vorburger --- binding/mdsal-binding-test-utils/pom.xml | 2 +- .../testutils/XtendYangBeanGenerator.java | 8 +++-- .../testutils/AssertDataObjectsTest.java | 4 +-- .../mdsal/binding/testutils/UnionTest.java | 31 +++++++++++++++++++ 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/UnionTest.java diff --git a/binding/mdsal-binding-test-utils/pom.xml b/binding/mdsal-binding-test-utils/pom.xml index e108a76145..985cc685f5 100644 --- a/binding/mdsal-binding-test-utils/pom.xml +++ b/binding/mdsal-binding-test-utils/pom.xml @@ -48,7 +48,7 @@ ch.vorburger xtendbeans compile - 1.2.0 + 1.2.1 com.googlecode.java-diff-utils diff --git a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java index 2f7f7aab67..fb12ea3e7d 100644 --- a/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java +++ b/binding/mdsal-binding-test-utils/src/main/java/org/opendaylight/mdsal/binding/testutils/XtendYangBeanGenerator.java @@ -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> 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); } diff --git a/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/AssertDataObjectsTest.java b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/AssertDataObjectsTest.java index e446193d8e..89b4d0ff68 100644 --- a/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/AssertDataObjectsTest.java +++ b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/AssertDataObjectsTest.java @@ -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 index 0000000000..def91b161c --- /dev/null +++ b/binding/mdsal-binding-test-utils/src/test/java/org/opendaylight/mdsal/binding/testutils/UnionTest.java @@ -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"))); + } + +} -- 2.36.6