From 31776f5c9d96892e93b8378ca09dc0c3caa41c2c Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 8 Apr 2022 23:00:37 +0200 Subject: [PATCH] Do not generate union builders Union builds are not referenced by generated code anymore and have a number of issues which need to be addressed separately. Just do not generate them at all, pending a proper factory replacement. JIRA: MDSAL-49 Change-Id: I6b769ca4d82da16b9f48720e8a17d7c4e1b4e8ef Signed-off-by: Robert Varga --- .../binding/dom/codec/impl/UnionTypeTest.java | 93 ++++++-------- .../impl/UnionTypeWithIdentityrefTest.java | 63 ---------- .../reactor/AbstractTypeObjectGenerator.java | 25 +--- .../generator/impl/BinaryTypeTest.java | 6 +- .../impl/BindingGeneratorImplTest.java | 4 +- .../binding/generator/impl/Bug1862Test.java | 10 +- .../generator/impl/ControllerTest.java | 6 +- ...InnerClassForBitsAndUnionInLeavesTest.java | 6 +- .../impl/GeneratedTypesLeafrefTest.java | 7 +- .../generator/impl/GeneratedTypesTest.java | 6 +- .../binding/generator/impl/Mdsal161Test.java | 4 +- .../binding/generator/impl/Mdsal269Test.java | 7 +- .../binding/generator/impl/Mdsal320Test.java | 6 +- .../binding/generator/impl/Mdsal324Test.java | 8 +- .../binding/generator/impl/Mdsal458Test.java | 8 +- .../binding/generator/impl/Mdsal572Test.java | 7 +- .../generator/impl/UnionTypeDefTest.java | 12 +- .../java/api/generator/JavaFileGenerator.java | 11 +- .../java/api/generator/TOGenerator.java | 3 - .../api/generator/UnionBuilderTemplate.xtend | 70 ----------- .../api/generator/BuilderGeneratorTest.java | 8 +- .../java/api/generator/CompilationTest.java | 3 +- .../api/generator/TypedefCompilationTest.java | 38 ++---- .../UnionTypedefUnusedImportTest.java | 38 +----- .../model/api/GeneratedTransferObject.java | 2 - .../api/type/builder/GeneratedTOBuilder.java | 2 - .../builder/AbstractGeneratedTOBuilder.java | 57 ++++----- .../builder/GeneratedTOBuilderImplTest.java | 2 - .../rev151105/IpAddressBinaryBuilder.java | 25 ---- .../ContInt32RefUnionInt32Builder.java | 19 --- .../v1/bug8449/rev170516/ContRefBuilder.java | 19 --- .../rev140701/Int32StringUnionBuilder.java | 24 ---- .../bug/_6006/rev160607/UnionTypeBuilder.java | 33 ----- .../test/union/rev150121/TopLevelBuilder.java | 29 ----- .../union/rev150121/UnionTestTypeBuilder.java | 30 ----- .../urn/test/rev170101/ContVlanIdBuilder.java | 20 --- .../rev180408/NumberUnionBuilder.java | 26 ---- .../inet/types/rev130715/HostBuilder.java | 72 ----------- .../inet/types/rev130715/IetfInetUtil.java | 98 ++++++++++++++- .../types/rev130715/IpAddressBuilder.java | 33 ----- .../rev130715/IpAddressNoZoneBuilder.java | 29 ----- .../inet/types/rev130715/IpPrefixBuilder.java | 33 ----- .../inet/types/rev130715/HostBuilderTest.java | 21 +--- .../types/rev130715/IpAddressBuilderTest.java | 23 ++-- .../rev130715/IpAddressNoZoneBuilderTest.java | 21 +--- .../types/rev130715/IpPrefixBuilderTest.java | 21 +--- .../types/rev171204/IetfRoutingUtils.java | 118 ++++++++++++++++++ .../IpMulticastGroupAddressBuilder.java | 41 ------ .../Ipv4MulticastSourceAddressBuilder.java | 45 ------- .../Ipv6MulticastSourceAddressBuilder.java | 45 ------- .../types/rev171204/MplsLabelBuilder.java | 87 ------------- .../TimerValueMillisecondsBuilder.java | 46 ------- .../rev171204/TimerValueSeconds16Builder.java | 45 ------- .../rev171204/TimerValueSeconds32Builder.java | 45 ------- model/ietf/rfc8519-ietf-ethertypes/pom.xml | 1 - ...ertypeBuilder.java => EthertypeUtils.java} | 7 +- .../rev190104/LegacyRevisionUtils.java | 64 ++++++++++ .../yang/library/rev190104/RevisionUtils.java | 55 ++++++++ .../list/CommonLeafsRevisionBuilder.java | 60 --------- .../ImportOnlyModuleRevisionBuilder.java | 51 -------- model/ietf/rfc8776-ietf-te-types/pom.xml | 1 - .../types/rev200610/AdminGroupsBuilder.java | 22 ---- .../ietf/te/types/rev200610/IetfTeUtil.java | 38 ++++++ .../rev200610/PathAttributeFlagsBuilder.java | 18 --- .../types/rev200610/TeTopologyIdBuilder.java | 20 --- .../te/types/rev200610/TeTpIdBuilder.java | 23 ---- .../rfc8525/MountPointContextFactoryImpl.java | 8 +- 67 files changed, 518 insertions(+), 1410 deletions(-) delete mode 100644 binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeWithIdentityrefTest.java delete mode 100644 binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionBuilderTemplate.xtend delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug5446/rev151105/IpAddressBinaryBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContInt32RefUnionInt32Builder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContRefBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/binding/rev140701/Int32StringUnionBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/bug/_6006/rev160607/UnionTypeBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/TopLevelBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/UnionTestTypeBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/rev170101/ContVlanIdBuilder.java delete mode 100644 binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/unsigned/rev180408/NumberUnionBuilder.java delete mode 100644 model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilder.java delete mode 100644 model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilder.java delete mode 100644 model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilder.java delete mode 100644 model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilder.java create mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IetfRoutingUtils.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IpMulticastGroupAddressBuilder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv4MulticastSourceAddressBuilder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv6MulticastSourceAddressBuilder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/MplsLabelBuilder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueMillisecondsBuilder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds16Builder.java delete mode 100644 model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds32Builder.java rename model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/{EthertypeBuilder.java => EthertypeUtils.java} (97%) create mode 100644 model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/LegacyRevisionUtils.java create mode 100644 model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/RevisionUtils.java delete mode 100644 model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/list/CommonLeafsRevisionBuilder.java delete mode 100644 model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/set/parameters/ImportOnlyModuleRevisionBuilder.java delete mode 100644 model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/AdminGroupsBuilder.java create mode 100644 model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/IetfTeUtil.java delete mode 100644 model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/PathAttributeFlagsBuilder.java delete mode 100644 model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTopologyIdBuilder.java delete mode 100644 model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTpIdBuilder.java diff --git a/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeTest.java b/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeTest.java index 99ad1587f9..e40b37f928 100644 --- a/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeTest.java +++ b/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeTest.java @@ -7,63 +7,40 @@ */ package org.opendaylight.mdsal.binding.dom.codec.impl; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.Map.Entry; -import org.junit.Assert; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.bug5446.rev151105.IpAddressBinary; -import org.opendaylight.yang.gen.v1.bug5446.rev151105.IpAddressBinaryBuilder; -import org.opendaylight.yang.gen.v1.bug5446.rev151105.Root; -import org.opendaylight.yang.gen.v1.bug5446.rev151105.RootBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.TopLevel; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.TopLevelBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.Wrapper; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121.WrapperBuilder; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; -import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; - public class UnionTypeTest extends AbstractBindingCodecTest { - private static final String TEST_STRING = "testtesttest"; - private static final QName WRAPPER_QNAME = QName.create("urn:opendaylight:params:xml:ns:yang:yangtools:test:union", - "2015-01-21", "wrapper"); - private static final QName WRAP_LEAF_QNAME = QName.create(WRAPPER_QNAME, "wrap"); - - @Test - public void unionTest() { - TopLevel topLevel = TopLevelBuilder.getDefaultInstance(TEST_STRING); - Wrapper wrapper = new WrapperBuilder().setWrap(topLevel).build(); - NormalizedNode topLevelEntry = codecContext.toNormalizedNode(InstanceIdentifier.create(Wrapper.class), - wrapper).getValue(); - - ContainerNode containerNode = ImmutableContainerNodeBuilder.create() - .withNodeIdentifier(new NodeIdentifier(WRAPPER_QNAME)) - .withChild(ImmutableNodes.leafNode(WRAP_LEAF_QNAME, TEST_STRING)) - .build(); - Assert.assertEquals(topLevelEntry, containerNode); - } - - @Test - public void bug5446Test() { - IpAddressBinary ipAddress = IpAddressBinaryBuilder.getDefaultInstance("fwAAAQ=="); - Root root = new RootBuilder().setIpAddress(ipAddress).build(); - NormalizedNode rootNode = codecContext.toNormalizedNode(InstanceIdentifier.create(Root.class), root) - .getValue(); - - Entry, DataObject> rootEntry = codecContext.fromNormalizedNode( - YangInstanceIdentifier.of(rootNode.getIdentifier().getNodeType()), rootNode); - - DataObject rootObj = rootEntry.getValue(); - assertTrue(rootObj instanceof Root); - IpAddressBinary desIpAddress = ((Root) rootObj).getIpAddress(); - assertEquals(ipAddress, desIpAddress); - } + // FIXME: MDSAL-741: re-enable this test + // private static final String TEST_STRING = "testtesttest"; + // private static final QName WRAPPER_QNAME = QName.create( + // "urn:opendaylight:params:xml:ns:yang:yangtools:test:union", "2015-01-21", "wrapper"); + // private static final QName WRAP_LEAF_QNAME = QName.create(WRAPPER_QNAME, "wrap"); + + // @Test + // public void unionTest() { + // TopLevel topLevel = TopLevelBuilder.getDefaultInstance(TEST_STRING); + // Wrapper wrapper = new WrapperBuilder().setWrap(topLevel).build(); + // NormalizedNode topLevelEntry = codecContext.toNormalizedNode(InstanceIdentifier.create(Wrapper.class), + // wrapper).getValue(); + // + // ContainerNode containerNode = ImmutableContainerNodeBuilder.create() + // .withNodeIdentifier(new NodeIdentifier(WRAPPER_QNAME)) + // .withChild(ImmutableNodes.leafNode(WRAP_LEAF_QNAME, TEST_STRING)) + // .build(); + // Assert.assertEquals(topLevelEntry, containerNode); + // } + // + // @Test + // public void bug5446Test() { + // IpAddressBinary ipAddress = IpAddressBinaryBuilder.getDefaultInstance("fwAAAQ=="); + // Root root = new RootBuilder().setIpAddress(ipAddress).build(); + // NormalizedNode rootNode = codecContext.toNormalizedNode(InstanceIdentifier.create(Root.class), root) + // .getValue(); + // + // Entry, DataObject> rootEntry = codecContext.fromNormalizedNode( + // YangInstanceIdentifier.of(rootNode.getIdentifier().getNodeType()), rootNode); + // + // DataObject rootObj = rootEntry.getValue(); + // assertTrue(rootObj instanceof Root); + // IpAddressBinary desIpAddress = ((Root) rootObj).getIpAddress(); + // assertEquals(ipAddress, desIpAddress); + // } } diff --git a/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeWithIdentityrefTest.java b/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeWithIdentityrefTest.java deleted file mode 100644 index 918c4b62c6..0000000000 --- a/binding/mdsal-binding-dom-codec/src/test/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeWithIdentityrefTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2016 Intel Corporation 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.dom.codec.impl; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.Map.Entry; -import org.junit.Test; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607.IdentOne; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607.UnionNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607.UnionNodeBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607.UnionType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607.UnionTypeBuilder; -import org.opendaylight.yangtools.yang.binding.DataObject; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.common.Uint8; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; - -public class UnionTypeWithIdentityrefTest extends AbstractBindingCodecTest { - private static final String IDENT_ONE_STRING = "IdentOne"; - public static final QName NODE_QNAME = QName.create("urn:opendaylight:params:xml:ns:yang:mdsal:test:bug:6066", - "2016-06-07", "union-node"); - public static final QName NODE_LEAF_QNAME = QName.create(NODE_QNAME, "value"); - - private DataObject createValueNode(final String valueString) { - UnionType unionType = UnionTypeBuilder.getDefaultInstance(valueString); - UnionNode unionNode = new UnionNodeBuilder().setValue(unionType).build(); - NormalizedNode normalizedUnionNode = codecContext - .toNormalizedNode(InstanceIdentifier.builder(UnionNode.class).build(), unionNode) - .getValue(); - - Entry, DataObject> unionNodeEntry = codecContext.fromNormalizedNode( - YangInstanceIdentifier.of(normalizedUnionNode.getIdentifier().getNodeType()), normalizedUnionNode); - DataObject unionNodeObj = unionNodeEntry.getValue(); - assertTrue(unionNodeObj instanceof UnionNode); - return unionNodeObj; - } - - @Test - public void bug6006Test() { - DataObject unionNodeObj = createValueNode(IDENT_ONE_STRING); - UnionType unionTypeObj = ((UnionNode) unionNodeObj).getValue(); - assertEquals(null, unionTypeObj.getUint8()); - assertEquals(IdentOne.class, unionTypeObj.getIdentityref()); - } - - @Test - public void bug6112Test() { - DataObject unionNodeObj = createValueNode("1"); - UnionType unionTypeObj = ((UnionNode) unionNodeObj).getValue(); - assertEquals(Uint8.valueOf(1), unionTypeObj.getUint8()); - assertEquals(null, unionTypeObj.getIdentityref()); - } -} diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractTypeObjectGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractTypeObjectGenerator.java index 845fb0dcba..0ee7b43883 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractTypeObjectGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractTypeObjectGenerator.java @@ -23,7 +23,6 @@ import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil; import org.opendaylight.mdsal.binding.generator.impl.reactor.TypeReference.ResolvedLeafref; -import org.opendaylight.mdsal.binding.model.api.AccessModifier; import org.opendaylight.mdsal.binding.model.api.ConcreteType; import org.opendaylight.mdsal.binding.model.api.Enumeration; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; @@ -819,29 +818,7 @@ abstract class AbstractTypeObjectGenerator, R addUnits(builder, typedef); makeSerializable(builder); - final GeneratedTransferObject ret = builder.build(); - - // Define a corresponding union builder. Typedefs are always anchored at a Java package root, - // so we are placing the builder alongside the union. - final GeneratedTOBuilder unionBuilder = builderFactory.newGeneratedTOBuilder(unionBuilderName(typeName)); - unionBuilder.setIsUnionBuilder(true); - unionBuilder.addMethod("getDefaultInstance") - .setAccessModifier(AccessModifier.PUBLIC) - .setStatic(true) - .setReturnType(ret) - .addParameter(Types.STRING, "defaultValue"); - auxiliaryGeneratedTypes.add(unionBuilder.build()); - - return ret; - } - - // FIXME: this can be a source of conflicts as we are not guarding against nesting - private static @NonNull JavaTypeName unionBuilderName(final JavaTypeName unionName) { - final StringBuilder sb = new StringBuilder(); - for (String part : unionName.localNameComponents()) { - sb.append(part); - } - return JavaTypeName.create(unionName.packageName(), sb.append(BindingMapping.BUILDER_SUFFIX).toString()); + return builder.build(); } // FIXME: we should not rely on TypeDefinition diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java index 9efaaa1684..ccc90b4974 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java @@ -9,16 +9,14 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BinaryTypeTest { @Test public void binaryTypeTest() { - final List genTypes = DefaultBindingGenerator.generateFor( + final var genTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResourceDirectory("/binary-type-test-models")); - assertEquals(10, genTypes.size()); + assertEquals(9, genTypes.size()); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java index 7890328f1e..48d39e805d 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java @@ -147,8 +147,8 @@ public class BindingGeneratorImplTest { @Test public void testBaseYangTypes() { - final List types = DefaultBindingGenerator.generateFor( + final var types = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/base-yang-types.yang")); - assertEquals(20, types.size()); + assertEquals(19, types.size()); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug1862Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug1862Test.java index ab86208467..b64c112feb 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug1862Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug1862Test.java @@ -14,22 +14,18 @@ import static org.junit.Assert.assertEquals; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Range; import com.google.common.collect.RangeSet; -import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.MethodSignature; import org.opendaylight.mdsal.binding.model.api.Type; -import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug1862Test { @Test public void restrictedTypedefTransformationTest() { - final EffectiveModelContext context = YangParserTestUtils.parseYangResources(Bug1862Test.class, - "/base-yang-types.yang", "/test-type-provider.yang"); - final List types = DefaultBindingGenerator.generateFor(context); - assertEquals(42, types.size()); + final var types = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResources(Bug1862Test.class, + "/base-yang-types.yang", "/test-type-provider.yang")); + assertEquals(35, types.size()); final MethodSignature fooGetter = types.stream() .filter(type -> type.getFullyQualifiedName().equals( "org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.type.provider.model.rev140912.Foo")) diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java index b867798bb3..0ecaa2bce9 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java @@ -9,18 +9,16 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ControllerTest { @Test public void controllerAugmentationTest() { - final List genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResources( + final var genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResources( ControllerTest.class, "/controller-models/controller-network.yang", "/controller-models/controller-openflow.yang", "/ietf-models/ietf-inet-types.yang")); - assertEquals(56, genTypes.size()); + assertEquals(53, genTypes.size()); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java index d91f858cdf..0d6ffa8e21 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java @@ -9,7 +9,6 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; @@ -23,10 +22,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GenerateInnerClassForBitsAndUnionInLeavesTest { @Test public void testInnerClassCreationForBitsAndUnionsInLeafes() { - final List genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource( + final var genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource( "/bit_and_union_in_leaf.yang")); - assertNotNull(genTypes); - assertEquals(7, genTypes.size()); + assertEquals(4, genTypes.size()); boolean parentContainerFound = false; boolean bitLeafTOFound = false; diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java index 33e7393d8c..4ed59a121f 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java @@ -29,14 +29,13 @@ public class GeneratedTypesLeafrefTest { @Test public void testLeafrefResolving() { - final EffectiveModelContext context = YangParserTestUtils.parseYangResources(GeneratedTypesLeafrefTest.class, + final var context = YangParserTestUtils.parseYangResources(GeneratedTypesLeafrefTest.class, "/leafref-test-models/abstract-topology@2013-02-08.yang", "/ietf-models/ietf-interfaces.yang", "/ietf-models/ietf-inet-types.yang", "/ietf-models/ietf-yang-types.yang"); assertEquals(4, context.getModules().size()); - final List genTypes = DefaultBindingGenerator.generateFor(context); - - assertEquals(56, genTypes.size()); + final var genTypes = DefaultBindingGenerator.generateFor(context); + assertEquals(53, genTypes.size()); GeneratedTransferObject gtIfcKey = null; GeneratedType gtIfc = null; diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java index 2adb392851..7969ca1f82 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java @@ -23,12 +23,10 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GeneratedTypesTest { @Test public void testMultipleModulesResolving() { - final List genTypes = DefaultBindingGenerator.generateFor( + final var genTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResources(GeneratedTypesTest.class, "/abstract-topology.yang", "/ietf-models/ietf-inet-types.yang")); - - assertNotNull(genTypes); - assertEquals(30, genTypes.size()); + assertEquals(27, genTypes.size()); } @Test diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal161Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal161Test.java index 19aa03ec16..2285b601b6 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal161Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal161Test.java @@ -26,10 +26,10 @@ public class Mdsal161Test { */ @Test public void mdsal161Test() { - final Collection types = DefaultBindingGenerator.generateFor( + final var types = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/mdsal161.yang")); assertNotNull(types); - assertEquals(25, types.size()); + assertEquals(20, types.size()); assertKeyStructure(types, "org.opendaylight.yang.gen.v1.mdsal161.norev.WithGrpKey"); assertKeyStructure(types, "org.opendaylight.yang.gen.v1.mdsal161.norev.WithGrpExtKey"); diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal269Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal269Test.java index 3e46088046..3d0aba923b 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal269Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal269Test.java @@ -9,11 +9,9 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Iterator; -import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; @@ -23,10 +21,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Mdsal269Test { @Test public void mdsal269Test() { - final List generateTypes = DefaultBindingGenerator.generateFor( + final var generateTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/mdsal269.yang")); - assertNotNull(generateTypes); - assertEquals(5, generateTypes.size()); + assertEquals(4, generateTypes.size()); final GeneratedType mplsLabelType = generateTypes.stream().filter(type -> type.getFullyQualifiedName() .equals("org.opendaylight.yang.gen.v1.mdsal269.rev180130.MplsLabel")).findFirst().get(); diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal320Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal320Test.java index d5009b4e42..e2ce1057a2 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal320Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal320Test.java @@ -12,7 +12,6 @@ import static org.hamcrest.CoreMatchers.startsWith; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Iterator; @@ -29,10 +28,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Mdsal320Test { @Test public void mdsal320Test() { - final List generateTypes = DefaultBindingGenerator.generateFor( + final var generateTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/mdsal320.yang")); - assertNotNull(generateTypes); - assertEquals(4, generateTypes.size()); + assertEquals(2, generateTypes.size()); final GeneratedType foo = generateTypes.stream().filter(type -> type.getFullyQualifiedName() .equals("org.opendaylight.yang.gen.v1.urn.odl.yt320.norev.Foo")).findFirst().get(); diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal324Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal324Test.java index 9d1668324c..c38212e3b9 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal324Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal324Test.java @@ -8,19 +8,15 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Mdsal324Test { @Test public void mdsal324Test() { - final List generateTypes = DefaultBindingGenerator.generateFor( + final var generatedTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/mdsal324.yang")); - assertNotNull(generateTypes); - assertEquals(6, generateTypes.size()); + assertEquals(2, generatedTypes.size()); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal458Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal458Test.java index ab168761a1..91a2319eaa 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal458Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal458Test.java @@ -8,10 +8,8 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import com.google.common.collect.ImmutableSet; -import java.util.List; import java.util.Set; import java.util.stream.Collectors; import org.junit.Test; @@ -22,16 +20,14 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Mdsal458Test { @Test public void testNestedClassFallback() { - final List types = DefaultBindingGenerator.generateFor( + final var types = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/mdsal458.yang")); - assertNotNull(types); - assertEquals(3, types.size()); + assertEquals(2, types.size()); final Set typeNames = types.stream().map(GeneratedType::getIdentifier) .collect(Collectors.toSet()); assertEquals(ImmutableSet.of( JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal458.norev", "ExportedTo"), - JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal458.norev", "ExportedToExportedTo$Builder"), JavaTypeName.create("org.opendaylight.yang.gen.v1.mdsal458.norev", "Mdsal458Data")), typeNames); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal572Test.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal572Test.java index ae03efca9a..32f4131145 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal572Test.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Mdsal572Test.java @@ -9,16 +9,13 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Mdsal572Test { @Test public void mdsal572Test() { - final List types = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource( - "/mdsal572.yang")); - assertEquals(6, types.size()); + final var types = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource("/mdsal572.yang")); + assertEquals(5, types.size()); } } diff --git a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java index 2e1b4c7eac..e6b8151180 100644 --- a/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java +++ b/binding/mdsal-binding-generator/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java @@ -8,7 +8,6 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import java.util.List; import org.junit.Test; @@ -20,21 +19,18 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class UnionTypeDefTest { @Test public void unionTypeResolvingTest() { - final List genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResources( + final var genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResources( UnionTypeDefTest.class, "/union-test-models/abstract-topology.yang", "/ietf-models/ietf-inet-types.yang")); - - assertNotNull("genTypes is null", genTypes); - assertEquals(34, genTypes.size()); + assertEquals(29, genTypes.size()); // TODO: implement test } @Test public void unionTypedefLeafrefTest() { - final List generateTypes = DefaultBindingGenerator.generateFor( + final var generateTypes = DefaultBindingGenerator.generateFor( YangParserTestUtils.parseYangResource("/bug8449.yang")); - assertNotNull(generateTypes); - assertEquals(6, generateTypes.size()); + assertEquals(5, generateTypes.size()); final GeneratedType cont = generateTypes.stream() .filter(type -> type.getName().equals("Cont")) diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileGenerator.java index 1cdf881d00..788239eee8 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileGenerator.java @@ -22,7 +22,6 @@ import java.util.ServiceLoader; import java.util.Set; import org.opendaylight.mdsal.binding.generator.BindingGenerator; import org.opendaylight.mdsal.binding.model.api.CodeGenerator; -import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.mdsal.binding.spec.naming.BindingMapping; @@ -109,9 +108,6 @@ final class JavaFileGenerator implements FileGenerator { continue; } - final GeneratedFileLifecycle kind = type instanceof GeneratedTransferObject - && ((GeneratedTransferObject) type).isUnionTypeBuilder() - ? GeneratedFileLifecycle.PERSISTENT : GeneratedFileLifecycle.TRANSIENT; final GeneratedFilePath file = GeneratedFilePath.ofFilePath( type.getPackageName().replace('.', File.separatorChar) + File.separator + generator.getUnitName(type) + ".java"); @@ -122,11 +118,12 @@ final class JavaFileGenerator implements FileGenerator { + "generated.", type.getFullyQualifiedName()); continue; } - throw new IllegalStateException("Duplicate " + kind + " file '" + file.getPath() + "' for " - + type.getFullyQualifiedName()); + throw new IllegalStateException("Duplicate file '" + file.getPath() + "' for " + + type.getFullyQualifiedName()); } - result.put(GeneratedFileType.SOURCE, file, new CodeGeneratorGeneratedFile(kind, generator, type)); + result.put(GeneratedFileType.SOURCE, file, + new CodeGeneratorGeneratedFile(GeneratedFileLifecycle.TRANSIENT, generator, type)); } } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/TOGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/TOGenerator.java index 404f5eda7d..7b30a6aea8 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/TOGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/TOGenerator.java @@ -27,9 +27,6 @@ public final class TOGenerator implements CodeGenerator { if (genTO.isUnionType()) { final UnionTemplate template = new UnionTemplate(genTO); return template.generate(); - } else if (genTO.isUnionTypeBuilder()) { - final UnionBuilderTemplate template = new UnionBuilderTemplate(genTO); - return template.generate(); } else if (genTO.isTypedef()) { final ClassTemplate template = new ClassTemplate(genTO); return template.generate(); diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionBuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionBuilderTemplate.xtend deleted file mode 100644 index 45e14f163c..0000000000 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionBuilderTemplate.xtend +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, 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.java.api.generator - -import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject -import org.opendaylight.mdsal.binding.model.api.AccessModifier - -/** - * Template for generating JAVA class. - */ -class UnionBuilderTemplate extends ClassTemplate { - - /** - * Creates instance of this class with concrete genType. - * - * @param genType generated transfer object which will be transformed to JAVA class source code - */ - new(GeneratedTransferObject genType) { - super(genType) - } - - override body() ''' - «wrapToDocumentation(formatDataForJavaDoc(type, getClarification()))» - «generatedAnnotation» - public class «type.name» { - private «type.name»() { - //Exists only to defeat instantiation. - } - - «generateMethods» - - } - ''' - - def private generateMethods() ''' - «FOR method : genTO.methodDefinitions» - «method.accessModifier.accessModifier»«IF method.static»static«ENDIF»«IF method.final» final«ENDIF» «method. - returnType.importedName» «method.name»(«method.parameters.generateParameters») { - throw new «UnsupportedOperationException.importedName»("Not yet implemented"); - } - «ENDFOR» - ''' - - def private String getAccessModifier(AccessModifier modifier) { - switch (modifier) { - case AccessModifier.PUBLIC: return "public " - case AccessModifier.PROTECTED: return "protected " - case AccessModifier.PRIVATE: return "private " - default: return "" - } - } - - def private String getClarification() { - return - ''' - The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - - The reason behind putting it under src/main/java is: - This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - loss of user code. - ''' - } - -} diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java index 3f78e88912..a233dc27d0 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGeneratorTest.java @@ -24,7 +24,6 @@ import org.opendaylight.mdsal.binding.model.api.JavaTypeName; import org.opendaylight.mdsal.binding.model.api.MethodSignature; import org.opendaylight.mdsal.binding.model.api.MethodSignature.ValueMechanics; import org.opendaylight.mdsal.binding.model.api.Type; -import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BuilderGeneratorTest { @@ -268,10 +267,9 @@ public class BuilderGeneratorTest { @Test public void builderTemplateGenerateToEqualsComparingOrderTest() { - final EffectiveModelContext context = YangParserTestUtils.parseYangResource( - "/test-types.yang"); - final List types = new DefaultBindingGenerator().generateTypes(context); - assertEquals(29, types.size()); + final var context = YangParserTestUtils.parseYangResource("/test-types.yang"); + final var types = new DefaultBindingGenerator().generateTypes(context); + assertEquals(27, types.size()); final BuilderTemplate bt = BuilderGenerator.templateForType( types.stream().filter(t -> t.getName().equals("Nodes")).findFirst().orElseThrow()); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/CompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/CompilationTest.java index 6174b99e82..c7957ec1d1 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/CompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/CompilationTest.java @@ -378,8 +378,7 @@ public class CompilationTest extends BaseCompilationTest { assertTrue(new File(parent, "Nodes.java").exists()); assertTrue(new File(parent, "NodesBuilder.java").exists()); assertTrue(new File(parent, "Alg.java").exists()); - assertTrue(new File(parent, "NodesIdUnionBuilder.java").exists()); - CompilationTestUtils.assertFilesCount(parent, 6); + CompilationTestUtils.assertFilesCount(parent, 5); // Test if sources are compilable CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypedefCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypedefCompilationTest.java index 773c36b1ed..90d26fdff2 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypedefCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypedefCompilationTest.java @@ -39,31 +39,19 @@ public class TypedefCompilationTest extends BaseCompilationTest { generateTestSources("/compilation/typedef", sourcesOutputDir); final File parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO); - final File bitsExt = new File(parent, "BitsExt.java"); - final File int32Ext0 = new File(parent, "Int32Ext0.java"); - final File int32Ext1 = new File(parent, "Int32Ext1.java"); - final File int32Ext2 = new File(parent, "Int32Ext2.java"); - final File myDecimalType = new File(parent, "MyDecimalType.java"); - final File stringExt1 = new File(parent, "StringExt1.java"); - final File stringExt2 = new File(parent, "StringExt2.java"); - final File stringExt3 = new File(parent, "StringExt3.java"); - final File unionExt1 = new File(parent, "UnionExt1.java"); - final File unionExt2 = new File(parent, "UnionExt2.java"); - final File unionExt3 = new File(parent, "UnionExt3.java"); - final File unionExt4 = new File(parent, "UnionExt4.java"); - assertTrue(bitsExt.exists()); - assertTrue(int32Ext0.exists()); - assertTrue(int32Ext1.exists()); - assertTrue(int32Ext2.exists()); - assertTrue(myDecimalType.exists()); - assertTrue(stringExt1.exists()); - assertTrue(stringExt2.exists()); - assertTrue(stringExt3.exists()); - assertTrue(unionExt1.exists()); - assertTrue(unionExt2.exists()); - assertTrue(unionExt3.exists()); - assertTrue(unionExt4.exists()); - CompilationTestUtils.assertFilesCount(parent, 34); + assertTrue(new File(parent, "BitsExt.java").exists()); + assertTrue(new File(parent, "Int32Ext0.java").exists()); + assertTrue(new File(parent, "Int32Ext1.java").exists()); + assertTrue(new File(parent, "Int32Ext2.java").exists()); + assertTrue(new File(parent, "MyDecimalType.java").exists()); + assertTrue(new File(parent, "StringExt1.java").exists()); + assertTrue(new File(parent, "StringExt2.java").exists()); + assertTrue(new File(parent, "StringExt3.java").exists()); + assertTrue(new File(parent, "UnionExt1.java").exists()); + assertTrue(new File(parent, "UnionExt2.java").exists()); + assertTrue(new File(parent, "UnionExt3.java").exists()); + assertTrue(new File(parent, "UnionExt4.java").exists()); + CompilationTestUtils.assertFilesCount(parent, 31); // Test if sources are compilable CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTypedefUnusedImportTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTypedefUnusedImportTest.java index 8e35df7a72..153353ac56 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTypedefUnusedImportTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTypedefUnusedImportTest.java @@ -7,54 +7,22 @@ */ package org.opendaylight.mdsal.binding.java.api.generator; -import static org.junit.Assert.assertFalse; -import static org.opendaylight.mdsal.binding.java.api.generator.CompilationTestUtils.FS; -import static org.opendaylight.mdsal.binding.java.api.generator.CompilationTestUtils.GENERATOR_OUTPUT_PATH; +import static org.junit.Assert.assertEquals; import static org.opendaylight.mdsal.binding.java.api.generator.CompilationTestUtils.cleanUp; import static org.opendaylight.mdsal.binding.java.api.generator.CompilationTestUtils.testCompilation; import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.api.GeneratedType; public class UnionTypedefUnusedImportTest extends BaseCompilationTest { - @Test public void testUnionTypedefUnusedImport() throws Exception { final File sourcesOutputDir = CompilationTestUtils.generatorOutput("union-typedef"); - final List types = generateTestSources("/compilation/union-typedef", sourcesOutputDir); - - final boolean isUsedImport = containsImport( - "org.opendaylight.yang.gen.v1.org.opendaylight.yangtools.union.typedef.rev130208.TypedefUnion"); - assertFalse(String.format("Class shouldn't contain import for this type '%s'", types.get(1).getName()), - isUsedImport); + final var types = generateTestSources("/compilation/union-typedef", sourcesOutputDir); + assertEquals(2, types.size()); final File compiledOutputDir = CompilationTestUtils.compilerOutput("union-typedef"); testCompilation(sourcesOutputDir, compiledOutputDir); cleanUp(sourcesOutputDir, compiledOutputDir); } - - private static String readFile(final String path, final Charset encoding) throws IOException { - byte[] encoded = Files.readAllBytes(Paths.get(path)); - return new String(encoded, encoding); - } - - private static boolean containsImport(final String fullImport) throws URISyntaxException, IOException { - final String filePath = GENERATOR_OUTPUT_PATH + FS + "union-typedef" + FS + "org" + FS + "opendaylight" + FS - + "yang" + FS + "gen" + FS + "v1" + FS + "org" + FS + "opendaylight" + FS + "yangtools" + FS + "union" - + FS + "typedef" + FS + "rev141124" + FS + "TypedefUnionBuilder.java"; - final String fileContent = readFile(filePath, StandardCharsets.UTF_8); - - if (fileContent.contains(fullImport)) { - return true; - } - return false; - } } diff --git a/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/GeneratedTransferObject.java b/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/GeneratedTransferObject.java index 15632af2ac..e297287883 100644 --- a/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/GeneratedTransferObject.java +++ b/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/GeneratedTransferObject.java @@ -69,8 +69,6 @@ public interface GeneratedTransferObject extends GeneratedType { */ boolean isUnionType(); - boolean isUnionTypeBuilder(); - Restrictions getRestrictions(); default Optional findProperty(final String name) { diff --git a/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/type/builder/GeneratedTOBuilder.java b/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/type/builder/GeneratedTOBuilder.java index 38097e1f30..a3440dcc1a 100644 --- a/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/type/builder/GeneratedTOBuilder.java +++ b/binding/mdsal-binding-model-api/src/main/java/org/opendaylight/mdsal/binding/model/api/type/builder/GeneratedTOBuilder.java @@ -89,7 +89,5 @@ public interface GeneratedTOBuilder extends GeneratedTypeBuilderBase baseType = null; AbstractGeneratedTOBuilder(final JavaTypeName identifier) { @@ -43,7 +42,7 @@ abstract class AbstractGeneratedTOBuilder extends AbstractGeneratedTypeBuilder typeDef) { - this.baseType = typeDef; + baseType = typeDef; } @Override public final void setIsUnion(final boolean newIsUnion) { - this.isUnionType = newIsUnion; + isUnionType = newIsUnion; } @Override @@ -119,11 +118,6 @@ abstract class AbstractGeneratedTOBuilder extends AbstractGeneratedTypeBuilder baseType; private final boolean isUnionType; - private final boolean isUnionTypeBuilder; AbstractGeneratedTransferObject(final AbstractGeneratedTOBuilder builder) { super(builder); - this.extendsType = builder.extendsType; + extendsType = builder.extendsType; // FIXME: if these fields were guaranteed to be constant, we could perhaps // cache and reuse them between instances... - this.equalsProperties = toUnmodifiableProperties(builder.equalsProperties); - this.hashCodeProperties = toUnmodifiableProperties(builder.hashProperties); - this.stringProperties = toUnmodifiableProperties(builder.toStringProperties); - - this.isTypedef = builder.isTypedef; - this.baseType = builder.baseType; - this.isUnionType = builder.isUnionType; - this.isUnionTypeBuilder = builder.isUnionTypeBuilder; + equalsProperties = toUnmodifiableProperties(builder.equalsProperties); + hashCodeProperties = toUnmodifiableProperties(builder.hashProperties); + stringProperties = toUnmodifiableProperties(builder.toStringProperties); + + isTypedef = builder.isTypedef; + baseType = builder.baseType; + isUnionType = builder.isUnionType; } @Override public final boolean isTypedef() { - return this.isTypedef; + return isTypedef; } @Override public final TypeDefinition getBaseType() { - return this.baseType; + return baseType; } @Override public final boolean isUnionType() { - return this.isUnionType; - } - - @Override - public final boolean isUnionTypeBuilder() { - return this.isUnionTypeBuilder; + return isUnionType; } @Override public final GeneratedTransferObject getSuperType() { - return this.extendsType; + return extendsType; } @Override public final List getEqualsIdentifiers() { - return this.equalsProperties; + return equalsProperties; } @Override public final List getHashCodeIdentifiers() { - return this.hashCodeProperties; + return hashCodeProperties; } @Override public final List getToStringIdentifiers() { - return this.stringProperties; + return stringProperties; } @Override diff --git a/binding/mdsal-binding-model-ri/src/test/java/org/opendaylight/mdsal/binding/model/ri/generated/type/builder/GeneratedTOBuilderImplTest.java b/binding/mdsal-binding-model-ri/src/test/java/org/opendaylight/mdsal/binding/model/ri/generated/type/builder/GeneratedTOBuilderImplTest.java index ad2e088f25..fa96e6d6f0 100644 --- a/binding/mdsal-binding-model-ri/src/test/java/org/opendaylight/mdsal/binding/model/ri/generated/type/builder/GeneratedTOBuilderImplTest.java +++ b/binding/mdsal-binding-model-ri/src/test/java/org/opendaylight/mdsal/binding/model/ri/generated/type/builder/GeneratedTOBuilderImplTest.java @@ -146,7 +146,6 @@ public class GeneratedTOBuilderImplTest { JavaTypeName.create("org.opendaylight.yangtools.test", "Test")); genTOBuilder.setTypedef(true); genTOBuilder.setIsUnion(true); - genTOBuilder.setIsUnionBuilder(true); genTOBuilder.setDescription("test description"); genTOBuilder.setModuleName("test-module"); genTOBuilder.setReference("http://tools.ietf.org/html/rfc6020"); @@ -156,7 +155,6 @@ public class GeneratedTOBuilderImplTest { assertTrue(genTO.isTypedef()); assertTrue(genTO.isUnionType()); - assertTrue(genTO.isUnionTypeBuilder()); assertEquals("test description", genTO.getDescription()); assertEquals("test-module", genTO.getModuleName()); assertEquals("http://tools.ietf.org/html/rfc6020", genTO.getReference()); diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug5446/rev151105/IpAddressBinaryBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug5446/rev151105/IpAddressBinaryBuilder.java deleted file mode 100644 index 05f163af5a..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug5446/rev151105/IpAddressBinaryBuilder.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.opendaylight.yang.gen.v1.bug5446.rev151105; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class IpAddressBinaryBuilder { - public static IpAddressBinary getDefaultInstance(java.lang.String defaultValue) { - return new IpAddressBinary(Ipv4AddressBinary.getDefaultInstance(defaultValue)); - } - - public static IpAddressBinary getDefaultInstance(byte[] defaultValue) { - if (defaultValue.length == 4) { - return new IpAddressBinary(new Ipv4AddressBinary(defaultValue)); - } else if (defaultValue.length == 16) { - return new IpAddressBinary(new Ipv6AddressBinary(defaultValue)); - } - return null; - } -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContInt32RefUnionInt32Builder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContInt32RefUnionInt32Builder.java deleted file mode 100644 index 7897c1b0c6..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContInt32RefUnionInt32Builder.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.opendaylight.yang.gen.v1.bug8449.rev170516; -import org.opendaylight.yang.gen.v1.bug8449.rev170516.ContInt32.RefUnionInt32; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class ContInt32RefUnionInt32Builder { - - public static RefUnionInt32 getDefaultInstance(java.lang.String defaultValue) { - throw new java.lang.UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContRefBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContRefBuilder.java deleted file mode 100644 index 96619e4f71..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/bug8449/rev170516/ContRefBuilder.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.opendaylight.yang.gen.v1.bug8449.rev170516; -import org.opendaylight.yang.gen.v1.bug8449.rev170516.Cont.Ref; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class ContRefBuilder { - - public static Ref getDefaultInstance(java.lang.String defaultValue) { - throw new java.lang.UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/binding/rev140701/Int32StringUnionBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/binding/rev140701/Int32StringUnionBuilder.java deleted file mode 100644 index b5f6f4caf2..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/binding/rev140701/Int32StringUnionBuilder.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701; - - - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class Int32StringUnionBuilder { - - public static Int32StringUnion getDefaultInstance(final java.lang.String defaultValue) { - try { - return new Int32StringUnion(Integer.parseInt(defaultValue)); - } catch (final NumberFormatException e) { - return new Int32StringUnion(defaultValue); - } - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/bug/_6006/rev160607/UnionTypeBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/bug/_6006/rev160607/UnionTypeBuilder.java deleted file mode 100644 index bfde6691ff..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/mdsal/test/bug/_6006/rev160607/UnionTypeBuilder.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.bug._6006.rev160607; - -import org.opendaylight.yangtools.yang.common.Uint8; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class UnionTypeBuilder { - - public static UnionType getDefaultInstance(final java.lang.String defaultValue) { - if (defaultValue.equals("IdentOne")) { - return new UnionType(IdentOne.class); - } - if (defaultValue.equals("IdentTwo")) { - return new UnionType(IdentTwo.class); - } - - try { - return new UnionType(Uint8.valueOf(defaultValue)); - } catch (NumberFormatException e) { - /* do nothing */ - } - - throw new IllegalArgumentException("Unknown UnionType string " + defaultValue); - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/TopLevelBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/TopLevelBuilder.java deleted file mode 100644 index 09d8e0d7ce..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/TopLevelBuilder.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - */ -public class TopLevelBuilder { - - public static TopLevel getDefaultInstance(java.lang.String defaultValue) { - if (defaultValue.length() <= 4) { - return new TopLevel(new NonUnionTestType(defaultValue)); - } - else { - return new TopLevel(UnionTestTypeBuilder.getDefaultInstance(defaultValue)); - } - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/UnionTestTypeBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/UnionTestTypeBuilder.java deleted file mode 100644 index 613f2dc384..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/yangtools/test/union/rev150121/UnionTestTypeBuilder.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.yangtools.test.union.rev150121; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class UnionTestTypeBuilder { - - public static UnionTestType getDefaultInstance(java.lang.String defaultValue) { - if (defaultValue.length() > 8) { - return new UnionTestType(new LowestLevel1(defaultValue)); - } else { - return new UnionTestType(new LowestLevel2(defaultValue)); - } - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/rev170101/ContVlanIdBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/rev170101/ContVlanIdBuilder.java deleted file mode 100644 index bc623e1b00..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/rev170101/ContVlanIdBuilder.java +++ /dev/null @@ -1,20 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.test.rev170101; -import org.opendaylight.yang.gen.v1.urn.test.rev170101.Cont.VlanId; - - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - * - */ -public class ContVlanIdBuilder { - - public static VlanId getDefaultInstance(java.lang.String defaultValue) { - throw new java.lang.UnsupportedOperationException("Not yet implemented"); - } - -} diff --git a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/unsigned/rev180408/NumberUnionBuilder.java b/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/unsigned/rev180408/NumberUnionBuilder.java deleted file mode 100644 index bd11d586ac..0000000000 --- a/binding/mdsal-binding-test-model/src/main/java/org/opendaylight/yang/gen/v1/urn/test/unsigned/rev180408/NumberUnionBuilder.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright (c) 2018 ZTE, 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.yang.gen.v1.urn.test.unsigned.rev180408; - -/** - * The purpose of generated class in src/main/java for Union types is to create new instances of unions from a string representation. - * In some cases it is very difficult to automate it since there can be unions such as (uint32 - uint16), or (string - uint32). - * - * The reason behind putting it under src/main/java is: - * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent - * loss of user code. - */ -public class NumberUnionBuilder { - private NumberUnionBuilder() { - //Exists only to defeat instantiation. - } - - public static NumberUnion getDefaultInstance(String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } -} diff --git a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilder.java b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilder.java deleted file mode 100644 index 71b96ceac5..0000000000 --- a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilder.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; -import java.util.ArrayList; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - - -/** - * - */ -public class HostBuilder { - - private static final Pattern IPV4_PATTERN = Pattern.compile("(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(%[\\p{N}\\p{L}]+)?"); - private static final Pattern IPV6_PATTERN1 = Pattern.compile("((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?"); - private static final Pattern IPV6_PATTERN2 = Pattern.compile("(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"); - private static final Pattern DOMAIN_PATTERN = Pattern.compile("((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.?)|\\."); - - private HostBuilder() { - - } - - public static Host getDefaultInstance(final String defaultValue) { - final Matcher ipv4Matcher = IPV4_PATTERN.matcher(defaultValue); - final Matcher ipv6Matcher1 = IPV6_PATTERN1.matcher(defaultValue); - final Matcher ipv6Matcher2 = IPV6_PATTERN2.matcher(defaultValue); - final Matcher domainMatcher = DOMAIN_PATTERN.matcher(defaultValue); - - List matchers = new ArrayList<>(3); - if (ipv6Matcher1.matches() || ipv6Matcher2.matches()) { - matchers.add(Ipv6Address.class.getSimpleName()); - } - - // Ipv4 and Domain Name patterns are not exclusive - // Address 127.0.0.1 matches both patterns - // This way Ipv4 address is preferred to domain name - if (ipv4Matcher.matches()) { - matchers.add(Ipv4Address.class.getSimpleName()); - } else if (domainMatcher.matches()) { - matchers.add(DomainName.class.getSimpleName()); - } - - if (matchers.size() > 1) { - throw new IllegalArgumentException("Cannot create Host from " + defaultValue + ". Value is ambigious for " - + matchers); - } - - if (ipv4Matcher.matches()) { - Ipv4Address ipv4 = new Ipv4Address(defaultValue); - IpAddress ipAddress = new IpAddress(ipv4); - return new Host(ipAddress); - } - if (ipv6Matcher1.matches() || ipv6Matcher2.matches()) { - Ipv6Address ipv6 = new Ipv6Address(defaultValue); - IpAddress ipAddress = new IpAddress(ipv6); - return new Host(ipAddress); - } - if (domainMatcher.matches()) { - DomainName domainName = new DomainName(defaultValue); - return new Host(domainName); - } - throw new IllegalArgumentException("Cannot create Host from " + defaultValue); - } - -} diff --git a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java index 1a43a761f8..7281e1318e 100644 --- a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java +++ b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java @@ -7,7 +7,14 @@ */ package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; +import static com.google.common.base.Verify.verify; + import com.google.common.annotations.Beta; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.model.ietf.util.AbstractIetfInetUtil; /** @@ -16,12 +23,101 @@ import org.opendaylight.mdsal.model.ietf.util.AbstractIetfInetUtil; @Beta public final class IetfInetUtil extends AbstractIetfInetUtil { - public static final IetfInetUtil INSTANCE = new IetfInetUtil(); + public static final @NonNull IetfInetUtil INSTANCE = new IetfInetUtil(); + + private static final Pattern HOST_IPV4_PATTERN = Pattern.compile( + "(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])" + + "(%[\\p{N}\\p{L}]+)?"); + private static final Pattern HOST_IPV6_PATTERN1 = Pattern.compile("((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}" + +"((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\\.){3}" + + "(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\\p{N}\\p{L}]+)?"); + private static final Pattern HOST_IPV6_PATTERN2 = Pattern.compile( + "(([^:]+:){6}(([^:]+:[^:]+)|(.*\\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?"); + private static final Pattern HOST_DOMAIN_PATTERN = Pattern.compile( + "((([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?[a-zA-Z0-9]\\.)*([a-zA-Z0-9_]([a-zA-Z0-9\\-_]){0,61})?" + +"[a-zA-Z0-9]\\.?)|\\."); + + private static final Pattern IPADDRESS_IPV4_PATTERN; + static { + verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1); + IPADDRESS_IPV4_PATTERN = Pattern.compile(Ipv4Address.PATTERN_CONSTANTS.get(0)); + } + + private static final Pattern IPADDRESS_NO_ZONE_IPV4_PATTERN = Pattern.compile("[0-9\\.]*"); + private static final Pattern IPADDRESS_NO_ZONE_IPV6_PATTERN = Pattern.compile("[0-9a-fA-F:\\.]*"); + + private static final Pattern IPPREFIX_IPV4_PATTERN; + static { + verify(Ipv4Prefix.PATTERN_CONSTANTS.size() == 1); + IPPREFIX_IPV4_PATTERN = Pattern.compile(Ipv4Prefix.PATTERN_CONSTANTS.get(0)); + } private IetfInetUtil() { super(Ipv4AddressNoZone.class, Ipv4Prefix.class, Ipv6AddressNoZone.class, Ipv6Prefix.class); } + @Beta + public static Host hostFor(final String str) { + final Matcher ipv4Matcher = HOST_IPV4_PATTERN.matcher(str); + final Matcher ipv6Matcher1 = HOST_IPV6_PATTERN1.matcher(str); + final Matcher ipv6Matcher2 = HOST_IPV6_PATTERN2.matcher(str); + final Matcher domainMatcher = HOST_DOMAIN_PATTERN.matcher(str); + List matchers = new ArrayList<>(3); + if (ipv6Matcher1.matches() || ipv6Matcher2.matches()) { + matchers.add(Ipv6Address.class.getSimpleName()); + } + // Ipv4 and Domain Name patterns are not exclusive + // Address 127.0.0.1 matches both patterns + // This way Ipv4 address is preferred to domain name + if (ipv4Matcher.matches()) { + matchers.add(Ipv4Address.class.getSimpleName()); + } else if (domainMatcher.matches()) { + matchers.add(DomainName.class.getSimpleName()); + } + if (matchers.size() > 1) { + throw new IllegalArgumentException("Cannot create Host from " + str + ". Value is ambigious for " + + matchers); + } + if (ipv4Matcher.matches()) { + Ipv4Address ipv4 = new Ipv4Address(str); + IpAddress ipAddress = new IpAddress(ipv4); + return new Host(ipAddress); + } + if (ipv6Matcher1.matches() || ipv6Matcher2.matches()) { + Ipv6Address ipv6 = new Ipv6Address(str); + IpAddress ipAddress = new IpAddress(ipv6); + return new Host(ipAddress); + } + if (domainMatcher.matches()) { + DomainName domainName = new DomainName(str); + return new Host(domainName); + } + throw new IllegalArgumentException("Cannot create Host from " + str); + } + + @Beta + public static IpAddress ipAddressFor(final String str) { + return IPADDRESS_IPV4_PATTERN.matcher(str).matches() ? new IpAddress(new Ipv4Address(str)) + : new IpAddress(new Ipv6Address(str)); + } + + @Beta + public static IpAddressNoZone ipAddressNoZoneFor(final String str) { + if (IPADDRESS_NO_ZONE_IPV4_PATTERN.matcher(str).matches()) { + return new IpAddressNoZone(new Ipv4AddressNoZone(str)); + } else if (IPADDRESS_NO_ZONE_IPV6_PATTERN.matcher(str).matches()) { + return new IpAddressNoZone(new Ipv6AddressNoZone(str)); + } else { + throw new IllegalArgumentException("Cannot create IpAddress from " + str); + } + } + + @Beta + public static IpPrefix ipPrefixFor(final String defaultValue) { + return IPPREFIX_IPV4_PATTERN.matcher(defaultValue).matches() ? new IpPrefix(new Ipv4Prefix(defaultValue)) + : new IpPrefix(new Ipv6Prefix(defaultValue)); + } + @Override protected IpAddress ipv4Address(final Ipv4AddressNoZone addr) { return new IpAddress(addr); diff --git a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilder.java b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilder.java deleted file mode 100644 index c1e4cafc3b..0000000000 --- a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilder.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; - -import static com.google.common.base.Verify.verify; - -import java.util.regex.Pattern; - -/** - * Builder for {@link IpAddress} instances. - */ -public class IpAddressBuilder { - private static final Pattern IPV4_PATTERN; - - static { - verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1); - IPV4_PATTERN = Pattern.compile(Ipv4Address.PATTERN_CONSTANTS.get(0)); - } - - private IpAddressBuilder() { - - } - - public static IpAddress getDefaultInstance(final String defaultValue) { - return IPV4_PATTERN.matcher(defaultValue).matches() ? new IpAddress(new Ipv4Address(defaultValue)) - : new IpAddress(new Ipv6Address(defaultValue)); - } -} diff --git a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilder.java b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilder.java deleted file mode 100644 index 57cd666828..0000000000 --- a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilder.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; - -import java.util.regex.Pattern; - -public class IpAddressNoZoneBuilder { - - private static final Pattern IPV4_NO_ZONE_PATTERN = - Pattern.compile("[0-9\\.]*"); - private static final Pattern IPV6_NO_ZONE_PATTERN1 = - Pattern.compile("[0-9a-fA-F:\\.]*"); - - public static IpAddressNoZone getDefaultInstance(final String defaultValue) { - if (IPV4_NO_ZONE_PATTERN.matcher(defaultValue).matches()) { - return new IpAddressNoZone((new Ipv4AddressNoZone(defaultValue))); - } else if (IPV6_NO_ZONE_PATTERN1.matcher(defaultValue).matches()) { - return new IpAddressNoZone((new Ipv6AddressNoZone(defaultValue))); - } else { - throw new IllegalArgumentException("Cannot create IpAddress from " + defaultValue); - } - } -} \ No newline at end of file diff --git a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilder.java b/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilder.java deleted file mode 100644 index 155cae6556..0000000000 --- a/model/ietf/rfc6991-ietf-inet-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilder.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; - -import static com.google.common.base.Verify.verify; - -import java.util.regex.Pattern; - -/** - * Builder for {@link IpPrefix} instances. - */ -public class IpPrefixBuilder { - private static final Pattern IPV4_PATTERN; - - static { - verify(Ipv4Prefix.PATTERN_CONSTANTS.size() == 1); - IPV4_PATTERN = Pattern.compile(Ipv4Prefix.PATTERN_CONSTANTS.get(0)); - } - - private IpPrefixBuilder() { - - } - - public static IpPrefix getDefaultInstance(final String defaultValue) { - return IPV4_PATTERN.matcher(defaultValue).matches() ? new IpPrefix(new Ipv4Prefix(defaultValue)) - : new IpPrefix(new Ipv6Prefix(defaultValue)); - } -} diff --git a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilderTest.java b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilderTest.java index 1abe225e0b..d8e878f3e3 100644 --- a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilderTest.java +++ b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/HostBuilderTest.java @@ -8,22 +8,13 @@ package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; -import java.lang.reflect.Constructor; import org.junit.Test; public class HostBuilderTest { - @Test public void testGetDefaultInstance() throws Exception { - final Constructor constructor = HostBuilder.class.getDeclaredConstructor(); - assertFalse(constructor.isAccessible()); - constructor.setAccessible(true); - final HostBuilder newInstance = constructor.newInstance(); - assertNotNull(newInstance); - testIpv4("1.1.1.1"); testIpv4("192.168.155.100"); testIpv4("1.192.1.221"); @@ -44,9 +35,9 @@ public class HostBuilderTest { testDomain("test"); } - @Test(expected = IllegalArgumentException.class) + @Test public void testIllegalArgumentException1() { - HostBuilder.getDefaultInstance("2001:0DB8::CD3/60"); + assertThrows(IllegalArgumentException.class, () -> IetfInetUtil.hostFor("2001:0DB8::CD3/60")); } @Test(expected = IllegalArgumentException.class) @@ -55,17 +46,17 @@ public class HostBuilderTest { } private static void testIpv4(final String ip) { - final Host defaultInstance = HostBuilder.getDefaultInstance(ip); + final Host defaultInstance = IetfInetUtil.hostFor(ip); assertEquals(new Host(new IpAddress(new Ipv4Address(ip))), defaultInstance); } private static void testIpv6(final String ip) { - final Host defaultInstance = HostBuilder.getDefaultInstance(ip); + final Host defaultInstance = IetfInetUtil.hostFor(ip); assertEquals(new Host(new IpAddress(new Ipv6Address(ip))), defaultInstance); } private static void testDomain(final String ip) { - final Host defaultInstance = HostBuilder.getDefaultInstance(ip); + final Host defaultInstance = IetfInetUtil.hostFor(ip); assertEquals(new Host(new DomainName(ip)), defaultInstance); } } \ No newline at end of file diff --git a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilderTest.java b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilderTest.java index 0f83a516c8..2793731f13 100644 --- a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilderTest.java +++ b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressBuilderTest.java @@ -8,22 +8,13 @@ package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; -import java.lang.reflect.Constructor; import org.junit.Test; public class IpAddressBuilderTest { - @Test public void testGetDefaultInstance() throws Exception { - final Constructor constructor = IpAddressBuilder.class.getDeclaredConstructor(); - assertFalse(constructor.isAccessible()); - constructor.setAccessible(true); - final IpAddressBuilder newInstance = constructor.newInstance(); - assertNotNull(newInstance); - testIpv4("1.1.1.1"); testIpv4("192.168.155.100"); testIpv4("1.192.1.221"); @@ -41,23 +32,23 @@ public class IpAddressBuilderTest { testIpv6("::"); } - @Test(expected = IllegalArgumentException.class) + @Test public void testIllegalArgumentException1() { - IpAddressBuilder.getDefaultInstance("badIp"); + assertThrows(IllegalArgumentException.class, () -> IetfInetUtil.ipAddressFor("badIp")); } - @Test(expected = IllegalArgumentException.class) + @Test public void testIllegalArgumentException2() { - IpAddressBuilder.getDefaultInstance("2001:0DB8::CD3/60"); + assertThrows(IllegalArgumentException.class, () -> IetfInetUtil.ipAddressFor("2001:0DB8::CD3/60")); } private static void testIpv4(final String ip) { - final IpAddress defaultInstance = IpAddressBuilder.getDefaultInstance(ip); + final IpAddress defaultInstance = IetfInetUtil.ipAddressFor(ip); assertEquals(new IpAddress(new Ipv4Address(ip)), defaultInstance); } private static void testIpv6(final String ip) { - final IpAddress defaultInstance = IpAddressBuilder.getDefaultInstance(ip); + final IpAddress defaultInstance = IetfInetUtil.ipAddressFor(ip); assertEquals(new IpAddress(new Ipv6Address(ip)), defaultInstance); } } \ No newline at end of file diff --git a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilderTest.java b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilderTest.java index bde7e1a61b..d55793698d 100644 --- a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilderTest.java +++ b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpAddressNoZoneBuilderTest.java @@ -8,22 +8,13 @@ package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; -import java.lang.reflect.Constructor; import org.junit.Test; public class IpAddressNoZoneBuilderTest { - @Test public void testGetDefaultInstance() throws Exception { - final Constructor constructor = IpAddressNoZoneBuilder.class.getDeclaredConstructor(); - assertFalse(constructor.isAccessible()); - constructor.setAccessible(true); - final IpAddressNoZoneBuilder newInstance = constructor.newInstance(); - assertNotNull(newInstance); - testIpv4("1.1.1.1"); testIpv4("192.168.155.100"); testIpv4("1.192.1.221"); @@ -41,18 +32,16 @@ public class IpAddressNoZoneBuilderTest { testIpv6("::"); } - @Test(expected = IllegalArgumentException.class) + @Test public void testIllegalArgumentException() { - IpAddressNoZoneBuilder.getDefaultInstance("2001:0DB8::CD3/60"); + assertThrows(IllegalArgumentException.class, () -> IetfInetUtil.ipAddressNoZoneFor("2001:0DB8::CD3/60")); } private static void testIpv4(final String ip) { - final IpAddressNoZone defaultInstance = IpAddressNoZoneBuilder.getDefaultInstance(ip); - assertEquals(new IpAddressNoZone(new Ipv4AddressNoZone(ip)), defaultInstance); + assertEquals(new IpAddressNoZone(new Ipv4AddressNoZone(ip)), IetfInetUtil.ipAddressNoZoneFor(ip)); } private static void testIpv6(final String ip) { - final IpAddressNoZone defaultInstance = IpAddressNoZoneBuilder.getDefaultInstance(ip); - assertEquals(new IpAddressNoZone(new Ipv6AddressNoZone(ip)), defaultInstance); + assertEquals(new IpAddressNoZone(new Ipv6AddressNoZone(ip)), IetfInetUtil.ipAddressNoZoneFor(ip)); } } \ No newline at end of file diff --git a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilderTest.java b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilderTest.java index eabdab9522..68b3b22344 100644 --- a/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilderTest.java +++ b/model/ietf/rfc6991-ietf-inet-types/src/test/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IpPrefixBuilderTest.java @@ -8,38 +8,27 @@ package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThrows; -import java.lang.reflect.Constructor; import org.junit.Test; public class IpPrefixBuilderTest { - @Test public void testGetDefaultInstance() throws Exception { - final Constructor constructor = IpPrefixBuilder.class.getDeclaredConstructor(); - assertFalse(constructor.isAccessible()); - constructor.setAccessible(true); - final IpPrefixBuilder newInstance = constructor.newInstance(); - assertNotNull(newInstance); - testIpv6("ff00::/8"); testIpv4("192.0.2.1/24"); } - @Test(expected = IllegalArgumentException.class) + @Test public void testIllegalArgumentException1() { - IpPrefixBuilder.getDefaultInstance("badIp"); + assertThrows(IllegalArgumentException.class, () -> IetfInetUtil.ipPrefixFor("badIp")); } private static void testIpv4(final String ip) { - final IpPrefix defaultInstance = IpPrefixBuilder.getDefaultInstance(ip); - assertEquals(new IpPrefix(new Ipv4Prefix(ip)), defaultInstance); + assertEquals(new IpPrefix(new Ipv4Prefix(ip)), IetfInetUtil.ipPrefixFor(ip)); } private static void testIpv6(final String ip) { - final IpPrefix defaultInstance = IpPrefixBuilder.getDefaultInstance(ip); - assertEquals(new IpPrefix(new Ipv6Prefix(ip)), defaultInstance); + assertEquals(new IpPrefix(new Ipv6Prefix(ip)), IetfInetUtil.ipPrefixFor(ip)); } } \ No newline at end of file diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IetfRoutingUtils.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IetfRoutingUtils.java new file mode 100644 index 0000000000..efda958985 --- /dev/null +++ b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IetfRoutingUtils.java @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2018, 2022 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; + +import static com.google.common.base.Verify.verify; +import static com.google.common.base.Verify.verifyNotNull; +import static java.util.Objects.requireNonNull; + +import com.google.common.annotations.Beta; +import com.google.common.base.Verify; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Maps; +import java.util.Arrays; +import java.util.regex.Pattern; +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; +import org.opendaylight.yangtools.yang.common.Uint16; +import org.opendaylight.yangtools.yang.common.Uint32; + +/** + * Utility methods for dealing with unions in {@code ietf-routing-types.yang}. + */ +@Beta +@NonNullByDefault +public final class IetfRoutingUtils { + private static final ImmutableMap + ENUMERATED_IPV4_MCAST_SRC = Arrays.stream(Ipv4MulticastSourceAddress.Enumeration.values()).collect( + Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv4MulticastSourceAddress::new)); + private static final ImmutableMap + ENUMERATED_IPV6_MCAST_SRC = Arrays.stream(Ipv6MulticastSourceAddress.Enumeration.values()).collect( + Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv6MulticastSourceAddress::new)); + private static final ImmutableMap + ENUMERATED_TIMERVAR_MS = Arrays.stream(TimerValueMilliseconds.Enumeration.values()) + .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueMilliseconds::new)); + private static final ImmutableMap ENUMERATED_TIMERVAL_16 = + Arrays.stream(TimerValueSeconds16.Enumeration.values()) + .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds16::new)); + private static final ImmutableMap ENUMERATED_TIMERVAL_32 = + Arrays.stream(TimerValueSeconds32.Enumeration.values()) + .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds32::new)); + + private static final Pattern IP_MCAST_GRP_ADDR_IPV4_PATTERN; + + static { + verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1); + IP_MCAST_GRP_ADDR_IPV4_PATTERN = Pattern.compile(Ipv4MulticastGroupAddress.PATTERN_CONSTANTS.get(0)); + } + + private IetfRoutingUtils() { + // Hidden on purpose + } + + public static IpMulticastGroupAddress ipMulticastGroupAddressFor(final String str) { + return IP_MCAST_GRP_ADDR_IPV4_PATTERN.matcher(str).matches() + ? new IpMulticastGroupAddress(new Ipv4MulticastGroupAddress(str)) + : new IpMulticastGroupAddress(new Ipv6MulticastGroupAddress(str)); + } + + public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor(final String str) { + return Ipv4MulticastSourceAddress.Enumeration.forName(str) + .map(ENUMERATED_IPV4_MCAST_SRC::get) + .orElse(new Ipv4MulticastSourceAddress(new Ipv4Address(str))); + } + + public static Ipv4MulticastSourceAddress ipv4MulticastSourceAddressFor( + final Ipv4MulticastSourceAddress.Enumeration enumeration) { + return verifyNotNull(ENUMERATED_IPV4_MCAST_SRC.get(requireNonNull(enumeration))); + } + + public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor(final String str) { + return Ipv6MulticastSourceAddress.Enumeration.forName(str) + .map(ENUMERATED_IPV6_MCAST_SRC::get) + .orElse(new Ipv6MulticastSourceAddress(new Ipv6Address(str))); + } + + public static Ipv6MulticastSourceAddress ipv6MulticastSourceAddressFor( + final Ipv6MulticastSourceAddress.Enumeration enumeration) { + return verifyNotNull(ENUMERATED_IPV6_MCAST_SRC.get(requireNonNull(enumeration))); + } + + public static TimerValueMilliseconds timerValueMillisecondsFor(final String str) { + return TimerValueMilliseconds.Enumeration.forName(str) + .map(ENUMERATED_TIMERVAR_MS::get) + .orElse(new TimerValueMilliseconds(Uint32.valueOf(str))); + } + + public static TimerValueMilliseconds timerValueMillisecondsFor( + final TimerValueMilliseconds.Enumeration enumeration) { + return verifyNotNull(ENUMERATED_TIMERVAR_MS.get(requireNonNull(enumeration))); + } + + + public static TimerValueSeconds16 timerValueSeconds16For(final String str) { + return TimerValueSeconds16.Enumeration.forName(str).map(ENUMERATED_TIMERVAL_16::get) + .orElse(new TimerValueSeconds16(Uint16.valueOf(str))); + } + + public static TimerValueSeconds16 timerValueSeconds16For( + final TimerValueSeconds16.Enumeration enumeration) { + return verifyNotNull(ENUMERATED_TIMERVAL_16.get(requireNonNull(enumeration))); + } + + public static TimerValueSeconds32 timerValueSeconds32For(final String defaultValue) { + return TimerValueSeconds32.Enumeration.forName(defaultValue) + .map(ENUMERATED_TIMERVAL_32::get) + .orElse(new TimerValueSeconds32(Uint32.valueOf(defaultValue))); + } + + public static TimerValueSeconds32 timerValueSeconds32For(final TimerValueSeconds32.Enumeration enumeration) { + return verifyNotNull(ENUMERATED_TIMERVAL_32.get(requireNonNull(enumeration))); + } +} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IpMulticastGroupAddressBuilder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IpMulticastGroupAddressBuilder.java deleted file mode 100644 index e92c3fb846..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/IpMulticastGroupAddressBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verify; - -import com.google.common.annotations.Beta; -import java.util.regex.Pattern; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; - -/** - * Builder for {@link IpMulticastGroupAddress} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class IpMulticastGroupAddressBuilder { - private static final Pattern IPV4_PATTERN; - - static { - verify(Ipv4Address.PATTERN_CONSTANTS.size() == 1); - IPV4_PATTERN = Pattern.compile(Ipv4MulticastGroupAddress.PATTERN_CONSTANTS.get(0)); - } - - private IpMulticastGroupAddressBuilder() { - //Exists only to defeat instantiation. - } - - public static IpMulticastGroupAddress getDefaultInstance(final String defaultValue) { - return IPV4_PATTERN.matcher(defaultValue).matches() - ? new IpMulticastGroupAddress(new Ipv4MulticastGroupAddress(defaultValue)) - : new IpMulticastGroupAddress(new Ipv6MulticastGroupAddress(defaultValue)); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv4MulticastSourceAddressBuilder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv4MulticastSourceAddressBuilder.java deleted file mode 100644 index a91c19521e..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv4MulticastSourceAddressBuilder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verifyNotNull; -import static java.util.Objects.requireNonNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; -import com.google.common.collect.Maps; -import java.util.Arrays; -import java.util.Map; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.Ipv4MulticastSourceAddress.Enumeration; - -/** - * Builder for {@link IpMulticastGroupAddress} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class Ipv4MulticastSourceAddressBuilder { - private static final Map ENUMERATED = Arrays.stream(Enumeration.values()) - .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv4MulticastSourceAddress::new)); - - private Ipv4MulticastSourceAddressBuilder() { - //Exists only to defeat instantiation. - } - - public static Ipv4MulticastSourceAddress getDefaultInstance(final String defaultValue) { - return Enumeration.forName(defaultValue).map(ENUMERATED::get) - .orElse(new Ipv4MulticastSourceAddress(new Ipv4Address(defaultValue))); - } - - public static Ipv4MulticastSourceAddress forEnumeration(final Enumeration enumeration) { - return verifyNotNull(ENUMERATED.get(requireNonNull(enumeration))); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv6MulticastSourceAddressBuilder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv6MulticastSourceAddressBuilder.java deleted file mode 100644 index c8b257e9b7..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/Ipv6MulticastSourceAddressBuilder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verifyNotNull; -import static java.util.Objects.requireNonNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; -import com.google.common.collect.Maps; -import java.util.Arrays; -import java.util.Map; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.Ipv6MulticastSourceAddress.Enumeration; - -/** - * Builder for {@link IpMulticastGroupAddress} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class Ipv6MulticastSourceAddressBuilder { - private static final Map ENUMERATED = Arrays.stream(Enumeration.values()) - .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, Ipv6MulticastSourceAddress::new)); - - private Ipv6MulticastSourceAddressBuilder() { - - } - - public static Ipv6MulticastSourceAddress getDefaultInstance(final String defaultValue) { - return Enumeration.forName(defaultValue).map(ENUMERATED::get) - .orElse(new Ipv6MulticastSourceAddress(new Ipv6Address(defaultValue))); - } - - public static Ipv6MulticastSourceAddress forEnumeration(final Enumeration enumeration) { - return verifyNotNull(ENUMERATED.get(requireNonNull(enumeration))); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/MplsLabelBuilder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/MplsLabelBuilder.java deleted file mode 100644 index 4543a086bd..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/MplsLabelBuilder.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import com.google.common.annotations.Beta; -import com.google.common.cache.CacheBuilder; -import com.google.common.cache.CacheLoader; -import com.google.common.cache.LoadingCache; -import java.util.AbstractMap.SimpleImmutableEntry; -import java.util.Map.Entry; -import java.util.Optional; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yangtools.util.ClassLoaderUtils; -import org.opendaylight.yangtools.yang.common.Uint32; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Builder for {@link MplsLabel} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class MplsLabelBuilder { - private static final Logger LOG = LoggerFactory.getLogger(MplsLabelBuilder.class); - - @SuppressWarnings("null") - private static final LoadingCache, Optional> CLASS_CACHE = - CacheBuilder.newBuilder() - .weakKeys().build(new CacheLoader, Optional>() { - @Override - public Optional load(final Entry key) { - return loadClass(key.getKey(), key.getValue()); - } - }); - - private MplsLabelBuilder() { - - } - - public static MplsLabel getDefaultInstance(final String defaultValue) { - if (defaultValue.startsWith("interface ")) { - final Optional optStatic = CLASS_CACHE.getUnchecked( - new SimpleImmutableEntry<>(MplsLabelBuilder.class.getClassLoader(), defaultValue)); - if (optStatic.isPresent()) { - return optStatic.get(); - } - - final ClassLoader tccl = Thread.currentThread().getContextClassLoader(); - if (tccl != null) { - final Optional optThreadLocal = CLASS_CACHE.getUnchecked( - new SimpleImmutableEntry<>(tccl, defaultValue)); - if (optThreadLocal.isPresent()) { - return optThreadLocal.get(); - } - } - } - - return new MplsLabel(new MplsLabelGeneralUse(Uint32.valueOf(defaultValue))); - } - - static Optional loadClass(final ClassLoader loader, final String key) { - final Class cls; - try { - cls = ClassLoaderUtils.loadClass(loader, key); - } catch (ClassNotFoundException e) { - LOG.debug("%s not found in classloader of %s", key, loader); - return Optional.empty(); - } - - final Class cast; - try { - cast = cls.asSubclass(MplsLabelSpecialPurposeValue.class); - } catch (ClassCastException e) { - LOG.warn("%s does not implement %s", MplsLabelSpecialPurposeValue.class); - return Optional.empty(); - } - - return Optional.of(new MplsLabel(cast)); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueMillisecondsBuilder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueMillisecondsBuilder.java deleted file mode 100644 index 0fd7472847..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueMillisecondsBuilder.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verifyNotNull; -import static java.util.Objects.requireNonNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import java.util.Arrays; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.TimerValueMilliseconds.Enumeration; -import org.opendaylight.yangtools.yang.common.Uint32; - -/** - * Builder for {@link TimerValueMilliseconds} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class TimerValueMillisecondsBuilder { - private static final ImmutableMap ENUMERATED = - Arrays.stream(Enumeration.values()) - .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueMilliseconds::new)); - - private TimerValueMillisecondsBuilder() { - - } - - public static TimerValueMilliseconds getDefaultInstance(final String defaultValue) { - return Enumeration.forName(defaultValue).map(ENUMERATED::get) - .orElse(new TimerValueMilliseconds(Uint32.valueOf(defaultValue))); - } - - public static TimerValueMilliseconds forEnumeration(final Enumeration enumeration) { - return verifyNotNull(ENUMERATED.get(requireNonNull(enumeration))); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds16Builder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds16Builder.java deleted file mode 100644 index fd63f6fdd7..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds16Builder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verifyNotNull; -import static java.util.Objects.requireNonNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import java.util.Arrays; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.TimerValueSeconds16.Enumeration; -import org.opendaylight.yangtools.yang.common.Uint16; - -/** - * Builder for {@link TimerValueSeconds16} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class TimerValueSeconds16Builder { - private static final ImmutableMap ENUMERATED = - Arrays.stream(Enumeration.values()) - .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds16::new)); - - private TimerValueSeconds16Builder() { - - } - - public static TimerValueSeconds16 getDefaultInstance(final String defaultValue) { - return Enumeration.forName(defaultValue).map(ENUMERATED::get) - .orElse(new TimerValueSeconds16(Uint16.valueOf(defaultValue))); - } - - public static TimerValueSeconds16 forEnumeration(final Enumeration enumeration) { - return verifyNotNull(ENUMERATED.get(requireNonNull(enumeration))); - } -} diff --git a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds32Builder.java b/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds32Builder.java deleted file mode 100644 index 3675368d97..0000000000 --- a/model/ietf/rfc8294-ietf-routing-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/routing/types/rev171204/TimerValueSeconds32Builder.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204; - -import static com.google.common.base.Verify.verifyNotNull; -import static java.util.Objects.requireNonNull; - -import com.google.common.annotations.Beta; -import com.google.common.base.Verify; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.Maps; -import java.util.Arrays; -import org.eclipse.jdt.annotation.NonNullByDefault; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.routing.types.rev171204.TimerValueSeconds32.Enumeration; -import org.opendaylight.yangtools.yang.common.Uint32; - -/** - * Builder for {@link TimerValueSeconds32} instances. - * - * @author Robert Varga - */ -@Beta -@NonNullByDefault -public final class TimerValueSeconds32Builder { - private static final ImmutableMap ENUMERATED = Arrays.stream(Enumeration.values()) - .collect(Maps.toImmutableEnumMap(Verify::verifyNotNull, TimerValueSeconds32::new)); - - private TimerValueSeconds32Builder() { - - } - - public static TimerValueSeconds32 getDefaultInstance(final String defaultValue) { - return Enumeration.forName(defaultValue).map(ENUMERATED::get) - .orElse(new TimerValueSeconds32(Uint32.valueOf(defaultValue))); - } - - public static TimerValueSeconds32 forEnumeration(final Enumeration enumeration) { - return verifyNotNull(ENUMERATED.get(requireNonNull(enumeration))); - } -} diff --git a/model/ietf/rfc8519-ietf-ethertypes/pom.xml b/model/ietf/rfc8519-ietf-ethertypes/pom.xml index ac6207e15f..71171d81c6 100644 --- a/model/ietf/rfc8519-ietf-ethertypes/pom.xml +++ b/model/ietf/rfc8519-ietf-ethertypes/pom.xml @@ -20,7 +20,6 @@ org.opendaylight.mdsal.binding.model.ietf rfc8519-ietf-ethertypes - 10.0.0-SNAPSHOT bundle ${project.artifactId} diff --git a/model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeBuilder.java b/model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeUtils.java similarity index 97% rename from model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeBuilder.java rename to model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeUtils.java index 2655791e96..3f826d45d9 100644 --- a/model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeBuilder.java +++ b/model/ietf/rfc8519-ietf-ethertypes/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/ethertypes/rev190304/EthertypeUtils.java @@ -20,7 +20,10 @@ import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.Uint16; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ethertypes.rev190304.Ethertype.Enumeration; -public final class EthertypeBuilder { +/** + * Utility methods for dealing with {@link Ethertype}. + */ +public final class EthertypeUtils { private static final CharMatcher DIGITS = CharMatcher.inRange('0', '9'); private static final EnumMap ENUM_ETHERTYPES; @@ -32,7 +35,7 @@ public final class EthertypeBuilder { ENUM_ETHERTYPES = map; } - private EthertypeBuilder() { + private EthertypeUtils() { //Exists only to defeat instantiation. } diff --git a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/LegacyRevisionUtils.java b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/LegacyRevisionUtils.java new file mode 100644 index 0000000000..1ad108ceb9 --- /dev/null +++ b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/LegacyRevisionUtils.java @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2019 PANTHEON.tech s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104; + +import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.CommonLeafs; +import org.opendaylight.yangtools.yang.common.Revision; + +/** + * Utility methods for converting legacy RFC7895 {@code modules-state} Revision to and from various representations. + */ +@SuppressWarnings("deprecation") +public final class LegacyRevisionUtils { + private static final CommonLeafs.@NonNull Revision EMPTY_REVISION = new CommonLeafs.Revision(""); + + private LegacyRevisionUtils() { + // Hidden on purpose + } + + /** + * Return an empty {@link CommonLeafs.Revision}. + * + * @return An empty Revision. + */ + public static CommonLeafs.@NonNull Revision emptyRevision() { + return EMPTY_REVISION; + } + + public static CommonLeafs.@NonNull Revision fromString(final String defaultValue) { + return defaultValue.isEmpty() ? EMPTY_REVISION + : new CommonLeafs.Revision(new RevisionIdentifier(defaultValue)); + } + + /** + * Create a {@link CommonLeafs.Revision} from an optional {@link Revision}. + * + * @param revision Optional {@link Revision} + * @return A Revision + * @throws NullPointerException if {@code revision} is null + */ + public static CommonLeafs.@NonNull Revision fromYangCommon(final Optional revision) { + return revision.map(rev -> new CommonLeafs.Revision(new RevisionIdentifier(rev.toString()))) + .orElse(EMPTY_REVISION); + } + + /** + * Create an optional {@link Revision} from a {@link CommonLeafs.Revision}. + * + * @param revision A Revision + * @return Optional {@link Revision} + * @throws NullPointerException if {@code revision} is null + */ + public static Optional toYangCommon(final CommonLeafs.Revision revision) { + final var id = revision.getRevisionIdentifier(); + return id != null ? Optional.of(Revision.of(id.getValue())) : Optional.empty(); + } +} + diff --git a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/RevisionUtils.java b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/RevisionUtils.java new file mode 100644 index 0000000000..b7e333d9ce --- /dev/null +++ b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/RevisionUtils.java @@ -0,0 +1,55 @@ +package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104; + +import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.set.parameters.ImportOnlyModule; +import org.opendaylight.yangtools.yang.common.Revision; + +/** + * Utility methods for converting legacy RFC8525 Revision to and from various representations. + */ +public final class RevisionUtils { + private static final ImportOnlyModule.@NonNull Revision EMPTY_REVISION = new ImportOnlyModule.Revision(""); + + private RevisionUtils() { + // Hidden on purpose + } + + /** + * Return an empty {@link ImportOnlyModule.Revision}. + * + * @return An empty Revision. + */ + public static ImportOnlyModule.@NonNull Revision emptyRevision() { + return EMPTY_REVISION; + } + + public static ImportOnlyModule.@NonNull Revision fromString(final String defaultValue) { + return defaultValue.isEmpty() ? EMPTY_REVISION + : new ImportOnlyModule.Revision(new RevisionIdentifier(defaultValue)); + } + + /** + * Create a {@link ImportOnlyModule.Revision} from an optional {@link Revision}. + * + * @param revision Optional {@link Revision} + * @return A Revision + * @throws NullPointerException if revision is null + */ + public static ImportOnlyModule.@NonNull Revision fromYangCommon(final Optional revision) { + return revision.map(rev -> new ImportOnlyModule.Revision(new RevisionIdentifier(rev.toString()))) + .orElse(EMPTY_REVISION); + } + + /** + * Create an optional {@link Revision} from a {@link ImportOnlyModule.Revision}. + * + * @param revision A Revision + * @return Optional {@link Revision} + * @throws NullPointerException if revision is null + */ + public static Optional toYangCommon(final ImportOnlyModule.Revision revision) { + final var id = revision.getRevisionIdentifier(); + return id != null ? Optional.of(Revision.of(id.getValue())) : Optional.empty(); + } +} diff --git a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/list/CommonLeafsRevisionBuilder.java b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/list/CommonLeafsRevisionBuilder.java deleted file mode 100644 index ea34dcd2a6..0000000000 --- a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/list/CommonLeafsRevisionBuilder.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (c) 2019 PANTHEON.tech s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list; - -import java.util.Optional; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.RevisionIdentifier; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.CommonLeafs.Revision; - -@SuppressWarnings("deprecation") -public final class CommonLeafsRevisionBuilder { - private static final Revision EMPTY_REVISION = new Revision(""); - - private CommonLeafsRevisionBuilder() { - - } - - /** - * Return an empty {@link Revision}. - * - * @return An empty Revision. - */ - public static Revision emptyRevision() { - return EMPTY_REVISION; - } - - /** - * Create a {@link Revision} from an optional {@link org.opendaylight.yangtools.yang.common.Revision}. - * - * @param revision Optional {@link org.opendaylight.yangtools.yang.common.Revision} - * @return A Revision - * @throws NullPointerException if revision is null - */ - public static Revision fromYangCommon(final Optional revision) { - return revision.map(rev -> new Revision(new RevisionIdentifier(rev.toString()))).orElse(EMPTY_REVISION); - } - - /** - * Create an optional {@link org.opendaylight.yangtools.yang.common.Revision} from a {@link Revision}. - * - * @param revision A Revision - * @return Optional {@link org.opendaylight.yangtools.yang.common.Revision} - * @throws NullPointerException if revision is null - */ - public static Optional toYangCommon(final Revision revision) { - final @Nullable RevisionIdentifier id = revision.getRevisionIdentifier(); - return id != null ? Optional.of(org.opendaylight.yangtools.yang.common.Revision.of(id.getValue())) - : Optional.empty(); - } - - public static Revision getDefaultInstance(final String defaultValue) { - return defaultValue.isEmpty() ? EMPTY_REVISION : new Revision(new RevisionIdentifier(defaultValue)); - } -} - diff --git a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/set/parameters/ImportOnlyModuleRevisionBuilder.java b/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/set/parameters/ImportOnlyModuleRevisionBuilder.java deleted file mode 100644 index e0b6a2e074..0000000000 --- a/model/ietf/rfc8525/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/yang/library/rev190104/module/set/parameters/ImportOnlyModuleRevisionBuilder.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.set.parameters; - -import java.util.Optional; -import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.RevisionIdentifier; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.set.parameters.ImportOnlyModule.Revision; - -public final class ImportOnlyModuleRevisionBuilder { - private static final Revision EMPTY_REVISION = new Revision(""); - - private ImportOnlyModuleRevisionBuilder() { - - } - - /** - * Return an empty {@link Revision}. - * - * @return An empty Revision. - */ - public static Revision emptyRevision() { - return EMPTY_REVISION; - } - - /** - * Create a {@link Revision} from an optional {@link org.opendaylight.yangtools.yang.common.Revision}. - * - * @param revision Optional {@link org.opendaylight.yangtools.yang.common.Revision} - * @return A Revision - * @throws NullPointerException if revision is null - */ - public static Revision fromYangCommon(final Optional revision) { - return revision.map(rev -> new Revision(new RevisionIdentifier(rev.toString()))).orElse(EMPTY_REVISION); - } - - /** - * Create an optional {@link org.opendaylight.yangtools.yang.common.Revision} from a {@link Revision}. - * - * @param revision A Revision - * @return Optional {@link org.opendaylight.yangtools.yang.common.Revision} - * @throws NullPointerException if revision is null - */ - public static Optional toYangCommon(final Revision revision) { - final @Nullable RevisionIdentifier id = revision.getRevisionIdentifier(); - return id != null ? Optional.of(org.opendaylight.yangtools.yang.common.Revision.of(id.getValue())) - : Optional.empty(); - } - - public static Revision getDefaultInstance(final String defaultValue) { - return defaultValue.isEmpty() ? EMPTY_REVISION : new Revision(new RevisionIdentifier(defaultValue)); - } -} diff --git a/model/ietf/rfc8776-ietf-te-types/pom.xml b/model/ietf/rfc8776-ietf-te-types/pom.xml index 88ee6afdd4..2278c05a61 100644 --- a/model/ietf/rfc8776-ietf-te-types/pom.xml +++ b/model/ietf/rfc8776-ietf-te-types/pom.xml @@ -20,7 +20,6 @@ org.opendaylight.mdsal.binding.model.ietf rfc8776-ietf-te-types - 10.0.0-SNAPSHOT bundle ${project.artifactId} diff --git a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/AdminGroupsBuilder.java b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/AdminGroupsBuilder.java deleted file mode 100644 index a863b1e288..0000000000 --- a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/AdminGroupsBuilder.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610; - -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.HexString; - -public class AdminGroupsBuilder { - private AdminGroupsBuilder() { - // Hidden on purpose - } - - public static AdminGroups getDefaultInstance(final String defaultValue) { - final HexString hex = new HexString(defaultValue); - return defaultValue.length() <= 11 ? new AdminGroups(new AdminGroup(hex)) - : new AdminGroups(new ExtendedAdminGroup(hex)); - } -} diff --git a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/IetfTeUtil.java b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/IetfTeUtil.java new file mode 100644 index 0000000000..17969297e9 --- /dev/null +++ b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/IetfTeUtil.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020, 2022 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610; + +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.HexString; +import org.opendaylight.yangtools.yang.common.Uint32; + +/** + * Utility methods for dealing with {@code ietf-te-types.yang} unions. + */ +public final class IetfTeUtil { + private static final @NonNull TeTopologyId EMPTY_TE_TOPOLOGY_ID = new TeTopologyId(""); + + private IetfTeUtil() { + // Hidden on purpose + } + + public static @NonNull AdminGroups admingGroupsFor(final String str) { + final HexString hex = new HexString(str); + return str.length() <= 11 ? new AdminGroups(new AdminGroup(hex)) : new AdminGroups(new ExtendedAdminGroup(hex)); + } + + public static @NonNull TeTopologyId teTopologyIdFor(final String str) { + return str.isEmpty() ? EMPTY_TE_TOPOLOGY_ID : new TeTopologyId(str); + } + + public static @NonNull TeTpId teTpIdFor(final String str) { + return str.indexOf('.') == -1 && str.indexOf(':') == -1 + ? new TeTpId(Uint32.valueOf(str)) : new TeTpId(IetfInetUtil.ipAddressFor(str)); + } +} diff --git a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/PathAttributeFlagsBuilder.java b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/PathAttributeFlagsBuilder.java deleted file mode 100644 index af6bce2a9f..0000000000 --- a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/PathAttributeFlagsBuilder.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610; - -public class PathAttributeFlagsBuilder { - private PathAttributeFlagsBuilder() { - // Hidden on purpose - } - - public static PathAttributeFlags getDefaultInstance(final String defaultValue) { - throw new UnsupportedOperationException("Not yet implemented"); - } -} diff --git a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTopologyIdBuilder.java b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTopologyIdBuilder.java deleted file mode 100644 index 2243076811..0000000000 --- a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTopologyIdBuilder.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610; - -public class TeTopologyIdBuilder { - private static final TeTopologyId EMPTY = new TeTopologyId(""); - - private TeTopologyIdBuilder() { - // Hidden on purpose - } - - public static TeTopologyId getDefaultInstance(final String defaultValue) { - return defaultValue.isEmpty() ? EMPTY : new TeTopologyId(defaultValue); - } -} diff --git a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTpIdBuilder.java b/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTpIdBuilder.java deleted file mode 100644 index 8fe5f821a8..0000000000 --- a/model/ietf/rfc8776-ietf-te-types/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/te/types/rev200610/TeTpIdBuilder.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. 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.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.te.types.rev200610; - -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressBuilder; -import org.opendaylight.yangtools.yang.common.Uint32; - -public class TeTpIdBuilder { - private TeTpIdBuilder() { - // Hidden on purpose - } - - public static TeTpId getDefaultInstance(final String defaultValue) { - return defaultValue.indexOf('.') == -1 && defaultValue.indexOf(':') == -1 - ? new TeTpId(Uint32.valueOf(defaultValue)) - : new TeTpId(IpAddressBuilder.getDefaultInstance(defaultValue)); - } -} diff --git a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/MountPointContextFactoryImpl.java b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/MountPointContextFactoryImpl.java index d3b039f371..168193a690 100644 --- a/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/MountPointContextFactoryImpl.java +++ b/yanglib/mdsal-yanglib-rfc8525/src/main/java/org/opendaylight/mdsal/yanglib/rfc8525/MountPointContextFactoryImpl.java @@ -27,13 +27,13 @@ import org.opendaylight.mdsal.yanglib.api.SchemaContextResolver; import org.opendaylight.mdsal.yanglib.api.SourceReference; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.datastores.rev180214.Operational; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.LegacyRevisionUtils; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.ModulesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.RevisionIdentifier; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.RevisionUtils; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.YangLibrary; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.CommonLeafs; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.CommonLeafsRevisionBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.list.Module.ConformanceType; -import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.module.set.parameters.ImportOnlyModuleRevisionBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.yang.library.parameters.Datastore; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.yang.library.parameters.DatastoreKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev190104.yang.library.parameters.ModuleSet; @@ -179,7 +179,7 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor @SuppressWarnings("deprecation") private static SourceReference sourceRefFor(final CommonLeafs obj, final Uri uri) { final var sourceId = RevisionSourceIdentifier.create(obj.getName().getValue(), - CommonLeafsRevisionBuilder.toYangCommon(obj.getRevision())); + LegacyRevisionUtils.toYangCommon(obj.getRevision())); if (uri != null) { try { return SourceReference.of(sourceId, new URL(uri.getValue())); @@ -204,7 +204,7 @@ final class MountPointContextFactoryImpl extends AbstractMountPointContextFactor // TODO: take deviations/features into account for (var mod : modSet.nonnullImportOnlyModule().values()) { - fillSource(librarySources, mod.getName(), ImportOnlyModuleRevisionBuilder.toYangCommon(mod.getRevision()), + fillSource(librarySources, mod.getName(), RevisionUtils.toYangCommon(mod.getRevision()), mod.getLocation()); mod.nonnullSubmodule().values().forEach(sub -> { fillSource(librarySources, sub.getName(), toYangCommon(sub.getRevision()), sub.getLocation()); -- 2.36.6