From 8d19626640b8f6cab9ed3e0f9908fa3c416956e5 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 11 Oct 2017 17:03:32 +0200 Subject: [PATCH] Adjust to yangtools-2.0.0 changes Most notable adjustments: - type empty requires Empty - Date -> Revision, with the possibility of being absent - This changes behaviour for revisionless modules, these are now generated as '.norev' rather than '.rev700101' - Length constraint update to match - QName requires namespace to be non-null - SchemaContext.getModule() et al., which also improves performance - binding tests are updated to eliminate useless reflection - bump twirl-api to 1.3.13 - bump scala-maven-plugin to 3.3.1 - bump twirl-maven-plugin to 1.1.0 Change-Id: Ie35090cc0f60a2411399e5b2d3fe59246bbfbdba Signed-off-by: Robert Varga --- .../api/gen/plugin/CodeGeneratorImpl.java | 7 - .../unified/doc/generator/GeneratorImpl.xtend | 157 ++-- .../maven/DocumentationGeneratorImpl.java | 16 +- .../generator/WadlRestconfGenerator.xtend | 2 +- .../wadl/generator/maven/WadlGenerator.java | 32 +- .../doc/generator/maven/DocGenTest.java | 10 +- .../maven/YangModuleInfoCompilationTest.java | 13 +- .../wadl/generator/maven/WadlGenTest.java | 21 +- ...OMDataTreeCommitCohortRegistryAdapter.java | 2 +- .../dom/adapter/BindingStructuralType.java | 7 +- .../adapter/BindingToNormalizedNodeCodec.java | 10 +- .../binding/dom/adapter/FutureSchema.java | 7 +- .../adapter/LazyDataObjectModification.java | 4 +- .../adapter/LazySerializedContainerNode.java | 2 +- .../dom/adapter/AdapterBuilderTest.java | 4 +- ...indingDOMRpcImplementationAdapterTest.java | 3 +- .../adapter/BindingNormalizedCodecTest.java | 17 +- .../adapter/BindingStructuralTypeTest.java | 2 +- .../BindingToNormalizedNodeCodecTest.java | 6 +- .../binding/dom/adapter/FutureSchemaTest.java | 4 +- .../LazySerializedContainerNodeTest.java | 10 +- .../adapter/test/LeafDefaultValueTest.java | 60 +- .../osgi/impl/OsgiModuleInfoRegistry.java | 2 +- .../SimpleBindingRuntimeContextService.java | 6 +- .../impl/AbstractStreamWriterGenerator.java | 16 +- .../DataNodeContainerSerializerSource.java | 6 +- .../codec/gen/impl/StreamWriterGenerator.java | 8 +- .../codec/impl/AugmentationNodeContext.java | 6 +- .../dom/codec/impl/BindingCodecContext.java | 10 +- .../dom/codec/impl/CaseNodeCodecContext.java | 8 +- .../codec/impl/ChoiceNodeCodecContext.java | 14 +- .../impl/DataContainerCodecPrototype.java | 10 +- .../codec/impl/DataObjectCodecContext.java | 8 +- .../dom/codec/impl/LazyDataObject.java | 2 +- .../dom/codec/impl/LeafNodeCodecContext.java | 22 +- .../codec/impl/MissingSchemaException.java | 2 +- .../dom/codec/impl/UnionTypeCodec.java | 3 +- .../dom/codec/impl/ValueTypeCodec.java | 5 +- .../generator/spi/TypeProviderFactory.java | 4 +- .../mdsal/binding/model/api/Restrictions.java | 5 +- .../generator/impl/BindingGeneratorImpl.java | 145 +-- .../impl/BindingSchemaContextUtils.java | 35 +- .../binding/generator/impl/ModuleContext.java | 24 +- .../impl/ModuleInfoBackedContext.java | 18 +- .../binding/generator/impl/YangTemplate.xtend | 87 +- .../generator/util/BindingRuntimeContext.java | 41 +- .../generator/util/YangSchemaUtils.java | 17 +- .../binding/yang/types/BaseYangTypes.java | 2 +- .../GroupingDefinitionDependencySort.java | 9 +- .../binding/yang/types/TypeProviderImpl.java | 101 +- .../binding/yang/types/TypedefResolver.java | 9 +- .../impl/AugmentRelativeXPathTest.java | 8 +- .../generator/impl/AugmentedTypeTest.java | 23 +- .../generator/impl/BinaryTypeTest.java | 8 +- .../impl/BindingGeneratorImplTest.java | 40 +- .../impl/BitAndUnionTOEnclosingTest.java | 23 +- .../binding/generator/impl/Bug4145Test.java | 16 +- .../binding/generator/impl/Bug6135Test.java | 3 +- .../impl/ChoiceCaseGenTypesTest.java | 8 +- .../generator/impl/ControllerTest.java | 12 +- .../generator/impl/ExtendedTypedefTest.java | 10 +- .../generator/impl/GenEnumResolvingTest.java | 33 +- .../generator/impl/GenTypesSubSetTest.java | 29 +- ...InnerClassForBitsAndUnionInLeavesTest.java | 9 +- .../impl/GeneratedTypesBitsTest.java | 23 +- .../impl/GeneratedTypesLeafrefTest.java | 27 +- .../impl/GeneratedTypesStringTest.java | 21 +- .../generator/impl/GeneratedTypesTest.java | 38 +- .../generator/impl/IdentityrefTypeTest.java | 11 +- .../impl/TypeProviderIntegrationTest.java | 63 +- .../generator/impl/UnionTypeDefTest.java | 16 +- .../binding/generator/impl/UsesTest.java | 80 +- .../generator/util/YangSchemaUtilsTest.java | 22 +- .../binding/yang/types/BaseYangTypesTest.java | 127 ++- .../mdsal/binding/yang/types/Bug4621.java | 13 +- .../GroupingDefinitionDependencySortTest.java | 22 +- .../LeafrefTypeWithNullToStringInXpath.java | 44 +- .../yang/types/LeafrefTypeWithNullXpath.java | 44 +- .../yang/types/TestIntegerTypeDefinition.java | 45 +- .../yang/types/TestLeafSchemaNode.java | 67 +- .../yang/types/TypeProviderImplTest.java | 56 +- .../binding/yang/types/TypeProviderModel.java | 27 +- .../binding/yang/types/TypeProviderTest.java | 22 +- .../model/util/BindingGeneratorUtil.java | 109 ++- .../mdsal/binding/model/util/Types.java | 57 +- .../type/builder/EnumerationBuilderImpl.java | 19 +- .../model/util/BindingGeneratorUtilTest.java | 68 +- .../builder/GeneratedTOBuilderImplTest.java | 9 +- .../builder/GeneratedTypeBuilderTest.java | 8 +- .../generator/AbstractBigRangeGenerator.java | 11 +- .../AbstractPrimitiveRangeGenerator.java | 20 +- .../api/generator/AbstractRangeGenerator.java | 10 +- .../java/api/generator/BaseTemplate.xtend | 5 +- .../java/api/generator/BuilderTemplate.xtend | 14 +- .../java/api/generator/ClassTemplate.xtend | 16 +- .../java/api/generator/EnumTemplate.xtend | 2 +- .../java/api/generator/LengthGenerator.java | 40 +- .../generator/YangModuleInfoTemplate.xtend | 33 +- .../java/api/generator/ConstantsTest.java | 3 +- .../java/api/generator/GeneratorUtilTest.java | 2 +- .../api/generator/LengthGeneratorTest.java | 3 +- .../java/api/generator/TypeUtilsTest.java | 3 +- ...AugmentToUsesInAugmentCompilationTest.java | 6 +- .../java/api/generator/test/Bug1276Test.java | 7 +- .../java/api/generator/test/Bug5151Test.java | 11 +- .../java/api/generator/test/Bug532Test.java | 7 +- .../test/CascadeUsesCompilationTest.java | 2 +- .../test/ClassCodeGeneratorTest.java | 24 +- .../api/generator/test/CompilationTest.java | 7 +- .../generator/test/CompilationTestUtils.java | 21 +- .../generator/test/EncodingInJavaDocTest.java | 2 +- .../test/NestedGroupingCompilationTest.java | 7 +- .../test/TypedefCompilationTest.java | 2 +- .../test/UnionTypedefUnusedImportTest.java | 2 +- .../test/UnionWithIdentityrefTest.java | 2 +- ...me-collision => class-name-collision.yang} | 0 .../{configuration => configuration.yang} | 0 .../{other-module => other-module.yang} | 0 .../yang/binding/BindingMapping.java | 33 +- .../yang/binding/util/BindingReflections.java | 3 +- .../yang/binding/BindingMappingTest.java | 12 +- .../yang/binding/InstanceIdentifierTest.java | 6 +- .../binding/KeyedInstanceIdentifierTest.java | 6 +- .../yang/binding/test/mock/Nodes.java | 6 +- .../util/AbstractMappedRpcInvokerTest.java | 22 +- .../binding/util/BindingReflectionsTest.java | 6 +- .../util/LocalNameRpcServiceInvokerTest.java | 13 +- .../util/NotificationListenerInvokerTest.java | 10 +- .../util/QNameRpcServiceInvokerTest.java | 2 +- .../util/RpcMethodInvokerWithInputTest.java | 4 +- .../binding/util/RpcServiceInvokerTest.java | 15 +- ...OMDataTreeCommitCohortRegistryAdapter.java | 4 +- .../generator/impl/StreamWriterGenerator.java | 8 +- .../AbstractStreamWriterGenerator.java | 16 +- ...ractDataNodeContainerSerializerSource.java | 6 +- .../impl/BindingToNormalizedNodeCodec.java | 10 +- .../javav2/dom/codec/impl/FutureSchema.java | 7 +- .../codec/impl/MissingSchemaException.java | 2 +- .../impl/context/AugmentationNodeContext.java | 6 +- .../impl/context/CaseNodeCodecContext.java | 6 +- .../impl/context/ChoiceNodeCodecContext.java | 12 +- .../context/base/BindingCodecContext.java | 10 +- .../base/DataContainerCodecPrototype.java | 12 +- .../codec/impl/context/base/LazyTreeNode.java | 8 +- .../context/base/LeafNodeCodecContext.java | 53 +- .../context/base/TreeNodeCodecContext.java | 10 +- .../modification/BindingStructuralType.java | 7 +- .../LazyTreeNodeModification.java | 2 +- .../LazySerializedContainerNode.java | 2 +- .../generator/context/ModuleContext.java | 22 +- .../javav2/model/api/Restrictions.java | 5 +- .../generator/impl/AugmentToGenType.java | 102 ++- .../generator/impl/AuxiliaryGenUtils.java | 24 +- .../javav2/generator/impl/GenHelperUtil.java | 108 +-- .../generator/impl/RpcActionGenHelper.java | 34 +- .../generator/yang/types/BaseYangTypes.java | 6 +- .../GroupingDefinitionDependencySort.java | 9 +- .../generator/yang/types/TypeGenHelper.java | 51 +- .../yang/types/TypeProviderImpl.java | 93 +- .../impl/yangTemplateForModule.scala.txt | 22 +- .../impl/yangTemplateWriteAction.scala.txt | 10 +- .../impl/yangTemplateWriteAugments.scala.txt | 14 +- .../yangTemplateWriteConstraints.scala.txt | 28 - .../yangTemplateWriteDataSchemaNode.scala.txt | 107 ++- .../impl/yangTemplateWriteDeviation.scala.txt | 14 +- .../impl/yangTemplateWriteExtension.scala.txt | 10 +- .../impl/yangTemplateWriteFeature.scala.txt | 10 +- .../impl/yangTemplateWriteIdentity.scala.txt | 14 +- .../yangTemplateWriteNotification.scala.txt | 10 +- .../impl/yangTemplateWriteRPC.scala.txt | 10 +- .../impl/yangTemplateWriteType.scala.txt | 36 +- .../generator/impl/AugmentToGenTypeTest.java | 865 ++++++------------ .../generator/impl/AuxiliaryGenUtilsTest.java | 438 +++------ .../impl/BindingGeneratorImplTest.java | 56 +- .../javav2/generator/impl/Bug8542Test.java | 6 +- .../javav2/generator/impl/Bug8575Test.java | 17 +- .../impl/RpcActionGenHelperTest.java | 157 ++-- .../generator/impl/YangTemplateTest.java | 15 +- .../generator/util/BindingGeneratorUtil.java | 111 ++- .../binding/javav2/generator/util/Types.java | 87 +- .../type/builder/EnumerationBuilderImpl.java | 17 +- .../AbstractBigRangeGenerator.java | 12 +- .../AbstractPrimitiveRangeGenerator.java | 28 +- .../AbstractRangeGenerator.java | 14 +- .../rangeGenerators/LengthGenerator.java | 44 +- .../api/generator/renderers/BaseRenderer.java | 35 +- .../generator/renderers/ClassRenderer.java | 11 +- .../api/generator/renderers/EnumRenderer.java | 2 +- .../renderers/InterfaceRenderer.java | 2 +- .../YangModuleInfoTemplateRenderer.java | 3 +- .../api/generator/builderTemplate.scala.txt | 14 +- .../classTemplateRestrictions.scala.txt | 8 +- .../yangModuleInfoTemplate.scala.txt | 13 +- .../api/generator/GeneratorJavaFileTest.java | 2 +- .../api/gen/plugin/CodeGeneratorImpl.java | 6 - .../context/BindingRuntimeContext.java | 43 +- .../context/ModuleInfoBackedContext.java | 5 +- .../util/BindingSchemaContextUtils.java | 26 +- .../reflection/BindingReflections.java | 4 +- .../context/BindingRuntimeContextTest.java | 9 +- .../util/BindingSchemaContextUtilsTest.java | 12 +- .../reflection/BindingReflectionsTest.java | 4 +- .../binding/javav2/util/BindingMapping.java | 31 +- .../AbstractDOMDataTreeServiceTestSuite.java | 2 +- .../dom/api/DOMDataTreeIdentifierTest.java | 2 +- .../mdsal/dom/api/DOMExceptionsTest.java | 2 +- .../mdsal/dom/api/DOMRpcIdentifierTest.java | 2 +- .../mdsal/dom/broker/DOMRpcRoutingTable.java | 2 +- .../broker/RoutedDOMRpcRoutingTableEntry.java | 2 +- .../schema/ScanningSchemaServiceProvider.java | 11 +- .../mdsal/dom/broker/DOMBrokerTest.java | 4 +- .../dom/broker/DOMDataTreeListenerTest.java | 5 +- .../mdsal/dom/broker/DOMRpcRouterTest.java | 10 +- .../dom/broker/DOMTransactionChainTest.java | 2 +- ...rdedDOMDataTreeProducerMultiShardTest.java | 21 +- .../dom/broker/ShardedDOMDataTreeTest.java | 27 +- .../ShardedDOMDataWriteTransactionTest.java | 2 +- .../ScanningSchemaServiceProviderTest.java | 29 +- .../mdsal/dom/broker/util/TestModel.java | 12 +- .../AbstractDOMShardTreeChangePublisher.java | 2 +- .../DataTreeModificationCursorAdaptor.java | 2 +- .../store/inmemory/InMemoryDOMDataStore.java | 4 +- .../inmemory/InMemoryDOMDataStoreFactory.java | 2 +- .../inmemory/InMemoryDOMDataTreeShard.java | 18 +- .../InMemoryDOMStoreTreeChangePublisher.java | 6 +- ...emoryDOMDataTreeShardWriteTransaction.java | 2 +- .../dom/store/impl/InMemoryDataStoreTest.java | 5 +- .../md/sal/dom/store/impl/TestModel.java | 14 +- ...stractDOMShardTreeChangePublisherTest.java | 16 +- .../InMemoryDOMDataTreeShardTest.java | 6 +- ...taTreeShardThreePhaseCommitCohortTest.java | 6 +- ...yDOMDataTreeShardWriteTransactionTest.java | 6 +- .../inmemory/ShardDataModificationTest.java | 3 +- .../OsgiBundleScanningSchemaServiceTest.java | 10 +- .../schema/service/osgi/util/TestModel.java | 12 +- .../CompatDOMDataTreeListenerRegistry.java | 2 +- .../DOMDataTreeChangeListenerAggregator.java | 2 +- .../DelegatingReadableCursorOperation.java | 2 +- .../dom/spi/shard/WritableNodeOperation.java | 2 +- .../store/SnapshotBackedReadTransaction.java | 2 +- .../SnapshotBackedReadWriteTransaction.java | 2 +- .../store/SnapshotBackedWriteTransaction.java | 2 +- .../spi/DOMDataTreePrefixTableEntryTest.java | 4 +- .../dom/spi/DOMDataTreePrefixTableTest.java | 4 +- .../dom/spi/RegistrationTreeNodeTest.java | 4 +- .../mdsal/dom/spi/RpcRoutingStrategyTest.java | 4 +- ...DelegatingReadableCursorOperationTest.java | 4 +- .../mdsal/dom/spi/shard/TestUtils.java | 2 +- .../spi/shard/WritableNodeOperationTest.java | 2 +- ...stractDOMStoreTreeChangePublisherTest.java | 2 +- .../SnapshotBackedReadTransactionTest.java | 2 +- ...napshotBackedReadWriteTransactionTest.java | 2 +- .../SnapshotBackedWriteTransactionTest.java | 2 +- .../dom/api/DOMEntityOwnershipChangeTest.java | 2 +- 254 files changed, 2582 insertions(+), 3413 deletions(-) rename binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/{class-name-collision => class-name-collision.yang} (100%) rename binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/{configuration => configuration.yang} (100%) rename binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/{other-module => other-module.yang} (100%) delete mode 100644 binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteConstraints.scala.txt diff --git a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/maven/api/gen/plugin/CodeGeneratorImpl.java b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/maven/api/gen/plugin/CodeGeneratorImpl.java index 84f94eca6c..b21601c4fc 100644 --- a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/maven/api/gen/plugin/CodeGeneratorImpl.java +++ b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/maven/api/gen/plugin/CodeGeneratorImpl.java @@ -51,13 +51,6 @@ public final class CodeGeneratorImpl implements BasicCodeGenerator, BuildContext private MavenProject mavenProject; private File resourceBaseDir; - @Override - public Collection generateSources(final SchemaContext context, final File outputBaseDir, - final Set currentModules) throws IOException { - return generateSources(context, outputBaseDir, currentModules, - module -> Optional.of("/" + module.getModuleSourcePath().replace(File.separator, "/"))); - } - @Override public Collection generateSources(final SchemaContext context, final File outputDir, final Set yangModules, final Function> moduleResourcePathResolver) diff --git a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/GeneratorImpl.xtend b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/GeneratorImpl.xtend index 04b7f1e80e..45fb65da6d 100644 --- a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/GeneratorImpl.xtend +++ b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/GeneratorImpl.xtend @@ -8,12 +8,12 @@ package org.opendaylight.mdsal.binding.yang.unified.doc.generator import com.google.common.collect.Iterables +import com.google.common.collect.Lists import java.io.BufferedWriter import java.io.File import java.io.IOException import java.io.OutputStreamWriter import java.nio.charset.StandardCharsets -import java.text.SimpleDateFormat import java.util.ArrayList import java.util.Collection import java.util.HashMap @@ -21,17 +21,19 @@ import java.util.HashSet import java.util.LinkedHashMap import java.util.List import java.util.Map +import java.util.Optional import java.util.Set import org.opendaylight.yangtools.yang.common.QName import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode import org.opendaylight.yangtools.yang.model.api.AugmentationTarget -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode import org.opendaylight.yangtools.yang.model.api.DataNodeContainer import org.opendaylight.yangtools.yang.model.api.DataSchemaNode +import org.opendaylight.yangtools.yang.model.api.ElementCountConstraintAware import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition import org.opendaylight.yangtools.yang.model.api.GroupingDefinition import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode @@ -46,21 +48,25 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition import org.opendaylight.yangtools.yang.model.api.UsesNode import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition import org.slf4j.Logger import org.slf4j.LoggerFactory import org.sonatype.plexus.build.incremental.BuildContext import org.sonatype.plexus.build.incremental.DefaultBuildContext -import com.google.common.collect.Lists class GeneratorImpl { File path - static val REVISION_FORMAT = new SimpleDateFormat("yyyy-MM-dd") static val Logger LOG = LoggerFactory.getLogger(GeneratorImpl) static val BuildContext CTX = new DefaultBuildContext(); var Module currentModule; @@ -341,9 +347,9 @@ class GeneratorImpl { private def parseTargetPath(SchemaPath path) { val List nodes = new ArrayList(); for (QName pathElement : path.pathFromRoot) { - val module = ctx.findModuleByNamespaceAndRevision(pathElement.namespace, pathElement.revision); - if (module !== null) { - var foundNode = module.getDataChildByName(pathElement) + val module = ctx.findModule(pathElement.module) + if (module.isPresent) { + var foundNode = module.get.getDataChildByName(pathElement) if (foundNode === null) { val child = nodes.last if (child instanceof DataNodeContainer) { @@ -400,7 +406,7 @@ class GeneratorImpl { private def CharSequence printAugmentedNode(DataSchemaNode child) { - if(child instanceof ChoiceCaseNode) + if(child instanceof CaseSchemaNode) return '' return @@ -427,9 +433,9 @@ class GeneratorImpl { } private def printChoiceNode(ChoiceSchemaNode child) { - val List cases = new ArrayList(child.cases); + val List cases = new ArrayList(child.cases.values); if(!cases.empty) { - val ChoiceCaseNode aCase = cases.get(0) + val CaseSchemaNode aCase = cases.get(0) for(caseChildNode : aCase.childNodes) printAugmentedNode(caseChildNode) } @@ -719,8 +725,10 @@ class GeneratorImpl { «module.namespace» + «IF module.revision.isPresent» «strong("revision")» - «REVISION_FORMAT.format(module.revision)» + «module.revision.get.toString» + «ENDIF» «strong("description")» @@ -732,7 +740,7 @@ class GeneratorImpl { «FOR imp : module.imports BEFORE '''«strong("imports")»''' AFTER ''''''» - «imp.prefix»:«imp.moduleName»«IF imp.revision !== null» «REVISION_FORMAT.format(imp.revision)»«ENDIF»; + «imp.prefix»:«imp.moduleName»«IF imp.revision.isPresent» «imp.revision.get.toString»«ENDIF»; «ENDFOR» @@ -757,10 +765,10 @@ class GeneratorImpl { private def dispatch CharSequence tree(ChoiceSchemaNode node,YangInstanceIdentifier path) ''' «node.nodeName» (choice) - «casesTree(node.cases,path)» + «casesTree(node.cases.values, path)» ''' - def casesTree(Set nodes,YangInstanceIdentifier path) ''' + def casesTree(Collection nodes, YangInstanceIdentifier path) '''
    «FOR node : nodes»
  • @@ -847,8 +855,8 @@ class GeneratorImpl { return ''' «printInfo(node, "leaf")» «listItem("type", typeAnchorLink(node.type?.path, node.type.QName.localName))» - «listItem("units", node.units)» - «listItem("default", node.^default)» + «listItem("units", node.type.units.orElse(null))» + «listItem("default", node.type.defaultValue.map([ Object o | o.toString]).orElse(null))»
''' } else if(node instanceof LeafListSchemaNode) { @@ -868,13 +876,13 @@ class GeneratorImpl { } else if(node instanceof ChoiceSchemaNode) { return ''' «printInfo(node, "choice")» - «listItem("default case", node.defaultCase)» - «FOR caseNode : node.cases» + «listItem("default case", node.defaultCase.map([ CaseSchemaNode n | n.getQName.localName]).orElse(null))» + «FOR caseNode : node.cases.values» «caseNode.printSchemaNodeInfo» «ENDFOR» ''' - } else if(node instanceof ChoiceCaseNode) { + } else if(node instanceof CaseSchemaNode) { return ''' «printInfo(node, "case")» @@ -906,12 +914,19 @@ class GeneratorImpl { «strong(listItem(nodeType, node.QName.localName))» «ENDIF»
    - «listItem("description", node.description)» - «listItem("reference", node.reference)» + «listItem("description", node.description.orElse(null))» + «listItem("reference", node.reference.orElse(null))» «IF node instanceof DataSchemaNode» - «listItem("when condition", node.constraints.whenCondition?.toString)» - «listItem("min elements", node.constraints.minElements?.toString)» - «listItem("max elements", node.constraints.maxElements?.toString)» + «IF node.whenCondition.present» + «listItem("when condition", node.whenCondition.get.toString)» + «ENDIF» + «ENDIF» + «IF node instanceof ElementCountConstraintAware» + «IF node.elementCountConstraint.present» + «val constraint = node.elementCountConstraint.get» + «listItem("min elements", constraint.minElements?.toString)» + «listItem("max elements", constraint.maxElements?.toString)» + «ENDIF» «ENDIF» ''' } @@ -945,7 +960,7 @@ class GeneratorImpl { val leafNodes = nodes.filter(LeafSchemaNode) val leafListNodes = nodes.filter(LeafListSchemaNode) val choices = nodes.filter(ChoiceSchemaNode) - val cases = nodes.filter(ChoiceCaseNode) + val cases = nodes.filter(CaseSchemaNode) val containers = nodes.filter(ContainerSchemaNode) val lists = nodes.filter(ListSchemaNode) return ''' @@ -1076,12 +1091,12 @@ class GeneratorImpl { ''' private def dispatch CharSequence printInfo(ChoiceSchemaNode node, int level, YangInstanceIdentifier path) ''' - «val Set choiceCases = new HashSet(node.cases)» - «choiceCases.printChildren(level,path)» + «val Set choiceCases = new HashSet(node.cases.values)» + «choiceCases.printChildren(level, path)» ''' - private def dispatch CharSequence printInfo(ChoiceCaseNode node, int level, YangInstanceIdentifier path) ''' - «node.childNodes.printChildren(level,path)» + private def dispatch CharSequence printInfo(CaseSchemaNode node, int level, YangInstanceIdentifier path) ''' + «node.childNodes.printChildren(level, path)» ''' @@ -1113,7 +1128,7 @@ class GeneratorImpl {
  • «strong((node.QName.localName))» (anyxml)
    • configuration data: «strong(String.valueOf(node.configuration))»
    • -
    • mandatory: «strong(String.valueOf(node.constraints.mandatory))»
    • +
    • mandatory: «strong(String.valueOf(node.mandatory))»
  • ''' @@ -1124,7 +1139,7 @@ class GeneratorImpl {
  • «strong((node.QName.localName))» (leaf)
    • configuration data: «strong(String.valueOf(node.configuration))»
    • -
    • mandatory: «strong(String.valueOf(node.constraints.mandatory))»
    • +
    • mandatory: «strong(String.valueOf(node.mandatory))»
  • ''' @@ -1200,7 +1215,7 @@ class GeneratorImpl { } val QName qname = path.get(0) - var Object parent = ctx.findModuleByNamespaceAndRevision(qname.namespace, qname.revision) + var Object parent = ctx.findModule(qname.module).orElse(null) for (name : path) { if (parent instanceof DataNodeContainer) { @@ -1222,14 +1237,14 @@ class GeneratorImpl { } } - val pathElementModule = ctx.findModuleByNamespaceAndRevision(name.namespace, name.revision) + val pathElementModule = ctx.findModule(name.module).get val String moduleName = pathElementModule.name pathString.append(moduleName) pathString.append(':') pathString.append(name.localName) pathString.append('/') if(node instanceof ChoiceSchemaNode && dataNode !== null) { - val DataSchemaNode caseNode = dataNode.childNodes.findFirst[DataSchemaNode e | e instanceof ChoiceCaseNode]; + val DataSchemaNode caseNode = dataNode.childNodes.findFirst[DataSchemaNode e | e instanceof CaseSchemaNode]; if(caseNode !== null) { pathString.append("(case)"); pathString.append(caseNode.QName.localName); @@ -1301,38 +1316,62 @@ class GeneratorImpl { } private def dispatch toLength(BinaryTypeDefinition type) ''' - «type.lengthConstraints.toLengthStmt» + «type.lengthConstraint.toLengthStmt» ''' private def dispatch toLength(StringTypeDefinition type) ''' - «type.lengthConstraints.toLengthStmt» + «type.lengthConstraint.toLengthStmt» ''' private def dispatch toRange(TypeDefinition type) { } private def dispatch toRange(DecimalTypeDefinition type) ''' - «type.rangeConstraints.toRangeStmt» + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Int8TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Int16TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Int32TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Int64TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Uint8TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» + ''' + + private def dispatch toRange(Uint16TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» ''' - private def dispatch toRange(IntegerTypeDefinition type) ''' - «type.rangeConstraints.toRangeStmt» + private def dispatch toRange(Uint32TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» ''' - private def dispatch toRange(UnsignedIntegerTypeDefinition type) ''' - «type.rangeConstraints.toRangeStmt» + private def dispatch toRange(Uint64TypeDefinition type) ''' + «type.rangeConstraint.toRangeStmt» ''' - def toLengthStmt(Collection lengths) ''' - «IF lengths !== null && !lengths.empty» + def toLengthStmt(Optional lengths) ''' + «IF lengths.isPresent» «listItem("Length restrictions:")»
      - «FOR length : lengths» + «FOR length : lengths.get.allowedRanges.asRanges»
    • - «IF length.min == length.max» - «length.min» + «IF length.lowerEndpoint == length.upperEndpoint» + «length.lowerEndpoint» «ELSE» - <«length.min», «length.max»> + <«length.lowerEndpoint», «length.upperEndpoint»> «ENDIF»
    • «ENDFOR» @@ -1340,16 +1379,16 @@ class GeneratorImpl { «ENDIF» ''' - def toRangeStmt(Collection ranges) ''' - «IF ranges !== null && !ranges.empty» + def toRangeStmt(Optional> constraint) ''' + «IF constraint.present» «listItem("Range restrictions:")»
        - «FOR range : ranges» + «FOR range : constraint.get.allowedRanges.asRanges»
      • - «IF range.min == range.max» - «range.min» + «IF range.lowerEndpoint == range.upperEndpoint» + «range.lowerEndpoint» «ELSE» - <«range.min», «range.max»> + <«range.lowerEndpoint», «range.upperEndpoint»> «ENDIF»
      • «ENDFOR» @@ -1370,8 +1409,8 @@ class GeneratorImpl { private def italic(CharSequence str) '''«str»''' def CharSequence descAndRefLi(SchemaNode node) ''' - «listItem("Description", node.description)» - «listItem("Reference", node.reference)» + «listItem("Description", node.description.orElse(null))» + «listItem("Reference", node.reference.orElse(null))» ''' def CharSequence descAndRef(SchemaNode node) ''' @@ -1398,7 +1437,7 @@ class GeneratorImpl { ''' private def String nodeSchemaPathToPath(DataSchemaNode node, Map childNodes) { - if (node instanceof ChoiceSchemaNode || node instanceof ChoiceCaseNode) { + if (node instanceof ChoiceSchemaNode || node instanceof CaseSchemaNode) { return null } @@ -1414,7 +1453,7 @@ class GeneratorImpl { for (pathElement : path) { actual.add(pathElement) val DataSchemaNode nodeByPath = childNodes.get(SchemaPath.create(actual, absolute)) - if (!(nodeByPath instanceof ChoiceSchemaNode) && !(nodeByPath instanceof ChoiceCaseNode)) { + if (!(nodeByPath instanceof ChoiceSchemaNode) && !(nodeByPath instanceof CaseSchemaNode)) { result.append(pathElement.localName) if (i != path.size - 1) { result.append('/') diff --git a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocumentationGeneratorImpl.java b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocumentationGeneratorImpl.java index b528c6d3d8..e70d320486 100644 --- a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocumentationGeneratorImpl.java +++ b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocumentationGeneratorImpl.java @@ -11,20 +11,15 @@ import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.Map; +import java.util.Optional; import java.util.Set; +import java.util.function.Function; import org.opendaylight.mdsal.binding.yang.unified.doc.generator.GeneratorImpl; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator; public class DocumentationGeneratorImpl extends GeneratorImpl implements BasicCodeGenerator { - - @Override - public Collection generateSources(final SchemaContext arg0, final File arg1, final Set arg2) - throws IOException { - return generate(arg0, arg1, arg2); - } - @Override public void setAdditionalConfig(final Map additionalConfiguration) { // no additional config utilized @@ -34,4 +29,11 @@ public class DocumentationGeneratorImpl extends GeneratorImpl implements BasicCo public void setResourceBaseDir(final File resourceBaseDir) { // no resource processing necessary } + + @Override + public Collection generateSources(final SchemaContext context, final File outputBaseDir, + final Set currentModules, final Function> moduleResourcePathResolver) + throws IOException { + return generate(context, outputBaseDir, currentModules); + } } diff --git a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/WadlRestconfGenerator.xtend b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/WadlRestconfGenerator.xtend index 5045a08df7..96535776fd 100644 --- a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/WadlRestconfGenerator.xtend +++ b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/WadlRestconfGenerator.xtend @@ -84,7 +84,7 @@ class WadlRestconfGenerator { private def importsAsNamespaces(Module module) ''' «FOR imprt : module.imports» - xmlns:«imprt.prefix»="«context.findModuleByName(imprt.moduleName, imprt.revision).namespace»" + xmlns:«imprt.prefix»="«context.findModule(imprt.moduleName, imprt.revision).get.namespace»" «ENDFOR» ''' diff --git a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenerator.java b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenerator.java index 8f0fc163a7..581e41c484 100644 --- a/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenerator.java +++ b/binding/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenerator.java @@ -11,36 +11,36 @@ import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.Map; +import java.util.Optional; import java.util.Set; +import java.util.function.Function; import org.opendaylight.mdsal.binding.yang.wadl.generator.WadlRestconfGenerator; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator; public class WadlGenerator implements BasicCodeGenerator { - @Override - public Collection generateSources(final SchemaContext context, final File outputDir, - final Set currentModules) throws IOException { + public void setAdditionalConfig(final Map additionalConfiguration) { + } + + public void setResourceBaseDir(final File resourceBaseDir) { + } - final File outputBaseDir; - if (outputDir == null) { + @Override + public Collection generateSources(final SchemaContext context, final File outputBaseDir, + final Set currentModules, final Function> moduleResourcePathResolver) + throws IOException { + final File outputDir; + if (outputBaseDir == null) { // FIXME: this hard-codes the destination - outputBaseDir = new File("target" + File.separator + "generated-sources" + File.separator + outputDir = new File("target" + File.separator + "generated-sources" + File.separator + "maven-sal-api-gen" + File.separator + "wadl"); } else { - outputBaseDir = outputDir; + outputDir = outputBaseDir; } - final WadlRestconfGenerator generator = new WadlRestconfGenerator(outputBaseDir); + final WadlRestconfGenerator generator = new WadlRestconfGenerator(outputDir); return generator.generate(context, currentModules); } - - @Override - public void setAdditionalConfig(final Map additionalConfiguration) { - } - - @Override - public void setResourceBaseDir(final File resourceBaseDir) { - } } diff --git a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocGenTest.java b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocGenTest.java index 4d004c1bc3..b195bf5e3c 100644 --- a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocGenTest.java +++ b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/DocGenTest.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.Set; import org.junit.After; import org.junit.Before; @@ -49,14 +50,15 @@ public class DocGenTest { @Test public void testListGeneration() throws Exception { final List sourceFiles = getSourceFiles("/doc-gen"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final Set modules = context.getModules(); final BasicCodeGenerator generator = new DocumentationGeneratorImpl(); - Collection generatedFiles = generator.generateSources(context, GENERATOR_OUTPUT_DIR, modules); + Collection generatedFiles = generator.generateSources(context, GENERATOR_OUTPUT_DIR, modules, + module -> Optional.empty()); assertEquals(4, generatedFiles.size()); } - private static List getSourceFiles(String path) throws Exception { + private static List getSourceFiles(final String path) throws Exception { final URI resPath = DocGenTest.class.getResource(path).toURI(); final File sourcesDir = new File(resPath); if (sourcesDir.exists()) { @@ -72,7 +74,7 @@ public class DocGenTest { } } - private static void deleteTestDir(File file) { + private static void deleteTestDir(final File file) { if (file.isDirectory()) { File[] filesToDelete = file.listFiles(); if (filesToDelete != null) { diff --git a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/YangModuleInfoCompilationTest.java b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/YangModuleInfoCompilationTest.java index 76163c7742..3056e70616 100644 --- a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/YangModuleInfoCompilationTest.java +++ b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/unified/doc/generator/maven/YangModuleInfoCompilationTest.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.Set; import javax.tools.JavaCompiler; import javax.tools.JavaFileObject; @@ -33,6 +34,7 @@ import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; +import org.opendaylight.yangtools.yang.common.YangConstants; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; import org.sonatype.plexus.build.incremental.DefaultBuildContext; @@ -140,22 +142,25 @@ public class YangModuleInfoCompilationTest { private static void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { final List sourceFiles = getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); CodeGeneratorImpl codegen = new CodeGeneratorImpl(); codegen.setBuildContext(new DefaultBuildContext()); - codegen.generateSources(context, sourcesOutputDir, context.getModules()); + codegen.generateSources(context, sourcesOutputDir, context.getModules(), + module -> Optional.of(resourceDirPath + File.separator + module.getName() + + YangConstants.RFC6020_YANG_FILE_EXTENSION)); } @Test public void generateTestSourcesWithAdditionalConfig() throws Exception { final List sourceFiles = getSourceFiles("/yang-module-info"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); CodeGeneratorImpl codegen = new CodeGeneratorImpl(); codegen.setBuildContext(new DefaultBuildContext()); codegen.setResourceBaseDir(null); codegen.setMavenProject(new MavenProject()); codegen.setAdditionalConfig(ImmutableMap.of("test", "test")); - Collection files = codegen.generateSources(context, null, context.getModules()); + Collection files = codegen.generateSources(context, null, context.getModules(), + module -> Optional.of(module.getName())); assertFalse(files.isEmpty()); files.forEach(file -> { deleteTestDir(file); diff --git a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenTest.java b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenTest.java index e6210901ac..4c014c75e6 100644 --- a/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenTest.java +++ b/binding/maven-sal-api-gen-plugin/src/test/java/org/opendaylight/mdsal/binding/yang/wadl/generator/maven/WadlGenTest.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.Set; import org.junit.After; import org.junit.Before; @@ -51,29 +52,31 @@ public class WadlGenTest { @Test public void testListGeneration() throws Exception { final List sourceFiles = getSourceFiles("/wadl-gen"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final Set modules = context.getModules(); final BasicCodeGenerator generator = new WadlGenerator(); - Collection generatedWadlFiles = generator.generateSources(context, GENERATOR_OUTPUT_DIR, modules); + Collection generatedWadlFiles = generator.generateSources(context, GENERATOR_OUTPUT_DIR, modules, + module -> Optional.empty()); assertEquals(3, generatedWadlFiles.size()); - generatedWadlFiles.forEach((file -> assertTrue(file.exists()))); + generatedWadlFiles.forEach(file -> assertTrue(file.exists())); } @Test public void testListGenerationWithoutPath() throws Exception { final List sourceFiles = getSourceFiles("/wadl-gen"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final Set modules = context.getModules(); final BasicCodeGenerator generator = new WadlGenerator(); - Collection generatedWadlFiles = generator.generateSources(context, null, modules); + Collection generatedWadlFiles = generator.generateSources(context, null, modules, + module -> Optional.empty()); assertEquals(3, generatedWadlFiles.size()); - generatedWadlFiles.forEach((file -> { + generatedWadlFiles.forEach(file -> { deleteTestDir(file); assertFalse(file.exists()); - })); + }); } - private static List getSourceFiles(String path) throws Exception { + private static List getSourceFiles(final String path) throws Exception { final URI resPath = WadlGenTest.class.getResource(path).toURI(); final File sourcesDir = new File(resPath); if (sourcesDir.exists()) { @@ -89,7 +92,7 @@ public class WadlGenTest { } } - private static void deleteTestDir(File file) { + private static void deleteTestDir(final File file) { if (file.isDirectory()) { File[] filesToDelete = file.listFiles(); if (filesToDelete != null) { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeCommitCohortRegistryAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeCommitCohortRegistryAdapter.java index 750a31cdb1..d09a816fb3 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeCommitCohortRegistryAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMDataTreeCommitCohortRegistryAdapter.java @@ -49,7 +49,7 @@ public class BindingDOMDataTreeCommitCohortRegistryAdapter implements DataTreeCo } @Override - public void close() throws Exception { + public void close() { domReg.close(); } }; diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralType.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralType.java index f6577a5e59..5a7c70e3a5 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralType.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralType.java @@ -7,7 +7,7 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; -import com.google.common.base.Optional; +import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -87,7 +87,10 @@ enum BindingStructuralType { UNKNOWN; static BindingStructuralType from(final DataTreeCandidateNode domChildNode) { - final Optional> dataBased = domChildNode.getDataAfter().or(domChildNode.getDataBefore()); + Optional> dataBased = domChildNode.getDataAfter(); + if (!dataBased.isPresent()) { + dataBased = domChildNode.getDataBefore(); + } if (dataBased.isPresent()) { return from(dataBased.get()); } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java index bc060f2c78..e181e8f99d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodec.java @@ -19,10 +19,8 @@ import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterators; import java.lang.reflect.Method; -import java.net.URI; import java.util.AbstractMap.SimpleEntry; import java.util.Collection; -import java.util.Date; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; @@ -289,15 +287,13 @@ public final class BindingToNormalizedNodeCodec implements BindingCodecTreeFacto private Module getModuleBlocking(final Class modeledClass) { final QNameModule moduleName = BindingReflections.getQNameModule(modeledClass); - final URI namespace = moduleName.getNamespace(); - final Date revision = moduleName.getRevision(); BindingRuntimeContext localRuntimeContext = runtimeContext(); Module module = localRuntimeContext == null ? null : - localRuntimeContext.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision); - if (module == null && futureSchema.waitForSchema(namespace,revision)) { + localRuntimeContext.getSchemaContext().findModule(moduleName).orElse(null); + if (module == null && futureSchema.waitForSchema(moduleName)) { localRuntimeContext = runtimeContext(); Preconditions.checkState(localRuntimeContext != null, "BindingRuntimeContext is not available."); - module = localRuntimeContext.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision); + module = localRuntimeContext.getSchemaContext().findModule(moduleName).orElse(null); } Preconditions.checkState(module != null, "Schema for %s is not available.", modeledClass); return module; diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java index 0dfa8419e1..0511c4a99a 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchema.java @@ -11,10 +11,8 @@ package org.opendaylight.mdsal.binding.dom.adapter; import static java.util.Objects.requireNonNull; import com.google.common.util.concurrent.SettableFuture; -import java.net.URI; import java.util.Collection; import java.util.Collections; -import java.util.Date; import java.util.LinkedHashSet; import java.util.Set; import java.util.concurrent.ExecutionException; @@ -24,6 +22,7 @@ import java.util.function.Predicate; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; import org.opendaylight.yangtools.yang.binding.Augmentation; +import org.opendaylight.yangtools.yang.common.QNameModule; abstract class FutureSchema implements AutoCloseable { private static final class Waiting extends FutureSchema { @@ -125,11 +124,11 @@ abstract class FutureSchema implements AutoCloseable { } } - boolean waitForSchema(final URI namespace, final Date revision) { + boolean waitForSchema(final QNameModule module) { return addPostponedOpAndWait(new FutureSchemaPredicate() { @Override public boolean test(final BindingRuntimeContext input) { - return input.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision) != null; + return input.getSchemaContext().findModule(module).isPresent(); } }); } diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDataObjectModification.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDataObjectModification.java index b4e14b6d77..991d7a1115 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDataObjectModification.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazyDataObjectModification.java @@ -7,12 +7,12 @@ */ package org.opendaylight.mdsal.binding.dom.adapter; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Optional; import org.opendaylight.mdsal.binding.api.DataObjectModification; import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeNode; import org.opendaylight.yangtools.yang.binding.Augmentation; @@ -165,7 +165,7 @@ final class LazyDataObjectModification implements DataObje @SuppressWarnings("unchecked") @Override public > Collection> - getModifiedChildren(Class childType) { + getModifiedChildren(final Class childType) { List> children = new ArrayList<>(); for (DataObjectModification potential : getModifiedChildren()) { if (childType.isAssignableFrom(potential.getDataType())) { diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java index ff3199ce71..737432804d 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNode.java @@ -8,9 +8,9 @@ package org.opendaylight.mdsal.binding.dom.adapter; -import com.google.common.base.Optional; import java.util.Collection; import java.util.Map; +import java.util.Optional; import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.common.QName; diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/AdapterBuilderTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/AdapterBuilderTest.java index bea076dd0e..301dba248c 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/AdapterBuilderTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/AdapterBuilderTest.java @@ -31,12 +31,12 @@ public class AdapterBuilderTest extends AdapterBuilder { } @Override - public Set getRequiredDelegates() { + public Set> getRequiredDelegates() { return DELEGATES.keySet(); } @Override - protected Object createInstance(ClassToInstanceMap delegates) { + protected Object createInstance(final ClassToInstanceMap delegates) { return delegates; } } \ No newline at end of file diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapterTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapterTest.java index 4391abe209..da65e9c0a3 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapterTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapterTest.java @@ -13,7 +13,6 @@ import static org.mockito.Mockito.mock; import com.google.common.collect.ImmutableMap; import java.lang.reflect.Method; import java.net.URI; -import java.util.Date; import org.junit.Test; import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService; @@ -28,7 +27,7 @@ public class BindingDOMRpcImplementationAdapterTest { final BindingNormalizedNodeCodecRegistry registry = mock(BindingNormalizedNodeCodecRegistry.class); final Method testMethod = this.getClass().getDeclaredMethod("testMethod"); final SchemaPath schemaPath = SchemaPath.create(true, - QName.create(QNameModule.create(new URI("tst"), new Date()), "test")); + QName.create(QNameModule.create(new URI("tst")), "test")); final BindingDOMRpcImplementationAdapter adapter = new BindingDOMRpcImplementationAdapter(registry, OpendaylightTestRpcServiceService.class, ImmutableMap.of(schemaPath, testMethod), mock(OpendaylightTestRpcServiceService.class)); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java index b58cc23c01..9918660c53 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingNormalizedCodecTest.java @@ -13,12 +13,13 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import com.google.common.collect.ImmutableBiMap; -import com.google.common.collect.Multimaps; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.SetMultimap; import com.google.common.util.concurrent.Uninterruptibles; import java.lang.reflect.Method; import java.net.URI; -import java.util.Collections; import java.util.Map; import java.util.Set; import java.util.concurrent.CountDownLatch; @@ -40,11 +41,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.te import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.two.level.list.TopLevelListKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContext; @@ -171,22 +172,22 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { static class EmptySchemaContext extends AbstractSchemaContext { @Override public Set getModules() { - return Collections.emptySet(); + return ImmutableSet.of(); } @Override - protected Map getIdentifiersToSources() { - return Collections.emptyMap(); + protected Map getModuleMap() { + return ImmutableMap.of(); } @Override protected SetMultimap getNamespaceToModules() { - return Multimaps.forMap(Collections.emptyMap()); + return ImmutableSetMultimap.of(); } @Override protected SetMultimap getNameToModules() { - return Multimaps.forMap(Collections.emptyMap()); + return ImmutableSetMultimap.of(); } } } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralTypeTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralTypeTest.java index ed120c5cc8..4b85b80d2f 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralTypeTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingStructuralTypeTest.java @@ -11,7 +11,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import com.google.common.base.Optional; +import java.util.Optional; import org.junit.Test; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodecTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodecTest.java index fe6cd20e24..84952c94cc 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodecTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/BindingToNormalizedNodeCodecTest.java @@ -53,7 +53,7 @@ public class BindingToNormalizedNodeCodecTest { */ @Test public void fromNormalizedNodeTest() throws Exception { - final SchemaContext schemaCtx = YangParserTestUtils.parseYangSource("/test.yang"); + final SchemaContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang"); final NormalizedNode data = prepareData(schemaCtx, 42); final Entry, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx); @@ -83,7 +83,7 @@ public class BindingToNormalizedNodeCodecTest { */ @Test public void fromNormalizedNodeWithAnotherInputDataTest() throws Exception { - final SchemaContext schemaCtx = YangParserTestUtils.parseYangSource("/test.yang"); + final SchemaContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang"); final NormalizedNode data = prepareData(schemaCtx, "42"); final Entry, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx); @@ -114,7 +114,7 @@ public class BindingToNormalizedNodeCodecTest { } private static Entry, DataObject> fromNormalizedNode(final NormalizedNode data, - final SchemaContext schemaCtx) throws Exception { + final SchemaContext schemaCtx) { final DataObjectSerializerGenerator serializerGenerator = StreamWriterGenerator.create(JavassistUtils.forClassPool(ClassPool.getDefault())); final BindingNormalizedNodeCodecRegistry codecRegistry = diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchemaTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchemaTest.java index fa4574f290..a4e95c1c62 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchemaTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/FutureSchemaTest.java @@ -13,9 +13,9 @@ import static org.junit.Assert.assertNotNull; import com.google.common.collect.ImmutableSet; import java.net.URI; -import java.util.Date; import java.util.concurrent.TimeUnit; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QNameModule; public class FutureSchemaTest { @@ -23,7 +23,7 @@ public class FutureSchemaTest { public void basicTest() throws Exception { final FutureSchema futureSchema = FutureSchema.create(0, TimeUnit.MICROSECONDS, true); assertNotNull(futureSchema); - assertFalse(futureSchema.waitForSchema(new URI("test"), new Date(0))); + assertFalse(futureSchema.waitForSchema(QNameModule.create(new URI("test")))); assertFalse(futureSchema.waitForSchema(ImmutableSet.of())); assertEquals(0, futureSchema.getDuration()); assertEquals(TimeUnit.MICROSECONDS, futureSchema.getUnit()); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNodeTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNodeTest.java index 630479c25e..c045cc505d 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNodeTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LazySerializedContainerNodeTest.java @@ -16,9 +16,9 @@ import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableBiMap; import com.google.common.util.concurrent.MoreExecutors; +import java.util.Optional; import org.junit.Test; import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFactory; import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext; @@ -32,8 +32,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.RpcEffectiveStatementImpl; public class LazySerializedContainerNodeTest { @@ -44,7 +44,7 @@ public class LazySerializedContainerNodeTest { final BindingNormalizedNodeCodecRegistry codec = mock(BindingNormalizedNodeCodecRegistry.class); final ContainerNode containerNode = mock(ContainerNode.class); doReturn(containerNode).when(codec).toNormalizedNodeRpcData(any()); - doReturn(Optional.absent()).when(containerNode).getChild(any()); + doReturn(Optional.empty()).when(containerNode).getChild(any()); final BindingBrokerTestFactory bindingBrokerTestFactory = new BindingBrokerTestFactory(); bindingBrokerTestFactory.setExecutor(MoreExecutors.newDirectExecutorService()); @@ -53,9 +53,9 @@ public class LazySerializedContainerNodeTest { final ImmutableBiMap biMap = bindingTestContext.getCodec().getRpcMethodToSchema(OpendaylightTestRpcServiceService.class); - rpcName = ((RpcEffectiveStatementImpl) biMap.values().iterator().next()).getPath(); + rpcName = ((RpcDefinition) biMap.values().iterator().next()).getPath(); final LeafNode leafNode = ImmutableLeafNodeBuilder.create().withNodeIdentifier(NodeIdentifier - .create(QName.create("test"))).build(); + .create(QName.create("", "test"))).withValue("").build(); final NormalizedNode normalizedNode = LazySerializedContainerNode.create(rpcName, dataObject, codec); assertNotNull(normalizedNode); final LazySerializedContainerNode lazySerializedContainerNode = diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/LeafDefaultValueTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/LeafDefaultValueTest.java index 044d534949..e597b391bb 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/LeafDefaultValueTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/LeafDefaultValueTest.java @@ -20,36 +20,36 @@ import org.junit.Test; import org.opendaylight.mdsal.binding.api.ReadTransaction; import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BigIntContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BigIntContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BigUintContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BigUintContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BinaryContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BinaryContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BitsContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BitsContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BooleanContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.BooleanContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.DecimalContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.DecimalContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.EnumContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.EnumContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.IdentityrefContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.IdentityrefContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.NormalIntContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.NormalIntContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.NormalUintContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.NormalUintContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.SmallIntContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.SmallIntContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.SmallUintContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.SmallUintContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.StringContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.StringContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.TinyIntContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.TinyIntContainerBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.TinyUintContainer; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.rev700101.TinyUintContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BigIntContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BigIntContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BigUintContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BigUintContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BinaryContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BinaryContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BitsContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BitsContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BooleanContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.BooleanContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.DecimalContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.DecimalContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.EnumContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.EnumContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.IdentityrefContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.IdentityrefContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.NormalIntContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.NormalIntContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.NormalUintContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.NormalUintContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.SmallIntContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.SmallIntContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.SmallUintContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.SmallUintContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.StringContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.StringContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.TinyIntContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.TinyIntContainerBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.TinyUintContainer; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns._default.value.test.norev.TinyUintContainerBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class LeafDefaultValueTest extends AbstractDataBrokerTest { diff --git a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OsgiModuleInfoRegistry.java b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OsgiModuleInfoRegistry.java index e1d7e46486..1370f5e170 100644 --- a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OsgiModuleInfoRegistry.java +++ b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/OsgiModuleInfoRegistry.java @@ -80,7 +80,7 @@ final class OsgiModuleInfoRegistry implements ModuleInfoRegistry { @Override @SuppressWarnings("checkstyle:illegalCatch") - public void close() throws Exception { + public void close() { try { inner.close(); } finally { diff --git a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/SimpleBindingRuntimeContextService.java b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/SimpleBindingRuntimeContextService.java index 3ebdbcb06c..4c56edcca4 100644 --- a/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/SimpleBindingRuntimeContextService.java +++ b/binding/mdsal-binding-dom-codec-osgi/src/main/java/org/opendaylight/mdsal/binding/dom/codec/osgi/impl/SimpleBindingRuntimeContextService.java @@ -11,14 +11,13 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import static com.google.common.base.Verify.verifyNotNull; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.mdsal.binding.dom.codec.osgi.BindingRuntimeContextListener; import org.opendaylight.mdsal.binding.dom.codec.osgi.BindingRuntimeContextService; import org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy; import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider; @@ -45,8 +44,7 @@ final class SimpleBindingRuntimeContextService extends } @Override - public CheckedFuture getSource( - final SourceIdentifier sourceIdentifier) { + public ListenableFuture getSource(final SourceIdentifier sourceIdentifier) { return sourceProvider.getSource(sourceIdentifier); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/AbstractStreamWriterGenerator.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/AbstractStreamWriterGenerator.java index b54256c1a5..a54a83513b 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/AbstractStreamWriterGenerator.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/AbstractStreamWriterGenerator.java @@ -34,8 +34,8 @@ import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.DataObjectSerializerImplementation; import org.opendaylight.yangtools.yang.binding.DataObjectSerializerRegistry; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; @@ -177,10 +177,10 @@ abstract class AbstractStreamWriterGenerator extends AbstractGenerator implement } else { source = generateMapEntrySerializer(generatedType, casted); } - } else if (schema instanceof AugmentationSchema) { - source = generateSerializer(generatedType,(AugmentationSchema) schema); - } else if (schema instanceof ChoiceCaseNode) { - source = generateCaseSerializer(generatedType,(ChoiceCaseNode) schema); + } else if (schema instanceof AugmentationSchemaNode) { + source = generateSerializer(generatedType,(AugmentationSchemaNode) schema); + } else if (schema instanceof CaseSchemaNode) { + source = generateCaseSerializer(generatedType,(CaseSchemaNode) schema); } else if (schema instanceof NotificationDefinition) { source = generateNotificationSerializer(generatedType,(NotificationDefinition) schema); } else { @@ -253,7 +253,7 @@ abstract class AbstractStreamWriterGenerator extends AbstractGenerator implement * @param node Schema of case * @return Source for case node writer */ - protected abstract DataObjectSerializerSource generateCaseSerializer(GeneratedType type, ChoiceCaseNode node); + protected abstract DataObjectSerializerSource generateCaseSerializer(GeneratedType type, CaseSchemaNode node); /** * Generates serializer source for supplied list node, which will read supplied binding type and invoke proper @@ -293,7 +293,7 @@ abstract class AbstractStreamWriterGenerator extends AbstractGenerator implement * @param schema Schema of augmentation * @return Source for augmentation node writer */ - protected abstract DataObjectSerializerSource generateSerializer(GeneratedType type, AugmentationSchema schema); + protected abstract DataObjectSerializerSource generateSerializer(GeneratedType type, AugmentationSchemaNode schema); /** * Generates serializer source for notification node, which will read supplied binding type and invoke proper diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/DataNodeContainerSerializerSource.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/DataNodeContainerSerializerSource.java index 03141587e9..138813dcea 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/DataNodeContainerSerializerSource.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/DataNodeContainerSerializerSource.java @@ -31,7 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode; +import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.slf4j.Logger; @@ -110,8 +110,8 @@ abstract class DataNodeContainerSerializerSource extends DataObjectSerializerSou private static String getGetterName(final DataSchemaNode node) { final TypeDefinition type; - if (node instanceof TypedSchemaNode) { - type = ((TypedSchemaNode) node).getType(); + if (node instanceof TypedDataSchemaNode) { + type = ((TypedDataSchemaNode) node).getType(); } else { type = null; } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/StreamWriterGenerator.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/StreamWriterGenerator.java index 835f1c9648..36ab4f6b13 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/StreamWriterGenerator.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/gen/impl/StreamWriterGenerator.java @@ -14,8 +14,8 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.yangtools.yang.binding.BindingStreamEventWriter; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.DataObjectSerializerImplementation; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; @@ -75,7 +75,7 @@ public final class StreamWriterGenerator extends AbstractStreamWriterGenerator { } @Override - protected DataObjectSerializerSource generateCaseSerializer(final GeneratedType type, final ChoiceCaseNode node) { + protected DataObjectSerializerSource generateCaseSerializer(final GeneratedType type, final CaseSchemaNode node) { return new AugmentableDataNodeContainerEmitterSource(this, type, node) { @Override public CharSequence emitStartEvent() { @@ -97,7 +97,7 @@ public final class StreamWriterGenerator extends AbstractStreamWriterGenerator { @Override protected DataObjectSerializerSource generateSerializer(final GeneratedType type, - final AugmentationSchema schema) { + final AugmentationSchemaNode schema) { return new DataNodeContainerSerializerSource(this, type, schema) { @Override public CharSequence emitStartEvent() { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationNodeContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationNodeContext.java index 273a5e8f53..4ea2fb7155 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationNodeContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationNodeContext.java @@ -12,12 +12,12 @@ import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; final class AugmentationNodeContext> - extends DataObjectCodecContext { + extends DataObjectCodecContext { - AugmentationNodeContext(final DataContainerCodecPrototype prototype) { + AugmentationNodeContext(final DataContainerCodecPrototype prototype) { super(prototype); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java index a3b4333ab7..1f6be5360c 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/BindingCodecContext.java @@ -52,7 +52,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode; +import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; @@ -224,8 +224,8 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree final DataNodeContainer childSchema) { final Map getterToLeafSchema = new HashMap<>(); for (final DataSchemaNode leaf : childSchema.getChildNodes()) { - if (leaf instanceof TypedSchemaNode) { - getterToLeafSchema.put(getGetterName(leaf.getQName(), ((TypedSchemaNode) leaf).getType()), leaf); + if (leaf instanceof TypedDataSchemaNode) { + getterToLeafSchema.put(getGetterName(leaf.getQName(), ((TypedDataSchemaNode) leaf).getType()), leaf); } } return getLeafNodesUsingReflection(parentClass, getterToLeafSchema); @@ -272,9 +272,9 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree } private Codec getCodec(final Class valueType, final DataSchemaNode schema) { - Preconditions.checkArgument(schema instanceof TypedSchemaNode, "Unsupported leaf node type %s", schema); + Preconditions.checkArgument(schema instanceof TypedDataSchemaNode, "Unsupported leaf node type %s", schema); - return getCodec(valueType, ((TypedSchemaNode)schema).getType()); + return getCodec(valueType, ((TypedDataSchemaNode)schema).getType()); } Codec getCodec(final Class valueType, final TypeDefinition instantiatedType) { diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java index 9243b8b69e..3f36628a1a 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java @@ -14,10 +14,10 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; -final class CaseNodeCodecContext extends DataObjectCodecContext { - CaseNodeCodecContext(final DataContainerCodecPrototype prototype) { +final class CaseNodeCodecContext extends DataObjectCodecContext { + CaseNodeCodecContext(final DataContainerCodecPrototype prototype) { super(prototype); } @@ -49,4 +49,4 @@ final class CaseNodeCodecContext extends DataObjectCodecCo Preconditions.checkArgument(arg == null); return null; } -} \ No newline at end of file +} diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java index 7e7a821bc8..7c372eb86f 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ChoiceNodeCodecContext.java @@ -27,14 +27,14 @@ import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import org.opendaylight.yangtools.yang.data.impl.schema.SchemaUtils; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -final class ChoiceNodeCodecContext extends DataContainerCodecContext { +final class ChoiceNodeCodecContext extends DataContainerCodecContext { private static final Logger LOG = LoggerFactory.getLogger(ChoiceNodeCodecContext.class); private final ImmutableMap> byYangCaseChild; private final ImmutableMap, DataContainerCodecPrototype> byClass; @@ -51,7 +51,7 @@ final class ChoiceNodeCodecContext extends DataContainerCo for (final Class caze : factory().getRuntimeContext().getCases(getBindingClass())) { // We try to load case using exact match thus name // and original schema must equals - final DataContainerCodecPrototype cazeDef = loadCase(caze); + final DataContainerCodecPrototype cazeDef = loadCase(caze); // If we have case definition, this case is instantiated // at current location and thus is valid in context of parent choice if (cazeDef != null) { @@ -65,7 +65,7 @@ final class ChoiceNodeCodecContext extends DataContainerCo // Updates collection of YANG instance identifier to case for (final DataSchemaNode cazeChild : cazeDef.getSchema().getChildNodes()) { if (cazeChild.isAugmenting()) { - final AugmentationSchema augment = SchemaUtils.findCorrespondingAugment(cazeDef.getSchema(), + final AugmentationSchemaNode augment = SchemaUtils.findCorrespondingAugment(cazeDef.getSchema(), cazeChild); if (augment != null) { byYangCaseChildBuilder.put(SchemaUtils.getNodeIdentifierForAugmentation(augment), cazeDef); @@ -128,8 +128,8 @@ final class ChoiceNodeCodecContext extends DataContainerCo return byCaseChildClass.keySet(); } - protected DataContainerCodecPrototype loadCase(final Class childClass) { - final Optional childSchema = factory().getRuntimeContext().getCaseSchemaDefinition(getSchema(), + protected DataContainerCodecPrototype loadCase(final Class childClass) { + final Optional childSchema = factory().getRuntimeContext().getCaseSchemaDefinition(getSchema(), childClass); if (childSchema.isPresent()) { return DataContainerCodecPrototype.from(childClass, childSchema.get(), factory()); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java index a60efe7a08..086b8f56ec 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecPrototype.java @@ -18,8 +18,8 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -68,7 +68,7 @@ final class DataContainerCodecPrototype implements NodeContextSupplier { @SuppressWarnings({ "rawtypes", "unchecked" }) static DataContainerCodecPrototype from(final Class augClass, final AugmentationIdentifier arg, - final AugmentationSchema schema, final CodecContextFactory factory) { + final AugmentationSchemaNode schema, final CodecContextFactory factory) { return new DataContainerCodecPrototype(augClass, arg, schema, factory); } @@ -132,9 +132,9 @@ final class DataContainerCodecPrototype implements NodeContextSupplier { } } else if (schema instanceof ChoiceSchemaNode) { return new ChoiceNodeCodecContext(this); - } else if (schema instanceof AugmentationSchema) { + } else if (schema instanceof AugmentationSchemaNode) { return new AugmentationNodeContext(this); - } else if (schema instanceof ChoiceCaseNode) { + } else if (schema instanceof CaseSchemaNode) { return new CaseNodeCodecContext(this); } throw new IllegalArgumentException("Unsupported type " + bindingClass + " " + schema); diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java index fd063d0512..bd51c11e80 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataObjectCodecContext.java @@ -47,7 +47,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils; @@ -312,7 +312,7 @@ abstract class DataObjectCodecContext augSchema = factory().getRuntimeContext() + final Entry augSchema = factory().getRuntimeContext() .getResolvedAugmentationSchema(getSchema(), augClass); return DataContainerCodecPrototype.from(augClass, augSchema.getKey(), augSchema.getValue(), factory()); } @@ -321,7 +321,7 @@ abstract class DataObjectCodecContext childContext = byMethod.get(method).get(); @SuppressWarnings("unchecked") - final Optional> domChild = domData.getChild(childContext.getDomPathArgument()); + final java.util.Optional> domChild = domData.getChild(childContext.getDomPathArgument()); if (domChild.isPresent()) { return childContext.deserializeObject(domChild.get()); } else if (childContext instanceof LeafNodeCodecContext) { @@ -359,7 +359,7 @@ abstract class DataObjectCodecContext value : byStreamAugmented.values()) { - final Optional> augData = data.getChild(value.getYangArg()); + final java.util.Optional> augData = data.getChild(value.getYangArg()); if (augData.isPresent()) { map.put(value.getBindingClass(), value.get().deserializeObject(augData.get())); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java index bcbce38850..3fc732cf63 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LazyDataObject.java @@ -190,7 +190,7 @@ class LazyDataObject implements InvocationHandler, Augment @SuppressWarnings({"unchecked","rawtypes"}) final Optional> augCtx = context.possibleStreamChild((Class) cls); if (augCtx.isPresent()) { - final Optional> augData = data.getChild(augCtx.get().getDomPathArgument()); + final java.util.Optional> augData = data.getChild(augCtx.get().getDomPathArgument()); if (augData.isPresent()) { return augCtx.get().deserialize(augData.get()); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java index c075713c8a..8e1fff3904 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/LeafNodeCodecContext.java @@ -59,23 +59,23 @@ final class LeafNodeCodecContext extends NodeCodecContext< private static Object createDefaultObject(final DataSchemaNode schema, final Codec codec, final SchemaContext schemaContext) { if (schema instanceof LeafSchemaNode) { - Object defaultValue = ((LeafSchemaNode) schema).getDefault(); + java.util.Optional defaultValue = ((LeafSchemaNode) schema).getType().getDefaultValue(); TypeDefinition type = ((LeafSchemaNode) schema).getType(); - if (defaultValue != null) { + if (defaultValue.isPresent()) { if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, (String) defaultValue, schemaContext); + return qnameDomValueFromString(codec, schema, (String) defaultValue.get(), schemaContext); } - return domValueFromString(codec, type, defaultValue); + return domValueFromString(codec, type, defaultValue.get()); } - while (type.getBaseType() != null && type.getDefaultValue() == null) { + while (type.getBaseType() != null && !type.getDefaultValue().isPresent()) { type = type.getBaseType(); } defaultValue = type.getDefaultValue(); - if (defaultValue != null) { + if (defaultValue.isPresent()) { if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, (String) defaultValue, schemaContext); + return qnameDomValueFromString(codec, schema, (String) defaultValue.get(), schemaContext); } return domValueFromString(codec, type, defaultValue); } @@ -90,9 +90,7 @@ final class LeafNodeCodecContext extends NodeCodecContext< if (prefixEndIndex != -1) { String defaultValuePrefix = defaultValue.substring(0, prefixEndIndex); - Module module = schemaContext.findModuleByNamespaceAndRevision(schema.getQName().getNamespace(), - schema.getQName().getRevision()); - + Module module = schemaContext.findModule(schema.getQName().getModule()).get(); if (module.getPrefix().equals(defaultValuePrefix)) { qname = QName.create(module.getQNameModule(), defaultValue.substring(prefixEndIndex + 1)); return codec.deserialize(qname); @@ -101,8 +99,8 @@ final class LeafNodeCodecContext extends NodeCodecContext< Set imports = module.getImports(); for (ModuleImport moduleImport : imports) { if (moduleImport.getPrefix().equals(defaultValuePrefix)) { - Module importedModule = schemaContext.findModuleByName(moduleImport.getModuleName(), - moduleImport.getRevision()); + Module importedModule = schemaContext.findModule(moduleImport.getModuleName(), + moduleImport.getRevision()).get(); qname = QName.create(importedModule.getQNameModule(), defaultValue.substring(prefixEndIndex + 1)); return codec.deserialize(qname); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/MissingSchemaException.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/MissingSchemaException.java index d66fd335da..3634d7ff49 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/MissingSchemaException.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/MissingSchemaException.java @@ -34,7 +34,7 @@ public class MissingSchemaException extends IllegalArgumentException { } static void checkModulePresent(final SchemaContext schemaContext, final QName name) { - if (schemaContext.findModuleByNamespaceAndRevision(name.getNamespace(), name.getRevision()) == null) { + if (!schemaContext.findModule(name.getModule()).isPresent()) { throw MissingSchemaException.create("Module %s is not present in current schema context.", name.getModule()); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java index fd971233f5..ff4873734f 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/UnionTypeCodec.java @@ -73,8 +73,7 @@ final class UnionTypeCodec extends ReflectionBasedCodec { final BindingCodecContext bindingCodecContext, final Set values, final TypeDefinition subtype) throws NoSuchMethodException { final SchemaContext schemaContext = bindingCodecContext.getRuntimeContext().getSchemaContext(); - final Module module = schemaContext.findModuleByNamespaceAndRevision(subtype.getQName().getNamespace(), - subtype.getQName().getRevision()); + final Module module = schemaContext.findModule(subtype.getQName().getModule()).get(); final RevisionAwareXPath xpath = ((LeafrefTypeDefinition) subtype).getPathStatement(); // find schema node in schema context by xpath of leafref final SchemaNode dataNode; diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java index 2ad7a8ac4f..17e23debff 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/ValueTypeCodec.java @@ -13,6 +13,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import org.opendaylight.yangtools.concepts.Codec; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; +import org.opendaylight.yangtools.yang.common.Empty; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; @@ -55,8 +56,8 @@ abstract class ValueTypeCodec implements Codec { @Override public Object serialize(final Object input) { - // Empty type has null value in NormalizedNode and Composite Node representation - return null; + // Empty type has Empty value in NormalizedNode and Composite Node representation + return Empty.getInstance(); } @Override diff --git a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/spi/TypeProviderFactory.java b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/spi/TypeProviderFactory.java index 196b9df77b..67a23205e9 100644 --- a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/spi/TypeProviderFactory.java +++ b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/generator/spi/TypeProviderFactory.java @@ -7,10 +7,10 @@ */ package org.opendaylight.mdsal.binding.generator.spi; -import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; +import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; //FIXME not implemented anywhere public interface TypeProviderFactory { - TypeProvider providerFor(ModuleIdentifier module); + TypeProvider providerFor(SourceIdentifier module); } diff --git a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/Restrictions.java b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/Restrictions.java index 7673934aff..00de43d385 100644 --- a/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/Restrictions.java +++ b/binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/Restrictions.java @@ -8,15 +8,16 @@ package org.opendaylight.mdsal.binding.model.api; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; public interface Restrictions { - List getLengthConstraints(); + Optional getLengthConstraint(); List getPatternConstraints(); - List getRangeConstraints(); + Optional> getRangeConstraint(); boolean isEmpty(); } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImpl.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImpl.java index f6bb3c5f63..71d6d48975 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImpl.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImpl.java @@ -29,7 +29,6 @@ import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findN import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.base.Strings; @@ -42,6 +41,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.regex.Pattern; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; @@ -76,8 +76,8 @@ import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.binding.annotations.RoutingContext; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -121,7 +121,7 @@ public class BindingGeneratorImpl implements BindingGenerator { /** * Comparator based on augment target path. */ - private static final Comparator AUGMENT_COMP = (o1, o2) -> { + private static final Comparator AUGMENT_COMP = (o1, o2) -> { final Iterator thisIt = o1.getTargetPath().getPathFromRoot().iterator(); final Iterator otherIt = o2.getTargetPath().getPathFromRoot().iterator(); @@ -330,11 +330,11 @@ public class BindingGeneratorImpl implements BindingGenerator { } final String packageName = packageNameForGeneratedType(basePackageName, node.getPath()); final GeneratedTypeBuilder genType = addDefaultInterfaceDefinition(packageName, node, childOf, module); - genType.addComment(node.getDescription()); + genType.addComment(node.getDescription().orElse(null)); annotateDeprecatedIfNecessary(node.getStatus(), genType); genType.setDescription(createDescription(node, genType.getFullyQualifiedName())); genType.setModuleName(module.getName()); - genType.setReference(node.getReference()); + genType.setReference(node.getReference().orElse(null)); genType.setSchemaPath(node.getPath().getPathFromRoot()); if (node instanceof DataNodeContainer) { genCtx.get(module).addChildNodeType(node, genType); @@ -348,7 +348,8 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilder parent, final GeneratedTypeBuilder childOf, final ContainerSchemaNode node) { final GeneratedTypeBuilder genType = processDataSchemaNode(module, basePackageName, childOf, node); if (genType != null) { - constructGetter(parent, node.getQName().getLocalName(), node.getDescription(), genType, node.getStatus()); + constructGetter(parent, node.getQName().getLocalName(), node.getDescription().orElse(null), genType, + node.getStatus()); resolveDataSchemaNodes(module, basePackageName, genType, genType, node.getChildNodes()); } } @@ -357,7 +358,7 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilder childOf, final ListSchemaNode node) { final GeneratedTypeBuilder genType = processDataSchemaNode(module, basePackageName, childOf, node); if (genType != null) { - constructGetter(parent, node.getQName().getLocalName(), node.getDescription(), + constructGetter(parent, node.getQName().getLocalName(), node.getDescription().orElse(null), Types.listTypeFor(genType), node.getStatus()); final List listKeys = listKeys(node); @@ -390,7 +391,7 @@ public class BindingGeneratorImpl implements BindingGenerator { private void processUsesAugments(final DataNodeContainer node, final Module module) { final String basePackageName = BindingMapping.getRootPackageName(module.getQNameModule()); for (final UsesNode usesNode : node.getUses()) { - for (final AugmentationSchema augment : usesNode.getAugmentations()) { + for (final AugmentationSchemaNode augment : usesNode.getAugmentations()) { usesAugmentationToGenTypes(basePackageName, augment, module, usesNode, node); processUsesAugments(augment, module); } @@ -418,8 +419,7 @@ public class BindingGeneratorImpl implements BindingGenerator { checkState(module.getAugmentations() != null, "Augmentations Set cannot be NULL."); final String basePackageName = BindingMapping.getRootPackageName(module.getQNameModule()); - final List augmentations = resolveAugmentations(module); - for (final AugmentationSchema augment : augmentations) { + for (final AugmentationSchemaNode augment : resolveAugmentations(module)) { augmentationToGenTypes(basePackageName, augment, module); } } @@ -438,12 +438,12 @@ public class BindingGeneratorImpl implements BindingGenerator { * @throws IllegalStateException * if set of module augmentations is null */ - private static List resolveAugmentations(final Module module) { + private static List resolveAugmentations(final Module module) { checkArgument(module != null, "Module reference cannot be NULL."); checkState(module.getAugmentations() != null, "Augmentations Set cannot be NULL."); - final Set augmentations = module.getAugmentations(); - final List sortedAugmentations = new ArrayList<>(augmentations); + final Set augmentations = module.getAugmentations(); + final List sortedAugmentations = new ArrayList<>(augmentations); sortedAugmentations.sort(AUGMENT_COMP); return sortedAugmentations; @@ -465,9 +465,9 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilder moduleDataTypeBuilder = moduleTypeBuilder(module, "Data"); addImplementedInterfaceFromUses(module, moduleDataTypeBuilder); moduleDataTypeBuilder.addImplementsType(DATA_ROOT); - moduleDataTypeBuilder.addComment(module.getDescription()); + moduleDataTypeBuilder.addComment(module.getDescription().orElse(null)); moduleDataTypeBuilder.setDescription(createDescription(module)); - moduleDataTypeBuilder.setReference(module.getReference()); + moduleDataTypeBuilder.setReference(module.getReference().orElse(null)); return moduleDataTypeBuilder; } @@ -505,7 +505,7 @@ public class BindingGeneratorImpl implements BindingGenerator { if (rpc != null) { final String rpcName = BindingMapping.getClassName(rpc.getQName()); final String rpcMethodName = BindingMapping.getPropertyName(rpcName); - final String rpcComment = encodeAngleBrackets(rpc.getDescription()); + final String rpcComment = encodeAngleBrackets(rpc.getDescription().orElse(null)); final MethodSignatureBuilder method = interfaceBuilder.addMethod(rpcMethodName); final ContainerSchemaNode input = rpc.getInput(); final ContainerSchemaNode output = rpc.getOutput(); @@ -601,7 +601,7 @@ public class BindingGeneratorImpl implements BindingGenerator { listenerInterface.addMethod("on" + notificationInterface.getName()) .setAccessModifier(AccessModifier.PUBLIC).addParameter(notificationInterface, "notification") - .setComment(encodeAngleBrackets(notification.getDescription())).setReturnType(Types.VOID); + .setComment(encodeAngleBrackets(notification.getDescription().orElse(null))).setReturnType(Types.VOID); } } listenerInterface.setDescription(createDescription(notifications, module.getName())); @@ -659,12 +659,13 @@ public class BindingGeneratorImpl implements BindingGenerator { final String packageName = packageNameForGeneratedType(basePackageName, identity.getPath()); final String genTypeName = BindingMapping.getClassName(identity.getQName()); final GeneratedTOBuilderImpl newType = new GeneratedTOBuilderImpl(packageName, genTypeName); - final IdentitySchemaNode baseIdentity = identity.getBaseIdentity(); - if (baseIdentity == null) { + final Set baseIdentities = identity.getBaseIdentities(); + if (baseIdentities.isEmpty()) { final GeneratedTOBuilderImpl gto = new GeneratedTOBuilderImpl(BaseIdentity.class.getPackage().getName(), BaseIdentity.class.getSimpleName()); newType.setExtendsType(gto.toInstance()); } else { + final IdentitySchemaNode baseIdentity = baseIdentities.iterator().next(); final Module baseIdentityParentModule = SchemaContextUtil.findParentModule(context, baseIdentity); final String returnTypePkgName = BindingMapping.getRootPackageName(baseIdentityParentModule .getQNameModule()); @@ -674,9 +675,9 @@ public class BindingGeneratorImpl implements BindingGenerator { newType.setExtendsType(gto); } newType.setAbstract(true); - newType.addComment(identity.getDescription()); + newType.addComment(identity.getDescription().orElse(null)); newType.setDescription(createDescription(identity, newType.getFullyQualifiedName())); - newType.setReference(identity.getReference()); + newType.setReference(identity.getReference().orElse(null)); newType.setModuleName(module.getName()); newType.setSchemaPath(identity.getPath().getPathFromRoot()); @@ -725,7 +726,8 @@ public class BindingGeneratorImpl implements BindingGenerator { * @param module * current module */ - private void groupingToGenType(final String basePackageName, final GroupingDefinition grouping, final Module module) { + private void groupingToGenType(final String basePackageName, final GroupingDefinition grouping, + final Module module) { final String packageName = packageNameForGeneratedType(basePackageName, grouping.getPath()); final GeneratedTypeBuilder genType = addDefaultInterfaceDefinition(packageName, grouping, module); annotateDeprecatedIfNecessary(grouping.getStatus(), genType); @@ -759,7 +761,7 @@ public class BindingGeneratorImpl implements BindingGenerator { if (enumTypeDef != null && typeBuilder != null && enumTypeDef.getQName().getLocalName() != null) { final String enumerationName = BindingMapping.getClassName(enumName); final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumerationName); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); ModuleContext ctx = genCtx.get(module); @@ -790,7 +792,7 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilderImpl moduleBuilder = new GeneratedTypeBuilderImpl(packageName, moduleName); moduleBuilder.setDescription(createDescription(module)); - moduleBuilder.setReference(module.getReference()); + moduleBuilder.setReference(module.getReference().orElse(null)); moduleBuilder.setModuleName(moduleName); return moduleBuilder; @@ -819,7 +821,7 @@ public class BindingGeneratorImpl implements BindingGenerator { * @throws IllegalStateException * if augment target path is null */ - private void augmentationToGenTypes(final String augmentPackageName, final AugmentationSchema augSchema, + private void augmentationToGenTypes(final String augmentPackageName, final AugmentationSchemaNode augSchema, final Module module) { checkArgument(augmentPackageName != null, "Package Name cannot be NULL."); checkArgument(augSchema != null, "Augmentation Schema cannot be NULL."); @@ -833,7 +835,7 @@ public class BindingGeneratorImpl implements BindingGenerator { targetSchemaNode = findDataSchemaNode(schemaContext, targetPath); if (targetSchemaNode instanceof DataSchemaNode && ((DataSchemaNode) targetSchemaNode).isAddedByUses()) { if (targetSchemaNode instanceof DerivableSchemaNode) { - targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orNull(); + targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orElse(null); } if (targetSchemaNode == null) { throw new IllegalStateException("Failed to find target node from grouping in augmentation " + augSchema @@ -863,7 +865,7 @@ public class BindingGeneratorImpl implements BindingGenerator { } } - private void usesAugmentationToGenTypes(final String augmentPackageName, final AugmentationSchema augSchema, + private void usesAugmentationToGenTypes(final String augmentPackageName, final AugmentationSchemaNode augSchema, final Module module, final UsesNode usesNode, final DataNodeContainer usesNodeParent) { checkArgument(augmentPackageName != null, "Package Name cannot be NULL."); checkArgument(augSchema != null, "Augmentation Schema cannot be NULL."); @@ -888,7 +890,8 @@ public class BindingGeneratorImpl implements BindingGenerator { if (!(targetSchemaNode instanceof ChoiceSchemaNode)) { String packageName = augmentPackageName; if (usesNodeParent instanceof SchemaNode) { - packageName = packageNameForAugmentedGeneratedType(augmentPackageName, ((SchemaNode) usesNodeParent).getPath()); + packageName = packageNameForAugmentedGeneratedType(augmentPackageName, + ((SchemaNode) usesNodeParent).getPath()); } addRawAugmentGenTypeDefinition(module, packageName, augmentPackageName, targetTypeBuilder.toInstance(), augSchema); @@ -920,7 +923,7 @@ public class BindingGeneratorImpl implements BindingGenerator { final QName resultNode = QName.create(result.getQName().getModule(), node.getLocalName()); result = ((DataNodeContainer) result).getDataChildByName(resultNode); } else if (result instanceof ChoiceSchemaNode) { - result = ((ChoiceSchemaNode) result).getCaseNodeByName(node.getLocalName()); + result = findNamedCase((ChoiceSchemaNode) result, node.getLocalName()); } } if (result == null) { @@ -929,8 +932,7 @@ public class BindingGeneratorImpl implements BindingGenerator { if (result instanceof DerivableSchemaNode) { DerivableSchemaNode castedResult = (DerivableSchemaNode) result; - Optional originalNode = castedResult - .getOriginal(); + Optional originalNode = castedResult.getOriginal(); if (castedResult.isAddedByUses() && originalNode.isPresent()) { result = originalNode.get(); } @@ -975,7 +977,7 @@ public class BindingGeneratorImpl implements BindingGenerator { * @return generated type builder for augment */ private GeneratedTypeBuilder addRawAugmentGenTypeDefinition(final Module module, final String augmentPackageName, - final String basePackageName, final Type targetTypeRef, final AugmentationSchema augSchema) { + final String basePackageName, final Type targetTypeRef, final AugmentationSchemaNode augSchema) { Map augmentBuilders = genTypeBuilders.get(augmentPackageName); if (augmentBuilders == null) { augmentBuilders = new HashMap<>(); @@ -1188,7 +1190,7 @@ public class BindingGeneratorImpl implements BindingGenerator { final String packageName = packageNameForGeneratedType(basePackageName, choiceNode.getPath()); final GeneratedTypeBuilder choiceTypeBuilder = addRawInterfaceDefinition(packageName, choiceNode); constructGetter(parent, choiceNode.getQName().getLocalName(), - choiceNode.getDescription(), choiceTypeBuilder, choiceNode.getStatus()); + choiceNode.getDescription().orElse(null), choiceTypeBuilder, choiceNode.getStatus()); choiceTypeBuilder.addImplementsType(typeForClass(DataContainer.class)); annotateDeprecatedIfNecessary(choiceNode.getStatus(), choiceTypeBuilder); genCtx.get(module).addChildNodeType(choiceNode, choiceTypeBuilder); @@ -1228,15 +1230,11 @@ public class BindingGeneratorImpl implements BindingGenerator { checkArgument(refChoiceType != null, "Referenced Choice Type cannot be NULL."); checkArgument(choiceNode != null, "ChoiceNode cannot be NULL."); - final Set caseNodes = choiceNode.getCases(); - if (caseNodes == null) { - return; - } - - for (final ChoiceCaseNode caseNode : caseNodes) { + for (final CaseSchemaNode caseNode : choiceNode.getCases().values()) { if (caseNode != null && !caseNode.isAddedByUses() && !caseNode.isAugmenting()) { final String packageName = packageNameForGeneratedType(basePackageName, caseNode.getPath()); - final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(packageName, caseNode, module); + final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(packageName, caseNode, + module); caseTypeBuilder.addImplementsType(refChoiceType); annotateDeprecatedIfNecessary(caseNode.getStatus(), caseTypeBuilder); genCtx.get(module).addCaseType(caseNode.getPath(), caseTypeBuilder); @@ -1248,14 +1246,15 @@ public class BindingGeneratorImpl implements BindingGenerator { if (!Iterables.isEmpty(choiceNodeParentPath.getPathFromRoot())) { SchemaNode parent = findDataSchemaNode(schemaContext, choiceNodeParentPath); - if (parent instanceof AugmentationSchema) { - final AugmentationSchema augSchema = (AugmentationSchema) parent; + if (parent instanceof AugmentationSchemaNode) { + final AugmentationSchemaNode augSchema = (AugmentationSchemaNode) parent; final SchemaPath targetPath = augSchema.getTargetPath(); SchemaNode targetSchemaNode = findDataSchemaNode(schemaContext, targetPath); if (targetSchemaNode instanceof DataSchemaNode && ((DataSchemaNode) targetSchemaNode).isAddedByUses()) { if (targetSchemaNode instanceof DerivableSchemaNode) { - targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orNull(); + targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal() + .orElse(null); } if (targetSchemaNode == null) { throw new IllegalStateException( @@ -1328,7 +1327,7 @@ public class BindingGeneratorImpl implements BindingGenerator { GeneratedTypeBuilder childOfType = null; if (parent instanceof Module) { childOfType = genCtx.get(parent).getModuleNode(); - } else if (parent instanceof ChoiceCaseNode) { + } else if (parent instanceof CaseSchemaNode) { childOfType = findCaseByPath(parent.getPath()); } else if (parent instanceof DataSchemaNode || parent instanceof NotificationDefinition) { childOfType = findChildNodeByPath(parent.getPath()); @@ -1340,21 +1339,21 @@ public class BindingGeneratorImpl implements BindingGenerator { throw new IllegalArgumentException("Failed to find parent type of choice " + targetNode); } - ChoiceCaseNode node = null; + CaseSchemaNode node = null; final String caseLocalName = caseNode.getQName().getLocalName(); - if (caseNode instanceof ChoiceCaseNode) { - node = (ChoiceCaseNode) caseNode; - } else if (targetNode.getCaseNodeByName(caseLocalName) == null) { + if (caseNode instanceof CaseSchemaNode) { + node = (CaseSchemaNode) caseNode; + } else if (findNamedCase(targetNode, caseLocalName) == null) { final String targetNodeLocalName = targetNode.getQName().getLocalName(); for (DataSchemaNode dataSchemaNode : usesNodeParent.getChildNodes()) { if (dataSchemaNode instanceof ChoiceSchemaNode && targetNodeLocalName.equals(dataSchemaNode.getQName ().getLocalName())) { - node = ((ChoiceSchemaNode) dataSchemaNode).getCaseNodeByName(caseLocalName); + node = findNamedCase((ChoiceSchemaNode) dataSchemaNode, caseLocalName); break; } } } else { - node = targetNode.getCaseNodeByName(caseLocalName); + node = findNamedCase(targetNode, caseLocalName); } final Iterable childNodes = node.getChildNodes(); if (childNodes != null) { @@ -1366,6 +1365,11 @@ public class BindingGeneratorImpl implements BindingGenerator { } } + private static CaseSchemaNode findNamedCase(final ChoiceSchemaNode choice, final String caseName) { + final List cases = choice.findCaseNodes(caseName); + return cases.isEmpty() ? null : cases.get(0); + } + private static boolean isInnerType(final LeafSchemaNode leaf, final TypeDefinition type) { // New parser with encapsulated type if (leaf.getPath().equals(type.getPath())) { @@ -1455,12 +1459,9 @@ public class BindingGeneratorImpl implements BindingGenerator { ((TypeProviderImpl) typeProvider).putReferencedType(leaf.getPath(), returnType); } - String leafDesc = leaf.getDescription(); - if (leafDesc == null) { - leafDesc = ""; - } - - final MethodSignatureBuilder getter = constructGetter(typeBuilder, leafName, leafDesc, returnType, leaf.getStatus()); + final String leafDesc = leaf.getDescription().orElse(""); + final MethodSignatureBuilder getter = constructGetter(typeBuilder, leafName, leafDesc, returnType, + leaf.getStatus()); processContextRefExtension(leaf, getter, parentModule); return returnType; } @@ -1525,7 +1526,7 @@ public class BindingGeneratorImpl implements BindingGenerator { private Module findModuleFromImports(final Set imports, final String prefix) { for (final ModuleImport imp : imports) { if (imp.getPrefix().equals(prefix)) { - return schemaContext.findModuleByName(imp.getModuleName(), imp.getRevision()); + return schemaContext.findModule(imp.getModuleName(), imp.getRevision()).orElse(null); } } return null; @@ -1540,16 +1541,14 @@ public class BindingGeneratorImpl implements BindingGenerator { // GeneratedType for this type definition should be already // created final QName qname = typeDef.getQName(); - final Module unionModule = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), - qname.getRevision()); + final Module unionModule = schemaContext.findModule(qname.getModule()).orElse(null); final ModuleContext mc = genCtx.get(unionModule); returnType = mc.getTypedefs().get(typeDef.getPath()); } else if (typeDef instanceof EnumTypeDefinition && typeDef.getBaseType() == null) { // Annonymous enumeration (already generated, since it is inherited via uses). LeafSchemaNode originalLeaf = (LeafSchemaNode) SchemaNodeUtils.getRootOriginalIfPossible(leaf); QName qname = originalLeaf.getQName(); - final Module enumModule = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), - qname.getRevision()); + final Module enumModule = schemaContext.findModule(qname.getModule()).orElse(null); returnType = genCtx.get(enumModule).getInnerType(originalLeaf.getType().getPath()); } else { returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf); @@ -1586,7 +1585,7 @@ public class BindingGeneratorImpl implements BindingGenerator { return false; } final String leafName = leaf.getQName().getLocalName(); - final String leafDesc = encodeAngleBrackets(leaf.getDescription()); + final String leafDesc = encodeAngleBrackets(leaf.getDescription().orElse(null)); final GeneratedPropertyBuilder propBuilder = toBuilder.addProperty(BindingMapping.getPropertyName(leafName)); propBuilder.setReadOnly(isReadOnly); propBuilder.setReturnType(returnType); @@ -1615,7 +1614,8 @@ public class BindingGeneratorImpl implements BindingGenerator { *
      • false - other cases
      • *
      */ - private boolean resolveLeafListSchemaNode(final GeneratedTypeBuilder typeBuilder, final LeafListSchemaNode node, final Module module) { + private boolean resolveLeafListSchemaNode(final GeneratedTypeBuilder typeBuilder, final LeafListSchemaNode node, + final Module module) { if (node == null || typeBuilder == null || node.isAddedByUses()) { return false; } @@ -1652,7 +1652,8 @@ public class BindingGeneratorImpl implements BindingGenerator { } final ParameterizedType listType = Types.listTypeFor(returnType); - constructGetter(typeBuilder, nodeName.getLocalName(), node.getDescription(), listType, node.getStatus()); + constructGetter(typeBuilder, nodeName.getLocalName(), node.getDescription().orElse(null), listType, + node.getStatus()); return true; } @@ -1660,16 +1661,16 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilder typeBuilder, final Module parentModule) { final GeneratedTOBuilderImpl returnType = new GeneratedTOBuilderImpl(genTOBuilder.getPackageName(), genTOBuilder.getName()); - final String typedefDescription = encodeAngleBrackets(typeDef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typeDef.getDescription().orElse(null)); returnType.setDescription(typedefDescription); - returnType.setReference(typeDef.getReference()); + returnType.setReference(typeDef.getReference().orElse(null)); returnType.setSchemaPath(typeDef.getPath().getPathFromRoot()); returnType.setModuleName(parentModule.getName()); genTOBuilder.setTypedef(true); genTOBuilder.setIsUnion(true); - TypeProviderImpl.addUnitsToGenTO(genTOBuilder, typeDef.getUnits()); + TypeProviderImpl.addUnitsToGenTO(genTOBuilder, typeDef.getUnits().orElse(null)); @@ -1813,9 +1814,9 @@ public class BindingGeneratorImpl implements BindingGenerator { final GeneratedTypeBuilderImpl newType = new GeneratedTypeBuilderImpl(packageName, genTypeName); final Module module = findParentModule(schemaContext, schemaNode); qnameConstant(newType, BindingMapping.QNAME_STATIC_FIELD_NAME, schemaNode.getQName()); - newType.addComment(schemaNode.getDescription()); + newType.addComment(schemaNode.getDescription().orElse(null)); newType.setDescription(createDescription(schemaNode, newType.getFullyQualifiedName())); - newType.setReference(schemaNode.getReference()); + newType.setReference(schemaNode.getReference().orElse(null)); newType.setSchemaPath(schemaNode.getPath().getPathFromRoot()); newType.setModuleName(module.getName()); @@ -2120,7 +2121,7 @@ public class BindingGeneratorImpl implements BindingGenerator { private String createDescription(final SchemaNode schemaNode, final String fullyQualifiedName) { final StringBuilder sb = new StringBuilder(); - final String nodeDescription = encodeAngleBrackets(schemaNode.getDescription()); + final String nodeDescription = encodeAngleBrackets(schemaNode.getDescription().orElse(null)); final String formattedDescription = YangTextTemplate.formatToParagraph(nodeDescription, 0); if (!Strings.isNullOrEmpty(formattedDescription)) { @@ -2188,7 +2189,7 @@ public class BindingGeneratorImpl implements BindingGenerator { private String createDescription(final Module module) { final StringBuilder sb = new StringBuilder(); - final String moduleDescription = encodeAngleBrackets(module.getDescription()); + final String moduleDescription = encodeAngleBrackets(module.getDescription().orElse(null)); final String formattedDescription = YangTextTemplate.formatToParagraph(moduleDescription, 0); if (!Strings.isNullOrEmpty(formattedDescription)) { diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingSchemaContextUtils.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingSchemaContextUtils.java index 68c2dd18d6..02c16f7c04 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingSchemaContextUtils.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingSchemaContextUtils.java @@ -22,9 +22,10 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -99,7 +100,7 @@ public final class BindingSchemaContextUtils { for (DataSchemaNode child : ctx.getChildNodes()) { if (child instanceof ChoiceSchemaNode) { - DataNodeContainer potential = findInCases(((ChoiceSchemaNode) child), targetQName); + DataNodeContainer potential = findInCases((ChoiceSchemaNode) child, targetQName); if (potential != null) { return Optional.of(potential); } @@ -116,7 +117,7 @@ public final class BindingSchemaContextUtils { } private static DataNodeContainer findInCases(final ChoiceSchemaNode choiceNode, final QName targetQName) { - for (ChoiceCaseNode caze : choiceNode.getCases()) { + for (CaseSchemaNode caze : choiceNode.getCases().values()) { Optional potential = findDataNodeContainer(caze, targetQName); if (potential.isPresent()) { return potential.get(); @@ -137,7 +138,7 @@ public final class BindingSchemaContextUtils { for(RpcDefinition rpc : ctx.getOperations()) { String rpcNamespace = rpc.getQName().getNamespace().toString(); - String rpcRevision = rpc.getQName().getFormattedRevision(); + String rpcRevision = rpc.getQName().getRevision().map(Revision::toString).orElse(null); if(moduleInfo.getNamespace().equals(rpcNamespace) && moduleInfo.getRevision().equals(rpcRevision)) { Optional potential = findInputOutput(rpc,targetType.getSimpleName()); if(potential.isPresent()) { @@ -160,8 +161,9 @@ public final class BindingSchemaContextUtils { return Optional.absent(); } - public static Set collectAllAugmentationDefinitions(final SchemaContext currentSchema, final AugmentationTarget ctxNode) { - HashSet augmentations = new HashSet<>(); + public static Set collectAllAugmentationDefinitions(final SchemaContext currentSchema, + final AugmentationTarget ctxNode) { + HashSet augmentations = new HashSet<>(); augmentations.addAll(ctxNode.getAvailableAugmentations()); if(ctxNode instanceof DataSchemaNode && ((DataSchemaNode) ctxNode).isAddedByUses()) { @@ -172,11 +174,13 @@ public final class BindingSchemaContextUtils { return augmentations; } - public static Optional findInstantiatedChoice(final DataNodeContainer parent, final Class choiceClass) { + public static Optional findInstantiatedChoice(final DataNodeContainer parent, + final Class choiceClass) { return findInstantiatedChoice(parent, BindingReflections.findQName(choiceClass)); } - public static Optional findInstantiatedChoice(final DataNodeContainer ctxNode, final QName choiceName) { + public static Optional findInstantiatedChoice(final DataNodeContainer ctxNode, + final QName choiceName) { DataSchemaNode potential = ctxNode.getDataChildByName(choiceName); if (potential instanceof ChoiceSchemaNode) { return Optional.of((ChoiceSchemaNode) potential); @@ -185,8 +189,9 @@ public final class BindingSchemaContextUtils { return Optional.absent(); } - public static Optional findInstantiatedCase(final ChoiceSchemaNode instantiatedChoice, final ChoiceCaseNode originalDefinition) { - ChoiceCaseNode potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName()); + public static Optional findInstantiatedCase(final ChoiceSchemaNode instantiatedChoice, + final CaseSchemaNode originalDefinition) { + CaseSchemaNode potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName()); if(originalDefinition.equals(potential)) { return Optional.of(potential); } @@ -196,6 +201,7 @@ public final class BindingSchemaContextUtils { return Optional.of(potential); } } + // We try to find case by name, then lookup its root definition // and compare it with original definition // This solves case, if choice was inside grouping @@ -205,9 +211,10 @@ public final class BindingSchemaContextUtils { // Still we need to check equality of definition, because local name is not // sufficient to uniquelly determine equality of cases // - potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName().getLocalName()); - if(potential != null && (originalDefinition.equals(SchemaNodeUtils.getRootOriginalIfPossible(potential)))) { - return Optional.of(potential); + for (CaseSchemaNode caze : instantiatedChoice.findCaseNodes(originalDefinition.getQName().getLocalName())) { + if (originalDefinition.equals(SchemaNodeUtils.getRootOriginalIfPossible(caze))) { + return Optional.of(caze); + } } return Optional.absent(); } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java index a769eabe96..e3b39ae3a3 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleContext.java @@ -25,8 +25,8 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -42,13 +42,13 @@ public final class ModuleContext { private final Map identities = new HashMap<>(); private final Set topLevelNodes = new HashSet<>(); private final List augmentations = new ArrayList<>(); - private final BiMap typeToAugmentation = HashBiMap.create(); + private final BiMap typeToAugmentation = HashBiMap.create(); private final Map typeToSchema = new HashMap<>(); private final Multimap choiceToCases = HashMultimap.create(); - private final BiMap caseTypeToSchema = HashBiMap.create(); + private final BiMap caseTypeToSchema = HashBiMap.create(); private final Map innerTypes = new HashMap<>(); @@ -173,22 +173,22 @@ public final class ModuleContext { return Collections.unmodifiableList(augmentations); } - public BiMap getTypeToAugmentation() { + public BiMap getTypeToAugmentation() { return Maps.unmodifiableBiMap(typeToAugmentation); } - public void addTypeToAugmentation(final GeneratedTypeBuilder builder, final AugmentationSchema schema) { + public void addTypeToAugmentation(final GeneratedTypeBuilder builder, final AugmentationSchemaNode schema) { typeToAugmentation.put(builder, schema); typeToSchema.put(builder, schema); } - public void addChoiceToCaseMapping(final Type choiceType, final Type caseType, final ChoiceCaseNode schema) { + public void addChoiceToCaseMapping(final Type choiceType, final Type caseType, final CaseSchemaNode schema) { choiceToCases.put(choiceType, caseType); caseTypeToSchema.put(caseType, schema); typeToSchema.put(caseType, schema); } - public BiMap getCaseTypeToSchemas() { + public BiMap getCaseTypeToSchemas() { return Maps.unmodifiableBiMap(caseTypeToSchema); } @@ -196,7 +196,7 @@ public final class ModuleContext { * * Returns mapping of type to its schema. * - * Valid values are only instances of {@link DataSchemaNode} or {@link AugmentationSchema} + * Valid values are only instances of {@link DataSchemaNode} or {@link AugmentationSchemaNode} * * @return Mapping from type to corresponding schema */ @@ -204,7 +204,7 @@ public final class ModuleContext { return Collections.unmodifiableMap(typeToSchema); } - protected void addTypeToSchema(Type type, TypeDefinition typedef) { + protected void addTypeToSchema(final Type type, final TypeDefinition typedef) { typeToSchema.put(type, typedef); } @@ -214,11 +214,11 @@ public final class ModuleContext { * @param path * @param enumBuilder */ - void addInnerTypedefType(SchemaPath path, EnumBuilder enumBuilder) { + void addInnerTypedefType(final SchemaPath path, final EnumBuilder enumBuilder) { innerTypes.put(path, enumBuilder); } - public Type getInnerType(SchemaPath path) { + public Type getInnerType(final SchemaPath path) { return innerTypes.get(path); } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java index 823d288a20..19f38909ab 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/ModuleInfoBackedContext.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.generator.impl; import com.google.common.base.MoreObjects.ToStringHelper; import com.google.common.base.Optional; +import com.google.common.base.Strings; import com.google.common.io.ByteSource; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; @@ -24,6 +25,7 @@ import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.util.ClassLoaderUtils; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.binding.util.BindingReflections; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; @@ -54,8 +56,10 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy private static final Logger LOG = LoggerFactory.getLogger(ModuleInfoBackedContext.class); - private final ConcurrentMap> packageNameToClassLoader = new ConcurrentHashMap<>(); - private final ConcurrentMap sourceIdentifierToModuleInfo = new ConcurrentHashMap<>(); + private final ConcurrentMap> packageNameToClassLoader = + new ConcurrentHashMap<>(); + private final ConcurrentMap sourceIdentifierToModuleInfo = + new ConcurrentHashMap<>(); private final ClassLoadingStrategy backingLoadingStrategy; @@ -87,7 +91,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy // Implement remove ModuleInfo to update SchemaContext public Optional tryToCreateSchemaContext() { - return ctxResolver.getSchemaContext(); + return Optional.fromJavaUtil(ctxResolver.getSchemaContext()); } private boolean resolveModuleInfo(final Class cls) { @@ -121,7 +125,8 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return true; } - private static YangTextSchemaSource toYangTextSource(final SourceIdentifier identifier, final YangModuleInfo moduleInfo) { + private static YangTextSchemaSource toYangTextSource(final SourceIdentifier identifier, + final YangModuleInfo moduleInfo) { return new YangTextSchemaSource(identifier) { @Override @@ -137,7 +142,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy } private static SourceIdentifier sourceIdentifierFrom(final YangModuleInfo moduleInfo) { - return RevisionSourceIdentifier.create(moduleInfo.getName(), Optional.of(moduleInfo.getRevision())); + return RevisionSourceIdentifier.create(moduleInfo.getName(), Revision.ofNullable(moduleInfo.getRevision())); } public void addModuleInfos(final Iterable moduleInfos) { @@ -153,7 +158,8 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy return registration; } - @Override public CheckedFuture getSource( + @Override + public CheckedFuture getSource( final SourceIdentifier sourceIdentifier) { final YangModuleInfo yangModuleInfo = sourceIdentifierToModuleInfo.get(sourceIdentifier); diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/YangTemplate.xtend b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/YangTemplate.xtend index 692da569b9..630b088cec 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/YangTemplate.xtend +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/YangTemplate.xtend @@ -8,14 +8,13 @@ package org.opendaylight.mdsal.binding.generator.impl import java.util.Collection -import java.util.Date import java.util.List import java.util.Map import java.util.Set -import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil +import org.opendaylight.yangtools.yang.common.Revision import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode import org.opendaylight.yangtools.yang.model.api.DataSchemaNode @@ -97,7 +96,7 @@ class YangTemplate { «IF node instanceof NotificationDefinition» «writeNotification(node)» «ELSEIF node instanceof RpcDefinition» - «writeRPC(node as RpcDefinition)» + «writeRPC(node)» «ENDIF» «ENDFOR» ''' @@ -124,11 +123,11 @@ class YangTemplate { ''' } - def private static writeRevision(Date moduleRevision, String moduleDescription) { + def private static writeRevision(Revision moduleRevision, String moduleDescription) { val revisionIndent = 12 ''' - revision «SimpleDateFormatUtil.getRevisionFormat.format(moduleRevision)» { + revision «moduleRevision.toString» { description "«YangTextTemplate.formatToParagraph(moduleDescription, revisionIndent)»"; } ''' @@ -146,8 +145,8 @@ class YangTemplate { «IF !module.imports.nullOrEmpty» «writeModuleImports(module.imports)» «ENDIF» - «IF module.revision !== null» - «writeRevision(module.revision, module.description)» + «IF module.revision.present» + «writeRevision(module.revision.get, module.description.orElse(null))» «ENDIF» «IF !module.childNodes.nullOrEmpty» @@ -211,8 +210,8 @@ class YangTemplate { var boolean isStatusDeprecated = rpc.status == Status::DEPRECATED ''' rpc «rpc.QName.localName» { - «IF !rpc.description.nullOrEmpty» - "«rpc.description»"; + «IF rpc.description.present» + "«rpc.description.get»"; «ENDIF» «IF !rpc.groupings.nullOrEmpty» «writeGroupingDefs(rpc.groupings)» @@ -223,9 +222,9 @@ class YangTemplate { «IF rpc.output !== null» «writeRpcOutput(rpc.output)» «ENDIF» - «IF !rpc.reference.nullOrEmpty» + «IF rpc.reference.present» reference - "«rpc.reference»"; + "«rpc.reference.get»"; «ENDIF» «IF isStatusDeprecated» status «rpc.status»; @@ -275,9 +274,9 @@ class YangTemplate { var boolean isStatusDeprecated = notification.status == Status::DEPRECATED ''' notification «notification.QName.localName» { - «IF !notification.description.nullOrEmpty» + «IF notification.description.present» description - "«notification.description»"; + "«notification.description.get»"; «ENDIF» «IF !notification.childNodes.nullOrEmpty» «writeDataSchemaNodes(notification.childNodes)» @@ -291,9 +290,9 @@ class YangTemplate { «IF !notification.uses.nullOrEmpty» «writeUsesNodes(notification.uses)» «ENDIF» - «IF !notification.reference.nullOrEmpty» + «IF notification.reference.present» reference - "«notification.reference»"; + "«notification.reference.get»"; «ENDIF» «IF isStatusDeprecated» status «notification.status»; @@ -387,16 +386,16 @@ class YangTemplate { return '' ''' identity «identity.QName.localName» { - «IF identity.baseIdentity !== null» - base "()«identity.baseIdentity»"; - «ENDIF» - «IF !identity.description.nullOrEmpty» + «FOR baseIdentity : identity.baseIdentities» + base "()«baseIdentity»"; + «ENDFOR» + «IF identity.description.present» description - "«identity.description»"; + "«identity.description.get»"; «ENDIF» - «IF !identity.reference.nullOrEmpty» + «IF identity.reference.present» reference - "«identity.reference»"; + "«identity.reference.get»"; «ENDIF» «IF identity.status !== null» status «identity.status»; @@ -418,13 +417,13 @@ class YangTemplate { def private static writeFeature(FeatureDefinition featureDef) { ''' feature «featureDef.QName.localName» { - «IF !featureDef.description.nullOrEmpty» + «IF featureDef.description.present» description - "«featureDef.description»"; + "«featureDef.description.get»"; «ENDIF» - «IF !featureDef.reference.nullOrEmpty» + «IF featureDef.reference.present» reference - "«featureDef.reference»"; + "«featureDef.reference.get»"; «ENDIF» «IF featureDef.status !== null» status «featureDef.status»; @@ -446,16 +445,16 @@ class YangTemplate { def private static writeExtension(ExtensionDefinition extensionDef) { ''' extension «extensionDef.QName.localName» { - «IF !extensionDef.description.nullOrEmpty» + «IF extensionDef.description.present» description - "«extensionDef.description»"; + "«extensionDef.description.get»"; «ENDIF» «IF !extensionDef.argument.nullOrEmpty» argument "«extensionDef.argument»"; «ENDIF» - «IF !extensionDef.reference.nullOrEmpty» + «IF extensionDef.reference.present» reference - "«extensionDef.reference»"; + "«extensionDef.reference.get»"; «ENDIF» «IF extensionDef.status !== null» status «extensionDef.status»; @@ -477,9 +476,9 @@ class YangTemplate { def private static writeDeviation(Deviation deviation) { ''' deviation «deviation.targetPath» { - «IF !deviation.reference.nullOrEmpty» + «IF deviation.reference.present» reference - "«deviation.reference»"; + "«deviation.reference.get»"; «ENDIF» «FOR dev : deviation.deviates» «IF dev !== null && dev.deviateType !== null» @@ -490,7 +489,7 @@ class YangTemplate { ''' } - def private static writeAugments(Set augments) { + def private static writeAugments(Set augments) { ''' «FOR augment : augments» «IF augment !== null» @@ -518,19 +517,19 @@ class YangTemplate { ''' } - def private static writeAugment(AugmentationSchema augment) { + def private static writeAugment(AugmentationSchemaNode augment) { ''' augment «YangTextTemplate.formatToAugmentPath(augment.targetPath.pathFromRoot)» { «IF augment.whenCondition !== null && !augment.whenCondition.toString.nullOrEmpty» when "«augment.whenCondition.toString»"; «ENDIF» - «IF !augment.description.nullOrEmpty» + «IF augment.description.present» description - "«augment.description»"; + "«augment.description.get»"; «ENDIF» - «IF !augment.reference.nullOrEmpty» + «IF augment.reference.present» reference - "«augment.reference»"; + "«augment.reference.get»"; «ENDIF» «IF augment.status !== null» status «augment.status»; @@ -625,7 +624,7 @@ class YangTemplate { ''' } - def private static writeChoiceCaseNode(ChoiceCaseNode choiceCaseNode) { + def private static writeCaseSchemaNode(CaseSchemaNode choiceCaseNode) { var boolean isStatusDeprecated = choiceCaseNode.status == Status::DEPRECATED ''' case «choiceCaseNode.getQName.localName» { @@ -643,7 +642,7 @@ class YangTemplate { var boolean isStatusDeprecated = choiceNode.status == Status::DEPRECATED ''' choice «choiceNode.getQName.localName» { - «FOR child : choiceNode.cases» + «FOR child : choiceNode.cases.values» «writeDataSchemaNode(child)» «ENDFOR» «IF isStatusDeprecated» @@ -696,8 +695,8 @@ class YangTemplate { «IF child instanceof LeafListSchemaNode» «writeLeafListSchemaNode(child)» «ENDIF» - «IF child instanceof ChoiceCaseNode» - «writeChoiceCaseNode(child)» + «IF child instanceof CaseSchemaNode» + «writeCaseSchemaNode(child)» «ENDIF» «IF child instanceof ChoiceSchemaNode» «writeChoiceNode(child)» diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/BindingRuntimeContext.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/BindingRuntimeContext.java index cfb6e96399..568a51e9fa 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/BindingRuntimeContext.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/BindingRuntimeContext.java @@ -41,9 +41,9 @@ import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.binding.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -79,7 +79,7 @@ public class BindingRuntimeContext implements Immutable { private final ClassLoadingStrategy strategy; private final SchemaContext schemaContext; - private final Map augmentationToSchema = new HashMap<>(); + private final Map augmentationToSchema = new HashMap<>(); private final BiMap typeToDefiningSchema = HashBiMap.create(); private final Multimap choiceToCases = HashMultimap.create(); private final Map identities = new HashMap<>(); @@ -158,7 +158,7 @@ public class BindingRuntimeContext implements Immutable { * which may be present in runtime for them, thus returned schema is unsuitable * for use for validation of data. *

      - * For retrieving {@link AugmentationSchema}, which will contains + * For retrieving {@link AugmentationSchemaNode}, which will contains * full model for child nodes, you should use method {@link #getResolvedAugmentationSchema(DataNodeContainer, Class)} * which will return augmentation schema derived from supplied augmentation target * schema. @@ -167,8 +167,9 @@ public class BindingRuntimeContext implements Immutable { * @return Schema of augmentation or null if augmentaiton is not known in this context * @throws IllegalArgumentException If supplied class is not an augmentation */ - public @Nullable AugmentationSchema getAugmentationDefinition(final Class augClass) throws IllegalArgumentException { - Preconditions.checkArgument(Augmentation.class.isAssignableFrom(augClass), "Class %s does not represent augmentation", augClass); + public @Nullable AugmentationSchemaNode getAugmentationDefinition(final Class augClass) { + Preconditions.checkArgument(Augmentation.class.isAssignableFrom(augClass), + "Class %s does not represent augmentation", augClass); return augmentationToSchema.get(referencedType(augClass)); } @@ -191,9 +192,9 @@ public class BindingRuntimeContext implements Immutable { return (DataSchemaNode) typeToDefiningSchema.get(referencedType(cls)); } - public Entry getResolvedAugmentationSchema(final DataNodeContainer target, - final Class> aug) { - final AugmentationSchema origSchema = getAugmentationDefinition(aug); + public Entry getResolvedAugmentationSchema( + final DataNodeContainer target, final Class> aug) { + final AugmentationSchemaNode origSchema = getAugmentationDefinition(aug); Preconditions.checkArgument(origSchema != null, "Augmentation %s is not known in current schema context",aug); /* * FIXME: Validate augmentation schema lookup @@ -226,7 +227,7 @@ public class BindingRuntimeContext implements Immutable { } final AugmentationIdentifier identifier = new AugmentationIdentifier(childNames); - final AugmentationSchema proxy = new EffectiveAugmentationSchema(origSchema, realChilds); + final AugmentationSchemaNode proxy = new EffectiveAugmentationSchema(origSchema, realChilds); return new SimpleEntry<>(identifier, proxy); } @@ -240,9 +241,9 @@ public class BindingRuntimeContext implements Immutable { * the given context. * @throws IllegalArgumentException If supplied class does not represent case. */ - public Optional getCaseSchemaDefinition(final ChoiceSchemaNode schema, final Class childClass) throws IllegalArgumentException { + public Optional getCaseSchemaDefinition(final ChoiceSchemaNode schema, final Class childClass) throws IllegalArgumentException { final DataSchemaNode origSchema = getSchemaDefinition(childClass); - Preconditions.checkArgument(origSchema instanceof ChoiceCaseNode, "Supplied schema %s is not case.", origSchema); + Preconditions.checkArgument(origSchema instanceof CaseSchemaNode, "Supplied schema %s is not case.", origSchema); /* FIXME: Make sure that if there are multiple augmentations of same * named case, with same structure we treat it as equals @@ -250,8 +251,8 @@ public class BindingRuntimeContext implements Immutable { * that user may be unaware that he is using incorrect case * which was generated for choice inside grouping. */ - final Optional found = BindingSchemaContextUtils.findInstantiatedCase(schema, - (ChoiceCaseNode) origSchema); + final Optional found = BindingSchemaContextUtils.findInstantiatedCase(schema, + (CaseSchemaNode) origSchema); return found; } @@ -265,14 +266,14 @@ public class BindingRuntimeContext implements Immutable { } /** - * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition}) + * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchemaNode} or {@link TypeDefinition}) * from which supplied class was generated. Returned schema may be augmented with * additional information, which was not available at compile type * (e.g. third party augmentations). * * @param type Binding Class for which schema should be retrieved. * @return Instance of generated type (definition of Java API), along with - * {@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition} + * {@link DataSchemaNode}, {@link AugmentationSchemaNode} or {@link TypeDefinition} * which was used to generate supplied class. */ public Entry getTypeWithSchema(final Class type) { @@ -381,10 +382,10 @@ public class BindingRuntimeContext implements Immutable { public ImmutableMap getAvailableAugmentationTypes(final DataNodeContainer container) { final Map identifierToType = new HashMap<>(); if (container instanceof AugmentationTarget) { - final Set augments = ((AugmentationTarget) container).getAvailableAugmentations(); - for (final AugmentationSchema augment : augments) { + final Set augments = ((AugmentationTarget) container).getAvailableAugmentations(); + for (final AugmentationSchemaNode augment : augments) { // Augmentation must have child nodes if is to be used with Binding classes - AugmentationSchema augOrig = augment; + AugmentationSchemaNode augOrig = augment; while (augOrig.getOriginalDefinition().isPresent()) { augOrig = augOrig.getOriginalDefinition().get(); } @@ -401,7 +402,7 @@ public class BindingRuntimeContext implements Immutable { return ImmutableMap.copyOf(identifierToType); } - private static AugmentationIdentifier getAugmentationIdentifier(final AugmentationSchema augment) { + private static AugmentationIdentifier getAugmentationIdentifier(final AugmentationSchemaNode augment) { final Set childNames = new HashSet<>(); for (final DataSchemaNode child : augment.getChildNodes()) { childNames.add(child.getQName()); diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtils.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtils.java index 109ff9b126..651c391edc 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtils.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtils.java @@ -12,11 +12,12 @@ import static com.google.common.base.Preconditions.checkState; import com.google.common.base.Preconditions; import java.net.URI; -import java.util.Date; import java.util.Iterator; +import java.util.Optional; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -34,14 +35,14 @@ public final class YangSchemaUtils { throw new UnsupportedOperationException("Helper class. Instantiation is prohibited"); } - public static QName getAugmentationQName(final AugmentationSchema augmentation) { + public static QName getAugmentationQName(final AugmentationSchemaNode augmentation) { checkNotNull(augmentation, "Augmentation must not be null."); final QName identifier = getAugmentationIdentifier(augmentation); if(identifier != null) { return identifier; } URI namespace = null; - Date revision = null; + Optional revision = null; if(augmentation instanceof NamespaceRevisionAware) { namespace = ((NamespaceRevisionAware) augmentation).getNamespace(); revision = ((NamespaceRevisionAware) augmentation).getRevision(); @@ -58,11 +59,11 @@ public final class YangSchemaUtils { } checkState(namespace != null, "Augmentation namespace must not be null"); checkState(revision != null, "Augmentation revision must not be null"); - // FIXME: Allways return a qname with module namespace. - return QName.create(namespace,revision, "foo_augment"); + // FIXME: Always return a qname with module namespace. + return QName.create(namespace, revision, "foo_augment"); } - public static QName getAugmentationIdentifier(final AugmentationSchema augmentation) { + public static QName getAugmentationIdentifier(final AugmentationSchemaNode augmentation) { for(final UnknownSchemaNode extension : augmentation.getUnknownSchemaNodes()) { if(AUGMENT_IDENTIFIER.equals(extension.getNodeType().getLocalName())) { return extension.getQName(); @@ -77,7 +78,7 @@ public final class YangSchemaUtils { Preconditions.checkArgument(arguments.hasNext(), "Type Definition path must contain at least one element."); QName currentArg = arguments.next(); - DataNodeContainer currentNode = context.findModuleByNamespaceAndRevision(currentArg.getNamespace(), currentArg.getRevision()); + DataNodeContainer currentNode = context.findModule(currentArg.getModule()).orElse(null); if(currentNode == null) { return null; } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypes.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypes.java index a8ee2ae8bf..7e70a29f03 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypes.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypes.java @@ -218,7 +218,7 @@ public final class BaseYangTypes { } }; - private static Restrictions singleRangeRestrictions(final T min, final T max) { + private static > Restrictions singleRangeRestrictions(final T min, final T max) { return Types.getDefaultRestrictions(min, max); } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java index f214d56220..29d8e6699c 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySort.java @@ -17,8 +17,8 @@ import java.util.Map; import java.util.Set; import org.opendaylight.yangtools.util.TopologicalSort; import org.opendaylight.yangtools.util.TopologicalSort.Node; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -133,7 +133,7 @@ public class GroupingDefinitionDependencySort { ret.addAll(usesNodes); for (UsesNode usesNode : usesNodes) { - for (AugmentationSchema augment : usesNode.getAugmentations()) { + for (AugmentationSchemaNode augment : usesNode.getAugmentations()) { ret.addAll(getAllUsesNodes(augment)); } } @@ -145,8 +145,7 @@ public class GroupingDefinitionDependencySort { if (childNode instanceof DataNodeContainer) { ret.addAll(getAllUsesNodes((DataNodeContainer) childNode)); } else if (childNode instanceof ChoiceSchemaNode) { - Set cases = ((ChoiceSchemaNode) childNode).getCases(); - for (ChoiceCaseNode choiceCaseNode : cases) { + for (CaseSchemaNode choiceCaseNode : ((ChoiceSchemaNode) childNode).getCases().values()) { ret.addAll(getAllUsesNodes(choiceCaseNode)); } } diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImpl.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImpl.java index c5526b4525..69d9e17c17 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImpl.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImpl.java @@ -20,16 +20,15 @@ import com.google.common.io.BaseEncoding; import java.io.Serializable; import java.math.BigDecimal; import java.math.BigInteger; -import java.net.URI; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Comparator; -import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.TreeMap; import java.util.regex.Matcher; @@ -56,6 +55,7 @@ import org.opendaylight.mdsal.binding.model.util.generated.type.builder.Generate import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl; import org.opendaylight.yangtools.yang.binding.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode; @@ -106,7 +106,7 @@ public final class TypeProviderImpl implements TypeProvider { /** * Map>> */ - private final Map>> genTypeDefsContextMap; + private final Map, Map>> genTypeDefsContextMap; /** * The map which maps schema paths to JAVA Type. @@ -344,7 +344,7 @@ public final class TypeProviderImpl implements TypeProvider { final Module module = findParentModule(schemaContext, typeDefinition); final Restrictions r = BindingGeneratorUtil.getRestrictions(typeDefinition); if (module != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); final Map genTOs = modulesByDate.get(module.getRevision()); if (genTOs != null) { returnType = genTOs.get(typedefName); @@ -371,13 +371,17 @@ public final class TypeProviderImpl implements TypeProvider { * @param idref * identityref type definition for which JAVA Type * is sought - * @return JAVA Type of the identity which is refrenced through + * @return JAVA Type of the identity which is referenced through * idref */ private Type provideTypeForIdentityref(final IdentityrefTypeDefinition idref) { - final QName baseIdQName = idref.getIdentity().getQName(); - final Module module = schemaContext.findModuleByNamespaceAndRevision(baseIdQName.getNamespace(), - baseIdQName.getRevision()); + final Collection identities = idref.getIdentities(); + if (identities.size() > 1) { + LOG.warn("Identity reference {} has multiple identities, using only the first one", idref); + } + + final QName baseIdQName = identities.iterator().next().getQName(); + final Module module = schemaContext.findModule(baseIdQName.getModule()).orElse(null); IdentitySchemaNode identity = null; for (final IdentitySchemaNode id : module.getIdentities()) { if (id.getQName().equals(baseIdQName)) { @@ -424,7 +428,7 @@ public final class TypeProviderImpl implements TypeProvider { final Module module = findParentModule(schemaContext, parentNode); if (module != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); final Map genTOs = modulesByDate.get(module.getRevision()); if (genTOs != null) { return genTOs.get(typeDefinition.getQName().getLocalName()); @@ -592,9 +596,9 @@ public final class TypeProviderImpl implements TypeProvider { final String basePackageName = BindingMapping.getRootPackageName(module.getQNameModule()); final EnumerationBuilderImpl enumBuilder = new EnumerationBuilderImpl(basePackageName, enumerationName); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); - enumBuilder.setReference(enumTypeDef.getReference()); + enumBuilder.setReference(enumTypeDef.getReference().orElse(null)); enumBuilder.setModuleName(module.getName()); enumBuilder.setSchemaPath(enumTypeDef.getPath().getPathFromRoot()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); @@ -636,7 +640,7 @@ public final class TypeProviderImpl implements TypeProvider { final String enumerationName = BindingMapping.getClassName(enumName); final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumerationName); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); return enumBuilder.toInstance(enumBuilder); @@ -684,7 +688,7 @@ public final class TypeProviderImpl implements TypeProvider { final List modulesSortedByDependency = ModuleDependencySort.sort(modules); for (final Module module : modulesSortedByDependency) { - Map> dateTypeMap = genTypeDefsContextMap.get(module.getName()); + Map, Map> dateTypeMap = genTypeDefsContextMap.get(module.getName()); if (dateTypeMap == null) { dateTypeMap = new HashMap<>(); } @@ -725,7 +729,7 @@ public final class TypeProviderImpl implements TypeProvider { */ private Type typedefToGeneratedType(final String basePackageName, final Module module, final TypeDefinition typedef) { final String moduleName = module.getName(); - final Date moduleRevision = module.getRevision(); + final Optional moduleRevision = module.getRevision(); if (basePackageName != null && moduleName != null && typedef != null && typedef.getQName() != null) { final String typedefName = typedef.getQName().getLocalName(); final TypeDefinition innerTypeDefinition = typedef.getBaseType(); @@ -739,7 +743,7 @@ public final class TypeProviderImpl implements TypeProvider { (UnionTypeDefinition) innerTypeDefinition, typedefName, typedef); genTOBuilder.setTypedef(true); genTOBuilder.setIsUnion(true); - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); returnType = genTOBuilder.toInstance(); // union builder @@ -768,7 +772,7 @@ public final class TypeProviderImpl implements TypeProvider { final GeneratedTOBuilder genTOBuilder = provideGeneratedTOBuilderForBitsTypeDefinition( basePackageName, bitsTypeDefinition, typedefName, module.getName()); genTOBuilder.setTypedef(true); - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); returnType = genTOBuilder.toInstance(); } else { @@ -776,7 +780,8 @@ public final class TypeProviderImpl implements TypeProvider { returnType = wrapJavaTypeIntoTO(basePackageName, typedef, javaType, module.getName()); } if (returnType != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(moduleName); + final Map, Map> modulesByDate = + genTypeDefsContextMap.get(moduleName); Map typeMap = modulesByDate.get(moduleRevision); if (typeMap != null) { if (typeMap.isEmpty()) { @@ -803,7 +808,8 @@ public final class TypeProviderImpl implements TypeProvider { * JAVA Type to which is typedef mapped * @return generated transfer object which representjavaType */ - private static GeneratedTransferObject wrapJavaTypeIntoTO(final String basePackageName, final TypeDefinition typedef, final Type javaType, final String moduleName) { + private static GeneratedTransferObject wrapJavaTypeIntoTO(final String basePackageName, + final TypeDefinition typedef, final Type javaType, final String moduleName) { Preconditions.checkNotNull(javaType, "javaType cannot be null"); final String propertyName = "value"; @@ -821,7 +827,7 @@ public final class TypeProviderImpl implements TypeProvider { final List regExps = resolveRegExpressionsFromTypedef(typedef); addStringRegExAsConstant(genTOBuilder, regExps); } - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); genTOBuilder.setTypedef(true); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); return genTOBuilder.toInstance(); @@ -876,7 +882,8 @@ public final class TypeProviderImpl implements TypeProvider { *

    • if Qname of typedef is null
    • *
    */ - public List provideGeneratedTOBuildersForUnionTypeDef(final String basePackageName, final UnionTypeDefinition typedef, final String typeDefName, final SchemaNode parentNode) { + public List provideGeneratedTOBuildersForUnionTypeDef(final String basePackageName, + final UnionTypeDefinition typedef, final String typeDefName, final SchemaNode parentNode) { Preconditions.checkNotNull(basePackageName, "Base Package Name cannot be NULL!"); Preconditions.checkNotNull(typedef, "Type Definition cannot be NULL!"); Preconditions.checkNotNull(typedef.getQName(), "Type definition QName cannot be NULL!"); @@ -889,9 +896,9 @@ public final class TypeProviderImpl implements TypeProvider { if (typeDefName != null && !typeDefName.isEmpty()) { final String typeName = BindingMapping.getClassName(typeDefName); unionGenTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeName); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); unionGenTOBuilder.setDescription(typedefDescription); - unionGenTOBuilder.setReference(typedef.getReference()); + unionGenTOBuilder.setReference(typedef.getReference().orElse(null)); unionGenTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot()); unionGenTOBuilder.setModuleName(module.getName()); } else { @@ -950,7 +957,8 @@ public final class TypeProviderImpl implements TypeProvider { * bigger one due to recursive call of * provideGeneratedTOBuildersForUnionTypeDef method. */ - private List resolveUnionSubtypeAsUnion(final GeneratedTOBuilder parentUnionGenTOBuilder, final UnionTypeDefinition unionSubtype, final String basePackageName, final SchemaNode parentNode) { + private List resolveUnionSubtypeAsUnion(final GeneratedTOBuilder parentUnionGenTOBuilder, + final UnionTypeDefinition unionSubtype, final String basePackageName, final SchemaNode parentNode) { final String newTOBuilderName = provideAvailableNameForGenTOBuilder(parentUnionGenTOBuilder.getName()); final List subUnionGenTOBUilders = provideGeneratedTOBuildersForUnionTypeDef( basePackageName, unionSubtype, newTOBuilderName, parentNode); @@ -1030,7 +1038,7 @@ public final class TypeProviderImpl implements TypeProvider { private Type findGenTO(final String searchedTypeName, final SchemaNode parentNode) { final Module typeModule = findParentModule(schemaContext, parentNode); if (typeModule != null && typeModule.getName() != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(typeModule.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(typeModule.getName()); final Map genTOs = modulesByDate.get(typeModule.getRevision()); if (genTOs != null) { return genTOs.get(searchedTypeName); @@ -1054,7 +1062,7 @@ public final class TypeProviderImpl implements TypeProvider { if (!(newTypeDef instanceof UnionTypeDefinition)) { final Module parentModule = findParentModule(schemaContext, parentNode); if (parentModule != null && parentModule.getName() != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(parentModule.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(parentModule.getName()); final Map genTOsMap = modulesByDate.get(parentModule.getRevision()); genTOsMap.put(newTypeDef.getQName().getLocalName(), genTOBuilder.toInstance()); } @@ -1104,10 +1112,10 @@ public final class TypeProviderImpl implements TypeProvider { if (packageName != null && typeDefTOName != null) { final String genTOName = BindingMapping.getClassName(typeDefTOName); final GeneratedTOBuilderImpl newType = new GeneratedTOBuilderImpl(packageName, genTOName); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); newType.setDescription(typedefDescription); - newType.setReference(typedef.getReference()); + newType.setReference(typedef.getReference().orElse(null)); newType.setSchemaPath(typedef.getPath().getPathFromRoot()); newType.setModuleName(moduleName); @@ -1136,7 +1144,8 @@ public final class TypeProviderImpl implements TypeProvider { *
  • if basePackageName equals null
  • *
*/ - public GeneratedTOBuilder provideGeneratedTOBuilderForBitsTypeDefinition(final String basePackageName, final TypeDefinition typeDef, final String typeDefName, final String moduleName) { + public GeneratedTOBuilder provideGeneratedTOBuilderForBitsTypeDefinition(final String basePackageName, + final TypeDefinition typeDef, final String typeDefName, final String moduleName) { Preconditions.checkArgument(typeDef != null, "typeDef cannot be NULL!"); Preconditions.checkArgument(basePackageName != null, "Base Package Name cannot be NULL!"); @@ -1146,10 +1155,10 @@ public final class TypeProviderImpl implements TypeProvider { final String typeName = BindingMapping.getClassName(typeDefName); final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeName); - final String typedefDescription = encodeAngleBrackets(typeDef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typeDef.getDescription().orElse(null)); genTOBuilder.setDescription(typedefDescription); - genTOBuilder.setReference(typeDef.getReference()); + genTOBuilder.setReference(typeDef.getReference().orElse(null)); genTOBuilder.setSchemaPath(typeDef.getPath().getPathFromRoot()); genTOBuilder.setModuleName(moduleName); genTOBuilder.setBaseType(typeDef); @@ -1196,7 +1205,7 @@ public final class TypeProviderImpl implements TypeProvider { final List regExps = new ArrayList<>(patternConstraints.size()); for (final PatternConstraint patternConstraint : patternConstraints) { - final String regEx = patternConstraint.getRegularExpression(); + final String regEx = patternConstraint.getJavaPatternString(); final String modifiedRegEx = StringEscapeUtils.escapeJava(regEx); regExps.add(modifiedRegEx); } @@ -1268,10 +1277,10 @@ public final class TypeProviderImpl implements TypeProvider { final String classTypedefName = BindingMapping.getClassName(typedefName); final String innerTypeDef = innerExtendedType.getQName().getLocalName(); final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, classTypedefName); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); genTOBuilder.setDescription(typedefDescription); - genTOBuilder.setReference(typedef.getReference()); + genTOBuilder.setReference(typedef.getReference().orElse(null)); genTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot()); genTOBuilder.setModuleName(moduleName); genTOBuilder.setTypedef(true); @@ -1285,7 +1294,7 @@ public final class TypeProviderImpl implements TypeProvider { genTOBuilder.setIsUnion(true); } - Map> modulesByDate = null; + Map, Map> modulesByDate = null; Map typeMap = null; final Module parentModule = findParentModule(schemaContext, innerExtendedType); if (parentModule != null) { @@ -1299,7 +1308,7 @@ public final class TypeProviderImpl implements TypeProvider { genTOBuilder.setExtendsType((GeneratedTransferObject) type); } } - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable(genTOBuilder); return genTOBuilder.toInstance(); @@ -1423,7 +1432,7 @@ public final class TypeProviderImpl implements TypeProvider { @Override public String getTypeDefaultConstruction(final LeafSchemaNode node) { - return getTypeDefaultConstruction(node, node.getDefault()); + return getTypeDefaultConstruction(node, (String) node.getType().getDefaultValue().orElse(null)); } public String getTypeDefaultConstruction(final LeafSchemaNode node, final String defaultValue) { @@ -1598,9 +1607,7 @@ public final class TypeProviderImpl implements TypeProvider { private Module getParentModule(final SchemaNode node) { final QName qname = node.getPath().getPathFromRoot().iterator().next(); - final URI namespace = qname.getNamespace(); - final Date revision = qname.getRevision(); - return schemaContext.findModuleByNamespaceAndRevision(namespace, revision); + return schemaContext.findModule(qname.getModule()).orElse(null); } private String leafrefToDef(final LeafSchemaNode parentNode, final LeafrefTypeDefinition leafrefType, final String defaultValue) { @@ -1640,7 +1647,7 @@ public final class TypeProviderImpl implements TypeProvider { if (type.getBaseType() != null) { final QName typeQName = type.getQName(); Module module = null; - final Set modules = schemaContext.findModuleByNamespace(typeQName.getNamespace()); + final Set modules = schemaContext.findModules(typeQName.getNamespace()); if (modules.size() > 1) { for (final Module m : modules) { if (m.getRevision().equals(typeQName.getRevision())) { @@ -1650,7 +1657,7 @@ public final class TypeProviderImpl implements TypeProvider { } if (module == null) { final List modulesList = new ArrayList<>(modules); - Collections.sort(modulesList, (o1, o2) -> o1.getRevision().compareTo(o2.getRevision())); + Collections.sort(modulesList, (o1, o2) -> Revision.compare(o1.getRevision(), o2.getRevision())); module = modulesList.get(0); } } else { @@ -1662,23 +1669,17 @@ public final class TypeProviderImpl implements TypeProvider { } else { final Iterator path = node.getPath().getPathFromRoot().iterator(); final QName first = path.next(); + final Module parent = schemaContext.findModule(first.getModule()).orElse(null); + final String basePackageName = BindingMapping.getRootPackageName(parent.getQNameModule()); if (!path.hasNext()) { - final URI namespace = first.getNamespace(); - final Date revision = first.getRevision(); - final Module parent = schemaContext.findModuleByNamespaceAndRevision(namespace, revision); parentName = BindingMapping.getClassName(parent.getName()) + "Data"; - final String basePackageName = BindingMapping.getRootPackageName(parent.getQNameModule()); className = basePackageName + "." + parentName + "." + BindingMapping.getClassName(node.getQName()); } else { - final URI namespace = first.getNamespace(); - final Date revision = first.getRevision(); - final Module parentModule = schemaContext.findModuleByNamespaceAndRevision(namespace, revision); - final String basePackageName = BindingMapping.getRootPackageName(parentModule.getQNameModule()); final String packageName = BindingGeneratorUtil.packageNameForGeneratedType(basePackageName, UNION_PATH); className = packageName + "." + BindingMapping.getClassName(node.getQName()); } } - return union(className, node.getDefault(), node); + return union(className, (String) node.getType().getDefaultValue().orElse(null), node); } private static String union(final String className, final String defaultValue, final LeafSchemaNode node) { diff --git a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypedefResolver.java b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypedefResolver.java index 79d5c75987..d0833e6404 100644 --- a/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypedefResolver.java +++ b/binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/TypedefResolver.java @@ -11,7 +11,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Set; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -64,11 +64,8 @@ final class TypedefResolver { } else if (childNode instanceof ListSchemaNode) { fillRecursively(list, (ListSchemaNode) childNode); } else if (childNode instanceof ChoiceSchemaNode) { - final Set cases = ((ChoiceSchemaNode) childNode).getCases(); - if (cases != null) { - for (final ChoiceCaseNode caseNode : cases) { - fillRecursively(list, caseNode); - } + for (final CaseSchemaNode caseNode : ((ChoiceSchemaNode) childNode).getCases().values()) { + fillRecursively(list, caseNode); } } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentRelativeXPathTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentRelativeXPathTest.java index 66f516baae..10387726f5 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentRelativeXPathTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentRelativeXPathTest.java @@ -11,19 +11,15 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.IOException; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; 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.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class AugmentRelativeXPathTest extends AbstractTypesTest { @@ -33,9 +29,9 @@ public class AugmentRelativeXPathTest extends AbstractTypesTest { } @Test - public void AugmentationWithRelativeXPathTest() throws IOException, SourceException, ReactorException { + public void AugmentationWithRelativeXPathTest() { - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + final SchemaContext context = YangParserTestUtils.parseYangFiles(testModels); assertNotNull("context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentedTypeTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentedTypeTest.java index b3912d48d6..8428a29949 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentedTypeTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/AugmentedTypeTest.java @@ -11,11 +11,9 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.GeneratedType; @@ -27,20 +25,13 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class AugmentedTypeTest { @Test - public void augmentedAbstractTopologyTest() throws Exception { - File abstractTopology = new File(getClass().getResource( - "/augment-test-models/abstract-topology@2013-02-08.yang").toURI()); - File augmentTopology = new File(getClass().getResource( - "/augment-test-models/augment-abstract-topology@2013-05-03.yang").toURI()); - File augmentNetworkLink = new File(getClass().getResource( - "/augment-test-models/augment-network-link-attributes@2013-05-03.yang").toURI()); - File augmentTopologyTunnels = new File(getClass().getResource( - "/augment-test-models/augment-topology-tunnels@2013-05-03.yang").toURI()); - File ietfInterfaces = new File(getClass().getResource("/augment-test-models/ietf-interfaces@2012-11-15.yang") - .toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, augmentTopology, - augmentNetworkLink, augmentTopologyTunnels, ietfInterfaces); + public void augmentedAbstractTopologyTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(AugmentedTypeTest.class, + "/augment-test-models/abstract-topology@2013-02-08.yang", + "/augment-test-models/augment-abstract-topology@2013-05-03.yang", + "/augment-test-models/augment-network-link-attributes@2013-05-03.yang", + "/augment-test-models/augment-topology-tunnels@2013-05-03.yang", + "/augment-test-models/ietf-interfaces@2012-11-15.yang"); assertNotNull("Schema Context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java index 4cb2cdbd8e..e1834656b2 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BinaryTypeTest.java @@ -11,7 +11,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.io.File; -import java.io.IOException; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; @@ -19,11 +18,8 @@ import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BinaryTypeTest { @@ -42,8 +38,8 @@ public class BinaryTypeTest { } @Test - public void binaryTypeTest() throws IOException, SourceException, ReactorException { - final SchemaContext context = YangParserTestUtils.parseYangSources(yangModels); + public void binaryTypeTest() { + final SchemaContext context = YangParserTestUtils.parseYangFiles(yangModels); assertNotNull("context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java index 8c89adaab6..4b9f2a794d 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImplTest.java @@ -12,31 +12,21 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import com.google.common.collect.ImmutableList; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URISyntaxException; import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.ParameterizedType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BindingGeneratorImplTest { @Test - public void isisTotpologyStatementParserTest() throws IOException, - URISyntaxException, ReactorException { - final InputStream topo = getClass().getResourceAsStream("/isis-topology/network-topology@2013-10-21.yang"); - final InputStream isis = getClass().getResourceAsStream("/isis-topology/isis-topology@2013-10-21.yang"); - final InputStream l3 = getClass().getResourceAsStream("/isis-topology/l3-unicast-igp-topology@2013-10-21.yang"); - - SchemaContext context = YangParserTestUtils.parseYangStreams(ImmutableList.of(isis, l3, topo)); + public void isisTotpologyStatementParserTest() { + SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/isis-topology/network-topology@2013-10-21.yang", "/isis-topology/isis-topology@2013-10-21.yang", + "/isis-topology/l3-unicast-igp-topology@2013-10-21.yang"); assertNotNull(context); List generateTypes = new BindingGeneratorImpl(false) @@ -46,15 +36,10 @@ public class BindingGeneratorImplTest { } @Test - public void choiceNodeGenerationTest() throws IOException, - URISyntaxException, ReactorException { - File resourceFile = new File(getClass().getResource( - "/binding-generator-impl-test/choice-test.yang").toURI()); - - SchemaContext context = YangParserTestUtils.parseYangSources(resourceFile); + public void choiceNodeGenerationTest() { + SchemaContext context = YangParserTestUtils.parseYangResource("/binding-generator-impl-test/choice-test.yang"); - List generateTypes = new BindingGeneratorImpl(false) - .generateTypes(context); + List generateTypes = new BindingGeneratorImpl(false).generateTypes(context); GeneratedType choiceTestData = null; GeneratedType myRootContainer = null; @@ -144,14 +129,11 @@ public class BindingGeneratorImplTest { } @Test - public void notificationGenerationTest() throws IOException, URISyntaxException, ReactorException { - File resourceFile = new File(getClass().getResource( - "/binding-generator-impl-test/notification-test.yang").toURI()); + public void notificationGenerationTest() { + SchemaContext context = YangParserTestUtils.parseYangResource( + "/binding-generator-impl-test/notification-test.yang"); - SchemaContext context = YangParserTestUtils.parseYangSources(resourceFile); - - List generateTypes = new BindingGeneratorImpl(false) - .generateTypes(context); + List generateTypes = new BindingGeneratorImpl(false).generateTypes(context); GeneratedType foo = null; for (Type type : generateTypes) { diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BitAndUnionTOEnclosingTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BitAndUnionTOEnclosingTest.java index a740edb044..336b8749a6 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BitAndUnionTOEnclosingTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/BitAndUnionTOEnclosingTest.java @@ -12,33 +12,25 @@ import static org.junit.Assert.assertNotNull; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsAttributes; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsMethods; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; 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.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BitAndUnionTOEnclosingTest { - private final static List testModels = new ArrayList<>(); private static List genTypes = null; private static GeneratedType parentContainer = null; - public static void parseResources() throws IOException, SourceException, ReactorException { - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + @BeforeClass + public static void loadTestResources() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/bit_and_union.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -54,13 +46,6 @@ public class BitAndUnionTOEnclosingTest { } } - @BeforeClass - public static void loadTestResources() throws IOException, URISyntaxException, SourceException, ReactorException { - final File listModelFile = new File(ExtendedTypedefTest.class.getResource("/bit_and_union.yang").toURI()); - testModels.add(listModelFile); - parseResources(); - } - @Test public void testNestedTypesInLeaf() { GeneratedTransferObject lfLeaf = null; @@ -131,7 +116,7 @@ public class BitAndUnionTOEnclosingTest { for (Type type : genTypes) { if (type instanceof GeneratedType) { GeneratedType genType = (GeneratedType) type; - if (genType.getName().equals("TypeUnion") && (genType instanceof GeneratedTransferObject)) { + if (genType.getName().equals("TypeUnion") && genType instanceof GeneratedTransferObject) { typeUnionTypedef = (GeneratedTransferObject) genType; typeUnionTypedefCounter++; } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug4145Test.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug4145Test.java index c5ea0f5073..2e273c0562 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug4145Test.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug4145Test.java @@ -10,28 +10,18 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4145Test { @Test - public void bug4145Test() throws URISyntaxException, IOException, YangSyntaxErrorException, ReactorException { - File resourceFile = new File(getClass().getResource( - "/bug-4145/foo.yang").toURI()); + public void bug4145Test() { + SchemaContext context = YangParserTestUtils.parseYangResource("/bug-4145/foo.yang"); - SchemaContext context = YangParserTestUtils.parseYangSources(resourceFile); - - List generateTypes = new BindingGeneratorImpl(false) - .generateTypes(context); + List generateTypes = new BindingGeneratorImpl(false).generateTypes(context); assertNotNull(generateTypes); assertTrue(generateTypes.size() > 0); } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug6135Test.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug6135Test.java index 91824645a6..7a3ada3cf0 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug6135Test.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/Bug6135Test.java @@ -16,7 +16,6 @@ import java.net.URISyntaxException; import java.util.List; import org.junit.Ignore; import org.junit.Test; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Enumeration; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.Type; @@ -29,7 +28,7 @@ public class Bug6135Test { @Ignore @Test public void bug6135Test() throws FileNotFoundException, ReactorException, URISyntaxException { - final SchemaContext context = YangParserTestUtils.parseYangSource("/bug-6135/foo.yang"); + final SchemaContext context = YangParserTestUtils.parseYangResource("/bug-6135/foo.yang"); assertNotNull(context); final List generateTypes = new BindingGeneratorImpl(false).generateTypes(context); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ChoiceCaseGenTypesTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ChoiceCaseGenTypesTest.java index 942c6f4187..c12b9f39fa 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ChoiceCaseGenTypesTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ChoiceCaseGenTypesTest.java @@ -13,17 +13,13 @@ import static org.junit.Assert.assertNotNull; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsInterface; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsMethods; -import java.io.IOException; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; 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.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ChoiceCaseGenTypesTest extends AbstractTypesTest { @@ -58,8 +54,8 @@ public class ChoiceCaseGenTypesTest extends AbstractTypesTest { } @Test - public void choiceCaseResolvingTypeTest() throws IOException, SourceException, ReactorException { - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void choiceCaseResolvingTypeTest() { + final SchemaContext context = YangParserTestUtils.parseYangFiles(testModels); assertNotNull("context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java index 3a349fe48a..ab4995336e 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ControllerTest.java @@ -10,11 +10,9 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @@ -22,12 +20,10 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ControllerTest { @Test - public void controllerAugmentationTest() throws Exception { - File cn = new File(getClass().getResource("/controller-models/controller-network.yang").toURI()); - File co = new File(getClass().getResource("/controller-models/controller-openflow.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(cn, co, ietfInetTypes); + public void controllerAugmentationTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(ControllerTest.class, + "/controller-models/controller-network.yang", "/controller-models/controller-openflow.yang", + "/ietf/ietf-inet-types.yang"); assertNotNull("Schema Context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ExtendedTypedefTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ExtendedTypedefTest.java index 630387876f..40d6400ba8 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ExtendedTypedefTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/ExtendedTypedefTest.java @@ -12,11 +12,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import java.io.File; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.Type; @@ -27,11 +25,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ExtendedTypedefTest { @Test - public void constantGenerationTest() throws Exception { - File abstractTopology = new File(getClass().getResource("/typedef-of-typedef/typedef_of_typedef.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInetTypes); + public void constantGenerationTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(ExtendedTypedefTest.class, + "/typedef-of-typedef/typedef_of_typedef.yang", "/ietf/ietf-inet-types.yang"); assertNotNull("Schema Context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenEnumResolvingTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenEnumResolvingTest.java index d1496f0fb4..e7dc1f3799 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenEnumResolvingTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenEnumResolvingTest.java @@ -11,31 +11,22 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Enumeration; 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.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GenEnumResolvingTest { @Test - public void testLeafEnumResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - File ietfInterfaces = new File(getClass().getResource("/enum-test-models/ietf-interfaces@2012-11-15.yang") - .toURI()); - File ianaIfTypeModel = new File(getClass().getResource("/ietf/iana-if-type.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(ietfInterfaces, ianaIfTypeModel); + public void testLeafEnumResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GenEnumResolvingTest.class, + "/enum-test-models/ietf-interfaces@2012-11-15.yang", "/ietf/iana-if-type.yang"); assertTrue(context != null); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -95,9 +86,8 @@ public class GenEnumResolvingTest { } @Test - public void testTypedefEnumResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - File ianaIfType = new File(getClass().getResource("/ietf/iana-if-type.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(ianaIfType); + public void testTypedefEnumResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/ietf/iana-if-type.yang"); assertTrue(context != null); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); final List genTypes = bindingGen.generateTypes(context); @@ -112,15 +102,10 @@ public class GenEnumResolvingTest { } @Test - public void testLeafrefEnumResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - File abstractTopology = new File(getClass().getResource("/enum-test-models/abstract-topology@2013-02-08.yang") - .toURI()); - File ietfInterfaces = new File(getClass().getResource("/enum-test-models/ietf-interfaces@2012-11-15.yang") - .toURI()); - File ianaIfType = new File(getClass().getResource("/ietf/iana-if-type.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInterfaces, - ianaIfType); + public void testLeafrefEnumResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GenEnumResolvingTest.class, + "/enum-test-models/abstract-topology@2013-02-08.yang", "/enum-test-models/ietf-interfaces@2012-11-15.yang", + "/ietf/iana-if-type.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); final List genTypes = bindingGen.generateTypes(context); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenTypesSubSetTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenTypesSubSetTest.java index e1d53a7dc8..b7a13998ef 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenTypesSubSetTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenTypesSubSetTest.java @@ -11,13 +11,11 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import java.io.File; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -26,15 +24,10 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GenTypesSubSetTest { @Test - public void genTypesFromSubsetOfTwoModulesTest() throws Exception { - File abstractTopology = new File(getClass().getResource( - "/leafref-test-models/abstract-topology@2013-02-08.yang").toURI()); - File ietfInterfaces = new File(getClass().getResource("/ietf/ietf-interfaces.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - File ietfYangTypes = new File(getClass().getResource("/ietf/ietf-yang-types.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInterfaces, - ietfInetTypes, ietfYangTypes); + public void genTypesFromSubsetOfTwoModulesTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GenTypesSubSetTest.class, + "/leafref-test-models/abstract-topology@2013-02-08.yang", "/ietf/ietf-interfaces.yang", + "/ietf/ietf-inet-types.yang", "/ietf/ietf-yang-types.yang"); Set modules = context.getModules(); final Set toGenModules = new HashSet<>(); @@ -57,16 +50,10 @@ public class GenTypesSubSetTest { } @Test - public void genTypesFromSubsetOfThreeModulesTest() throws Exception { - File abstractTopology = new File(getClass().getResource( - "/leafref-test-models/abstract-topology@2013-02-08.yang").toURI()); - File ietfInterfaces = new File(getClass().getResource("/ietf/ietf-interfaces.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - File ietfYangTypes = new File(getClass().getResource("/ietf/ietf-yang-types.yang").toURI()); - File ianaIfType = new File(getClass().getResource("/ietf/iana-if-type.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInterfaces, - ietfInetTypes, ietfYangTypes, ianaIfType); + public void genTypesFromSubsetOfThreeModulesTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GenTypesSubSetTest.class, + "/leafref-test-models/abstract-topology@2013-02-08.yang", "/ietf/ietf-interfaces.yang", + "/ietf/ietf-inet-types.yang", "/ietf/ietf-yang-types.yang", "/ietf/iana-if-type.yang"); assertNotNull("Schema Context is null", context); final Set modules = context.getModules(); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java index 624b0a4b89..371c9ce0d4 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GenerateInnerClassForBitsAndUnionInLeavesTest.java @@ -9,12 +9,9 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.net.URI; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.GeneratedType; @@ -25,10 +22,8 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GenerateInnerClassForBitsAndUnionInLeavesTest { @Test - public void testInnerClassCreationForBitsAndUnionsInLeafes() throws Exception { - final URI yangTypesPath = getClass().getResource("/bit_and_union_in_leaf.yang").toURI(); - - final SchemaContext context = YangParserTestUtils.parseYangSources(new File(yangTypesPath)); + public void testInnerClassCreationForBitsAndUnionsInLeafes() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/bit_and_union_in_leaf.yang"); assertTrue(context != null); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesBitsTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesBitsTest.java index 8146fd4bf4..8bd4f26b5a 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesBitsTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesBitsTest.java @@ -12,28 +12,23 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.net.URI; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; 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.mdsal.binding.model.api.MethodSignature.Parameter; +import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GeneratedTypesBitsTest { @Test - public void testGeneretedTypesBitsTest() throws Exception { - final URI yangTypesPath = getClass().getResource("/simple-bits-demo.yang").toURI(); - - final SchemaContext context = YangParserTestUtils.parseYangSources(new File(yangTypesPath)); + public void testGeneretedTypesBitsTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/simple-bits-demo.yang"); assertTrue(context != null); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -74,19 +69,16 @@ public class GeneratedTypesBitsTest { hashPropertiesNum = genProperties.size(); } - } else if (type instanceof GeneratedType) { // searching for - // interface - // LeafParameterContainer + } else if (type instanceof GeneratedType) { + // searching for interface LeafParameterContainer final GeneratedType genType = (GeneratedType) type; if (genType.getName().equals("LeafParentContainer")) { leafParentFound = true; // check of methods methodSignaturesList = genType.getMethodDefinitions(); if (methodSignaturesList != null) { - for (MethodSignature methodSignature : methodSignaturesList) { // loop - // through - // all - // methods + // loop through all methods + for (MethodSignature methodSignature : methodSignaturesList) { if (methodSignature.getName().equals("getByteLeaf")) { getByteLeafMethodFound = true; @@ -102,7 +94,6 @@ public class GeneratedTypesBitsTest { } } } - } assertTrue(byteTypeFound); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java index 47c275a71d..1d1e691bb3 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesLeafrefTest.java @@ -13,36 +13,24 @@ import static org.junit.Assert.assertNotSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.io.File; -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; 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.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GeneratedTypesLeafrefTest { @Test - public void testLeafrefResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - File abstractTopology = new File(getClass().getResource( - "/leafref-test-models/abstract-topology@2013-02-08.yang").toURI()); - File ietfInterfaces = new File(getClass().getResource("/ietf/ietf-interfaces.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - File ietfYangTypes = new File(getClass().getResource("/ietf/ietf-yang-types.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInterfaces, - ietfInetTypes, ietfYangTypes); + public void testLeafrefResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GeneratedTypesLeafrefTest.class, + "/leafref-test-models/abstract-topology@2013-02-08.yang", "/ietf/ietf-interfaces.yang", + "/ietf/ietf-inet-types.yang", "/ietf/ietf-yang-types.yang"); assertNotNull(context); assertEquals(4, context.getModules().size()); @@ -219,11 +207,8 @@ public class GeneratedTypesLeafrefTest { } @Test - public void testLeafrefInvalidPathResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - final URI resource = getClass().getResource("/leafref-test-invalid-model/foo.yang").toURI(); - assertNotNull(resource); - - final SchemaContext context = YangParserTestUtils.parseYangSources(new File(resource)); + public void testLeafrefInvalidPathResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/leafref-test-invalid-model/foo.yang"); assertNotNull(context); assertEquals(1, context.getModules().size()); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesStringTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesStringTest.java index 067ae8eb6e..3d22334574 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesStringTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesStringTest.java @@ -10,38 +10,21 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; -import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.Constant; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.ParameterizedType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GeneratedTypesStringTest { - private final static List testModels = new ArrayList<>(); - - @BeforeClass - public static void loadTestResources() throws URISyntaxException { - final File listModelFile = new File(GeneratedTypesStringTest.class.getResource("/simple-string-demo.yang") - .toURI()); - testModels.add(listModelFile); - } - @Test - public void constantGenerationTest() throws IOException, SourceException, ReactorException { - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void constantGenerationTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/simple-string-demo.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java index b47b3dd1cb..e53106f67b 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/GeneratedTypesTest.java @@ -11,9 +11,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; @@ -23,18 +20,14 @@ 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.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class GeneratedTypesTest { @Test - public void testMultipleModulesResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - File abstractTopology = new File(getClass().getResource("/abstract-topology.yang").toURI()); - File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInetTypes); + public void testMultipleModulesResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResources(GeneratedTypesTest.class, + "/abstract-topology.yang", "/ietf/ietf-inet-types.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -45,9 +38,8 @@ public class GeneratedTypesTest { } @Test - public void testContainerResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - final File testFile = new File(getClass().getResource("/simple-container-demo.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(testFile); + public void testContainerResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/simple-container-demo.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -130,9 +122,8 @@ public class GeneratedTypesTest { } @Test - public void testLeafListResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - final File testFile = new File(getClass().getResource("/simple-leaf-list-demo.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(testFile); + public void testLeafListResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/simple-leaf-list-demo.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -214,9 +205,8 @@ public class GeneratedTypesTest { } @Test - public void testListResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - final File testFile = new File(getClass().getResource("/simple-list-demo.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(testFile); + public void testListResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/simple-list-demo.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -337,9 +327,8 @@ public class GeneratedTypesTest { } @Test - public void testListCompositeKeyResolving() throws URISyntaxException, IOException, SourceException, ReactorException { - final File testFile = new File(getClass().getResource("/list-composite-key.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(testFile); + public void testListCompositeKeyResolving() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/list-composite-key.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -389,9 +378,8 @@ public class GeneratedTypesTest { } @Test - public void testGeneratedTypes() throws URISyntaxException, IOException, SourceException, ReactorException { - final File testFile = new File(getClass().getResource("/demo-topology.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(testFile); + public void testGeneratedTypes() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/demo-topology.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/IdentityrefTypeTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/IdentityrefTypeTest.java index b206cdfa9b..f0bc668e69 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/IdentityrefTypeTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/IdentityrefTypeTest.java @@ -11,7 +11,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.io.File; -import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; @@ -19,14 +18,11 @@ import java.util.List; import org.junit.Before; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.MethodSignature; import org.opendaylight.mdsal.binding.model.api.ParameterizedType; import org.opendaylight.mdsal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class IdentityrefTypeTest { @@ -54,13 +50,10 @@ public class IdentityrefTypeTest { * Test mainly for the method * TypeProviderImpl#provideTypeForIdentityref(IdentityrefTypeDefinition) * provideTypeForIdentityref} - * @throws ReactorException Reactor exception - * @throws SourceException Source exception - * @throws IOException IOException */ @Test - public void testIdentityrefYangBuiltInType() throws IOException, SourceException, ReactorException { - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void testIdentityrefYangBuiltInType() { + final SchemaContext context = YangParserTestUtils.parseYangFiles(testModels); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/TypeProviderIntegrationTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/TypeProviderIntegrationTest.java index 9b6005cf67..f5732bc8e0 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/TypeProviderIntegrationTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/TypeProviderIntegrationTest.java @@ -10,15 +10,13 @@ package org.opendaylight.mdsal.binding.generator.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import java.io.File; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.Set; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; @@ -33,23 +31,20 @@ public class TypeProviderIntegrationTest { private Module m; @BeforeClass - public static void setup() throws Exception { - File abstractTopology = new File(TypeProviderIntegrationTest.class.getResource("/type-provider/test.yang") - .toURI()); - File ietfInetTypes = new File(TypeProviderIntegrationTest.class.getResource("/ietf/ietf-inet-types.yang") - .toURI()); - context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInetTypes); + public static void setup() { + context = YangParserTestUtils.parseYangResources(TypeProviderIntegrationTest.class, "/type-provider/test.yang", + "/ietf/ietf-inet-types.yang"); assertNotNull(context); } @Before - public void init() throws ParseException { + public void init() { provider = new TypeProviderImpl(context); - m = context.findModuleByName("test", new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-08")); + m = context.findModule("test", Revision.of("2013-10-08")).get(); } @Test - public void testGetTypeDefaultConstructionBinary() throws ParseException { + public void testGetTypeDefaultConstructionBinary() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-binary"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -62,7 +57,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionBits() throws ParseException { + public void testGetTypeDefaultConstructionBits() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-bits"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -75,7 +70,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionBoolean() throws ParseException { + public void testGetTypeDefaultConstructionBoolean() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-boolean"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -88,7 +83,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionDecimal() throws ParseException { + public void testGetTypeDefaultConstructionDecimal() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-decimal64"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -101,7 +96,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionEmpty() throws ParseException { + public void testGetTypeDefaultConstructionEmpty() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-empty"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -114,7 +109,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionEnumeration() throws ParseException { + public void testGetTypeDefaultConstructionEnumeration() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-enumeration"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -127,7 +122,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionInt8() throws ParseException { + public void testGetTypeDefaultConstructionInt8() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int8"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -140,7 +135,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionInt16() throws ParseException { + public void testGetTypeDefaultConstructionInt16() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int16"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -153,7 +148,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionInt32() throws ParseException { + public void testGetTypeDefaultConstructionInt32() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int32"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -166,7 +161,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionInt64() throws ParseException { + public void testGetTypeDefaultConstructionInt64() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-int64"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -179,7 +174,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionLeafref1() throws ParseException { + public void testGetTypeDefaultConstructionLeafref1() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -192,7 +187,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionLeafref2() throws ParseException { + public void testGetTypeDefaultConstructionLeafref2() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-leafref1"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -205,7 +200,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionString() throws ParseException { + public void testGetTypeDefaultConstructionString() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-string"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -218,7 +213,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUint8() throws ParseException { + public void testGetTypeDefaultConstructionUint8() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint8"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -231,7 +226,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUint16() throws ParseException { + public void testGetTypeDefaultConstructionUint16() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint16"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -244,7 +239,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUint32() throws ParseException { + public void testGetTypeDefaultConstructionUint32() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint32"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -257,7 +252,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUint64() throws ParseException { + public void testGetTypeDefaultConstructionUint64() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-uint64"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -270,7 +265,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstruction() throws ParseException { + public void testGetTypeDefaultConstruction() { final QName leafNode = QName.create(m.getQNameModule(), "ip-leaf"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode); String actual = provider.getTypeDefaultConstruction(leaf); @@ -279,7 +274,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUnion() throws ParseException { + public void testGetTypeDefaultConstructionUnion() { final QName leafNode1 = QName.create(m.getQNameModule(), "leaf-union"); LeafSchemaNode leaf = (LeafSchemaNode) m.getDataChildByName(leafNode1); String actual = provider.getTypeDefaultConstruction(leaf); @@ -294,7 +289,7 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetTypeDefaultConstructionUnionNested() throws ParseException { + public void testGetTypeDefaultConstructionUnionNested() { final QName containerNode1 = QName.create(m.getQNameModule(), "c1"); ContainerSchemaNode c1 = (ContainerSchemaNode) m.getDataChildByName(containerNode1); final QName containerNode2 = QName.create(m.getQNameModule(), "c2"); @@ -310,8 +305,8 @@ public class TypeProviderIntegrationTest { } @Test - public void testGetParamNameFromType() throws ParseException { - m = context.findModuleByName("ietf-inet-types", new SimpleDateFormat("yyyy-MM-dd").parse("2010-09-24")); + public void testGetParamNameFromType() { + m = context.findModule("ietf-inet-types", Revision.of("2010-09-24")).get(); Set> types = m.getTypeDefinitions(); TypeDefinition ipv4 = null; TypeDefinition ipv6 = null; @@ -338,4 +333,4 @@ public class TypeProviderIntegrationTest { assertEquals("ipv4Prefix", provider.getParamNameFromType(ipv4Pref)); assertEquals("ipv6Prefix", provider.getParamNameFromType(ipv6Pref)); } -} \ No newline at end of file +} diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java index 300b2a2396..a12c1bdafd 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UnionTypeDefTest.java @@ -11,7 +11,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; -import java.io.File; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; @@ -25,10 +24,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class UnionTypeDefTest { @Test - public void unionTypeResolvingTest() throws Exception { - final File abstractTopology = new File(getClass().getResource("/union-test-models/abstract-topology.yang").toURI()); - final File ietfInetTypes = new File(getClass().getResource("/ietf/ietf-inet-types.yang").toURI()); - final SchemaContext context = YangParserTestUtils.parseYangSources(abstractTopology, ietfInetTypes); + public void unionTypeResolvingTest() { + final SchemaContext context = YangParserTestUtils.parseYangResources(UnionTypeDefTest.class, + "/union-test-models/abstract-topology.yang", "/ietf/ietf-inet-types.yang"); assertNotNull("context is null", context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -41,15 +39,15 @@ public class UnionTypeDefTest { } @Test - public void unionTypedefLeafrefTest() throws Exception { - final File yang = new File(getClass().getResource("/leafref_typedef_union/bug8449.yang").toURI()); - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(yang); + public void unionTypedefLeafrefTest() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource( + "/leafref_typedef_union/bug8449.yang"); assertNotNull(schemaContext); final List generateTypes = new BindingGeneratorImpl(false).generateTypes(schemaContext); assertNotNull(generateTypes); for (final Type type : generateTypes) { if (type.getName().equals("Cont")) { - final GeneratedType gt = ((GeneratedType) type); + final GeneratedType gt = (GeneratedType) type; assertNotNull(gt); final GeneratedType refType = gt.getEnclosedTypes().iterator().next(); for (final GeneratedProperty generatedProperty : refType.getProperties()) { diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UsesTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UsesTest.java index 7d07af7504..605757d8ed 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UsesTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/impl/UsesTest.java @@ -13,39 +13,21 @@ import static org.junit.Assert.assertTrue; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsInterface; import static org.opendaylight.mdsal.binding.generator.impl.SupportTestUtil.containsMethods; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; -import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; 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.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class UsesTest { - private static List loadTestResources(final String testFile) { - try { - final List testModels = new ArrayList<>(); - final File listModelFile = new File(UsesTest.class.getResource(testFile).toURI()); - testModels.add(listModelFile); - return testModels; - } catch (URISyntaxException e) { - throw new IllegalStateException(e); - } - } - @Test - public void usesInGroupingDependenciesTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-dependencies.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInGroupingDependenciesTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-dependencies.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -97,10 +79,9 @@ public class UsesTest { } @Test - public void usesInCaseTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-case.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInCaseTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-case.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -145,10 +126,9 @@ public class UsesTest { } @Test - public void usesInContainerTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-container.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInContainerTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-container.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -198,10 +178,9 @@ public class UsesTest { } @Test - public void usesInGroupingTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-grouping.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInGroupingTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-grouping.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -249,10 +228,9 @@ public class UsesTest { } @Test - public void usesInListTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-list.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInListTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-list.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -331,10 +309,9 @@ public class UsesTest { } @Test - public void usesInModulTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-modul.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInModulTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-modul.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -382,10 +359,9 @@ public class UsesTest { } @Test - public void usesInRpcTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-rpc.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInRpcTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-rpc.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -475,10 +451,9 @@ public class UsesTest { } @Test - public void usesInAugmentTest() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-augment.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInAugmentTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-augment.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -528,10 +503,9 @@ public class UsesTest { } @Test - public void usesInNotification() throws IOException, SourceException, ReactorException { - List testModels = loadTestResources("/uses-of-grouping/uses-of-grouping-notification.yang"); - - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + public void usesInNotification() { + final SchemaContext context = YangParserTestUtils.parseYangResource( + "/uses-of-grouping/uses-of-grouping-notification.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtilsTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtilsTest.java index 141d273344..b49f4b143d 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtilsTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/generator/util/YangSchemaUtilsTest.java @@ -22,13 +22,14 @@ import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.net.URI; import java.util.ArrayList; -import java.util.Date; import java.util.List; +import java.util.Optional; import org.junit.Before; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -41,15 +42,14 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; public class YangSchemaUtilsTest { - private static final AugmentationSchema AUGMENTATION_SCHEMA = mock(AugmentationSchema.class); + private static final AugmentationSchemaNode AUGMENTATION_SCHEMA = mock(AugmentationSchemaNode.class); private static final UnknownSchemaNode UNKNOWN_SCHEMA_NODE = mock(UnknownSchemaNode.class); - private static final QName Q_NAME = - QName.create(URI.create("testUri"), new Date(System.currentTimeMillis()), "foo_augment"); + private static final QName Q_NAME = QName.create(URI.create("testUri"), "foo_augment"); @Before public void setUp() throws Exception { doReturn(ImmutableList.of(UNKNOWN_SCHEMA_NODE)).when(AUGMENTATION_SCHEMA).getUnknownSchemaNodes(); - doReturn(QName.create(YangSchemaUtils.AUGMENT_IDENTIFIER)).when(UNKNOWN_SCHEMA_NODE).getNodeType(); + doReturn(QName.create("", YangSchemaUtils.AUGMENT_IDENTIFIER)).when(UNKNOWN_SCHEMA_NODE).getNodeType(); doReturn(Q_NAME).when(UNKNOWN_SCHEMA_NODE).getQName(); } @@ -85,9 +85,9 @@ public class YangSchemaUtilsTest { context = mock(SchemaContext.class); final Module container = mock(Module.class); - doReturn(null).when(context).findModuleByNamespaceAndRevision(any(), any()); + doReturn(Optional.empty()).when(context).findModule(any(QNameModule.class)); assertNull(YangSchemaUtils.findTypeDefinition(context, SchemaPath.create(qNames, false))); - doReturn(container).when(context).findModuleByNamespaceAndRevision(any(), any()); + doReturn(Optional.of(container)).when(context).findModule(any(QNameModule.class)); final DataSchemaNode node = mock(DataSchemaNode.class); doReturn(node).when(container).getDataChildByName((QName) any()); @@ -114,7 +114,7 @@ public class YangSchemaUtilsTest { final ChoiceSchemaNode choiceNode = mock(ChoiceSchemaNode.class, withSettings().extraInterfaces(DataSchemaNode.class)); doReturn(choiceNode).when(container).getDataChildByName((QName) any()); - final ChoiceCaseNode caseNode = mock(ChoiceCaseNode.class); + final CaseSchemaNode caseNode = mock(CaseSchemaNode.class); doReturn(caseNode).when(choiceNode).getCaseNodeByName((QName) any()); doReturn(ImmutableSet.of(typeDefinition)).when(caseNode).getTypeDefinitions(); assertEquals(typeDefinition, @@ -132,4 +132,4 @@ public class YangSchemaUtilsTest { throw e.getCause(); } } -} \ No newline at end of file +} diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypesTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypesTest.java index 64af70e8b4..2631d500ff 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypesTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/BaseYangTypesTest.java @@ -11,11 +11,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.InputStream; import java.math.BigDecimal; import java.math.BigInteger; -import java.util.Collections; -import java.util.List; import java.util.Set; import org.junit.BeforeClass; import org.junit.Test; @@ -29,12 +26,16 @@ import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint32TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint64TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; /** @@ -47,24 +48,22 @@ public class BaseYangTypesTest { private static BinaryTypeDefinition binary = null; private static DecimalTypeDefinition decimal64 = null; private static EnumTypeDefinition enumeration = null; - private static IntegerTypeDefinition int8 = null; - private static IntegerTypeDefinition int16 = null; - private static IntegerTypeDefinition int32 = null; - private static IntegerTypeDefinition int64 = null; + private static Int8TypeDefinition int8 = null; + private static Int16TypeDefinition int16 = null; + private static Int32TypeDefinition int32 = null; + private static Int64TypeDefinition int64 = null; private static StringTypeDefinition string = null; - private static UnsignedIntegerTypeDefinition uint8 = null; - private static UnsignedIntegerTypeDefinition uint16 = null; - private static UnsignedIntegerTypeDefinition uint32 = null; - private static UnsignedIntegerTypeDefinition uint64 = null; + private static Uint8TypeDefinition uint8 = null; + private static Uint16TypeDefinition uint16 = null; + private static Uint32TypeDefinition uint32 = null; + private static Uint64TypeDefinition uint64 = null; private static UnionTypeDefinition union = null; private static EmptyTypeDefinition empty = null; private static BooleanTypeDefinition bool = null; @BeforeClass - public static void setup() throws SourceException, ReactorException { - final List modelsToParse = Collections - .singletonList(BaseYangTypesTest.class.getResourceAsStream("/base-yang-types.yang")); - schemaContext = YangParserTestUtils.parseYangStreams(modelsToParse); + public static void setup() { + schemaContext = YangParserTestUtils.parseYangResource("/base-yang-types.yang"); assertNotNull(schemaContext); initTypeDefinitionsFromSchemaContext(); } @@ -85,40 +84,24 @@ public class BaseYangTypesTest { decimal64 = (DecimalTypeDefinition) baseType; } else if (baseType instanceof EnumTypeDefinition) { enumeration = (EnumTypeDefinition) baseType; - } else if (baseType instanceof IntegerTypeDefinition) { - String typeName = baseType.getQName().getLocalName(); - switch (typeName) { - case "int8": - int8 = (IntegerTypeDefinition) baseType; - break; - case "int16": - int16 = (IntegerTypeDefinition) baseType; - break; - case "int32": - int32 = (IntegerTypeDefinition) baseType; - break; - case "int64": - int64 = (IntegerTypeDefinition) baseType; - break; - } + } else if (baseType instanceof Int8TypeDefinition) { + int8 = (Int8TypeDefinition) baseType; + } else if (baseType instanceof Int16TypeDefinition) { + int16 = (Int16TypeDefinition) baseType; + } else if (baseType instanceof Int32TypeDefinition) { + int32 = (Int32TypeDefinition) baseType; + } else if (baseType instanceof Int64TypeDefinition) { + int64 = (Int64TypeDefinition) baseType; } else if (baseType instanceof StringTypeDefinition) { string = (StringTypeDefinition) baseType; - } else if (baseType instanceof UnsignedIntegerTypeDefinition) { - String typeName = baseType.getQName().getLocalName(); - switch (typeName) { - case "uint8": - uint8 = (UnsignedIntegerTypeDefinition) baseType; - break; - case "uint16": - uint16 = (UnsignedIntegerTypeDefinition) baseType; - break; - case "uint32": - uint32 = (UnsignedIntegerTypeDefinition) baseType; - break; - case "uint64": - uint64 = (UnsignedIntegerTypeDefinition) baseType; - break; - } + } else if (baseType instanceof Uint8TypeDefinition) { + uint8 = (Uint8TypeDefinition) baseType; + } else if (baseType instanceof Uint16TypeDefinition) { + uint16 = (Uint16TypeDefinition) baseType; + } else if (baseType instanceof Uint32TypeDefinition) { + uint32 = (Uint32TypeDefinition) baseType; + } else if (baseType instanceof Uint64TypeDefinition) { + uint64 = (Uint64TypeDefinition) baseType; } else if (baseType instanceof UnionTypeDefinition) { union = (UnionTypeDefinition) baseType; } else if (baseType instanceof EmptyTypeDefinition) { @@ -213,15 +196,18 @@ public class BaseYangTypesTest { public void javaTypeForRestrictedSchemaDefinitionTypeTest() { final TypeProvider typeProvider = BaseYangTypes.BASE_YANG_TYPES_PROVIDER; - Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary, BindingGeneratorUtil.getRestrictions(binary)); + Type javaType = typeProvider.javaTypeForSchemaDefinitionType(binary, binary, + BindingGeneratorUtil.getRestrictions(binary)); assertNotNull(javaType); assertEquals("byte[]", javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64, BindingGeneratorUtil.getRestrictions(decimal64)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(decimal64, decimal64, + BindingGeneratorUtil.getRestrictions(decimal64)); assertNotNull(javaType); assertEquals(BigDecimal.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration, BindingGeneratorUtil.getRestrictions(enumeration)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(enumeration, enumeration, + BindingGeneratorUtil.getRestrictions(enumeration)); assertNotNull(javaType); assertEquals(Enum.class.getCanonicalName(), javaType.getFullyQualifiedName()); @@ -229,47 +215,58 @@ public class BaseYangTypesTest { assertNotNull(javaType); assertEquals(Byte.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16, BindingGeneratorUtil.getRestrictions(int16)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(int16, int16, + BindingGeneratorUtil.getRestrictions(int16)); assertNotNull(javaType); assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32, BindingGeneratorUtil.getRestrictions(int32)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(int32, int32, + BindingGeneratorUtil.getRestrictions(int32)); assertNotNull(javaType); assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64, BindingGeneratorUtil.getRestrictions(int64)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(int64, int64, + BindingGeneratorUtil.getRestrictions(int64)); assertNotNull(javaType); assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string, BindingGeneratorUtil.getRestrictions(string)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(string, string, + BindingGeneratorUtil.getRestrictions(string)); assertNotNull(javaType); assertEquals(String.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8, BindingGeneratorUtil.getRestrictions(uint8)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(uint8, uint8, + BindingGeneratorUtil.getRestrictions(uint8)); assertNotNull(javaType); assertEquals(Short.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16, BindingGeneratorUtil.getRestrictions(uint16)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(uint16, uint16, + BindingGeneratorUtil.getRestrictions(uint16)); assertNotNull(javaType); assertEquals(Integer.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32, BindingGeneratorUtil.getRestrictions(uint32)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(uint32, uint32, + BindingGeneratorUtil.getRestrictions(uint32)); assertNotNull(javaType); assertEquals(Long.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64, BindingGeneratorUtil.getRestrictions(uint64)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(uint64, uint64, + BindingGeneratorUtil.getRestrictions(uint64)); assertNotNull(javaType); assertEquals(BigInteger.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union, BindingGeneratorUtil.getRestrictions(union)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(union, union, + BindingGeneratorUtil.getRestrictions(union)); assertNotNull(javaType); assertEquals("Union", javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty, BindingGeneratorUtil.getRestrictions(empty)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(empty, empty, + BindingGeneratorUtil.getRestrictions(empty)); assertNotNull(javaType); assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName()); - javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool, BindingGeneratorUtil.getRestrictions(bool)); + javaType = typeProvider.javaTypeForSchemaDefinitionType(bool, bool, + BindingGeneratorUtil.getRestrictions(bool)); assertNotNull(javaType); assertEquals(Boolean.class.getCanonicalName(), javaType.getFullyQualifiedName()); } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/Bug4621.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/Bug4621.java index 81b733b826..f4bd782a19 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/Bug4621.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/Bug4621.java @@ -9,14 +9,10 @@ package org.opendaylight.mdsal.binding.yang.types; import static org.junit.Assert.assertNotNull; -import java.io.File; -import java.io.FileNotFoundException; import java.net.URI; -import java.net.URISyntaxException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.opendaylight.mdsal.binding.yang.types.TypeProviderImpl; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -24,7 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class Bug4621 { @@ -33,11 +28,9 @@ public class Bug4621 { public ExpectedException expectedEx = ExpectedException.none(); @Test - public void bug4621test() throws FileNotFoundException, ReactorException, URISyntaxException { - File file = new File(getClass().getResource("/bug-4621/foo.yang").toURI()); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(file); - final Module moduleValid = schemaContext.findModuleByNamespace(new URI("foo")).iterator().next(); + public void bug4621test() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/bug-4621/foo.yang"); + final Module moduleValid = schemaContext.findModules(URI.create("foo")).iterator().next(); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); expectedEx.expect(IllegalArgumentException.class); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySortTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySortTest.java index 88ef1c4ffd..748f873ea2 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySortTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/GroupingDefinitionDependencySortTest.java @@ -17,7 +17,6 @@ import java.util.List; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; -import org.opendaylight.mdsal.binding.yang.types.GroupingDefinitionDependencySort; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -33,36 +32,37 @@ public class GroupingDefinitionDependencySortTest { List unsortedGroupingDefs = new ArrayList<>(); GroupingDefinition grp1 = mock(GroupingDefinition.class); - doReturn(SchemaPath.create(false, QName.create("Cont1"), QName.create("Cont2"))).when(grp1).getPath(); - doReturn(QName.create("leaf1")).when(grp1).getQName(); + doReturn(SchemaPath.create(false, QName.create("", "Cont1"), QName.create("", "Cont2"))).when(grp1).getPath(); + doReturn(QName.create("", "leaf1")).when(grp1).getQName(); doReturn(Collections.EMPTY_SET).when(grp1).getUses(); doReturn(Collections.EMPTY_SET).when(grp1).getGroupings(); doReturn(Collections.EMPTY_SET).when(grp1).getChildNodes(); GroupingDefinition grp2 = mock(GroupingDefinition.class); - doReturn(SchemaPath.create(false, QName.create("Cont1"))).when(grp2).getPath(); - doReturn(QName.create("leaf2")).when(grp2).getQName(); + doReturn(SchemaPath.create(false, QName.create("", "Cont1"))).when(grp2).getPath(); + doReturn(QName.create("", "leaf2")).when(grp2).getQName(); doReturn(Collections.EMPTY_SET).when(grp2).getUses(); doReturn(Collections.EMPTY_SET).when(grp2).getGroupings(); doReturn(Collections.EMPTY_SET).when(grp2).getChildNodes(); GroupingDefinition grp3 = mock(GroupingDefinition.class); - doReturn(SchemaPath.create(false, QName.create("Cont1"), QName.create("Cont2"))).when(grp3).getPath(); - doReturn(QName.create("leaf3")).when(grp3).getQName(); + doReturn(SchemaPath.create(false, QName.create("", "Cont1"), QName.create("", "Cont2"))).when(grp3).getPath(); + doReturn(QName.create("", "leaf3")).when(grp3).getQName(); doReturn(Collections.EMPTY_SET).when(grp3).getUses(); doReturn(Collections.EMPTY_SET).when(grp3).getGroupings(); doReturn(Collections.EMPTY_SET).when(grp3).getChildNodes(); GroupingDefinition grp4 = mock(GroupingDefinition.class); - doReturn(SchemaPath.create(false, QName.create("Cont1"), QName.create("Cont2"), QName.create("List1"))).when(grp4).getPath(); - doReturn(QName.create("leaf4")).when(grp4).getQName(); + doReturn(SchemaPath.create(false, QName.create("", "Cont1"), QName.create("", "Cont2"), + QName.create("", "List1"))).when(grp4).getPath(); + doReturn(QName.create("", "leaf4")).when(grp4).getQName(); doReturn(Collections.EMPTY_SET).when(grp4).getUses(); doReturn(Collections.EMPTY_SET).when(grp4).getGroupings(); doReturn(Collections.EMPTY_SET).when(grp4).getChildNodes(); GroupingDefinition grp5 = mock(GroupingDefinition.class); - doReturn(SchemaPath.create(false, QName.create("Cont1"))).when(grp5).getPath(); - doReturn(QName.create("leaf5")).when(grp5).getQName(); + doReturn(SchemaPath.create(false, QName.create("", "Cont1"))).when(grp5).getPath(); + doReturn(QName.create("", "leaf5")).when(grp5).getQName(); doReturn(Collections.EMPTY_SET).when(grp5).getUses(); doReturn(Collections.EMPTY_SET).when(grp5).getGroupings(); doReturn(Collections.EMPTY_SET).when(grp5).getChildNodes(); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullToStringInXpath.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullToStringInXpath.java index 7e6da75451..6c2c0b2e96 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullToStringInXpath.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullToStringInXpath.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.yang.types; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -25,7 +26,8 @@ import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; * Created by lukas on 9/17/14. */ public class LeafrefTypeWithNullToStringInXpath implements LeafrefTypeDefinition { - @Override public RevisionAwareXPath getPathStatement() { + @Override + public RevisionAwareXPath getPathStatement() { return new RevisionAwareXPath() { @Override public boolean isAbsolute() { @@ -39,39 +41,53 @@ public class LeafrefTypeWithNullToStringInXpath implements LeafrefTypeDefinition }; } - @Override public LeafrefTypeDefinition getBaseType() { + @Override + public LeafrefTypeDefinition getBaseType() { return null; } - @Override public String getUnits() { - return null; + @Override + public Optional getUnits() { + return Optional.empty(); } - @Override public Object getDefaultValue() { - return null; + @Override + public Optional getDefaultValue() { + return Optional.empty(); } - @Override public QName getQName() { + @Override + public QName getQName() { return null; } - @Override public SchemaPath getPath() { + @Override + public SchemaPath getPath() { return null; } - @Override public List getUnknownSchemaNodes() { + @Override + public List getUnknownSchemaNodes() { return null; } - @Override public String getDescription() { - return null; + @Override + public Optional getDescription() { + return Optional.empty(); } - @Override public String getReference() { - return null; + @Override + public Optional getReference() { + return Optional.empty(); } - @Override public Status getStatus() { + @Override + public Status getStatus() { return null; } + + @Override + public boolean requireInstance() { + return false; + } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullXpath.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullXpath.java index 65e6906c2f..1af28845db 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullXpath.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/LeafrefTypeWithNullXpath.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.yang.types; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -22,43 +23,58 @@ import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition; * @author Lukas Sedlak <lsedlak@cisco.com> */ public class LeafrefTypeWithNullXpath implements LeafrefTypeDefinition { - @Override public RevisionAwareXPath getPathStatement() { + @Override + public RevisionAwareXPath getPathStatement() { return null; } - @Override public LeafrefTypeDefinition getBaseType() { + @Override + public LeafrefTypeDefinition getBaseType() { return null; } - @Override public String getUnits() { - return null; + @Override + public Optional getUnits() { + return Optional.empty(); } - @Override public Object getDefaultValue() { - return null; + @Override + public Optional getDefaultValue() { + return Optional.empty(); } - @Override public QName getQName() { + @Override + public QName getQName() { return null; } - @Override public SchemaPath getPath() { + @Override + public SchemaPath getPath() { return null; } - @Override public List getUnknownSchemaNodes() { + @Override + public List getUnknownSchemaNodes() { return null; } - @Override public String getDescription() { - return null; + @Override + public Optional getDescription() { + return Optional.empty(); } - @Override public String getReference() { - return null; + @Override + public Optional getReference() { + return Optional.empty(); } - @Override public Status getStatus() { + @Override + public Status getStatus() { return null; } + + @Override + public boolean requireInstance() { + return false; + } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestIntegerTypeDefinition.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestIntegerTypeDefinition.java index 218e33f560..7875244713 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestIntegerTypeDefinition.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestIntegerTypeDefinition.java @@ -9,11 +9,12 @@ package org.opendaylight.mdsal.binding.yang.types; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.Status; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int8TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; /** @@ -21,45 +22,55 @@ import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; * * @author Lukas Sedlak <lsedlak@cisco.com> */ -final class TestIntegerTypeDefinition implements IntegerTypeDefinition { +final class TestIntegerTypeDefinition implements Int8TypeDefinition { - @Override public List getRangeConstraints() { + @Override + public Int8TypeDefinition getBaseType() { return null; } - @Override public IntegerTypeDefinition getBaseType() { - return null; + @Override + public Optional getUnits() { + return Optional.empty(); } - @Override public String getUnits() { - return null; + @Override + public Optional getDefaultValue() { + return Optional.empty(); } - @Override public Object getDefaultValue() { + @Override + public QName getQName() { return null; } - @Override public QName getQName() { + @Override + public SchemaPath getPath() { return null; } - @Override public SchemaPath getPath() { + @Override + public List getUnknownSchemaNodes() { return null; } - @Override public List getUnknownSchemaNodes() { - return null; + @Override + public Optional getDescription() { + return Optional.empty(); } - @Override public String getDescription() { - return null; + @Override + public Optional getReference() { + return Optional.empty(); } - @Override public String getReference() { + @Override + public Status getStatus() { return null; } - @Override public Status getStatus() { - return null; + @Override + public Optional> getRangeConstraint() { + return Optional.empty(); } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestLeafSchemaNode.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestLeafSchemaNode.java index 10b86e4d13..1df258a0e5 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestLeafSchemaNode.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TestLeafSchemaNode.java @@ -8,9 +8,18 @@ package org.opendaylight.mdsal.binding.yang.types; +import com.google.common.collect.ImmutableSet; +import java.util.Collection; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.*; +import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; +import org.opendaylight.yangtools.yang.model.api.MustDefinition; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; +import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.Status; +import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; /** * Mock Leaf Schema Node designated to increase branch coverage in test cases. @@ -18,55 +27,67 @@ import org.opendaylight.yangtools.yang.model.api.*; * @author Lukas Sedlak <lsedlak@cisco.com> */ public class TestLeafSchemaNode implements LeafSchemaNode { - @Override public TypeDefinition getType() { + @Override + public TypeDefinition getType() { return null; } - @Override public String getDefault() { - return null; - } - - @Override public String getUnits() { - return null; - } - - @Override public boolean isAugmenting() { + @Override + public boolean isAugmenting() { return false; } - @Override public boolean isAddedByUses() { + @Override + public boolean isAddedByUses() { return false; } - @Override public boolean isConfiguration() { + @Override + public boolean isConfiguration() { return false; } - @Override public ConstraintDefinition getConstraints() { + @Override + public QName getQName() { return null; } - @Override public QName getQName() { + @Override + public SchemaPath getPath() { return null; } - @Override public SchemaPath getPath() { + @Override + public List getUnknownSchemaNodes() { return null; } - @Override public List getUnknownSchemaNodes() { - return null; + @Override + public Optional getDescription() { + return Optional.empty(); } - @Override public String getDescription() { - return null; + @Override + public Optional getReference() { + return Optional.empty(); } - @Override public String getReference() { + @Override public Status getStatus() { return null; } - @Override public Status getStatus() { - return null; + @Override + public boolean isMandatory() { + return false; + } + + @Override + public Optional getWhenCondition() { + return Optional.empty(); + } + + @Override + public Collection getMustConstraints() { + return ImmutableSet.of(); } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImplTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImplTest.java index 0aa5658665..a9aeef6e59 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImplTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderImplTest.java @@ -16,7 +16,6 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.reset; -import java.io.File; import java.net.URI; import java.util.NoSuchElementException; import org.junit.Test; @@ -44,13 +43,11 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class TypeProviderImplTest { - @Test (expected = IllegalArgumentException.class) - public void testLeafRefRelativeSelfReference() throws Exception { - File relative = new File(getClass().getResource("/leafref/leafref-relative-invalid.yang").toURI()); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(relative); - final Module moduleRelative = schemaContext.findModuleByNamespace(new URI("urn:xml:ns:yang:lrr")).iterator() - .next(); + @Test(expected = IllegalArgumentException.class) + public void testLeafRefRelativeSelfReference() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource( + "/leafref/leafref-relative-invalid.yang"); + final Module moduleRelative = schemaContext.findModules(URI.create("urn:xml:ns:yang:lrr")).iterator().next(); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); final QName listNode = QName.create(moduleRelative.getQNameModule(), "neighbor"); @@ -63,13 +60,11 @@ public class TypeProviderImplTest { assertNotNull(leafrefResolvedType); } - @Test (expected = IllegalArgumentException.class) - public void testLeafRefAbsoluteSelfReference() throws Exception { - File relative = new File(getClass().getResource("/leafref/leafref-absolute-invalid.yang").toURI()); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(relative); - final Module moduleRelative = schemaContext.findModuleByNamespace(new URI("urn:xml:ns:yang:lra")).iterator() - .next(); + @Test(expected = IllegalArgumentException.class) + public void testLeafRefAbsoluteSelfReference() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource( + "/leafref/leafref-absolute-invalid.yang"); + final Module moduleRelative = schemaContext.findModules(URI.create("urn:xml:ns:yang:lra")).iterator().next(); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); final QName listNode = QName.create(moduleRelative.getQNameModule(), "neighbor"); @@ -83,12 +78,9 @@ public class TypeProviderImplTest { } @Test - public void testLeafRefRelativeAndAbsoluteValidReference() throws Exception { - File valid = new File(getClass().getResource("/leafref/leafref-valid.yang").toURI()); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(valid); - final Module moduleValid = schemaContext.findModuleByNamespace(new URI("urn:xml:ns:yang:lrv")).iterator() - .next(); + public void testLeafRefRelativeAndAbsoluteValidReference() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/leafref/leafref-valid.yang"); + final Module moduleValid = schemaContext.findModules(URI.create("urn:xml:ns:yang:lrv")).iterator().next(); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); final QName listNode = QName.create(moduleValid.getQNameModule(), "neighbor"); @@ -110,14 +102,12 @@ public class TypeProviderImplTest { } @Test - public void testMethodsOfTypeProviderImpl() throws Exception { - final File abstractTopology = new File(getClass().getResource("/base-yang-types.yang").toURI()); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSources(abstractTopology); + public void testMethodsOfTypeProviderImpl() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/base-yang-types.yang"); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); - final SchemaPath refTypePath = SchemaPath.create(true, QName.create("cont1"), QName.create("list1")); + final SchemaPath refTypePath = SchemaPath.create(true, QName.create("", "cont1"), QName.create("", "list1")); final GeneratedTypeBuilderImpl refType = new GeneratedTypeBuilderImpl("org.opendaylight.yangtools.test", "TestType"); typeProvider.putReferencedType(refTypePath, refType); @@ -126,7 +116,7 @@ public class TypeProviderImplTest { final LeafSchemaNode leafSchemaNode = mock(LeafSchemaNode.class); doReturn(stringType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); // test constructor assertNotNull(typeProvider); @@ -150,7 +140,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(binaryType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); assertEquals("new byte[] {-45}", typeProvider.getTypeDefaultConstruction(leafSchemaNode, "01")); @@ -160,7 +150,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(booleanType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); assertEquals("java.lang.Boolean.FALSE", typeProvider.getTypeDefaultConstruction(leafSchemaNode, "false")); @@ -171,7 +161,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(decimalType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); assertEquals("new java.math.BigDecimal(\"111\")", typeProvider.getTypeDefaultConstruction(leafSchemaNode, "111")); @@ -182,7 +172,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(emptyType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); assertEquals("java.lang.Boolean.valueOf(\"default value\")", typeProvider.getTypeDefaultConstruction( leafSchemaNode, "default value")); @@ -193,7 +183,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(enumType).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); try { assertEquals("\"default value\"", typeProvider.getTypeDefaultConstruction(leafSchemaNode, "default value")); @@ -211,7 +201,7 @@ public class TypeProviderImplTest { reset(leafSchemaNode); doReturn(identityRef).when(leafSchemaNode).getType(); doReturn(SchemaPath.ROOT).when(leafSchemaNode).getPath(); - doReturn(QName.create("Cont1")).when(leafSchemaNode).getQName(); + doReturn(QName.create("", "Cont1")).when(leafSchemaNode).getQName(); try { assertEquals("\"default value\"", typeProvider.getTypeDefaultConstruction(leafSchemaNode, "default value")); diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderModel.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderModel.java index 6349e65823..3c273db932 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderModel.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderModel.java @@ -7,12 +7,7 @@ */ package org.opendaylight.mdsal.binding.yang.types; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; /** @@ -23,24 +18,8 @@ public final class TypeProviderModel { public static final String TEST_TYPE_PROVIDER_MODULE_NAME = "test-type-provider"; - private static final String BASE_YANG_TYPES_PATH = "/base-yang-types.yang"; - private static final String TEST_TYPE_PROVIDER_PATH = "/"+TEST_TYPE_PROVIDER_MODULE_NAME+".yang"; - private static final String TEST_TYPE_PROVIDER_B_PATH = "/test-type-provider-b.yang"; - - private static InputStream getInputStream(final String resourceName) { - return TypeProviderModel.class.getResourceAsStream(resourceName); - } - - private static List provideTestModelStreams() { - final List arrayList = new ArrayList<>(); - - arrayList.add(getInputStream(BASE_YANG_TYPES_PATH)); - arrayList.add(getInputStream(TEST_TYPE_PROVIDER_PATH)); - arrayList.add(getInputStream(TEST_TYPE_PROVIDER_B_PATH)); - return arrayList; - } - - public static SchemaContext createTestContext() throws SourceException, ReactorException { - return YangParserTestUtils.parseYangStreams(provideTestModelStreams()); + public static SchemaContext createTestContext() { + return YangParserTestUtils.parseYangResources(TypeProviderModel.class, "/base-yang-types.yang", + "/" + TEST_TYPE_PROVIDER_MODULE_NAME + ".yang", "/test-type-provider-b.yang"); } } diff --git a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderTest.java b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderTest.java index fdd752336d..13143e7b49 100644 --- a/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderTest.java +++ b/binding/mdsal-binding-generator-impl/src/test/java/org/opendaylight/mdsal/binding/yang/types/TypeProviderTest.java @@ -13,7 +13,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.doReturn; +import com.google.common.collect.Range; import java.util.List; +import java.util.Optional; import java.util.Set; import org.junit.Before; import org.junit.Ignore; @@ -175,7 +177,7 @@ public class TypeProviderTest { assertEquals("base-yang-types", genTO.getModuleName()); assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.base.yang.types.rev140914", genTO.getPackageName()); assertEquals("YangInt8", genTO.getName()); - assertTrue(genTO.getProperties().size() == 1); + assertEquals(1, genTO.getProperties().size()); } @Test @@ -193,13 +195,13 @@ public class TypeProviderTest { final GeneratedTransferObject genTO = (GeneratedTransferObject) result; assertEquals("org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.base.yang.types.rev140914", genTO.getPackageName()); assertEquals("YangInt8Restricted", genTO.getName()); - assertTrue(genTO.getProperties().size() == 1); - final List rangeConstraints = genTO.getRestrictions().getRangeConstraints(); + assertEquals(1, genTO.getProperties().size()); + final Optional> rangeConstraints = genTO.getRestrictions().getRangeConstraint(); - assertTrue(!rangeConstraints.isEmpty()); - final RangeConstraint constraint = rangeConstraints.get(0); - assertEquals(1, constraint.getMin().intValue()); - assertEquals(100, constraint.getMax().intValue()); + assertTrue(rangeConstraints.isPresent()); + final Range constraint = rangeConstraints.get().getAllowedRanges().asRanges().iterator().next(); + assertEquals((byte) 1, constraint.lowerEndpoint()); + assertEquals((byte) 100, constraint.upperEndpoint()); } @Test @@ -319,7 +321,7 @@ public class TypeProviderTest { final QName leafListNode = QName.create(module.getQNameModule(), "enums"); final DataSchemaNode enumListNode = module.getDataChildByName(leafListNode); - assertNotNull("leaf-list enums is not present in root of module "+ module.getName(), enumNode); + assertNotNull("leaf-list enums is not present in root of module " + module.getName(), enumNode); assertTrue(enumListNode instanceof LeafListSchemaNode); final LeafListSchemaNode leafList = (LeafListSchemaNode) enumListNode; final TypeDefinition leafListType = leafList.getType(); @@ -338,8 +340,8 @@ public class TypeProviderTest { Type refType = new ReferencedTypeImpl(enumType.getPackageName(), enumType.getName()); ((TypeProviderImpl) provider).putReferencedType(enumLeafNode.getPath(), refType); - final LeafListSchemaNode enumListNode = provideLeafListNodeFromTopLevelContainer(this.testTypeProviderModule, "foo", - "list-of-enums"); + final LeafListSchemaNode enumListNode = provideLeafListNodeFromTopLevelContainer(this.testTypeProviderModule, + "foo", "list-of-enums"); final TypeDefinition enumLeafListTypedef = enumListNode.getType(); enumType = provider.javaTypeForSchemaDefinitionType(enumLeafListTypedef, enumListNode); diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java index 8c3d292b40..1039c71534 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtil.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; +import java.util.Optional; import org.opendaylight.mdsal.binding.model.api.AccessModifier; import org.opendaylight.mdsal.binding.model.api.Restrictions; import org.opendaylight.mdsal.binding.model.api.Type; @@ -37,12 +38,11 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; import org.opendaylight.yangtools.yang.model.util.type.DecimalTypeBuilder; @@ -69,8 +69,8 @@ public final class BindingGeneratorUtil { private static final Restrictions EMPTY_RESTRICTIONS = new Restrictions() { @Override - public List getLengthConstraints() { - return Collections.emptyList(); + public Optional getLengthConstraint() { + return Optional.empty(); } @Override @@ -79,8 +79,8 @@ public final class BindingGeneratorUtil { } @Override - public List getRangeConstraints() { - return Collections.emptyList(); + public Optional> getRangeConstraint() { + return Optional.empty(); } @Override @@ -106,7 +106,7 @@ public final class BindingGeneratorUtil { * @return string with the admissible parameter name */ public static String resolveJavaReservedWordEquivalency(final String parameterName) { - if ((parameterName != null) && BindingMapping.JAVA_RESERVED_WORDS.contains(parameterName)) { + if (parameterName != null && BindingMapping.JAVA_RESERVED_WORDS.contains(parameterName)) { return "_" + parameterName; } return parameterName; @@ -346,7 +346,7 @@ public final class BindingGeneratorUtil { char firstChar = correctStr.charAt(0); firstChar = uppercase ? Character.toUpperCase(firstChar) : Character.toLowerCase(firstChar); - if ((firstChar >= '0') && (firstChar <= '9')) { + if (firstChar >= '0' && firstChar <= '9') { return '_' + correctStr; } else { return firstChar + correctStr.substring(1); @@ -426,7 +426,7 @@ public final class BindingGeneratorUtil { } for (final MethodSignatureBuilder m : sortedCollection(SUID_MEMBER_COMPARATOR, to.getMethodDefinitions())) { - if (!(m.getAccessModifier().equals(AccessModifier.PRIVATE))) { + if (!m.getAccessModifier().equals(AccessModifier.PRIVATE)) { dout.writeUTF(m.getName()); dout.write(m.getAccessModifier().ordinal()); } @@ -440,13 +440,13 @@ public final class BindingGeneratorUtil { final byte[] hashBytes = SHA1_MD.get().digest(bout.toByteArray()); long hash = 0; for (int i = Math.min(hashBytes.length, 8) - 1; i >= 0; i--) { - hash = (hash << 8) | (hashBytes[i] & 0xFF); + hash = hash << 8 | hashBytes[i] & 0xFF; } return hash; } - private static List currentOrEmpty(final List current, final List base) { - return current.equals(base) ? ImmutableList.of() : current; + private static > T currentOrEmpty(final T current, final T base) { + return current.equals(base) ? (T)Optional.empty() : current; } private static boolean containsConstraint(final StringTypeDefinition type, final PatternConstraint constraint) { @@ -481,7 +481,7 @@ public final class BindingGeneratorUtil { public static Restrictions getRestrictions(final TypeDefinition type) { // Old parser generated types which actually contained based restrictions, but our code deals with that when // binding to core Java types. Hence we'll emit empty restrictions for base types. - if ((type == null) || (type.getBaseType() == null)) { + if (type == null || type.getBaseType() == null) { // Handling of decimal64 has changed in the new parser. It contains range restrictions applied to the type // directly, without an extended type. We need to capture such constraints. In order to retain behavior we // need to analyze the new semantics and see if the constraints have been overridden. To do that we @@ -495,7 +495,7 @@ public final class BindingGeneratorUtil { tmpBuilder.setFractionDigits(decimal.getFractionDigits()); final DecimalTypeDefinition tmp = tmpBuilder.build(); - if (!tmp.getRangeConstraints().equals(decimal.getRangeConstraints())) { + if (!tmp.getRangeConstraint().equals(decimal.getRangeConstraint())) { return new Restrictions() { @Override public boolean isEmpty() { @@ -503,8 +503,8 @@ public final class BindingGeneratorUtil { } @Override - public List getRangeConstraints() { - return decimal.getRangeConstraints(); + public Optional> getRangeConstraint() { + return decimal.getRangeConstraint(); } @Override @@ -513,8 +513,8 @@ public final class BindingGeneratorUtil { } @Override - public List getLengthConstraints() { - return ImmutableList.of(); + public Optional getLengthConstraint() { + return Optional.empty(); } }; } @@ -523,9 +523,9 @@ public final class BindingGeneratorUtil { return EMPTY_RESTRICTIONS; } - final List length; + final Optional length; final List pattern; - final List range; + final Optional> range; /* * Take care of extended types. @@ -543,73 +543,56 @@ public final class BindingGeneratorUtil { if (type instanceof BinaryTypeDefinition) { final BinaryTypeDefinition binary = (BinaryTypeDefinition)type; final BinaryTypeDefinition base = binary.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - length = currentOrEmpty(binary.getLengthConstraints(), base.getLengthConstraints()); + if (base != null && base.getBaseType() != null) { + length = currentOrEmpty(binary.getLengthConstraint(), base.getLengthConstraint()); } else { - length = binary.getLengthConstraints(); + length = binary.getLengthConstraint(); } pattern = ImmutableList.of(); - range = ImmutableList.of(); + range = Optional.empty(); } else if (type instanceof DecimalTypeDefinition) { - length = ImmutableList.of(); + length = Optional.empty(); pattern = ImmutableList.of(); final DecimalTypeDefinition decimal = (DecimalTypeDefinition)type; final DecimalTypeDefinition base = decimal.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(decimal.getRangeConstraints(), base.getRangeConstraints()); + if (base != null && base.getBaseType() != null) { + range = currentOrEmpty(decimal.getRangeConstraint(), base.getRangeConstraint()); } else { - range = decimal.getRangeConstraints(); + range = decimal.getRangeConstraint(); } - } else if (type instanceof IntegerTypeDefinition) { - length = ImmutableList.of(); + } else if (type instanceof RangeRestrictedTypeDefinition) { + // Integer-like types + length = Optional.empty(); pattern = ImmutableList.of(); - - final IntegerTypeDefinition integer = (IntegerTypeDefinition)type; - final IntegerTypeDefinition base = integer.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(integer.getRangeConstraints(), base.getRangeConstraints()); - } else { - range = integer.getRangeConstraints(); - } + range = extractRangeConstraint((RangeRestrictedTypeDefinition)type); } else if (type instanceof StringTypeDefinition) { final StringTypeDefinition string = (StringTypeDefinition)type; final StringTypeDefinition base = string.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - length = currentOrEmpty(string.getLengthConstraints(), base.getLengthConstraints()); + if (base != null && base.getBaseType() != null) { + length = currentOrEmpty(string.getLengthConstraint(), base.getLengthConstraint()); } else { - length = string.getLengthConstraints(); + length = string.getLengthConstraint(); } pattern = uniquePatterns(string); - range = ImmutableList.of(); - } else if (type instanceof UnsignedIntegerTypeDefinition) { - length = ImmutableList.of(); - pattern = ImmutableList.of(); - - final UnsignedIntegerTypeDefinition unsigned = (UnsignedIntegerTypeDefinition)type; - final UnsignedIntegerTypeDefinition base = unsigned.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(unsigned.getRangeConstraints(), base.getRangeConstraints()); - } else { - range = unsigned.getRangeConstraints(); - } + range = Optional.empty(); } else { - length = ImmutableList.of(); + length = Optional.empty(); pattern = ImmutableList.of(); - range = ImmutableList.of(); + range = Optional.empty(); } // Now, this may have ended up being empty, too... - if (length.isEmpty() && pattern.isEmpty() && range.isEmpty()) { + if (!length.isPresent() && pattern.isEmpty() && !range.isPresent()) { return EMPTY_RESTRICTIONS; } // Nope, not empty allocate a holder return new Restrictions() { @Override - public List getRangeConstraints() { + public Optional> getRangeConstraint() { return range; } @Override @@ -617,7 +600,7 @@ public final class BindingGeneratorUtil { return pattern; } @Override - public List getLengthConstraints() { + public Optional getLengthConstraint() { return length; } @Override @@ -627,6 +610,16 @@ public final class BindingGeneratorUtil { }; } + private static > Optional> + extractRangeConstraint(final T def) { + final T base = (T) def.getBaseType(); + if (base != null && base.getBaseType() != null) { + return currentOrEmpty(def.getRangeConstraint(), base.getRangeConstraint()); + } + + return def.getRangeConstraint(); + } + /** * Encodes angle brackets in yang statement description * @param description description of a yang statement which is used to generate javadoc comments diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java index 0feed8497e..70a7db6d77 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/Types.java @@ -8,16 +8,19 @@ package org.opendaylight.mdsal.binding.model.util; import com.google.common.base.CharMatcher; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; +import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Iterables; +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.Future; import javax.annotation.Nullable; @@ -32,7 +35,6 @@ import org.opendaylight.yangtools.yang.binding.Augmentation; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; -import org.opendaylight.yangtools.yang.model.util.BaseConstraints; public final class Types { private static final CacheLoader, ConcreteType> TYPE_LOADER = @@ -259,9 +261,7 @@ public final class Types { } /** - * * Represents concrete JAVA type with changed restriction values. - * */ private static final class BaseTypeWithRestrictionsImpl extends AbstractBaseType implements BaseTypeWithRestrictions { private final Restrictions restrictions; @@ -287,9 +287,7 @@ public final class Types { } /** - * * Represents parametrized JAVA type. - * */ private static class ParametrizedTypeImpl extends AbstractBaseType implements ParameterizedType { /** @@ -331,9 +329,7 @@ public final class Types { } /** - * * Represents JAVA bounded wildcard type. - * */ private static class WildcardTypeImpl extends AbstractBaseType implements WildcardType { /** @@ -349,20 +345,47 @@ public final class Types { } } - public static DefaultRestrictions getDefaultRestrictions(final T min, final T max) { + public static > DefaultRestrictions getDefaultRestrictions(final T min, + final T max) { return new DefaultRestrictions<>(min, max); } - private static final class DefaultRestrictions implements Restrictions { + private static final class DefaultRestrictions> implements Restrictions { private final T min; private final T max; - private final List rangeConstraints; + private final RangeConstraint rangeConstraint; private DefaultRestrictions(final T min, final T max) { this.min = Preconditions.checkNotNull(min); this.max = Preconditions.checkNotNull(max); - this.rangeConstraints = Collections.singletonList(BaseConstraints.newRangeConstraint(min, max, Optional - .absent(), Optional.absent())); + + this.rangeConstraint = new RangeConstraint() { + + @Override + public Optional getErrorAppTag() { + return Optional.empty(); + } + + @Override + public Optional getErrorMessage() { + return Optional.empty(); + } + + @Override + public Optional getDescription() { + return Optional.empty(); + } + + @Override + public Optional getReference() { + return Optional.empty(); + } + + @Override + public RangeSet getAllowedRanges() { + return ImmutableRangeSet.of(Range.closed(min, max)); + } + }; } @Override @@ -371,8 +394,8 @@ public final class Types { } @Override - public List getRangeConstraints() { - return this.rangeConstraints; + public Optional> getRangeConstraint() { + return Optional.of(rangeConstraint); } @Override @@ -381,8 +404,8 @@ public final class Types { } @Override - public List getLengthConstraints() { - return Collections.emptyList(); + public Optional getLengthConstraint() { + return Optional.empty(); } } } \ No newline at end of file diff --git a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/EnumerationBuilderImpl.java b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/EnumerationBuilderImpl.java index 7ee833c0bb..0eaac9ec98 100644 --- a/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/EnumerationBuilderImpl.java +++ b/binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/EnumerationBuilderImpl.java @@ -12,6 +12,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Objects; +import java.util.Optional; import org.opendaylight.mdsal.binding.model.api.AnnotationType; import org.opendaylight.mdsal.binding.model.api.Constant; import org.opendaylight.mdsal.binding.model.api.Enumeration; @@ -67,7 +68,7 @@ public final class EnumerationBuilderImpl extends AbstractBaseType implements En @Override public AnnotationTypeBuilder addAnnotation(final String packageName, final String name) { - if ((packageName != null) && (name != null)) { + if (packageName != null && name != null) { final AnnotationTypeBuilder builder = new AnnotationTypeBuilderImpl(packageName, name); if (!this.annotationBuilders.contains(builder)) { this.annotationBuilders = LazyCollections.lazyAdd(this.annotationBuilders, builder); @@ -114,7 +115,7 @@ public final class EnumerationBuilderImpl extends AbstractBaseType implements En if (enums != null) { for (final EnumPair enumPair : enums) { if (enumPair != null) { - this.addValue(enumPair.getName(), enumPair.getValue(), enumPair.getDescription()); + this.addValue(enumPair.getName(), enumPair.getValue(), enumPair.getDescription().orElse(null)); } } } @@ -159,8 +160,8 @@ public final class EnumerationBuilderImpl extends AbstractBaseType implements En public int hashCode() { final int prime = 31; int result = 1; - result = (prime * result) + Objects.hashCode(this.name); - result = (prime * result) + Objects.hashCode(this.value); + result = prime * result + Objects.hashCode(this.name); + result = prime * result + Objects.hashCode(this.value); return result; } @@ -203,13 +204,13 @@ public final class EnumerationBuilderImpl extends AbstractBaseType implements En } @Override - public String getDescription() { - return this.description; + public Optional getDescription() { + return Optional.ofNullable(description); } @Override - public String getReference() { - return null; + public Optional getReference() { + return Optional.empty(); } @Override @@ -280,7 +281,7 @@ public final class EnumerationBuilderImpl extends AbstractBaseType implements En builder.append(" ("); builder.append(valPair.getValue()); - if (i == (this.values.size() - 1)) { + if (i == this.values.size() - 1) { builder.append(" );"); } else { builder.append(" ),"); diff --git a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtilTest.java b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtilTest.java index d37e495ab8..861449dbb8 100644 --- a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtilTest.java +++ b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/BindingGeneratorUtilTest.java @@ -17,13 +17,12 @@ import static org.junit.Assert.fail; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; -import java.io.File; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Range; import java.io.Serializable; -import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.Set; import org.junit.Rule; import org.junit.Test; @@ -35,39 +34,30 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuil import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTypeBuilderImpl; import org.opendaylight.yangtools.yang.binding.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.stmt.ValueRange; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Int16TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.Uint16TypeDefinition; import org.opendaylight.yangtools.yang.model.util.BaseConstraints; import org.opendaylight.yangtools.yang.model.util.DataNodeIterator; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; import org.opendaylight.yangtools.yang.model.util.type.DerivedTypes; +import org.opendaylight.yangtools.yang.model.util.type.InvalidLengthConstraintException; import org.opendaylight.yangtools.yang.model.util.type.RestrictedTypes; import org.opendaylight.yangtools.yang.model.util.type.StringTypeBuilder; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BindingGeneratorUtilTest { - private static final SchemaPath ROOT_PATH = SchemaPath.create(true, QName.create("/root")); + private static final SchemaPath ROOT_PATH = SchemaPath.create(true, QName.create("test", "/root")); @Rule public ExpectedException expectedEx = ExpectedException.none(); - private static List loadTestResources(final String testFile) { - final List testModels = new ArrayList<>(); - File listModelFile; - try { - listModelFile = new File(BindingGeneratorUtilTest.class.getResource(testFile).toURI()); - } catch (URISyntaxException e) { - throw new IllegalArgumentException("Failed to load sources from " + testFile); - } - testModels.add(listModelFile); - return testModels; - } - /** * Tests methods: * <ul> @@ -80,10 +70,9 @@ public class BindingGeneratorUtilTest { * - without revision </ul> */ @Test - public void testBindingGeneratorUtilMethods() throws Exception { - List testModels = loadTestResources("/module.yang"); - - final Set modules = YangParserTestUtils.parseYangSources(testModels).getModules(); + public void testBindingGeneratorUtilMethods() { + final Set modules = YangParserTestUtils.parseYangResources(BindingGeneratorUtilTest.class, + "/module.yang").getModules(); String packageName = ""; Module module = null; for (Module m : modules) { @@ -93,7 +82,7 @@ public class BindingGeneratorUtilTest { assertNotNull("Module can't be null", module); // test of the method moduleNamespaceToPackageName() - packageName = BindingGeneratorUtil.moduleNamespaceToPackageName(module); + packageName = BindingMapping.getRootPackageName(module.getQNameModule()); assertEquals("Generated package name is incorrect.", "org.opendaylight.yang.gen.v1.urn.m.o.d.u.l.e.n.a.m.e.t.e.s.t._case._1digit.rev130910", packageName); @@ -309,26 +298,23 @@ public class BindingGeneratorUtilTest { } @Test - public void getRestrictionsTest() { - final Optional absent = Optional.absent(); + public void getRestrictionsTest() throws InvalidLengthConstraintException { + final Optional absent = Optional.empty(); final StringTypeBuilder builder = RestrictedTypes.newStringBuilder(BaseTypes.stringType(), ROOT_PATH); builder.addPatternConstraint(BaseConstraints.newPatternConstraint(".*", absent, absent)); - builder.setLengthAlternatives(ImmutableList.of( - BaseConstraints.newLengthConstraint(1, 2, absent, absent))); + builder.setLengthConstraint(mock(ConstraintMetaDefinition.class), ImmutableList.of(ValueRange.of(1, 2))); Restrictions restrictions = BindingGeneratorUtil.getRestrictions(builder.build()); assertNotNull(restrictions); - - assertEquals(1, restrictions.getLengthConstraints().size()); - assertEquals(0, restrictions.getRangeConstraints().size()); + assertEquals(ImmutableSet.of(Range.closed(1, 2)), + restrictions.getLengthConstraint().get().getAllowedRanges().asRanges()); + assertFalse(restrictions.getRangeConstraint().isPresent()); assertEquals(1, restrictions.getPatternConstraints().size()); assertFalse(restrictions.isEmpty()); - assertTrue(restrictions.getLengthConstraints().contains( - BaseConstraints.newLengthConstraint(1, 2, absent, absent))); assertTrue(restrictions.getPatternConstraints().contains( BaseConstraints.newPatternConstraint(".*", absent, absent))); } @@ -349,9 +335,9 @@ public class BindingGeneratorUtilTest { assertNotNull(restrictions); assertFalse(restrictions.isEmpty()); - assertEquals(((IntegerTypeDefinition) type.getBaseType()).getRangeConstraints(), - restrictions.getRangeConstraints()); - assertTrue(restrictions.getLengthConstraints().isEmpty()); + assertEquals(((Int16TypeDefinition) type.getBaseType()).getRangeConstraint(), + restrictions.getRangeConstraint()); + assertFalse(restrictions.getLengthConstraint().isPresent()); assertTrue(restrictions.getPatternConstraints().isEmpty()); } @@ -362,9 +348,9 @@ public class BindingGeneratorUtilTest { assertNotNull(restrictions); assertFalse(restrictions.isEmpty()); - assertEquals(((UnsignedIntegerTypeDefinition) type.getBaseType()).getRangeConstraints(), - restrictions.getRangeConstraints()); - assertTrue(restrictions.getLengthConstraints().isEmpty()); + assertEquals(((Uint16TypeDefinition) type.getBaseType()).getRangeConstraint(), + restrictions.getRangeConstraint()); + assertFalse(restrictions.getLengthConstraint().isPresent()); assertTrue(restrictions.getPatternConstraints().isEmpty()); } @@ -377,8 +363,8 @@ public class BindingGeneratorUtilTest { assertNotNull(restrictions); assertFalse(restrictions.isEmpty()); - assertEquals(base.getRangeConstraints(), restrictions.getRangeConstraints()); - assertTrue(restrictions.getLengthConstraints().isEmpty()); + assertEquals(base.getRangeConstraint(), restrictions.getRangeConstraint()); + assertFalse(restrictions.getLengthConstraint().isPresent()); assertTrue(restrictions.getPatternConstraints().isEmpty()); } } diff --git a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTOBuilderImplTest.java b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTOBuilderImplTest.java index 5abf56fb97..70bd4cdbd5 100644 --- a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTOBuilderImplTest.java +++ b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTOBuilderImplTest.java @@ -12,6 +12,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.List; +import java.util.Optional; import org.junit.Test; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; import org.opendaylight.mdsal.binding.model.api.Restrictions; @@ -92,8 +93,8 @@ public class GeneratedTOBuilderImplTest { } @Override - public List getRangeConstraints() { - return null; + public Optional> getRangeConstraint() { + return Optional.empty(); } @Override @@ -102,8 +103,8 @@ public class GeneratedTOBuilderImplTest { } @Override - public List getLengthConstraints() { - return null; + public Optional getLengthConstraint() { + return Optional.empty(); } }; genTOBuilder.setRestrictions(restrictions); diff --git a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTypeBuilderTest.java b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTypeBuilderTest.java index 079e702f0e..ebcaa626ec 100644 --- a/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTypeBuilderTest.java +++ b/binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTypeBuilderTest.java @@ -15,8 +15,6 @@ import static org.junit.Assert.assertTrue; import java.io.Serializable; import java.util.List; import org.junit.Test; -import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil; -import org.opendaylight.mdsal.binding.model.util.Types; import org.opendaylight.mdsal.binding.model.api.Constant; import org.opendaylight.mdsal.binding.model.api.Enumeration; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; @@ -28,6 +26,8 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBu import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder; +import org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil; +import org.opendaylight.mdsal.binding.model.util.Types; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -290,7 +290,7 @@ public class GeneratedTypeBuilderTest { generatedTypeBuilder.setDescription("My description ..."); generatedTypeBuilder.setModuleName("myModuleName"); generatedTypeBuilder.setReference("myReference"); - generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("/path")).getPathFromRoot()); + generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("test", "/path")).getPathFromRoot()); assertNotNull(generatedTypeBuilder.addComment("My comment..")); assertEquals( @@ -302,7 +302,7 @@ public class GeneratedTypeBuilderTest { assertEquals("My description ...", instance.getDescription()); assertEquals("myModuleName", instance.getModuleName()); assertEquals("myReference", instance.getReference()); - assertEquals(SchemaPath.create(true, QName.create("/path")).getPathFromRoot(), instance.getSchemaPath()); + assertEquals(SchemaPath.create(true, QName.create("test", "/path")).getPathFromRoot(), instance.getSchemaPath()); assertEquals("My comment..", instance.getComment()); } } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBigRangeGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBigRangeGenerator.java index 27f28ea080..fec0148623 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBigRangeGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractBigRangeGenerator.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.java.api.generator; import com.google.common.collect.Range; -import java.util.Collection; +import java.util.Set; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -36,7 +36,8 @@ abstract class AbstractBigRangeGenerator> exten } @Override - protected final String generateRangeCheckerImplementation(final String checkerName, @Nonnull final Collection constraints) { + protected final String generateRangeCheckerImplementation(final String checkerName, @Nonnull final RangeConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final String fieldName = checkerName.toUpperCase() + "_RANGES"; final StringBuilder sb = new StringBuilder(); @@ -50,9 +51,9 @@ abstract class AbstractBigRangeGenerator> exten .append(") java.lang.reflect.Array.newInstance(").append(RANGE).append(".class, ").append(constraints.size()).append(");\n"); int i = 0; - for (RangeConstraint r : constraints) { - final String min = format(getValue(r.getMin())); - final String max = format(getValue(r.getMax())); + for (Range r : constraints) { + final String min = format(getValue(r.lowerEndpoint())); + final String max = format(getValue(r.upperEndpoint())); sb.append(" a[").append(i++).append("] = ").append(RANGE).append(".closed(").append(min).append(", ").append(max).append(");\n"); } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractPrimitiveRangeGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractPrimitiveRangeGenerator.java index ef780a8bbd..549a75fe60 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractPrimitiveRangeGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractPrimitiveRangeGenerator.java @@ -12,6 +12,7 @@ import com.google.common.collect.Range; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Set; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.slf4j.Logger; @@ -47,14 +48,15 @@ abstract class AbstractPrimitiveRangeGenerator> return minValue.compareTo(minToEnforce) < 0; } - private Collection createExpressions(final Collection constraints) { + private Collection createExpressions(final RangeConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final Collection ret = new ArrayList<>(constraints.size()); - for (RangeConstraint r : constraints) { - final T min = getValue(r.getMin()); + for (Range r : constraints) { + final T min = getValue(r.lowerEndpoint()); final boolean needMin = needsMinimumEnforcement(min); - final T max = getValue(r.getMax()); + final T max = getValue(r.upperEndpoint()); final boolean needMax = needsMaximumEnforcement(max); if (!needMin && !needMax) { @@ -79,18 +81,20 @@ abstract class AbstractPrimitiveRangeGenerator> return ret; } - private String createRangeString(final Collection constraints) { + private String createRangeString(final RangeConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final List> ranges = new ArrayList<>(constraints.size()); - for (RangeConstraint c : constraints) { - ranges.add(Range.closed(getValue(c.getMin()), getValue(c.getMax()))); + for (Range c : constraints) { + ranges.add(Range.closed(getValue(c.lowerEndpoint()), getValue(c.upperEndpoint()))); } return ranges.toString(); } @Override - protected final String generateRangeCheckerImplementation(final String checkerName, final Collection constraints) { + protected final String generateRangeCheckerImplementation(final String checkerName, + final RangeConstraint constraints) { final StringBuilder sb = new StringBuilder(); final Collection expressions = createExpressions(constraints); diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java index 8a3f93cf5b..47aaa728d2 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/AbstractRangeGenerator.java @@ -10,7 +10,6 @@ package org.opendaylight.mdsal.binding.java.api.generator; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import java.util.Collection; import java.util.Map; import javax.annotation.Nonnull; import org.opendaylight.mdsal.binding.model.api.ConcreteType; @@ -85,7 +84,8 @@ abstract class AbstractRangeGenerator> { final AbstractRangeGenerator gen = GENERATORS.get(value.getClass().getName()); final Number check = gen.convert(ret); if (!value.equals(check)) { - LOG.warn("Number class conversion from {} to {} truncated value {} to {}", value.getClass(), type, value, ret); + LOG.warn("Number class conversion from {} to {} truncated value {} to {}", value.getClass(), type, value, + ret); } return ret; @@ -110,14 +110,14 @@ abstract class AbstractRangeGenerator> { * @param constraints Restrictions which need to be applied. * @return Method source code. */ - @Nonnull protected abstract String generateRangeCheckerImplementation(@Nonnull final String checkerName, @Nonnull final Collection constraints); + @Nonnull protected abstract String generateRangeCheckerImplementation(@Nonnull final String checkerName, + @Nonnull final RangeConstraint constraints); private static String rangeCheckerName(final String member) { return "check" + member + "Range"; } - String generateRangeChecker(@Nonnull final String member, @Nonnull final Collection constraints) { - Preconditions.checkArgument(!constraints.isEmpty(), "Restrictions may not be empty"); + String generateRangeChecker(@Nonnull final String member, @Nonnull final RangeConstraint constraints) { return generateRangeCheckerImplementation(rangeCheckerName(member), constraints); } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend index 7a8bd9a8b0..000dc9d116 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BaseTemplate.xtend @@ -16,6 +16,7 @@ import java.util.List import java.util.Map import java.util.StringTokenizer import java.util.regex.Pattern +import org.opendaylight.yangtools.yang.common.QName import org.opendaylight.mdsal.binding.model.api.ConcreteType import org.opendaylight.mdsal.binding.model.api.Constant import org.opendaylight.mdsal.binding.model.api.GeneratedProperty @@ -26,7 +27,6 @@ import org.opendaylight.mdsal.binding.model.api.Restrictions import org.opendaylight.mdsal.binding.model.api.Type import org.opendaylight.mdsal.binding.model.api.TypeMember import org.opendaylight.mdsal.binding.model.util.Types -import org.opendaylight.yangtools.yang.common.QName abstract class BaseTemplate { protected val GeneratedType type; @@ -408,8 +408,9 @@ abstract class BaseTemplate { def protected emitConstant(Constant c) ''' «IF c.value instanceof QName» «val qname = c.value as QName» + «val rev = qname.revision» public static final «c.type.importedName» «c.name» = «QName.name».create("«qname.namespace.toString»", - "«qname.formattedRevision»", "«qname.localName»").intern(); + «IF rev.isPresent»"«rev.get»", «ENDIF»"«qname.localName»").intern(); «ELSE» public static final «c.type.importedName» «c.name» = «c.value»; «ENDIF» diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend index 524d09f5df..877f26542b 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend @@ -440,21 +440,21 @@ class BuilderTemplate extends BaseTemplate { «/* FIXME: generate checkers as simple blocks and embed them directly in setters */» «val restrictions = field.returnType.restrictions» «IF !(field.returnType instanceof GeneratedType) && restrictions !== null» - «IF !restrictions.rangeConstraints.nullOrEmpty» + «IF restrictions.rangeConstraint.present» «val rangeGenerator = AbstractRangeGenerator.forType(field.returnType)» - «rangeGenerator.generateRangeChecker(field.name.toFirstUpper, restrictions.rangeConstraints)» + «rangeGenerator.generateRangeChecker(field.name.toFirstUpper, restrictions.rangeConstraint.get)» «ENDIF» - «IF !restrictions.lengthConstraints.nullOrEmpty» - «LengthGenerator.generateLengthChecker(field.fieldName.toString, field.returnType, restrictions.lengthConstraints)» + «IF restrictions.lengthConstraint.present» + «LengthGenerator.generateLengthChecker(field.fieldName.toString, field.returnType, restrictions.lengthConstraint.get)» «ENDIF» «ENDIF» public «type.name»«BUILDER» set«field.name.toFirstUpper»(final «field.returnType.importedName» value) { «IF !(field.returnType instanceof GeneratedType) && restrictions !== null» - «IF restrictions !== null && (!restrictions.rangeConstraints.nullOrEmpty || !restrictions.lengthConstraints.nullOrEmpty)» + «IF restrictions !== null && (restrictions.rangeConstraint.present || restrictions.lengthConstraint.present)» if (value != null) { - «IF !restrictions.rangeConstraints.nullOrEmpty» + «IF restrictions.rangeConstraint.present» «val rangeGenerator = AbstractRangeGenerator.forType(field.returnType)» «IF field.returnType instanceof ConcreteType» «rangeGenerator.generateRangeCheckerCall(field.name.toFirstUpper, "value")» @@ -462,7 +462,7 @@ class BuilderTemplate extends BaseTemplate { «rangeGenerator.generateRangeCheckerCall(field.name.toFirstUpper, "value.getValue()")» «ENDIF» «ENDIF» - «IF !restrictions.lengthConstraints.nullOrEmpty» + «IF restrictions.lengthConstraint.present» «IF field.returnType instanceof ConcreteType» «LengthGenerator.generateLengthCheckerCall(field.fieldName.toString, "value")» «ELSE» diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend index 592764ae76..d94f662fee 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/ClassTemplate.xtend @@ -84,7 +84,7 @@ class ClassTemplate extends BaseTemplate { this.consts = genType.constantDefinitions this.enclosedGeneratedTypes = genType.enclosedTypes - if (restrictions !== null && !restrictions.rangeConstraints.nullOrEmpty) { + if (restrictions !== null && restrictions.rangeConstraint.present) { rangeGenerator = AbstractRangeGenerator.forType(findProperty(genType, "value").returnType) Preconditions.checkNotNull(rangeGenerator) } else { @@ -122,11 +122,11 @@ class ClassTemplate extends BaseTemplate { «generateFields» «IF restrictions !== null» - «IF !restrictions.lengthConstraints.nullOrEmpty» - «LengthGenerator.generateLengthChecker("_value", findProperty(genTO, "value").returnType, restrictions.lengthConstraints)» + «IF restrictions.lengthConstraint.present» + «LengthGenerator.generateLengthChecker("_value", findProperty(genTO, "value").returnType, restrictions.lengthConstraint.get)» «ENDIF» - «IF !restrictions.rangeConstraints.nullOrEmpty» - «rangeGenerator.generateRangeChecker("_value", restrictions.rangeConstraints)» + «IF restrictions.rangeConstraint.present» + «rangeGenerator.generateRangeChecker("_value", restrictions.rangeConstraint.get)» «ENDIF» «ENDIF» @@ -283,12 +283,12 @@ class ClassTemplate extends BaseTemplate { def private generateRestrictions(Type type, String paramName, Type returnType) ''' «val restrictions = type.getRestrictions» «IF restrictions !== null» - «IF !restrictions.lengthConstraints.empty || !restrictions.rangeConstraints.empty» + «IF restrictions.lengthConstraint.present || restrictions.rangeConstraint.present» if («paramName» != null) { - «IF !restrictions.lengthConstraints.empty» + «IF restrictions.lengthConstraint.present» «LengthGenerator.generateLengthCheckerCall(paramName, paramValue(returnType, paramName))» «ENDIF» - «IF !restrictions.rangeConstraints.empty» + «IF restrictions.rangeConstraint.present» «rangeGenerator.generateRangeCheckerCall(paramName, paramValue(returnType, paramName))» «ENDIF» } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend index 6955603502..fc6e21238e 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/EnumTemplate.xtend @@ -106,7 +106,7 @@ class EnumTemplate extends BaseTemplate { def writeEnumeration(Enumeration enumeration) ''' «FOR v : enumeration.values SEPARATOR ",\n" AFTER ";"» - «writeEnumItem(v.name, v.mappedName, v.value, v.description)»« + «writeEnumItem(v.name, v.mappedName, v.value, v.description.orElse(null))»« ENDFOR» ''' } diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGenerator.java b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGenerator.java index 0e11d9c99c..177f2e75c8 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGenerator.java +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGenerator.java @@ -8,10 +8,9 @@ package org.opendaylight.mdsal.binding.java.api.generator; import com.google.common.collect.Range; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; -import java.util.List; +import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.mdsal.binding.model.api.Type; @@ -30,13 +29,14 @@ final class LengthGenerator { return "check" + member + "Length"; } - private static Collection createExpressions(final Collection constraints) { + private static Collection createExpressions(final LengthConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final Collection ret = new ArrayList<>(constraints.size()); - for (LengthConstraint l : constraints) { + for (Range l : constraints) { // We have to deal with restrictions being out of integer's range - final long min = l.getMin().longValue(); - final long max = l.getMax().longValue(); + final int min = l.lowerEndpoint().intValue(); + final int max = l.upperEndpoint().intValue(); if (min > 0 || max < Integer.MAX_VALUE) { final StringBuilder sb = new StringBuilder("length >"); @@ -59,20 +59,13 @@ final class LengthGenerator { return ret; } - private static String createLengthString(final Collection constraints) { - final List> ranges = new ArrayList<>(constraints.size()); - - for (LengthConstraint c : constraints) { - ranges.add(Range.closed(new BigInteger(c.getMin().toString()), new BigInteger(c.getMax().toString()))); - } - - return ranges.toString(); + private static String createLengthString(final LengthConstraint constraint) { + return new ArrayList<>(constraint.getAllowedRanges().asRanges()).toString(); } - private static String generateArrayLengthChecker(final String member, - final Collection constraints) { + private static String generateArrayLengthChecker(final String member, final LengthConstraint constraint) { final StringBuilder sb = new StringBuilder(); - final Collection expressions = createExpressions(constraints); + final Collection expressions = createExpressions(constraint); sb.append("private static void ").append(lengthCheckerName(member)).append("(final byte[] value) {\n"); @@ -86,7 +79,7 @@ final class LengthGenerator { } sb.append(" throw new IllegalArgumentException(String.format(\"Invalid length: %s, expected: ") - .append(createLengthString(constraints)).append(".\", java.util.Arrays.toString(value)));\n"); + .append(createLengthString(constraint)).append(".\", java.util.Arrays.toString(value)));\n"); } sb.append("}\n"); @@ -94,10 +87,9 @@ final class LengthGenerator { return sb.toString(); } - private static String generateStringLengthChecker(final String member, - final Collection constraints) { + private static String generateStringLengthChecker(final String member, final LengthConstraint constraint) { final StringBuilder sb = new StringBuilder(); - final Collection expressions = createExpressions(constraints); + final Collection expressions = createExpressions(constraint); sb.append("private static void ").append(lengthCheckerName(member)).append("(final String value) {\n"); @@ -111,7 +103,7 @@ final class LengthGenerator { } sb.append(" throw new IllegalArgumentException(String.format(\"Invalid length: %s, expected: ") - .append(createLengthString(constraints)).append(".\", value));\n"); + .append(createLengthString(constraint)).append(".\", value));\n"); } sb.append("}\n"); @@ -120,9 +112,9 @@ final class LengthGenerator { } static String generateLengthChecker(final String member, final Type type, - final Collection constraints) { + final LengthConstraint constraint) { return TypeUtils.getBaseYangType(type).getName().indexOf('[') != -1 - ? generateArrayLengthChecker(member, constraints) : generateStringLengthChecker(member, constraints); + ? generateArrayLengthChecker(member, constraint) : generateStringLengthChecker(member, constraint); } static String generateLengthCheckerCall(@Nullable final String member, @Nonnull final String valueReference) { diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/YangModuleInfoTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/YangModuleInfoTemplate.xtend index 5b791a57a6..e66f5b5344 100644 --- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/YangModuleInfoTemplate.xtend +++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/YangModuleInfoTemplate.xtend @@ -16,10 +16,7 @@ import com.google.common.base.Preconditions import com.google.common.collect.ImmutableSet import java.io.IOException import java.io.InputStream -import java.text.DateFormat -import java.text.SimpleDateFormat import java.util.Collections -import java.util.Date import java.util.HashSet import java.util.LinkedHashMap import java.util.Map @@ -27,7 +24,7 @@ import java.util.Optional import java.util.Set import java.util.TreeMap import java.util.function.Function -import org.eclipse.xtend.lib.Property +import org.eclipse.xtend.lib.annotations.Accessors import org.opendaylight.mdsal.binding.model.api.ParameterizedType import org.opendaylight.mdsal.binding.model.api.Type import org.opendaylight.mdsal.binding.model.api.WildcardType @@ -36,6 +33,7 @@ import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider import org.opendaylight.yangtools.yang.binding.YangModuleInfo import org.opendaylight.yangtools.yang.model.api.Module import org.opendaylight.yangtools.yang.model.api.SchemaContext +import org.opendaylight.yangtools.yang.common.Revision class YangModuleInfoTemplate { @@ -44,10 +42,10 @@ class YangModuleInfoTemplate { val Map importMap = new LinkedHashMap() val Function> moduleFilePathResolver - @Property + @Accessors val String packageName; - @Property + @Accessors val String modelBindingProviderName; new(Module module, SchemaContext ctx, Function> moduleFilePathResolver) { @@ -55,8 +53,8 @@ class YangModuleInfoTemplate { this.module = module this.ctx = ctx this.moduleFilePathResolver = moduleFilePathResolver - _packageName = getRootPackageName(module.getQNameModule()); - _modelBindingProviderName = '''«packageName».«MODEL_BINDING_PROVIDER_CLASS_NAME»'''; + packageName = getRootPackageName(module.getQNameModule()); + modelBindingProviderName = '''«packageName».«MODEL_BINDING_PROVIDER_CLASS_NAME»'''; } def String generate() { @@ -67,8 +65,11 @@ class YangModuleInfoTemplate { private final «String.importedName» name = "«module.name»"; private final «String.importedName» namespace = "«module.namespace.toString»"; - «val DateFormat df = new SimpleDateFormat("yyyy-MM-dd")» - private final «String.importedName» revision = "«df.format(module.revision)»"; + «IF module.revision.isPresent» + private final «String.importedName» revision = "«module.revision.get.toString»"; + «ELSE» + private final «String.importedName» revision = null; + «ENDIF» private final «String.importedName» resourcePath = "«sourcePath(module)»"; private final «Set.importedName» importedModules; @@ -112,7 +113,7 @@ class YangModuleInfoTemplate { «val rev = imp.revision» «IF rev === null» «val Set modules = ctx.modules» - «val TreeMap sorted = new TreeMap()» + «val TreeMap, Module> sorted = new TreeMap()» «FOR module : modules» «IF module.name.equals(name)» «sorted.put(module.revision, module)» @@ -120,7 +121,7 @@ class YangModuleInfoTemplate { «ENDFOR» set.add(«getRootPackageName(sorted.lastEntry().value.QNameModule)».«MODULE_INFO_CLASS_NAME».getInstance()); «ELSE» - set.add(«getRootPackageName((ctx.findModuleByName(name, rev).QNameModule))».«MODULE_INFO_CLASS_NAME».getInstance()); + set.add(«getRootPackageName((ctx.findModule(name, rev).get.QNameModule))».«MODULE_INFO_CLASS_NAME».getInstance()); «ENDIF» «ENDFOR» «ENDIF» @@ -308,8 +309,11 @@ class YangModuleInfoTemplate { private final «String.importedName» name = "«submodule.name»"; private final «String.importedName» namespace = "«submodule.namespace.toString»"; - «val DateFormat df = new SimpleDateFormat("yyyy-MM-dd")» - private final «String.importedName» revision = "«df.format(submodule.revision)»"; + «IF submodule.revision.isPresent» + private final «String.importedName» revision = "«submodule.revision.get.toString»"; + «ELSE» + private final «String.importedName» revision = null; + «ENDIF» private final «String.importedName» resourcePath = "«sourcePath(submodule)»"; private final «Set.importedName» importedModules; @@ -322,5 +326,4 @@ class YangModuleInfoTemplate { } «ENDFOR» ''' - } diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/ConstantsTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/ConstantsTest.java index 761abf12e5..1713ff93f7 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/ConstantsTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/ConstantsTest.java @@ -13,13 +13,12 @@ import static org.junit.Assert.assertNotNull; import java.lang.reflect.Constructor; import org.junit.Test; -import org.opendaylight.mdsal.binding.java.api.generator.Constants; public class ConstantsTest { @Test public void constructTest() throws Throwable { - final Constructor constructor = Constants.class.getDeclaredConstructor(); + final Constructor constructor = Constants.class.getDeclaredConstructor(); assertFalse(constructor.isAccessible()); constructor.setAccessible(true); assertNotNull(constructor.newInstance()); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/GeneratorUtilTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/GeneratorUtilTest.java index b1e3b82d83..471d86a494 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/GeneratorUtilTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/GeneratorUtilTest.java @@ -87,7 +87,7 @@ public class GeneratorUtilTest { @Test(expected = UnsupportedOperationException.class) public void constructTest() throws Throwable { - final Constructor constructor = GeneratorUtil.class.getDeclaredConstructor(); + final Constructor constructor = GeneratorUtil.class.getDeclaredConstructor(); constructor.setAccessible(true); try { constructor.newInstance(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGeneratorTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGeneratorTest.java index 8fa3df0d9f..b04c67a06d 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGeneratorTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/LengthGeneratorTest.java @@ -9,13 +9,12 @@ package org.opendaylight.mdsal.binding.java.api.generator; import java.lang.reflect.Constructor; import org.junit.Test; -import org.opendaylight.mdsal.binding.java.api.generator.LengthGenerator; public class LengthGeneratorTest { @Test(expected = UnsupportedOperationException.class) public void constructTest() throws Throwable { - final Constructor constructor = LengthGenerator.class.getDeclaredConstructor(); + final Constructor constructor = LengthGenerator.class.getDeclaredConstructor(); constructor.setAccessible(true); try { constructor.newInstance(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypeUtilsTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypeUtilsTest.java index 98c3c025eb..ab25a370f5 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypeUtilsTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/TypeUtilsTest.java @@ -14,7 +14,6 @@ import static org.mockito.Mockito.mock; import com.google.common.collect.ImmutableList; import java.lang.reflect.Constructor; import org.junit.Test; -import org.opendaylight.mdsal.binding.java.api.generator.TypeUtils; import org.opendaylight.mdsal.binding.model.api.ConcreteType; import org.opendaylight.mdsal.binding.model.api.GeneratedProperty; import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject; @@ -51,7 +50,7 @@ public class TypeUtilsTest { @Test(expected = UnsupportedOperationException.class) public void constructTest() throws Throwable { - final Constructor constructor = TypeUtils.class.getDeclaredConstructor(); + final Constructor constructor = TypeUtils.class.getDeclaredConstructor(); constructor.setAccessible(true); try { constructor.newInstance(); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/AugmentToUsesInAugmentCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/AugmentToUsesInAugmentCompilationTest.java index 9ccc6d3891..ab6f8b1b08 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/AugmentToUsesInAugmentCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/AugmentToUsesInAugmentCompilationTest.java @@ -11,6 +11,8 @@ import static org.junit.Assert.assertTrue; import com.google.common.collect.ImmutableSet; import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.List; @@ -23,14 +25,14 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class AugmentToUsesInAugmentCompilationTest extends BaseCompilationTest { @Test - public void testAugmentToUsesInAugment() throws Exception { + public void testAugmentToUsesInAugment() throws IOException, URISyntaxException { final File sourcesOutputDir = new File(CompilationTestUtils.GENERATOR_OUTPUT_PATH + CompilationTestUtils.FS + "augment-uses-to-augment"); assertTrue("Failed to create test file '" + sourcesOutputDir + "'", sourcesOutputDir.mkdir()); final File compiledOutputDir = new File(CompilationTestUtils.COMPILER_OUTPUT_PATH + CompilationTestUtils.FS + "augment-uses-to-augment"); assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); final List sourceFiles = CompilationTestUtils.getSourceFiles("/compilation/augment-uses-to-augment"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug1276Test.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug1276Test.java index 8dd59bd4e7..01d16e9552 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug1276Test.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug1276Test.java @@ -11,8 +11,10 @@ import static org.junit.Assert.assertTrue; import com.google.common.collect.ImmutableSet; import java.io.File; +import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.Method; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.Arrays; @@ -87,9 +89,10 @@ public class Bug1276Test extends BaseCompilationTest { CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir); } - private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { + private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { final List sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug5151Test.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug5151Test.java index eb00557eb3..328be8ef93 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug5151Test.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug5151Test.java @@ -15,6 +15,8 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; +import java.net.URISyntaxException; import java.util.List; import java.util.Map; import java.util.Scanner; @@ -70,9 +72,10 @@ public class Bug5151Test extends BaseCompilationTest { return false; } - private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { + private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { final List sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); @@ -87,9 +90,9 @@ public class Bug5151Test extends BaseCompilationTest { for (File file : dirFiles) { if (file.isDirectory()) { return getFiles(file, files); - } else { - files.put(file.getName(), file); } + + files.put(file.getName(), file); } return files; } diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug532Test.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug532Test.java index 410e233381..008dec2330 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug532Test.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/Bug532Test.java @@ -21,7 +21,9 @@ import static org.opendaylight.mdsal.binding.java.api.generator.test.Compilation import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import java.io.File; +import java.io.IOException; import java.lang.reflect.Constructor; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.List; @@ -110,9 +112,10 @@ public class Bug532Test extends BaseCompilationTest { cleanUp(sourcesOutputDir, compiledOutputDir); } - private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { + private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { final List sourceFiles = getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java index 9f42e58536..d164574bff 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CascadeUsesCompilationTest.java @@ -47,7 +47,7 @@ public class CascadeUsesCompilationTest extends BaseCompilationTest { assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); final List sourceFiles = getSourceFiles("/compilation/cascade-uses"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/ClassCodeGeneratorTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/ClassCodeGeneratorTest.java index 8a750aeed0..8fdb74c2d5 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/ClassCodeGeneratorTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/ClassCodeGeneratorTest.java @@ -12,12 +12,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.io.File; -import java.io.IOException; -import java.net.URISyntaxException; -import java.util.ArrayList; import java.util.List; -import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.mdsal.binding.generator.api.BindingGenerator; import org.opendaylight.mdsal.binding.generator.impl.BindingGeneratorImpl; @@ -31,25 +26,13 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.mdsal.binding.model.util.Types; import org.opendaylight.mdsal.binding.model.util.generated.type.builder.GeneratedTOBuilderImpl; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class ClassCodeGeneratorTest { - - private final static List testModels = new ArrayList<>(); - - @BeforeClass - public static void loadTestResources() throws URISyntaxException { - final File listModelFile = new File(ClassCodeGeneratorTest.class - .getResource("/list-composite-key.yang").toURI()); - testModels.add(listModelFile); - } - @Test - public void compositeKeyClassTest() throws IOException, SourceException, ReactorException { + public void compositeKeyClassTest() { - final SchemaContext context = YangParserTestUtils.parseYangSources(testModels); + final SchemaContext context = YangParserTestUtils.parseYangResource("/list-composite-key.yang"); assertNotNull(context); final BindingGenerator bindingGen = new BindingGeneratorImpl(true); @@ -83,7 +66,8 @@ public class ClassCodeGeneratorTest { final String outputStr = clsGen.generate(genTO); assertNotNull(outputStr); - assertTrue(outputStr.contains("public CompositeKeyListKey(java.lang.Byte _key1, java.lang.String _key2)")); + assertTrue(outputStr.contains( + "public CompositeKeyListKey(java.lang.Byte _key1, java.lang.String _key2)")); assertEquals(2, propertyCount); genTOsCount++; diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTest.java index d694c02999..734892f1e0 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTest.java @@ -15,6 +15,7 @@ import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Range; import java.io.File; +import java.io.IOException; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -23,6 +24,7 @@ import java.lang.reflect.ParameterizedType; import java.lang.reflect.WildcardType; import java.math.BigDecimal; import java.math.BigInteger; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; @@ -662,9 +664,10 @@ public class CompilationTest extends BaseCompilationTest { CompilationTestUtils.cleanUp(sourcesOutputDir, compiledOutputDir); } - private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { + private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { final List sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); Collections.sort(types, (o1, o2) -> o2.getName().compareTo(o1.getName())); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTestUtils.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTestUtils.java index 680bfbe1da..ad6e250319 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTestUtils.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/CompilationTestUtils.java @@ -21,6 +21,7 @@ import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.net.URI; +import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -396,20 +397,20 @@ public class CompilationTestUtils { return result; } - static List getSourceFiles(final String path) throws Exception { + static List getSourceFiles(final String path) throws FileNotFoundException, URISyntaxException { final URI resPath = BaseCompilationTest.class.getResource(path).toURI(); final File sourcesDir = new File(resPath); - if (sourcesDir.exists()) { - final List sourceFiles = new ArrayList<>(); - final File[] fileArray = sourcesDir.listFiles(); - if (fileArray == null) { - throw new IllegalArgumentException("Unable to locate files in " + sourcesDir); - } - sourceFiles.addAll(Arrays.asList(fileArray)); - return sourceFiles; - } else { + if (!sourcesDir.exists()) { throw new FileNotFoundException("Testing files were not found(" + sourcesDir.getName() + ")"); } + + final List sourceFiles = new ArrayList<>(); + final File[] fileArray = sourcesDir.listFiles(); + if (fileArray == null) { + throw new IllegalArgumentException("Unable to locate files in " + sourcesDir); + } + sourceFiles.addAll(Arrays.asList(fileArray)); + return sourceFiles; } static void deleteTestDir(final File file) { diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/EncodingInJavaDocTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/EncodingInJavaDocTest.java index ca0a131a01..2e6369baab 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/EncodingInJavaDocTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/EncodingInJavaDocTest.java @@ -38,7 +38,7 @@ public class EncodingInJavaDocTest extends BaseCompilationTest { assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); final List sourceFiles = getSourceFiles("/compilation/encoding-javadoc"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/NestedGroupingCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/NestedGroupingCompilationTest.java index a3230b8a5e..8b3c82c543 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/NestedGroupingCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/NestedGroupingCompilationTest.java @@ -21,6 +21,8 @@ import static org.opendaylight.mdsal.binding.java.api.generator.test.Compilation import com.google.common.collect.ImmutableSet; import java.io.File; +import java.io.IOException; +import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; import java.util.List; @@ -76,9 +78,10 @@ public class NestedGroupingCompilationTest extends BaseCompilationTest { cleanUp(sourcesOutputDir, compiledOutputDir); } - private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { + private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) + throws IOException, URISyntaxException { final List sourceFiles = getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/TypedefCompilationTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/TypedefCompilationTest.java index 53e6b1f9a1..3b0c0fe38e 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/TypedefCompilationTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/TypedefCompilationTest.java @@ -45,7 +45,7 @@ public class TypedefCompilationTest extends BaseCompilationTest { assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); final List sourceFiles = CompilationTestUtils.getSourceFiles("/compilation/typedef"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionTypedefUnusedImportTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionTypedefUnusedImportTest.java index 0aacf1e882..cfa2e7a1a8 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionTypedefUnusedImportTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionTypedefUnusedImportTest.java @@ -41,7 +41,7 @@ public class UnionTypedefUnusedImportTest extends BaseCompilationTest { assertTrue("Failed to create test file '" + compiledOutputDir + "'", compiledOutputDir.mkdir()); final List sourceFiles = getSourceFiles("/compilation/union-typedef"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(new HashSet<>(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionWithIdentityrefTest.java b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionWithIdentityrefTest.java index 60d1aeecf7..a8478097d3 100644 --- a/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionWithIdentityrefTest.java +++ b/binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/test/UnionWithIdentityrefTest.java @@ -71,7 +71,7 @@ public class UnionWithIdentityrefTest extends BaseCompilationTest { private void generateTestSources(final String resourceDirPath, final File sourcesOutputDir) throws Exception { final List sourceFiles = CompilationTestUtils.getSourceFiles(resourceDirPath); - final SchemaContext context = YangParserTestUtils.parseYangSources(sourceFiles); + final SchemaContext context = YangParserTestUtils.parseYangFiles(sourceFiles); final List types = bindingGenerator.generateTypes(context); final GeneratorJavaFile generator = new GeneratorJavaFile(ImmutableSet.copyOf(types)); generator.generateToFile(sourcesOutputDir); diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/class-name-collision b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/class-name-collision.yang similarity index 100% rename from binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/class-name-collision rename to binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/class-name-collision.yang diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/configuration b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/configuration.yang similarity index 100% rename from binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/configuration rename to binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/configuration.yang diff --git a/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/other-module b/binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/other-module.yang similarity index 100% rename from binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/other-module rename to binding/mdsal-binding-java-api-generator/src/test/resources/compilation/class-name-collision/other-module.yang diff --git a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/BindingMapping.java b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/BindingMapping.java index 13ff3cd7b6..c971713763 100644 --- a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/BindingMapping.java +++ b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/BindingMapping.java @@ -10,16 +10,18 @@ package org.opendaylight.yangtools.yang.binding; import static com.google.common.base.Preconditions.checkArgument; import com.google.common.base.CharMatcher; +import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Interner; import com.google.common.collect.Interners; -import java.text.SimpleDateFormat; +import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; public final class BindingMapping { @@ -51,19 +53,6 @@ public final class BindingMapping { public static final String RPC_INPUT_SUFFIX = "Input"; public static final String RPC_OUTPUT_SUFFIX = "Output"; - private static final ThreadLocal PACKAGE_DATE_FORMAT = new ThreadLocal() { - - @Override - protected SimpleDateFormat initialValue() { - return new SimpleDateFormat("yyMMdd"); - } - - @Override - public void set(final SimpleDateFormat value) { - throw new UnsupportedOperationException(); - } - }; - private static final Interner PACKAGE_INTERNER = Interners.newWeakInterner(); private BindingMapping() { @@ -112,8 +101,20 @@ public final class BindingMapping { if (chars[chars.length - 1] != '.') { packageNameBuilder.append('.'); } - packageNameBuilder.append("rev"); - packageNameBuilder.append(PACKAGE_DATE_FORMAT.get().format(module.getRevision())); + + final Optional optRev = module.getRevision(); + if (optRev.isPresent()) { + // Revision is in format 2017-10-26, we want the output to be 171026, which is a matter of picking the + // right characters. + final String rev = optRev.get().toString(); + Preconditions.checkArgument(rev.length() == 10, "Unsupported revision %s", rev); + packageNameBuilder.append("rev"); + packageNameBuilder.append(rev.substring(2, 4)).append(rev.substring(5, 7)).append(rev.substring(8)); + } else { + // No-revision packages are special + packageNameBuilder.append("norev"); + } + return normalizePackageName(packageNameBuilder.toString()); } diff --git a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/BindingReflections.java b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/BindingReflections.java index 98a50b51ec..2e682d7605 100644 --- a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/BindingReflections.java +++ b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/BindingReflections.java @@ -47,6 +47,7 @@ import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -241,7 +242,7 @@ public final class BindingReflections { } public static QNameModule getQNameModule(final YangModuleInfo modInfo) { - return QNameModule.create(URI.create(modInfo.getNamespace()), QName.parseRevision(modInfo.getRevision())); + return QNameModule.create(URI.create(modInfo.getNamespace()), Revision.ofNullable(modInfo.getRevision())); } /** diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/BindingMappingTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/BindingMappingTest.java index 396920f119..3d9c59e236 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/BindingMappingTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/BindingMappingTest.java @@ -16,25 +16,25 @@ import static org.junit.Assert.fail; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.net.URI; -import java.util.Date; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; public class BindingMappingTest { @Test - public void basicTest() throws Exception { + public void basicTest() { assertTrue(BindingMapping.getRootPackageName(QName.create(QNameModule.create(URI.create("test:URI"), - new Date(System.currentTimeMillis())), "test")).contains("test.uri")); + Revision.of("2017-10-26")), "test")).contains("test.uri")); assertNull(BindingMapping.normalizePackageName(null)); assertTrue(BindingMapping.normalizePackageName("1testpublic").contains("_1testpublic")); assertTrue(BindingMapping.getMethodName(QName.create("testNS", "testLocalName")).equals("testLocalName")); assertTrue(BindingMapping.getMethodName("TestYangIdentifier").equals("testYangIdentifier")); assertTrue(BindingMapping.getClassName(QName.create("testNS", "testClass")).equals("TestClass")); assertTrue(BindingMapping.getClassName("testClass").equals("TestClass")); - assertTrue(BindingMapping.getGetterSuffix(QName.create("test")).equals("Test")); - assertTrue(BindingMapping.getGetterSuffix(QName.create("class")).equals("XmlClass")); + assertTrue(BindingMapping.getGetterSuffix(QName.create("test", "test")).equals("Test")); + assertTrue(BindingMapping.getGetterSuffix(QName.create("test", "class")).equals("XmlClass")); assertTrue(BindingMapping.getPropertyName("Test").equals("test")); assertTrue(BindingMapping.getPropertyName("test").equals("test")); assertTrue(BindingMapping.getPropertyName("Class").equals("xmlClass")); @@ -57,4 +57,4 @@ public class BindingMappingTest { throw e.getCause(); } } -} \ No newline at end of file +} diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierTest.java index fa88d4a29c..62f55028f1 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierTest.java @@ -160,7 +160,7 @@ public class InstanceIdentifierTest { final InstanceIdentifierBuilder instanceIdentifierBuilder = instanceIdentifier1.builder(); assertEquals(instanceIdentifier1.hashCode(), instanceIdentifierBuilder.hashCode()); assertNotNull(instanceIdentifierBuilder.augmentation(InstantiatedFoo.class)); - assertNotNull(instanceIdentifierBuilder.toInstance()); + assertNotNull(instanceIdentifierBuilder.build()); } @Test @@ -185,7 +185,7 @@ public class InstanceIdentifierTest { @Test public void keyOfTest() throws Exception { - final Identifier identifier = mock(Identifier.class); + final Identifier identifier = mock(Identifier.class); assertEquals(identifier, InstanceIdentifier.keyOf( new KeyedInstanceIdentifier(Identifiable.class, ImmutableList.of(), false, 0, identifier))); } @@ -202,7 +202,7 @@ public class InstanceIdentifierTest { final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); final ObjectInputStream inputStream = new ObjectInputStream(byteArrayInputStream); - final InstanceIdentifier deserialized = (InstanceIdentifier) inputStream.readObject(); + final InstanceIdentifier deserialized = (InstanceIdentifier) inputStream.readObject(); assertEquals(instanceIdentifier, deserialized); } diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/KeyedInstanceIdentifierTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/KeyedInstanceIdentifierTest.java index ff4016c215..927c310003 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/KeyedInstanceIdentifierTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/KeyedInstanceIdentifierTest.java @@ -18,9 +18,9 @@ import org.junit.Test; public class KeyedInstanceIdentifierTest { @Test - public void basicTest() throws Exception { - final Identifier key = mock(Identifier.class); - final KeyedInstanceIdentifier keyedInstanceIdentifier = + public void basicTest() { + final Identifier key = mock(Identifier.class); + final KeyedInstanceIdentifier keyedInstanceIdentifier = new KeyedInstanceIdentifier(Identifiable.class, ImmutableList.of(), false, 0, key); assertEquals(key, keyedInstanceIdentifier.getKey()); diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/Nodes.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/Nodes.java index 4515451cea..1fddcb1e9d 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/Nodes.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/Nodes.java @@ -11,9 +11,7 @@ import org.opendaylight.yangtools.yang.binding.ChildOf; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.DataRoot; -public interface Nodes extends // - ChildOf, // - DataObject { +public interface Nodes extends ChildOf, DataObject { - Iterable getNode(); + Iterable getNode(); } diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/AbstractMappedRpcInvokerTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/AbstractMappedRpcInvokerTest.java index bffba5f59f..fa2d0409ac 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/AbstractMappedRpcInvokerTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/AbstractMappedRpcInvokerTest.java @@ -43,26 +43,26 @@ public class AbstractMappedRpcInvokerTest { final RpcServiceInvoker testRpcInvoker = new TestRpcInvokerImpl(ImmutableMap.of( - "tstWithoutInput", methodWithoutInput, - "tstWithInput", methodWithInput)); + "(test)tstWithoutInput", methodWithoutInput, + "(test)tstWithInput", methodWithInput)); final Field testInvokerMapField = testRpcInvoker.getClass().getSuperclass().getDeclaredField("map"); testInvokerMapField.setAccessible(true); final Map testInvokerMap = (Map) testInvokerMapField.get(testRpcInvoker); - assertTrue(testInvokerMap.get("tstWithInput") instanceof RpcMethodInvokerWithInput); - assertTrue(testInvokerMap.get("tstWithoutInput") instanceof RpcMethodInvokerWithoutInput); + assertTrue(testInvokerMap.get("(test)tstWithInput") instanceof RpcMethodInvokerWithInput); + assertTrue(testInvokerMap.get("(test)tstWithoutInput") instanceof RpcMethodInvokerWithoutInput); final Crate crateWithoutInput = - (Crate) testRpcInvoker.invokeRpc(rpcService, QName.create("tstWithoutInput"), null).get(); + (Crate) testRpcInvoker.invokeRpc(rpcService, QName.create("test", "tstWithoutInput"), null).get(); assertEquals(TestRpcService.methodWithoutInput(rpcService).get().getRpcService(), crateWithoutInput.getRpcService()); assertFalse(crateWithoutInput.getDataObject().isPresent()); final DataObject dataObject = mock(DataObject.class); final Crate crateWithInput = - (Crate) testRpcInvoker.invokeRpc(rpcService, QName.create("tstWithInput"), dataObject).get(); + (Crate) testRpcInvoker.invokeRpc(rpcService, QName.create("test", "tstWithInput"), dataObject).get(); assertEquals(TestRpcService.methodWithInput(rpcService, dataObject).get().getRpcService(), crateWithInput.getRpcService()); assertTrue(crateWithInput.getDataObject().isPresent()); @@ -71,12 +71,12 @@ public class AbstractMappedRpcInvokerTest { private class TestRpcInvokerImpl extends AbstractMappedRpcInvoker { - TestRpcInvokerImpl(Map map) { + TestRpcInvokerImpl(final Map map) { super(map); } @Override - protected String qnameToKey(QName qname) { + protected String qnameToKey(final QName qname) { return qname.toString(); } } @@ -85,7 +85,7 @@ public class AbstractMappedRpcInvokerTest { private final RpcService rpcService; private final ThreadLocal> dataObject; - Crate(@Nonnull RpcService rpcService, @Nullable DataObject dataObject) { + Crate(@Nonnull final RpcService rpcService, @Nullable final DataObject dataObject) { this.rpcService = rpcService; this.dataObject = new ThreadLocal>() { @Override @@ -105,11 +105,11 @@ public class AbstractMappedRpcInvokerTest { } static class TestRpcService implements RpcService { - static Future methodWithoutInput(RpcService testArgument) { + static Future methodWithoutInput(final RpcService testArgument) { return Futures.immediateFuture(new Crate(testArgument, null)); } - static Future methodWithInput(RpcService testArgument, DataObject testArgument2) { + static Future methodWithInput(final RpcService testArgument, final DataObject testArgument2) { return Futures.immediateFuture(new Crate(testArgument, testArgument2)); } } diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/BindingReflectionsTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/BindingReflectionsTest.java index bcd64d86b2..0d7e5bd357 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/BindingReflectionsTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/BindingReflectionsTest.java @@ -58,7 +58,7 @@ public class BindingReflectionsTest { assertFalse(BindingReflections.resolveRpcOutputClass( TestImplementation.class.getDeclaredMethod("rpcMethodTest2")).isPresent()); - assertTrue(BindingReflections.getQName(TestImplementation.class).toString().equals("test")); + assertEquals(QName.create("test", "test"), BindingReflections.getQName(TestImplementation.class)); } @Test(expected = UnsupportedOperationException.class) @@ -76,13 +76,13 @@ public class BindingReflectionsTest { private static final class TestImplementation extends BaseIdentity implements Augmentation, RpcService { - public static final QName QNAME = QName.create("test"); + public static final QName QNAME = QName.create("test", "test"); Future> rpcMethodTest() { return null; } - Future rpcMethodTest2() { + Future rpcMethodTest2() { return null; } } diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/LocalNameRpcServiceInvokerTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/LocalNameRpcServiceInvokerTest.java index 12344ba060..ba99b97bde 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/LocalNameRpcServiceInvokerTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/LocalNameRpcServiceInvokerTest.java @@ -12,24 +12,25 @@ import static org.mockito.Mockito.mock; import com.google.common.collect.ImmutableMap; import java.net.URI; -import java.util.Date; import org.junit.BeforeClass; import org.junit.Test; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; public class LocalNameRpcServiceInvokerTest { private static RpcServiceInvoker rpcServiceInvoker; - private static final QNameModule Q_NAME_MODULE = - QNameModule.create(URI.create("testURI"), new Date(System.currentTimeMillis())); + private static final QNameModule Q_NAME_MODULE = QNameModule.create(URI.create("testURI"), + Revision.of("2017-10-26")); private static final RpcService RPC_SERVICE = mock(RpcService.class); @BeforeClass public static void setUp() throws Exception { rpcServiceInvoker = LocalNameRpcServiceInvoker.instanceFor( - Q_NAME_MODULE, ImmutableMap.of(QName.create("test"), Object.class.getDeclaredMethod("hashCode"))); + Q_NAME_MODULE, ImmutableMap.of(QName.create(Q_NAME_MODULE, "test"), + Object.class.getDeclaredMethod("hashCode"))); assertNotNull(rpcServiceInvoker); } @@ -41,6 +42,6 @@ public class LocalNameRpcServiceInvokerTest { @Test(expected = IllegalArgumentException.class) public void qnameToKeyWithNullTest() throws Exception { - rpcServiceInvoker.invokeRpc(RPC_SERVICE, QName.create("test"), null); + rpcServiceInvoker.invokeRpc(RPC_SERVICE, QName.create("", "test"), null); } -} \ No newline at end of file +} diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/NotificationListenerInvokerTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/NotificationListenerInvokerTest.java index 7689bc643e..5581c8fbf0 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/NotificationListenerInvokerTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/NotificationListenerInvokerTest.java @@ -44,23 +44,23 @@ public class NotificationListenerInvokerTest { final NotificationListener notificationListener = mock(NotificationListener.class); final MethodHandle methodHandle = mock(MethodHandle.class); final NotificationListenerInvoker notificationListenerInvoker = - new NotificationListenerInvoker(ImmutableMap.of(QName.create("test"), methodHandle)); + new NotificationListenerInvoker(ImmutableMap.of(QName.create("test", "test"), methodHandle)); - notificationListenerInvoker.invokeNotification(notificationListener, QName.create("test"), null); + notificationListenerInvoker.invokeNotification(notificationListener, QName.create("test", "test"), null); fail("Expected WrongMethodTypeException, no method to invoke is supplied"); } public interface TestInterface extends NotificationListener, Augmentation { - QName QNAME = QName.create("test"); + QName QNAME = QName.create("test", "test"); void onTestNotificationInterface(TestNotificationInterface notif); } private interface TestPrivateInterface extends NotificationListener, Augmentation { - QName QNAME = QName.create("test"); + QName QNAME = QName.create("test", "test"); void onTestNotificationInterface(TestNotificationInterface notif); } private interface TestNotificationInterface extends Notification { - QName QNAME = QName.create("test"); + QName QNAME = QName.create("test", "test"); } } \ No newline at end of file diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/QNameRpcServiceInvokerTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/QNameRpcServiceInvokerTest.java index 7a004ec85c..d7047df9be 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/QNameRpcServiceInvokerTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/QNameRpcServiceInvokerTest.java @@ -26,7 +26,7 @@ public class QNameRpcServiceInvokerTest { @Test(expected = IllegalArgumentException.class) public void qnameToKeyTest() throws Exception { final RpcService rpcService = mock(RpcService.class); - QNameRpcServiceInvoker.instanceFor(ImmutableMap.of()).invokeRpc(rpcService, QName.create("test"), null); + QNameRpcServiceInvoker.instanceFor(ImmutableMap.of()).invokeRpc(rpcService, QName.create("", "test"), null); fail("Expected exception: constructed with empty map"); } } \ No newline at end of file diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvokerWithInputTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvokerWithInputTest.java index ecd167b433..cbb592ea99 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvokerWithInputTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcMethodInvokerWithInputTest.java @@ -39,11 +39,11 @@ public class RpcMethodInvokerWithInputTest { private static final class TestImplClassWithInput implements RpcService { - static Future testMethod(RpcService testArg, DataObject data) { + static Future testMethod(final RpcService testArg, final DataObject data) { return Futures.immediateFuture(null); } - static Future testMethodWithException(RpcService testArg, DataObject data) throws Exception { + static Future testMethodWithException(final RpcService testArg, final DataObject data) throws Exception { throw new InternalError(); } } diff --git a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcServiceInvokerTest.java b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcServiceInvokerTest.java index 6759c79f40..abb0af6f54 100644 --- a/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcServiceInvokerTest.java +++ b/binding/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/util/RpcServiceInvokerTest.java @@ -13,11 +13,11 @@ import static org.junit.Assert.fail; import com.google.common.collect.ImmutableMap; import java.lang.reflect.Method; import java.net.URI; -import java.util.Date; import org.junit.Test; import org.opendaylight.yangtools.yang.binding.RpcService; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; public class RpcServiceInvokerTest { @@ -26,17 +26,14 @@ public class RpcServiceInvokerTest { final Method method = this.getClass().getDeclaredMethod("testMethod"); method.setAccessible(true); assertNotNull(RpcServiceInvoker.from(ImmutableMap.of( - QName.create(QNameModule.create(URI.create("testURI"), - new Date(System.currentTimeMillis())),"test"), method, - QName.create(QNameModule.create(URI.create("testURI2"), - new Date(System.currentTimeMillis())),"test"), method))); + QName.create(QNameModule.create(URI.create("testURI"), Revision.of("2017-10-26")),"test"), method, + QName.create(QNameModule.create(URI.create("testURI2"), Revision.of("2017-10-26")),"test"), method))); assertNotNull(RpcServiceInvoker.from(ImmutableMap.of( - QName.create(QNameModule.create(URI.create("testURI"), - new Date(System.currentTimeMillis())),"test"), method))); + QName.create(QNameModule.create(URI.create("testURI"), Revision.of("2017-10-26")), "test"), method))); } @Test(expected = IllegalArgumentException.class) - public void fromWithExceptionTest() throws Exception { + public void fromWithExceptionTest() { RpcServiceInvoker.from(RpcService.class); fail("Expected IllegalArgumentException"); } @@ -44,4 +41,4 @@ public class RpcServiceInvokerTest { private void testMethod() { // NOOP } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortRegistryAdapter.java b/binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortRegistryAdapter.java index a80cc08766..e918940b57 100644 --- a/binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortRegistryAdapter.java +++ b/binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/data/tree/BindingDOMDataTreeCommitCohortRegistryAdapter.java @@ -65,9 +65,9 @@ public final class BindingDOMDataTreeCommitCohortRegistryAdapter implements Data } @Override - public void close() throws Exception { + public void close() { domReg.close(); } }; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/StreamWriterGenerator.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/StreamWriterGenerator.java index a8ad1e9a14..a4c6d76fdf 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/StreamWriterGenerator.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/impl/StreamWriterGenerator.java @@ -20,8 +20,8 @@ import org.opendaylight.mdsal.binding.javav2.runtime.javassist.JavassistUtils; import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingStreamEventWriter; import org.opendaylight.mdsal.binding.javav2.spec.runtime.TreeNodeSerializerImplementation; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; @@ -86,7 +86,7 @@ public final class StreamWriterGenerator extends AbstractStreamWriterGenerator { @Override protected AbstractTreeNodeSerializerSource generateCaseSerializer(final GeneratedType type, - final ChoiceCaseNode node) { + final CaseSchemaNode node) { return new AbstractAugmentableDataNodeContainerEmitterSource(this, type, node) { @Override public CharSequence emitStartEvent() { @@ -109,7 +109,7 @@ public final class StreamWriterGenerator extends AbstractStreamWriterGenerator { @Override protected AbstractTreeNodeSerializerSource generateSerializer(final GeneratedType type, - final AugmentationSchema schema) { + final AugmentationSchemaNode schema) { return new AbstractDataNodeContainerSerializerSource(this, type, schema) { @Override diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/generator/AbstractStreamWriterGenerator.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/generator/AbstractStreamWriterGenerator.java index 6f86976442..2515201a10 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/generator/AbstractStreamWriterGenerator.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/generator/AbstractStreamWriterGenerator.java @@ -39,8 +39,8 @@ import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingStreamEventWrit import org.opendaylight.mdsal.binding.javav2.spec.runtime.TreeNodeSerializerImplementation; import org.opendaylight.mdsal.binding.javav2.spec.runtime.TreeNodeSerializerRegistry; import org.opendaylight.yangtools.util.ClassLoaderUtils; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; @@ -182,10 +182,10 @@ public abstract class AbstractStreamWriterGenerator extends AbstractGenerator im } else { source = generateMapEntrySerializer(generatedType, casted); } - } else if (schema instanceof AugmentationSchema) { - source = generateSerializer(generatedType, (AugmentationSchema) schema); - } else if (schema instanceof ChoiceCaseNode) { - source = generateCaseSerializer(generatedType, (ChoiceCaseNode) schema); + } else if (schema instanceof AugmentationSchemaNode) { + source = generateSerializer(generatedType, (AugmentationSchemaNode) schema); + } else if (schema instanceof CaseSchemaNode) { + source = generateCaseSerializer(generatedType, (CaseSchemaNode) schema); } else if (schema instanceof NotificationDefinition) { source = generateNotificationSerializer(generatedType, (NotificationDefinition) schema); } else { @@ -266,7 +266,7 @@ public abstract class AbstractStreamWriterGenerator extends AbstractGenerator im * @param node - schema of case * @return source for case node writer */ - protected abstract AbstractTreeNodeSerializerSource generateCaseSerializer(GeneratedType type, ChoiceCaseNode node); + protected abstract AbstractTreeNodeSerializerSource generateCaseSerializer(GeneratedType type, CaseSchemaNode node); /** * Generates serializer source for supplied list node, which will read @@ -314,7 +314,7 @@ public abstract class AbstractStreamWriterGenerator extends AbstractGenerator im * @return source for augmentation node writer */ protected abstract AbstractTreeNodeSerializerSource generateSerializer(GeneratedType type, - AugmentationSchema schema); + AugmentationSchemaNode schema); /** * Generates serializer source for notification node, which will read diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/source/AbstractDataNodeContainerSerializerSource.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/source/AbstractDataNodeContainerSerializerSource.java index b6cbf42920..3a8a15f30c 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/source/AbstractDataNodeContainerSerializerSource.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/generator/spi/source/AbstractDataNodeContainerSerializerSource.java @@ -34,7 +34,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode; +import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.slf4j.Logger; @@ -113,8 +113,8 @@ public abstract class AbstractDataNodeContainerSerializerSource extends Abstract private static String getGetterName(final DataSchemaNode node) { final TypeDefinition type; - if (node instanceof TypedSchemaNode) { - type = ((TypedSchemaNode) node).getType(); + if (node instanceof TypedDataSchemaNode) { + type = ((TypedDataSchemaNode) node).getType(); } else { type = null; } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/BindingToNormalizedNodeCodec.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/BindingToNormalizedNodeCodec.java index b051f871d2..06a6b084bd 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/BindingToNormalizedNodeCodec.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/BindingToNormalizedNodeCodec.java @@ -16,10 +16,8 @@ import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableBiMap; import java.lang.reflect.Method; -import java.net.URI; import java.util.AbstractMap.SimpleEntry; import java.util.Collection; -import java.util.Date; import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; @@ -411,15 +409,13 @@ public final class BindingToNormalizedNodeCodec private Module getModuleBlocking(final Class modeledClass) { final QNameModule moduleName = BindingReflections.getQNameModule(modeledClass); - final URI namespace = moduleName.getNamespace(); - final Date revision = moduleName.getRevision(); BindingRuntimeContext localRuntimeContext = runtimeContext; Module module = localRuntimeContext == null ? null - : localRuntimeContext.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision); - if (module == null && futureSchema != null && futureSchema.waitForSchema(namespace, revision)) { + : localRuntimeContext.getSchemaContext().findModule(moduleName).get(); + if (module == null && futureSchema != null && futureSchema.waitForSchema(moduleName)) { localRuntimeContext = runtimeContext; Preconditions.checkState(localRuntimeContext != null, "BindingRuntimeContext is not available."); - module = localRuntimeContext.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision); + module = localRuntimeContext.getSchemaContext().findModule(moduleName).get(); } Preconditions.checkState(module != null, "Schema for %s is not available.", modeledClass); return module; diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/FutureSchema.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/FutureSchema.java index 573c1c5820..741d0bce76 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/FutureSchema.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/FutureSchema.java @@ -11,9 +11,7 @@ import com.google.common.annotations.Beta; import com.google.common.base.Predicate; import com.google.common.base.Throwables; import com.google.common.util.concurrent.SettableFuture; -import java.net.URI; import java.util.Collection; -import java.util.Date; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.ExecutionException; @@ -21,6 +19,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.opendaylight.mdsal.binding.javav2.runtime.context.BindingRuntimeContext; import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation; +import org.opendaylight.yangtools.yang.common.QNameModule; @Beta class FutureSchema implements AutoCloseable { @@ -66,12 +65,12 @@ class FutureSchema implements AutoCloseable { return schema != null; } - boolean waitForSchema(final URI namespace, final Date revision) { + boolean waitForSchema(final QNameModule module) { final FutureSchemaPredicate postponedOp = new FutureSchemaPredicate() { @Override public boolean apply(final BindingRuntimeContext input) { - return input.getSchemaContext().findModuleByNamespaceAndRevision(namespace, revision) != null; + return input.getSchemaContext().findModule(module).isPresent(); } }; return postponedOp.waitForSchema(); diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/MissingSchemaException.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/MissingSchemaException.java index f0b510ef4a..f002a29309 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/MissingSchemaException.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/MissingSchemaException.java @@ -36,7 +36,7 @@ public class MissingSchemaException extends IllegalArgumentException { } public static void checkModulePresent(final SchemaContext schemaContext, final QName name) { - if (schemaContext.findModuleByNamespaceAndRevision(name.getNamespace(), name.getRevision()) == null) { + if (!schemaContext.findModule(name.getModule()).isPresent()) { throw MissingSchemaException.create("Module %s is not present in current schema context.",name.getModule()); } } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/AugmentationNodeContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/AugmentationNodeContext.java index 92936436a0..2dd6c95cd5 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/AugmentationNodeContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/AugmentationNodeContext.java @@ -16,7 +16,7 @@ import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode; import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation; import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; /** * Context for prototype of augmentation node. @@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; */ @Beta public final class AugmentationNodeContext> - extends TreeNodeCodecContext { + extends TreeNodeCodecContext { /** * Prepare context for augmentation node from prototype. @@ -34,7 +34,7 @@ public final class AugmentationNodeContext> * @param prototype * - codec prototype of augmentation node */ - public AugmentationNodeContext(final DataContainerCodecPrototype prototype) { + public AugmentationNodeContext(final DataContainerCodecPrototype prototype) { super(prototype); } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/CaseNodeCodecContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/CaseNodeCodecContext.java index c1bd1b85a6..963f47589b 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/CaseNodeCodecContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/CaseNodeCodecContext.java @@ -19,7 +19,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; /** * Codec context for serializing and deserializing choice case node and it's @@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; * - type of tree node */ @Beta -public final class CaseNodeCodecContext extends TreeNodeCodecContext { +public final class CaseNodeCodecContext extends TreeNodeCodecContext { /** * Prepare context for choice case node from prototype. @@ -37,7 +37,7 @@ public final class CaseNodeCodecContext extends TreeNodeCode * @param prototype * - codec prototype of choice case node */ - public CaseNodeCodecContext(final DataContainerCodecPrototype prototype) { + public CaseNodeCodecContext(final DataContainerCodecPrototype prototype) { super(prototype); } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/ChoiceNodeCodecContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/ChoiceNodeCodecContext.java index 5738d11f64..c8056f10d0 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/ChoiceNodeCodecContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/ChoiceNodeCodecContext.java @@ -31,8 +31,8 @@ import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; import org.opendaylight.yangtools.yang.data.impl.schema.SchemaUtils; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.slf4j.Logger; @@ -70,7 +70,7 @@ public class ChoiceNodeCodecContext extends DataContainerCod for (final Class caze : factory().getRuntimeContext().getCases(getBindingClass())) { // We try to load case using exact match thus name // and original schema must equals - final DataContainerCodecPrototype cazeDef = loadCase(caze); + final DataContainerCodecPrototype cazeDef = loadCase(caze); // If we have case definition, this case is instantiated // at current location and thus is valid in context of parent choice if (cazeDef != null) { @@ -84,7 +84,7 @@ public class ChoiceNodeCodecContext extends DataContainerCod // Updates collection of YANG instance identifier to case for (final DataSchemaNode cazeChild : cazeDef.getSchema().getChildNodes()) { if (cazeChild.isAugmenting()) { - final AugmentationSchema augment = + final AugmentationSchemaNode augment = SchemaUtils.findCorrespondingAugment(cazeDef.getSchema(), cazeChild); if (augment != null) { byYangCaseChildBuilder.put(SchemaUtils.getNodeIdentifierForAugmentation(augment), cazeDef); @@ -147,8 +147,8 @@ public class ChoiceNodeCodecContext extends DataContainerCod return byCaseChildClass.keySet(); } - private DataContainerCodecPrototype loadCase(final Class childClass) { - final Optional childSchema = + private DataContainerCodecPrototype loadCase(final Class childClass) { + final Optional childSchema = factory().getRuntimeContext().getCaseSchemaDefinition(getSchema(), childClass); if (childSchema.isPresent()) { return DataContainerCodecPrototype.from(childClass, childSchema.get(), factory()); diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/BindingCodecContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/BindingCodecContext.java index 24ea27d842..6a24aaace6 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/BindingCodecContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/BindingCodecContext.java @@ -68,7 +68,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; -import org.opendaylight.yangtools.yang.model.api.TypedSchemaNode; +import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; @@ -315,8 +315,8 @@ public final class BindingCodecContext implements CodecContextFactory, BindingTr final DataNodeContainer childSchema) { final Map getterToLeafSchema = new HashMap<>(); for (final DataSchemaNode leaf : childSchema.getChildNodes()) { - if (leaf instanceof TypedSchemaNode) { - getterToLeafSchema.put(getGetterName(leaf.getQName(), ((TypedSchemaNode) leaf).getType()), leaf); + if (leaf instanceof TypedDataSchemaNode) { + getterToLeafSchema.put(getGetterName(leaf.getQName(), ((TypedDataSchemaNode) leaf).getType()), leaf); } } return getLeafNodesUsingReflection(parentClass, getterToLeafSchema); @@ -364,9 +364,9 @@ public final class BindingCodecContext implements CodecContextFactory, BindingTr } private Codec getCodec(final Class valueType, final DataSchemaNode schema) { - Preconditions.checkArgument(schema instanceof TypedSchemaNode, "Unsupported leaf node type %s", schema); + Preconditions.checkArgument(schema instanceof TypedDataSchemaNode, "Unsupported leaf node type %s", schema); - return getCodec(valueType, ((TypedSchemaNode) schema).getType()); + return getCodec(valueType, ((TypedDataSchemaNode) schema).getType()); } /** diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/DataContainerCodecPrototype.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/DataContainerCodecPrototype.java index 2efab64f2c..1ab7a7f521 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/DataContainerCodecPrototype.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/DataContainerCodecPrototype.java @@ -28,8 +28,8 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -74,7 +74,7 @@ public final class DataContainerCodecPrototype implements NodeContextSupplier @SuppressWarnings({ "rawtypes", "unchecked" }) static DataContainerCodecPrototype from(final Class augClass, final AugmentationIdentifier arg, - final AugmentationSchema schema, final CodecContextFactory factory) { + final AugmentationSchemaNode schema, final CodecContextFactory factory) { return new DataContainerCodecPrototype(augClass, arg, schema, factory); } @@ -145,9 +145,9 @@ public final class DataContainerCodecPrototype implements NodeContextSupplier } } else if (schema instanceof ChoiceSchemaNode) { return new ChoiceNodeCodecContext(this); - } else if (schema instanceof AugmentationSchema) { + } else if (schema instanceof AugmentationSchemaNode) { return new AugmentationNodeContext(this); - } else if (schema instanceof ChoiceCaseNode) { + } else if (schema instanceof CaseSchemaNode) { return new CaseNodeCodecContext(this); } throw new IllegalArgumentException("Unsupported type " + bindingClass + " " + schema); @@ -156,4 +156,4 @@ public final class DataContainerCodecPrototype implements NodeContextSupplier boolean isChoice() { return schema instanceof ChoiceSchemaNode; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LazyTreeNode.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LazyTreeNode.java index dd007b94a2..0e5f011716 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LazyTreeNode.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LazyTreeNode.java @@ -11,7 +11,6 @@ package org.opendaylight.mdsal.binding.javav2.dom.codec.impl.context.base; import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import java.lang.reflect.InvocationHandler; @@ -21,6 +20,7 @@ import java.lang.reflect.Proxy; import java.util.Arrays; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import org.opendaylight.mdsal.binding.javav2.dom.codec.api.AugmentationReader; import org.opendaylight.mdsal.binding.javav2.runtime.reflection.BindingReflections; @@ -139,7 +139,7 @@ class LazyTreeNode implements InvocationHandler, Augmentatio result = prime * result + Objects.hashCode(value); } if (Augmentable.class.isAssignableFrom(context.getBindingClass())) { - result = prime * result + (getAugmentationsImpl().hashCode()); + result = prime * result + getAugmentationsImpl().hashCode(); } cachedHashcode = result; return result; @@ -191,7 +191,7 @@ class LazyTreeNode implements InvocationHandler, Augmentatio Preconditions.checkNotNull(cls,"Supplied augmentation must not be null."); @SuppressWarnings({"unchecked","rawtypes"}) - final Optional> augCtx = context.possibleStreamChild((Class) cls); + final Optional> augCtx = context.possibleStreamChild((Class) cls).toJavaUtil(); if (augCtx.isPresent()) { final Optional> augData = data.getChild(augCtx.get().getDomPathArgument()); if (augData.isPresent()) { @@ -232,4 +232,4 @@ class LazyTreeNode implements InvocationHandler, Augmentatio final LazyTreeNode other = (LazyTreeNode) obj; return Objects.equals(context, other.context) && Objects.equals(data, other.data); } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LeafNodeCodecContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LeafNodeCodecContext.java index cfd8c073f0..c19d9a8358 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LeafNodeCodecContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/LeafNodeCodecContext.java @@ -62,25 +62,25 @@ public final class LeafNodeCodecContext extends NodeCodecCon private static Object createDefaultObject(final DataSchemaNode schema, final Codec codec, final SchemaContext schemaContext) { if (schema instanceof LeafSchemaNode) { - Object defaultValue = ((LeafSchemaNode) schema).getDefault(); TypeDefinition type = ((LeafSchemaNode) schema).getType(); - if (defaultValue != null) { + java.util.Optional defaultValue = type.getDefaultValue(); + if (defaultValue.isPresent()) { if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, (String) defaultValue, schemaContext); + return qnameDomValueFromString(codec, schema, (String) defaultValue.get(), schemaContext); } return domValueFromString(codec, type, defaultValue); - } else { - while (type.getBaseType() != null && type.getDefaultValue() == null) { - type = type.getBaseType(); - } + } + + while (type.getBaseType() != null && !type.getDefaultValue().isPresent()) { + type = type.getBaseType(); + } - defaultValue = type.getDefaultValue(); - if (defaultValue != null) { - if (type instanceof IdentityrefTypeDefinition) { - return qnameDomValueFromString(codec, schema, (String) defaultValue, schemaContext); - } - return domValueFromString(codec, type, defaultValue); + defaultValue = type.getDefaultValue(); + if (defaultValue != null) { + if (type instanceof IdentityrefTypeDefinition) { + return qnameDomValueFromString(codec, schema, (String) defaultValue.get(), schemaContext); } + return domValueFromString(codec, type, defaultValue); } } return null; @@ -92,24 +92,23 @@ public final class LeafNodeCodecContext extends NodeCodecCon if (prefixEndIndex != -1) { final String defaultValuePrefix = defaultValue.substring(0, prefixEndIndex); - final Module module = schemaContext.findModuleByNamespaceAndRevision(schema.getQName().getNamespace(), - schema.getQName().getRevision()); + final Module module = schemaContext.findModule(schema.getQName().getModule()).get(); if (module.getPrefix().equals(defaultValuePrefix)) { - return codec - .deserialize(QName.create(module.getQNameModule(), defaultValue.substring(prefixEndIndex + 1))); - } else { - final Set imports = module.getImports(); - for (final ModuleImport moduleImport : imports) { - if (moduleImport.getPrefix().equals(defaultValuePrefix)) { - final Module importedModule = schemaContext.findModuleByName(moduleImport.getModuleName(), - moduleImport.getRevision()); - return codec.deserialize(QName.create(importedModule.getQNameModule(), - defaultValue.substring(prefixEndIndex + 1))); - } + return codec.deserialize(QName.create(module.getQNameModule(), + defaultValue.substring(prefixEndIndex + 1))); + } + + final Set imports = module.getImports(); + for (final ModuleImport moduleImport : imports) { + if (moduleImport.getPrefix().equals(defaultValuePrefix)) { + final Module importedModule = schemaContext.findModule(moduleImport.getModuleName(), + moduleImport.getRevision()).get(); + return codec.deserialize(QName.create(importedModule.getQNameModule(), + defaultValue.substring(prefixEndIndex + 1))); } - return null; } + return null; } return codec.deserialize(QName.create(schema.getQName(), defaultValue)); diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/TreeNodeCodecContext.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/TreeNodeCodecContext.java index bc121b836b..2cd1b3f14e 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/TreeNodeCodecContext.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/impl/context/base/TreeNodeCodecContext.java @@ -49,7 +49,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils; @@ -287,7 +287,7 @@ public abstract class TreeNodeCodecContext augTarget = BindingReflections.findAugmentationTarget((Class) childClass); - if ((getBindingClass().equals(augTarget))) { + if (getBindingClass().equals(augTarget)) { for (final DataContainerCodecPrototype realChild : byStreamAugmented.values()) { if (Augmentation.class.isAssignableFrom(realChild.getBindingClass()) && BindingReflections.isSubstitutionFor(childClass, realChild.getBindingClass())) { @@ -310,7 +310,7 @@ public abstract class TreeNodeCodecContext augSchema = factory().getRuntimeContext() + final Entry augSchema = factory().getRuntimeContext() .getResolvedAugmentationSchema(getSchema(), augClass); return DataContainerCodecPrototype.from(augClass, augSchema.getKey(), augSchema.getValue(), factory()); } @@ -319,7 +319,7 @@ public abstract class TreeNodeCodecContext childContext = byMethod.get(method).get(); @SuppressWarnings("unchecked") - final Optional> domChild = domData.getChild(childContext.getDomPathArgument()); + final java.util.Optional> domChild = domData.getChild(childContext.getDomPathArgument()); if (domChild.isPresent()) { return childContext.deserializeObject(domChild.get()); } else if (childContext instanceof LeafNodeCodecContext) { @@ -356,7 +356,7 @@ public abstract class TreeNodeCodecContext value : byStreamAugmented.values()) { - final Optional> augData = data.getChild(value.getYangArg()); + final java.util.Optional> augData = data.getChild(value.getYangArg()); if (augData.isPresent()) { map.put(value.getBindingClass(), value.get().deserializeObject(augData.get())); } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/BindingStructuralType.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/BindingStructuralType.java index 2ffbc33c45..4963395d0d 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/BindingStructuralType.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/BindingStructuralType.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.javav2.dom.codec.modification; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; +import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; @@ -83,7 +83,10 @@ enum BindingStructuralType { UNKNOWN; static BindingStructuralType from(final DataTreeCandidateNode domChildNode) { - final Optional> dataBased = domChildNode.getDataAfter().or(domChildNode.getDataBefore()); + Optional> dataBased = domChildNode.getDataAfter(); + if (!dataBased.isPresent()) { + dataBased = domChildNode.getDataBefore(); + } if (dataBased.isPresent()) { return from(dataBased.get()); } diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/LazyTreeNodeModification.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/LazyTreeNodeModification.java index 77a32c25d5..6b3761dda0 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/LazyTreeNodeModification.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/modification/LazyTreeNodeModification.java @@ -8,12 +8,12 @@ package org.opendaylight.mdsal.binding.javav2.dom.codec.modification; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Optional; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.mdsal.binding.javav2.api.TreeNodeModification; diff --git a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/serialized/LazySerializedContainerNode.java b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/serialized/LazySerializedContainerNode.java index 0e49aac617..0338a80fd4 100644 --- a/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/serialized/LazySerializedContainerNode.java +++ b/binding2/mdsal-binding2-dom-codec/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/codec/serialized/LazySerializedContainerNode.java @@ -7,9 +7,9 @@ */ package org.opendaylight.mdsal.binding.javav2.dom.codec.serialized; -import com.google.common.base.Optional; import java.util.Collection; import java.util.Map; +import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingNormalizedNodeCodecRegistry; import org.opendaylight.mdsal.binding.javav2.spec.base.TreeNode; diff --git a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/context/ModuleContext.java b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/context/ModuleContext.java index c2725730dd..34f0114cc8 100644 --- a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/context/ModuleContext.java +++ b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/context/ModuleContext.java @@ -29,8 +29,8 @@ import org.opendaylight.mdsal.binding.javav2.model.api.Type; import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; @@ -43,7 +43,7 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; @Beta public final class ModuleContext { private GeneratedTypeBuilder moduleNode; - private final Map genTOs = new HashMap<>(); + private final Map genTOs = new HashMap<>(); private final Map typedefs = new HashMap<>(); private final Map childNodes = new HashMap<>(); private final BiMap dataTypes = HashBiMap.create(); @@ -52,13 +52,13 @@ public final class ModuleContext { private final Map identities = new HashMap<>(); private final Set topLevelNodes = new HashSet<>(); private final List augmentations = new ArrayList<>(); - private final BiMap typeToAugmentation = HashBiMap.create(); + private final BiMap typeToAugmentation = HashBiMap.create(); private final BiMap targetToAugmentation = HashBiMap.create(); private final Map typeToSchema = new HashMap<>(); private final Multimap choiceToCases = HashMultimap.create(); - private final BiMap caseTypeToSchema = HashBiMap.create(); + private final BiMap caseTypeToSchema = HashBiMap.create(); private final Map innerTypes = new HashMap<>(); - private final Map keyTypes = new HashMap<>(); + private final Map keyTypes = new HashMap<>(); //map is getting manipulated based on unique YANG module namespace rule private final ListMultimap packagesMap = Multimaps.synchronizedListMultimap (ArrayListMultimap.create()); @@ -169,7 +169,7 @@ public final class ModuleContext { return Collections.unmodifiableList(this.augmentations); } - public BiMap getTypeToAugmentation() { + public BiMap getTypeToAugmentation() { return Maps.unmodifiableBiMap(this.typeToAugmentation); } @@ -177,7 +177,7 @@ public final class ModuleContext { return Maps.unmodifiableBiMap(this.targetToAugmentation); } - public void addTypeToAugmentation(final GeneratedTypeBuilder builder, final AugmentationSchema schema) { + public void addTypeToAugmentation(final GeneratedTypeBuilder builder, final AugmentationSchemaNode schema) { this.typeToAugmentation.put(builder, schema); this.typeToSchema.put(builder, schema); } @@ -186,13 +186,13 @@ public final class ModuleContext { this.targetToAugmentation.put(augmentTarget, builder); } - public void addChoiceToCaseMapping(final Type choiceType, final Type caseType, final ChoiceCaseNode schema) { + public void addChoiceToCaseMapping(final Type choiceType, final Type caseType, final CaseSchemaNode schema) { this.choiceToCases.put(choiceType, caseType); this.caseTypeToSchema.put(caseType, schema); this.typeToSchema.put(caseType, schema); } - public BiMap getCaseTypeToSchemas() { + public BiMap getCaseTypeToSchemas() { return Maps.unmodifiableBiMap(this.caseTypeToSchema); } @@ -200,7 +200,7 @@ public final class ModuleContext { * * Returns mapping of type to its schema. * - * Valid values are only instances of {@link DataSchemaNode} or {@link AugmentationSchema} + * Valid values are only instances of {@link DataSchemaNode} or {@link AugmentationSchemaNode} * * @return Mapping from type to corresponding schema */ diff --git a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/Restrictions.java b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/Restrictions.java index c63a8b54f9..4c3436bbf6 100644 --- a/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/Restrictions.java +++ b/binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/Restrictions.java @@ -10,6 +10,7 @@ package org.opendaylight.mdsal.binding.javav2.model.api; import com.google.common.annotations.Beta; import java.util.List; +import java.util.Optional; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -17,9 +18,9 @@ import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @Beta public interface Restrictions { - List getLengthConstraints(); + Optional getLengthConstraint(); List getPatternConstraints(); - List getRangeConstraints(); + Optional> getRangeConstraint(); boolean isEmpty(); } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java index 3947ffd42e..d0f327a565 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java @@ -11,7 +11,7 @@ package org.opendaylight.mdsal.binding.javav2.generator.impl; import static org.opendaylight.mdsal.binding.javav2.generator.impl.GenHelperUtil.processUsesImplements; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.Collections; @@ -20,6 +20,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.stream.Collectors; import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider; @@ -29,8 +30,8 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTyp import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -50,7 +51,7 @@ final class AugmentToGenType { /** * Comparator based on augment target path. */ - private static final Comparator AUGMENT_COMP = (o1, o2) -> { + private static final Comparator AUGMENT_COMP = (o1, o2) -> { final Iterator thisIt = o1.getTargetPath().getPathFromRoot().iterator(); final Iterator otherIt = o2.getTargetPath().getPathFromRoot().iterator(); @@ -71,7 +72,7 @@ final class AugmentToGenType { /** * Comparator based on augment target path. */ - private static final Comparator>> AUGMENTS_COMP = (o1, o2) -> { + private static final Comparator>> AUGMENTS_COMP = (o1, o2) -> { final Iterator thisIt = o1.getKey().getPathFromRoot().iterator(); final Iterator otherIt = o2.getKey().getPathFromRoot().iterator(); @@ -123,23 +124,23 @@ final class AugmentToGenType { Preconditions.checkState(module.getAugmentations() != null, "Augmentations Set cannot be NULL."); final String basePackageName = BindingMapping.getRootPackageName(module); - final List augmentations = resolveAugmentations(module, schemaContext); + final List augmentations = resolveAugmentations(module, schemaContext); Map resultCtx = genCtx; //let's group augments by target path - Map> augmentationsGrouped = - augmentations.stream().collect(Collectors.groupingBy(AugmentationSchema::getTargetPath)); + Map> augmentationsGrouped = + augmentations.stream().collect(Collectors.groupingBy(AugmentationSchemaNode::getTargetPath)); - List>> sortedAugmentationsGrouped = + List>> sortedAugmentationsGrouped = new ArrayList<>(augmentationsGrouped.entrySet()); Collections.sort(sortedAugmentationsGrouped, AUGMENTS_COMP); //process child nodes of grouped augment entries - for (Map.Entry> schemaPathAugmentListEntry : sortedAugmentationsGrouped) { + for (Map.Entry> schemaPathAugmentListEntry : sortedAugmentationsGrouped) { resultCtx = augmentationToGenTypes(basePackageName, schemaPathAugmentListEntry, module, schemaContext, verboseClassComments, resultCtx, genTypeBuilders, typeProvider); - for (AugmentationSchema augSchema : schemaPathAugmentListEntry.getValue()) { + for (AugmentationSchemaNode augSchema : schemaPathAugmentListEntry.getValue()) { processUsesImplements(augSchema, module, schemaContext, genCtx, BindingNamespaceType.Data); } @@ -162,21 +163,24 @@ final class AugmentToGenType { * @throws IllegalStateException * if set of module augmentations is null */ - private static List resolveAugmentations(final Module module, final SchemaContext schemaContext) { + @VisibleForTesting + static List resolveAugmentations(final Module module, + final SchemaContext schemaContext) { Preconditions.checkArgument(module != null, "Module reference cannot be NULL."); Preconditions.checkState(module.getAugmentations() != null, "Augmentations Set cannot be NULL."); - final List sortedAugmentations = module.getAugmentations().stream() + final List sortedAugmentations = module.getAugmentations().stream() .filter(aug -> !module.equals(findAugmentTargetModule(schemaContext, aug))) .collect(Collectors.toList()); sortedAugmentations.sort(AUGMENT_COMP); return sortedAugmentations; } - public static Module findAugmentTargetModule(final SchemaContext schemaContext , final AugmentationSchema aug) { + public static Module findAugmentTargetModule(final SchemaContext schemaContext, + final AugmentationSchemaNode aug) { Preconditions.checkNotNull(aug, "Augmentation schema can not be null."); final QName first = aug.getTargetPath().getPathFromRoot().iterator().next(); - return schemaContext.findModuleByNamespaceAndRevision(first.getNamespace(), first.getRevision()); + return schemaContext.findModule(first.getModule()).orElse(null); } /** @@ -203,8 +207,9 @@ final class AugmentToGenType { * if augment target path is null * @return generated context */ - private static Map augmentationToGenTypes(final String basePackageName, - final Entry> schemaPathAugmentListEntry, final Module module, + @VisibleForTesting + static Map augmentationToGenTypes(final String basePackageName, + final Entry> schemaPathAugmentListEntry, final Module module, final SchemaContext schemaContext, final boolean verboseClassComments, Map genCtx, final Map> genTypeBuilders, final TypeProvider typeProvider) { @@ -214,14 +219,14 @@ final class AugmentToGenType { Preconditions.checkState(targetPath != null, "Augmentation List Entry does not contain Target Path (Target Path is NULL)."); - final List augmentationSchemaList = schemaPathAugmentListEntry.getValue(); + final List augmentationSchemaList = schemaPathAugmentListEntry.getValue(); Preconditions.checkState(!augmentationSchemaList.isEmpty(), "Augmentation List cannot be empty."); SchemaNode targetSchemaNode = SchemaContextUtil.findDataSchemaNode(schemaContext, targetPath); if (targetSchemaNode instanceof DataSchemaNode && ((DataSchemaNode) targetSchemaNode).isAddedByUses()) { if (targetSchemaNode instanceof DerivableSchemaNode) { - targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orNull(); + targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orElse(null); } if (targetSchemaNode == null) { throw new IllegalStateException("Failed to find target node from grouping in augmentation " + @@ -261,8 +266,9 @@ final class AugmentToGenType { @Deprecated static Map usesAugmentationToGenTypes(final SchemaContext schemaContext, - final String augmentPackageName, final List schemaPathAugmentListEntry, final Module module, - final UsesNode usesNode, final DataNodeContainer usesNodeParent, Map genCtx, + final String augmentPackageName, final List schemaPathAugmentListEntry, + final Module module, final UsesNode usesNode, final DataNodeContainer usesNodeParent, + Map genCtx, final Map> genTypeBuilders, final boolean verboseClassComments, final TypeProvider typeProvider, final BindingNamespaceType namespaceType) { @@ -295,11 +301,11 @@ final class AugmentToGenType { if (usesNodeParent instanceof SchemaNode) { packageName = BindingGeneratorUtil.packageNameForAugmentedGeneratedType(augmentPackageName, ((SchemaNode) usesNodeParent).getPath()); - } else if (usesNodeParent instanceof AugmentationSchema) { + } else if (usesNodeParent instanceof AugmentationSchemaNode) { Type parentTypeBuilder = genCtx.get(module).getTargetToAugmentation() - .get(((AugmentationSchema) usesNodeParent).getTargetPath()); - packageName = BindingGeneratorUtil.packageNameForAugmentedGeneratedType(parentTypeBuilder.getPackageName(), - (AugmentationSchema)usesNodeParent); + .get(((AugmentationSchemaNode) usesNodeParent).getTargetPath()); + packageName = BindingGeneratorUtil.packageNameForAugmentedGeneratedType( + parentTypeBuilder.getPackageName(), (AugmentationSchemaNode)usesNodeParent); } genCtx = GenHelperUtil.addRawAugmentGenTypeDefinition(module, packageName, targetTypeBuilder.toInstance(), targetSchemaNode, schemaPathAugmentListEntry, genTypeBuilders, genCtx, @@ -323,19 +329,19 @@ final class AugmentToGenType { * parent of uses node * @return node from its original location in grouping */ - private static DataSchemaNode findOriginalTargetFromGrouping(final SchemaContext schemaContext, final SchemaPath targetPath, - final UsesNode parentUsesNode) { + @VisibleForTesting + static DataSchemaNode findOriginalTargetFromGrouping(final SchemaContext schemaContext, + final SchemaPath targetPath, final UsesNode parentUsesNode) { SchemaNode targetGrouping = null; QName current = parentUsesNode.getGroupingPath().getPathFromRoot().iterator().next(); - Module module = schemaContext.findModuleByNamespaceAndRevision(current.getNamespace(), current.getRevision()); + Module module = schemaContext.findModule(current.getModule()).orElse(null); if (module == null) { throw new IllegalArgumentException("Fialed to find module for grouping in: " + parentUsesNode); - } else { - for (GroupingDefinition group : module.getGroupings()) { - if (group.getQName().equals(current)) { - targetGrouping = group; - break; - } + } + for (GroupingDefinition group : module.getGroupings()) { + if (group.getQName().equals(current)) { + targetGrouping = group; + break; } } @@ -349,7 +355,7 @@ final class AugmentToGenType { final QName resultNode = QName.create(result.getQName().getModule(), node.getLocalName()); result = ((DataNodeContainer) result).getDataChildByName(resultNode); } else if (result instanceof ChoiceSchemaNode) { - result = ((ChoiceSchemaNode) result).getCaseNodeByName(node.getLocalName()); + result = findNamedCase((ChoiceSchemaNode) result, node.getLocalName()); } } if (result == null) { @@ -411,10 +417,11 @@ final class AugmentToGenType { *
  • if augmentedNodes is null
  • * */ - private static Map generateTypesFromAugmentedChoiceCases( + @VisibleForTesting + static Map generateTypesFromAugmentedChoiceCases( final SchemaContext schemaContext, final Module module, final String basePackageName, final Type targetType, final ChoiceSchemaNode targetNode, - final List schemaPathAugmentListEntry, + final List schemaPathAugmentListEntry, final DataNodeContainer usesNodeParent, final Map genCtx, final boolean verboseClassComments, final Map> genTypeBuilders, final TypeProvider typeProvider, @@ -424,7 +431,7 @@ final class AugmentToGenType { Preconditions.checkArgument(schemaPathAugmentListEntry != null, "Set of Choice Case Nodes cannot be NULL."); - for (final AugmentationSchema augmentationSchema : schemaPathAugmentListEntry) { + for (final AugmentationSchemaNode augmentationSchema : schemaPathAugmentListEntry) { for (final DataSchemaNode caseNode : augmentationSchema.getChildNodes()) { if (caseNode != null) { final GeneratedTypeBuilder caseTypeBuilder = GenHelperUtil.addDefaultInterfaceDefinition(basePackageName, @@ -439,7 +446,7 @@ final class AugmentToGenType { GeneratedTypeBuilder childOfType = null; if (parent instanceof Module) { childOfType = genCtx.get(parent).getModuleNode(); - } else if (parent instanceof ChoiceCaseNode) { + } else if (parent instanceof CaseSchemaNode) { childOfType = GenHelperUtil.findCaseByPath(parent.getPath(), genCtx); } else if (parent instanceof DataSchemaNode || parent instanceof NotificationDefinition) { childOfType = GenHelperUtil.findChildNodeByPath(parent.getPath(), genCtx); @@ -451,21 +458,21 @@ final class AugmentToGenType { throw new IllegalArgumentException("Failed to find parent type of choice " + targetNode); } - ChoiceCaseNode node = null; + CaseSchemaNode node = null; final String caseLocalName = caseNode.getQName().getLocalName(); - if (caseNode instanceof ChoiceCaseNode) { - node = (ChoiceCaseNode) caseNode; - } else if (targetNode.getCaseNodeByName(caseLocalName) == null) { + if (caseNode instanceof CaseSchemaNode) { + node = (CaseSchemaNode) caseNode; + } else if (findNamedCase(targetNode, caseLocalName) == null) { final String targetNodeLocalName = targetNode.getQName().getLocalName(); for (DataSchemaNode dataSchemaNode : usesNodeParent.getChildNodes()) { if (dataSchemaNode instanceof ChoiceSchemaNode && targetNodeLocalName.equals(dataSchemaNode.getQName ().getLocalName())) { - node = ((ChoiceSchemaNode) dataSchemaNode).getCaseNodeByName(caseLocalName); + node = findNamedCase((ChoiceSchemaNode) dataSchemaNode, caseLocalName); break; } } } else { - node = targetNode.getCaseNodeByName(caseLocalName); + node = findNamedCase(targetNode, caseLocalName); } final Iterable childNodes = node.getChildNodes(); if (childNodes != null) { @@ -481,4 +488,9 @@ final class AugmentToGenType { } return genCtx; } + + private static CaseSchemaNode findNamedCase(final ChoiceSchemaNode choice, final String caseName) { + final List cases = choice.findCaseNodes(caseName); + return cases.isEmpty() ? null : cases.get(0); + } } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java index e77164a7d6..eb3d9d3801 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java @@ -48,7 +48,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignat import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; @@ -101,7 +101,7 @@ final class AuxiliaryGenUtils { return (namespaceType.equals(BindingNamespaceType.Data) && (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode || schemaNode instanceof RpcDefinition || schemaNode instanceof NotificationDefinition - || schemaNode instanceof ChoiceCaseNode)); + || schemaNode instanceof CaseSchemaNode)); } static Constant qNameConstant(final GeneratedTypeBuilderBase toBuilder, final String constantName, @@ -155,7 +155,8 @@ final class AuxiliaryGenUtils { * @return string with the name of the getter method for * methodName in JAVA method format */ - private static String getterMethodName(final String localName, final Type returnType) { + @VisibleForTesting + static String getterMethodName(final String localName, final Type returnType) { final StringBuilder method = new StringBuilder(); if (BOOLEAN.equals(returnType)) { method.append("is"); @@ -169,7 +170,7 @@ final class AuxiliaryGenUtils { final SchemaContext schemaContext, final boolean verboseClassComments, final BindingNamespaceType namespaceType) { final StringBuilder sb = new StringBuilder(); - final String nodeDescription = encodeAngleBrackets(schemaNode.getDescription()); + final String nodeDescription = encodeAngleBrackets(schemaNode.getDescription().orElse(null)); final String formattedDescription = YangTextTemplate.formatToParagraph(nodeDescription, 0); if (!Strings.isNullOrEmpty(formattedDescription)) { @@ -238,7 +239,7 @@ final class AuxiliaryGenUtils { static String createDescription(final Module module, final boolean verboseClassComments) { final StringBuilder sb = new StringBuilder(); - final String moduleDescription = encodeAngleBrackets(module.getDescription()); + final String moduleDescription = encodeAngleBrackets(module.getDescription().orElse(null)); final String formattedDescription = YangTextTemplate.formatToParagraph(moduleDescription, 0); if (!Strings.isNullOrEmpty(formattedDescription)) { @@ -288,7 +289,8 @@ final class AuxiliaryGenUtils { return replaceAllIllegalChars(sb); } - private static boolean isNullOrEmpty(final Collection list) { + @VisibleForTesting + static boolean isNullOrEmpty(final Collection list) { return list == null || list.isEmpty(); } @@ -352,7 +354,7 @@ final class AuxiliaryGenUtils { final Map genCtx, final GeneratedTypeBuilder typeBuilder, final Module module) { if (enumTypeDef != null && typeBuilder != null && enumTypeDef.getQName().getLocalName() != null) { final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumName.getLocalName(), genCtx.get(module)); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); final ModuleContext ctx = genCtx.get(module); @@ -412,16 +414,16 @@ final class AuxiliaryGenUtils { static Type createReturnTypeForUnion(final GeneratedTOBuilder genTOBuilder, final TypeDefinition typeDef, final GeneratedTypeBuilder typeBuilder, final Module parentModule, final TypeProvider typeProvider) { final GeneratedTOBuilderImpl returnType = (GeneratedTOBuilderImpl) genTOBuilder; - final String typedefDescription = encodeAngleBrackets(typeDef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typeDef.getDescription().orElse(null)); returnType.setDescription(typedefDescription); - returnType.setReference(typeDef.getReference()); + returnType.setReference(typeDef.getReference().orElse(null)); returnType.setSchemaPath((List) typeDef.getPath().getPathFromRoot()); returnType.setModuleName(parentModule.getName()); genTOBuilder.setTypedef(true); genTOBuilder.setIsUnion(true); - TypeProviderImpl.addUnitsToGenTO(genTOBuilder, typeDef.getUnits()); + TypeProviderImpl.addUnitsToGenTO(genTOBuilder, typeDef.getUnits().orElse(null)); return returnType.toInstance(); } @@ -507,7 +509,7 @@ final class AuxiliaryGenUtils { leafGetterName = leafName; } - final String leafDesc = encodeAngleBrackets(leaf.getDescription()); + final String leafDesc = encodeAngleBrackets(leaf.getDescription().orElse(null)); final GeneratedPropertyBuilder propBuilder = toBuilder.addProperty(JavaIdentifierNormalizer.normalizeSpecificIdentifier(leafGetterName, JavaIdentifier.METHOD)); propBuilder.setReadOnly(isReadOnly); diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java index 51cc8187d0..9d9fa5cde8 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java @@ -70,8 +70,8 @@ import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -126,9 +126,9 @@ final class GenHelperUtil { genCtx.get(module)); addImplementedInterfaceFromUses(module, moduleDataTypeBuilder, genCtx); moduleDataTypeBuilder.addImplementsType(BindingTypes.TREE_ROOT); - moduleDataTypeBuilder.addComment(module.getDescription()); + moduleDataTypeBuilder.addComment(module.getDescription().orElse(null)); moduleDataTypeBuilder.setDescription(createDescription(module, verboseClassComments)); - moduleDataTypeBuilder.setReference(module.getReference()); + moduleDataTypeBuilder.setReference(module.getReference().orElse(null)); return moduleDataTypeBuilder; } @@ -156,7 +156,7 @@ final class GenHelperUtil { final GeneratedTypeBuilderImpl moduleBuilder = new GeneratedTypeBuilderImpl(packageName, moduleName, context); moduleBuilder.setDescription(createDescription(module, verboseClassComments)); - moduleBuilder.setReference(module.getReference()); + moduleBuilder.setReference(module.getReference().orElse(null)); moduleBuilder.setModuleName(moduleName); return moduleBuilder; } @@ -261,8 +261,7 @@ final class GenHelperUtil { } final QName qname = schemaNode.getPath().getLastComponent(); - final Module originalModule = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), - qname.getRevision()); + final Module originalModule = schemaContext.findModule(qname.getModule()).get(); return module.equals(originalModule); } @@ -280,7 +279,7 @@ final class GenHelperUtil { childNodeQName = QName.create(((Module) node).getQNameModule(), superChildNode.getQName().getLocalName()); } else if (node instanceof SchemaNode) { childNodeQName = QName.create(((SchemaNode) node).getQName(), superChildNode.getQName().getLocalName()); - } else if (node instanceof AugmentationSchema) { + } else if (node instanceof AugmentationSchemaNode) { childNodeQName = QName.create(module.getQNameModule(), superChildNode.getQName().getLocalName()); } else { throw new IllegalArgumentException("Not support node type:" + node); @@ -319,9 +318,9 @@ final class GenHelperUtil { } } } else if (superNode instanceof ChoiceSchemaNode) { - for (ChoiceCaseNode superCaseNode : ((ChoiceSchemaNode) superNode).getCases()) { + for (CaseSchemaNode superCaseNode : ((ChoiceSchemaNode) superNode).getCases().values()) { final QName childQName = createQNameFromSuperNode(module, node, superCaseNode); - ChoiceCaseNode caseNode = ((ChoiceSchemaNode) node).getCaseNodeByName(childQName); + CaseSchemaNode caseNode = ((ChoiceSchemaNode) node).getCaseNodeByName(childQName); Preconditions.checkNotNull(caseNode, "%s->%s", node, childQName); final GeneratedTypeBuilder type = genCtx.get(module).getCase(caseNode.getPath()); @@ -340,9 +339,8 @@ final class GenHelperUtil { final Object parentNode, final UsesNode usesNode) { SchemaNode groupingNode; if (parentNode instanceof Module) { - final Module superModule = schemaContext.findModuleByNamespaceAndRevision( - usesNode.getGroupingPath().getLastComponent().getModule().getNamespace(), - usesNode.getGroupingPath().getLastComponent().getModule().getRevision()); + final Module superModule = schemaContext.findModule( + usesNode.getGroupingPath().getLastComponent().getModule()).get(); groupingNode = superModule.getGroupings() .stream().filter(grouping -> grouping.getPath().equals(usesNode.getGroupingPath())) .findFirst().orElse(null); @@ -350,10 +348,11 @@ final class GenHelperUtil { //FIXME: Schema path is not unique for Yang 1.1, findDataSchemaNode always does search from data node first. final Iterable prefixedPath = usesNode.getGroupingPath().getPathFromRoot(); final QName current = prefixedPath.iterator().next(); - final Module targetModule = schemaContext.findModuleByNamespaceAndRevision(current.getNamespace(), current.getRevision()); + final Module targetModule = schemaContext.findModule(current.getModule()).orElse(null); Preconditions.checkArgument(targetModule != null, "Cannot find target module for %s and %s.", current.getNamespace(), current.getRevision()); - groupingNode = targetModule.getGroupings().stream().filter(grouping -> grouping.getPath().equals(usesNode.getGroupingPath())) + groupingNode = targetModule.getGroupings().stream() + .filter(grouping -> grouping.getPath().equals(usesNode.getGroupingPath())) .collect(Collectors.toList()).get(0); if (groupingNode == null) { groupingNode = SchemaContextUtil.findDataSchemaNode(schemaContext, usesNode.getGroupingPath()); @@ -398,21 +397,23 @@ final class GenHelperUtil { return null; } - static Map addRawAugmentGenTypeDefinition(final Module module, final String augmentPackageName, - final Type targetTypeRef, final SchemaNode targetNode, final List schemaPathAugmentListEntry, - final Map> genTypeBuilders, final Map genCtx, - final SchemaContext schemaContext, final boolean verboseClassComments, final TypeProvider typeProvider, + static Map addRawAugmentGenTypeDefinition(final Module module, + final String augmentPackageName, final Type targetTypeRef, final SchemaNode targetNode, + final List schemaPathAugmentListEntry, + final Map> genTypeBuilders, + final Map genCtx, final SchemaContext schemaContext, + final boolean verboseClassComments, final TypeProvider typeProvider, final BindingNamespaceType namespaceType) { //pick augmentation grouped by augmentation target, there is always at least one - final AugmentationSchema augSchema = schemaPathAugmentListEntry.get(0); + final AugmentationSchemaNode augSchema = schemaPathAugmentListEntry.get(0); Map augmentBuilders = genTypeBuilders.computeIfAbsent( augmentPackageName, k -> new HashMap<>()); //this requires valid semantics in YANG model String augIdentifier = null; - for (AugmentationSchema aug : schemaPathAugmentListEntry) { + for (AugmentationSchemaNode aug : schemaPathAugmentListEntry) { augIdentifier = getAugmentIdentifier(aug.getUnknownSchemaNodes()); break; } @@ -433,11 +434,12 @@ final class GenHelperUtil { annotateDeprecatedIfNecessary(augSchema.getStatus(), augTypeBuilder); //produces getters for augTypeBuilder eventually - for (AugmentationSchema aug : schemaPathAugmentListEntry) { + for (AugmentationSchemaNode aug : schemaPathAugmentListEntry) { //apply all uses addImplementedInterfaceFromUses(aug, augTypeBuilder, genCtx); - augSchemaNodeToMethods(module, BindingMapping.getRootPackageName(module), augTypeBuilder, augTypeBuilder, aug.getChildNodes(), - genCtx, schemaContext, verboseClassComments, typeProvider, genTypeBuilders, namespaceType); + augSchemaNodeToMethods(module, BindingMapping.getRootPackageName(module), augTypeBuilder, augTypeBuilder, + aug.getChildNodes(), genCtx, schemaContext, verboseClassComments, typeProvider, genTypeBuilders, + namespaceType); } augmentBuilders.put(augTypeBuilder.getName(), augTypeBuilder); @@ -580,7 +582,7 @@ final class GenHelperUtil { listenerInterface.addMethod(JavaIdentifierNormalizer.normalizeSpecificIdentifier(sb.toString(), JavaIdentifier.METHOD)) .setAccessModifier(AccessModifier.PUBLIC).addParameter(notificationInterface, "notification") - .setComment(encodeAngleBrackets(notification.getDescription())).setReturnType(Types.VOID); + .setComment(encodeAngleBrackets(notification.getDescription().orElse(null))).setReturnType(Types.VOID); return listenerInterface; } @@ -633,10 +635,10 @@ final class GenHelperUtil { final GeneratedTypeBuilderImpl newType = new GeneratedTypeBuilderImpl(packageName, schemaNodeName, context); final Module module = SchemaContextUtil.findParentModule(schemaContext, schemaNode); qNameConstant(newType, BindingMapping.QNAME_STATIC_FIELD_NAME, schemaNode.getQName()); - newType.addComment(schemaNode.getDescription()); + newType.addComment(schemaNode.getDescription().orElse(null)); newType.setDescription(createDescription(schemaNode, newType.getFullyQualifiedName(), schemaContext, verboseClassComments, namespaceType)); - newType.setReference(schemaNode.getReference()); + newType.setReference(schemaNode.getReference().orElse(null)); newType.setSchemaPath((List) schemaNode.getPath().getPathFromRoot()); newType.setModuleName(module.getName()); newType.setBasePackageName(BindingMapping.getRootPackageName(module)); @@ -717,7 +719,7 @@ final class GenHelperUtil { final GeneratedTypeBuilder choiceTypeBuilder = addRawInterfaceDefinition(basePackageName, choiceNode, schemaContext, "", "", verboseClasssComments, genTypeBuilders, namespaceType, genCtx.get(module)); constructGetter(parent, choiceNode.getQName().getLocalName(), - choiceNode.getDescription(), choiceTypeBuilder, choiceNode.getStatus()); + choiceNode.getDescription().orElse(null), choiceTypeBuilder, choiceNode.getStatus()); if (namespaceType.equals(BindingNamespaceType.Data)) { choiceTypeBuilder.addImplementsType(parameterizedTypeFor(BindingTypes.INSTANTIABLE, choiceTypeBuilder)); } @@ -737,7 +739,7 @@ final class GenHelperUtil { schemaContext, verboseClassComments, genCtx, genTypeBuilders, typeProvider, namespaceType); if (genType != null) { StringBuilder getterName = new StringBuilder(node.getQName().getLocalName()); - constructGetter(parent, getterName.toString(), node.getDescription(), genType, node.getStatus()); + constructGetter(parent, getterName.toString(), node.getDescription().orElse(null), genType, node.getStatus()); resolveDataSchemaNodes(module, basePackageName, genType, genType, node.getChildNodes(), genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); processUsesImplements(node, module, schemaContext, genCtx, namespaceType); @@ -760,7 +762,7 @@ final class GenHelperUtil { getterReturnType = Types.listTypeFor(wildcardTypeFor(genType.getPackageName(), genType.getName(), true, true, null)); } - constructGetter(parent, nodeName, node.getDescription(), getterReturnType, node.getStatus()); + constructGetter(parent, nodeName, node.getDescription().orElse(null), getterReturnType, node.getStatus()); final List listKeys = node.getKeyDefinition(); final String packageName = new StringBuilder(packageNameForGeneratedType(basePackageName, node.getPath(), @@ -868,7 +870,7 @@ final class GenHelperUtil { } else { if (typeDef.getBaseType() == null && (typeDef instanceof EnumTypeDefinition || typeDef instanceof UnionTypeDefinition || typeDef instanceof BitsTypeDefinition)) { - LeafSchemaNode originalLeaf = (LeafSchemaNode) ((DerivableSchemaNode) leaf).getOriginal().orNull(); + LeafSchemaNode originalLeaf = (LeafSchemaNode) ((DerivableSchemaNode) leaf).getOriginal().orElse(null); Preconditions.checkNotNull(originalLeaf); returnType = genCtx.get(findParentModule(schemaContext, originalLeaf)).getInnerType(typeDef.getPath()); } else { @@ -921,11 +923,6 @@ final class GenHelperUtil { ((TypeProviderImpl) typeProvider).putReferencedType(leaf.getPath(), returnType); } - String leafDesc = leaf.getDescription(); - if (leafDesc == null) { - leafDesc = ""; - } - final String leafGetterName; if ("key".equals(leafName.toLowerCase())) { StringBuilder sb = new StringBuilder(leafName) @@ -934,7 +931,7 @@ final class GenHelperUtil { } else { leafGetterName = leafName; } - constructGetter(typeBuilder, leafGetterName, leafDesc, returnType, leaf.getStatus()); + constructGetter(typeBuilder, leafGetterName, leaf.getDescription().orElse(""), returnType, leaf.getStatus()); return returnType; } @@ -1000,7 +997,7 @@ final class GenHelperUtil { } final ParameterizedType listType = Types.listTypeFor(returnType); - constructGetter(typeBuilder, nodeName.getLocalName(), node.getDescription(), listType, node.getStatus()); + constructGetter(typeBuilder, nodeName.getLocalName(), node.getDescription().orElse(null), listType, node.getStatus()); return true; } @@ -1044,12 +1041,7 @@ final class GenHelperUtil { checkArgument(refChoiceType != null, "Referenced Choice Type cannot be NULL."); checkArgument(choiceNode != null, "ChoiceNode cannot be NULL."); - final Set caseNodes = choiceNode.getCases(); - if (caseNodes == null) { - return; - } - - for (final ChoiceCaseNode caseNode : caseNodes) { + for (final CaseSchemaNode caseNode : choiceNode.getCases().values()) { if (caseNode != null && resolveDataSchemaNodesCheck(module, schemaContext, caseNode)) { final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(basePackageName, caseNode, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); @@ -1065,14 +1057,14 @@ final class GenHelperUtil { if (!Iterables.isEmpty(choiceNodeParentPath.getPathFromRoot())) { SchemaNode parent = findDataSchemaNode(schemaContext, choiceNodeParentPath); - if (parent instanceof AugmentationSchema) { - final AugmentationSchema augSchema = (AugmentationSchema) parent; + if (parent instanceof AugmentationSchemaNode) { + final AugmentationSchemaNode augSchema = (AugmentationSchemaNode) parent; final SchemaPath targetPath = augSchema.getTargetPath(); SchemaNode targetSchemaNode = findDataSchemaNode(schemaContext, targetPath); if (targetSchemaNode instanceof DataSchemaNode && ((DataSchemaNode) targetSchemaNode).isAddedByUses()) { if (targetSchemaNode instanceof DerivableSchemaNode) { - targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orNull(); + targetSchemaNode = ((DerivableSchemaNode) targetSchemaNode).getOriginal().orElse(null); } if (targetSchemaNode == null) { throw new IllegalStateException( @@ -1112,14 +1104,8 @@ final class GenHelperUtil { return null; } - String anyDesc = node.getDescription(); - if (anyDesc == null) { - anyDesc = ""; - } - Type returnType = Types.DOCUMENT; - - constructGetter(typeBuilder, anyName, anyDesc, returnType, node.getStatus()); + constructGetter(typeBuilder, anyName, node.getDescription().orElse(""), returnType, node.getStatus()); return returnType; } @@ -1245,16 +1231,14 @@ final class GenHelperUtil { // GeneratedType for this type definition should be already // created final QName qname = typeDef.getQName(); - final Module unionModule = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), - qname.getRevision()); + final Module unionModule = schemaContext.findModule(qname.getModule()).get(); final ModuleContext mc = genCtx.get(unionModule); returnType = mc.getTypedefs().get(typeDef.getPath()); } else if (typeDef instanceof EnumTypeDefinition && typeDef.getBaseType() == null) { // Annonymous enumeration (already generated, since it is inherited via uses). LeafSchemaNode originalLeaf = (LeafSchemaNode) SchemaNodeUtils.getRootOriginalIfPossible(leaf); QName qname = originalLeaf.getQName(); - final Module enumModule = schemaContext.findModuleByNamespaceAndRevision(qname.getNamespace(), - qname.getRevision()); + final Module enumModule = schemaContext.findModule(qname.getModule()).orElse(null); returnType = genCtx.get(enumModule).getInnerType(originalLeaf.getType().getPath()); } else { returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, leaf, genCtx.get(module)); @@ -1277,12 +1261,12 @@ final class GenHelperUtil { final GeneratedTypeBuilder genType = addDefaultInterfaceDefinition(basePackageName, node, childOf, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); - genType.addComment(node.getDescription()); + genType.addComment(node.getDescription().orElse(null)); annotateDeprecatedIfNecessary(node.getStatus(), genType); genType.setDescription(createDescription(node, genType.getFullyQualifiedName(), schemaContext, verboseClassComments, namespaceType)); genType.setModuleName(module.getName()); - genType.setReference(node.getReference()); + genType.setReference(node.getReference().orElse(null)); genType.setSchemaPath((List) node.getPath().getPathFromRoot()); genType.setParentTypeForBuilder(childOf); if (node instanceof DataNodeContainer) { @@ -1427,10 +1411,10 @@ final class GenHelperUtil { } newType.setAbstract(true); - newType.addComment(identity.getDescription()); + newType.addComment(identity.getDescription().orElse(null)); newType.setDescription(createDescription(identity, newType.getFullyQualifiedName(), schemaContext, verboseClassComments, BindingNamespaceType.Identity)); - newType.setReference(identity.getReference()); + newType.setReference(identity.getReference().orElse(null)); newType.setModuleName(module.getName()); newType.setSchemaPath((List) identity.getPath().getPathFromRoot()); diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java index 1a85b1ab45..ba6a18ec6f 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java @@ -34,6 +34,7 @@ import static org.opendaylight.mdsal.binding.javav2.generator.util.Types.VOID; import static org.opendaylight.mdsal.binding.javav2.generator.util.Types.parameterizedTypeFor; import com.google.common.annotations.Beta; +import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.Collection; @@ -62,15 +63,13 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; /** - * * Util class used for generation of types for RPCs, routedRPCs and Actions (YANG 1.1 only) * in Binding spec. v2. In case of routed RPC detected in input YANG, RPC is turned to Action. - * */ @Beta final class RpcActionGenHelper { - - private static final QName CONTEXT_REFERENCE = + @VisibleForTesting + static final QName CONTEXT_REFERENCE = QName.create("urn:opendaylight:yang:extension:yang-ext", "2013-07-09", "context-reference").intern(); private RpcActionGenHelper() { @@ -87,7 +86,8 @@ final class RpcActionGenHelper { * @param schemaNode RPC input node * @return presence optional */ - private static Optional getRoutingContext(final DataSchemaNode schemaNode) { + @VisibleForTesting + static Optional getRoutingContext(final DataSchemaNode schemaNode) { for (UnknownSchemaNode extension : schemaNode.getUnknownSchemaNodes()) { if (CONTEXT_REFERENCE.equals(extension.getNodeType())) { return Optional.fromNullable(extension.getQName()); @@ -98,8 +98,8 @@ final class RpcActionGenHelper { private static void resolveActions(final DataNodeContainer parent, final Module module, final SchemaContext schemaContext, final boolean verboseClassComments, - Map> genTypeBuilders, final Map genCtx, - TypeProvider typeProvider, final BindingNamespaceType namespaceType) { + final Map> genTypeBuilders, final Map genCtx, + final TypeProvider typeProvider, final BindingNamespaceType namespaceType) { Preconditions.checkNotNull(parent, "Parent should not be NULL."); final Collection potentials = parent.getChildNodes(); for (DataSchemaNode potential : potentials) { @@ -136,9 +136,9 @@ final class RpcActionGenHelper { * @param verboseClassComments verbosity switch * @return generated context */ - static Map actionMethodsToGenType(final Module module, Map genCtx, + static Map actionMethodsToGenType(final Module module, final Map genCtx, final SchemaContext schemaContext, final boolean verboseClassComments, - Map> genTypeBuilders, TypeProvider typeProvider) { + final Map> genTypeBuilders, final TypeProvider typeProvider) { checkModuleAndModuleName(module); resolveActions(module, module, schemaContext, verboseClassComments, genTypeBuilders, genCtx, typeProvider, @@ -168,9 +168,9 @@ final class RpcActionGenHelper { * * @return generated context */ - static Map rpcMethodsToGenType(final Module module, Map genCtx, - final SchemaContext schemaContext, final boolean verboseClassComments, Map> genTypeBuilders, TypeProvider typeProvider) { + static Map rpcMethodsToGenType(final Module module, final Map genCtx, + final SchemaContext schemaContext, final boolean verboseClassComments, final Map> genTypeBuilders, final TypeProvider typeProvider) { checkModuleAndModuleName(module); final Set rpcDefinitions = module.getRpcs(); @@ -216,8 +216,8 @@ final class RpcActionGenHelper { */ private static GeneratedTypeBuilder resolveOperation(final DataSchemaNode parent, final OperationDefinition operation, final Module module, final SchemaContext schemaContext, final boolean verboseClassComments, - Map> genTypeBuilders, final Map genCtx, - TypeProvider typeProvider, final boolean isAction, final BindingNamespaceType namespaceType) { + final Map> genTypeBuilders, final Map genCtx, + final TypeProvider typeProvider, final boolean isAction, final BindingNamespaceType namespaceType) { //operation name final String operationName = operation.getQName().getLocalName(); @@ -235,7 +235,7 @@ final class RpcActionGenHelper { interfaceBuilder.setDescription(createDescription(operation, interfaceBuilder.getFullyQualifiedName(), schemaContext, verboseClassComments, namespaceType)); - final String operationComment = encodeAngleBrackets(operation.getDescription()); + final String operationComment = encodeAngleBrackets(operation.getDescription().orElse(null)); final MethodSignatureBuilder operationMethod = interfaceBuilder.addMethod("invoke"); //input @@ -302,9 +302,9 @@ final class RpcActionGenHelper { return interfaceBuilder; } - private static GeneratedTypeBuilder resolveOperationNode(GeneratedTypeBuilder parent, final Module module, final + private static GeneratedTypeBuilder resolveOperationNode(final GeneratedTypeBuilder parent, final Module module, final ContainerSchemaNode operationNode, final String basePackageName, final SchemaContext schemaContext, final String - operationName, final boolean verboseClassComments, TypeProvider typeProvider, Map> genTypeBuilders, final Map genCtx, final boolean isInput, final BindingNamespaceType namespaceType) { final GeneratedTypeBuilder nodeType = addRawInterfaceDefinition(basePackageName, operationNode, schemaContext, diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/BaseYangTypes.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/BaseYangTypes.java index 2866b182a9..ee50c8417e 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/BaseYangTypes.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/BaseYangTypes.java @@ -156,7 +156,7 @@ public final class BaseYangTypes { */ @Override public Type javaTypeForSchemaDefinitionType(final TypeDefinition type, final SchemaNode parentNode, - ModuleContext context) { + final ModuleContext context) { if (type != null) { return TYPE_MAP.get(type.getQName().getLocalName()); } @@ -166,7 +166,7 @@ public final class BaseYangTypes { @Override public Type javaTypeForSchemaDefinitionType(final TypeDefinition type, final SchemaNode parentNode, - final Restrictions restrictions, ModuleContext context) { + final Restrictions restrictions, final ModuleContext context) { final String typeName = type.getQName().getLocalName(); switch (typeName) { @@ -218,7 +218,7 @@ public final class BaseYangTypes { } }; - private static Restrictions singleRangeRestrictions(final T min, final T max) { + private static > Restrictions singleRangeRestrictions(final T min, final T max) { return Types.getDefaultRestrictions(min, max); } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/GroupingDefinitionDependencySort.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/GroupingDefinitionDependencySort.java index 4285e1c345..6249b42bb5 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/GroupingDefinitionDependencySort.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/GroupingDefinitionDependencySort.java @@ -18,8 +18,8 @@ import java.util.Map; import java.util.Set; import org.opendaylight.yangtools.util.TopologicalSort; import org.opendaylight.yangtools.util.TopologicalSort.Node; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -130,7 +130,7 @@ public class GroupingDefinitionDependencySort { ret.addAll(usesNodes); for (UsesNode usesNode : usesNodes) { - for (AugmentationSchema augment : usesNode.getAugmentations()) { + for (AugmentationSchemaNode augment : usesNode.getAugmentations()) { ret.addAll(getAllUsesNodes(augment)); } } @@ -142,8 +142,7 @@ public class GroupingDefinitionDependencySort { if (childNode instanceof DataNodeContainer) { ret.addAll(getAllUsesNodes((DataNodeContainer) childNode)); } else if (childNode instanceof ChoiceSchemaNode) { - Set cases = ((ChoiceSchemaNode) childNode).getCases(); - for (ChoiceCaseNode choiceCaseNode : cases) { + for (CaseSchemaNode choiceCaseNode : ((ChoiceSchemaNode) childNode).getCases().values()) { ret.addAll(getAllUsesNodes(choiceCaseNode)); } } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeGenHelper.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeGenHelper.java index 7374bd7bd7..7e5f38e148 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeGenHelper.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeGenHelper.java @@ -16,12 +16,11 @@ import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.io.Serializable; -import java.net.URI; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.TreeMap; import org.apache.commons.lang3.StringEscapeUtils; @@ -41,10 +40,10 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedPro import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTOBuilder; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; -import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -124,8 +123,8 @@ final class TypeGenHelper { @SuppressWarnings({ "rawtypes", "unchecked" }) static GeneratedTransferObject provideGeneratedTOFromExtendedType(final TypeDefinition typedef, final TypeDefinition innerExtendedType, final String basePackageName, final String moduleName, final SchemaContext - schemaContext, final Map>> genTypeDefsContextMap, - ModuleContext context) { + schemaContext, final Map, Map>> genTypeDefsContextMap, + final ModuleContext context) { Preconditions.checkArgument(innerExtendedType != null, "Extended type cannot be NULL!"); Preconditions.checkArgument(basePackageName != null, "String with base package name cannot be NULL!"); @@ -133,10 +132,10 @@ final class TypeGenHelper { final String typedefName = typedef.getQName().getLocalName(); final String innerTypeDef = innerExtendedType.getQName().getLocalName(); final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typedefName, context); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); genTOBuilder.setDescription(typedefDescription); - genTOBuilder.setReference(typedef.getReference()); + genTOBuilder.setReference(typedef.getReference().orElse(null)); genTOBuilder.setSchemaPath((List) typedef.getPath().getPathFromRoot()); genTOBuilder.setModuleName(moduleName); genTOBuilder.setTypedef(true); @@ -150,7 +149,7 @@ final class TypeGenHelper { genTOBuilder.setIsUnion(true); } - Map> modulesByDate = null; + Map, Map> modulesByDate = null; Map typeMap = null; final Module parentModule = findParentModule(schemaContext, innerExtendedType); if (parentModule != null) { @@ -164,7 +163,7 @@ final class TypeGenHelper { genTOBuilder.setExtendsType((GeneratedTransferObject) type); } } - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable(genTOBuilder); return genTOBuilder.toInstance(); @@ -182,7 +181,7 @@ final class TypeGenHelper { * @return generated transfer object which representjavaType */ static GeneratedTransferObject wrapJavaTypeIntoTO(final String basePackageName, final TypeDefinition typedef, - final Type javaType, final String moduleName, ModuleContext context) { + final Type javaType, final String moduleName, final ModuleContext context) { Preconditions.checkNotNull(javaType, "javaType cannot be null"); final String propertyName = "value"; @@ -200,7 +199,7 @@ final class TypeGenHelper { final List regExps = resolveRegExpressionsFromTypedef(typedef); addStringRegExAsConstant(genTOBuilder, regExps); } - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); genTOBuilder.setTypedef(true); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); return genTOBuilder.toInstance(); @@ -229,7 +228,7 @@ final class TypeGenHelper { final List regExps = new ArrayList<>(patternConstraints.size()); for (final PatternConstraint patternConstraint : patternConstraints) { - final String regEx = patternConstraint.getRegularExpression(); + final String regEx = patternConstraint.getJavaPatternString(); final String modifiedRegEx = StringEscapeUtils.escapeJava(regEx); regExps.add(modifiedRegEx); } @@ -386,11 +385,8 @@ final class TypeGenHelper { } else if (childNode instanceof ListSchemaNode) { fillRecursively(list, (ListSchemaNode) childNode); } else if (childNode instanceof ChoiceSchemaNode) { - final Set cases = ((ChoiceSchemaNode) childNode).getCases(); - if (cases != null) { - for (final ChoiceCaseNode caseNode : cases) { - fillRecursively(list, caseNode); - } + for (final CaseSchemaNode caseNode : ((ChoiceSchemaNode) childNode).getCases().values()) { + fillRecursively(list, caseNode); } } }); @@ -441,7 +437,7 @@ final class TypeGenHelper { */ @SuppressWarnings({ "rawtypes", "unchecked" }) static Enumeration provideTypeForEnum(final EnumTypeDefinition enumTypeDef, final String enumName, - final SchemaNode parentNode, final SchemaContext schemaContext, ModuleContext context) { + final SchemaNode parentNode, final SchemaContext schemaContext, final ModuleContext context) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); @@ -458,9 +454,9 @@ final class TypeGenHelper { } final EnumerationBuilderImpl enumBuilder = new EnumerationBuilderImpl(packageName, enumName, context); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); - enumBuilder.setReference(enumTypeDef.getReference()); + enumBuilder.setReference(enumTypeDef.getReference().orElse(null)); enumBuilder.setModuleName(module.getName()); enumBuilder.setSchemaPath((List) enumTypeDef.getPath().getPathFromRoot()); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); @@ -479,15 +475,15 @@ final class TypeGenHelper { */ @SuppressWarnings({ "unchecked", "rawtypes" }) private static GeneratedTOBuilderImpl typedefToTransferObject(final String basePackageName, - final TypeDefinition typedef, final String moduleName, ModuleContext context) { + final TypeDefinition typedef, final String moduleName, final ModuleContext context) { final String typeDefTOName = typedef.getQName().getLocalName(); - if ((basePackageName != null) && (typeDefTOName != null)) { + if (basePackageName != null && typeDefTOName != null) { final GeneratedTOBuilderImpl newType = new GeneratedTOBuilderImpl(basePackageName, typeDefTOName, context); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); newType.setDescription(typedefDescription); - newType.setReference(typedef.getReference()); + newType.setReference(typedef.getReference().orElse(null)); newType.setSchemaPath((List) typedef.getPath().getPathFromRoot()); newType.setModuleName(moduleName); @@ -497,9 +493,6 @@ final class TypeGenHelper { } static Module getParentModule(final SchemaNode node, final SchemaContext schemaContext) { - final QName qname = node.getPath().getPathFromRoot().iterator().next(); - final URI namespace = qname.getNamespace(); - final Date revision = qname.getRevision(); - return schemaContext.findModuleByNamespaceAndRevision(namespace, revision); + return schemaContext.findModule(node.getPath().getPathFromRoot().iterator().next().getModule()).orElse(null); } } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java index 31e1f0fcb2..acff4d595f 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/yang/types/TypeProviderImpl.java @@ -26,18 +26,17 @@ import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findD import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findDataSchemaNodeForRelativeXPath; import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.findParentModule; -import com.google.common.base.Optional; import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.google.common.collect.Sets; import java.util.ArrayList; import java.util.Collections; -import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -63,6 +62,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignat import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; @@ -103,7 +103,7 @@ public final class TypeProviderImpl implements TypeProvider { /** * Map>> */ - private final Map>> genTypeDefsContextMap; + private final Map, Map>> genTypeDefsContextMap; /** * Map which maps schema paths to JAVA Type. @@ -133,7 +133,7 @@ public final class TypeProviderImpl implements TypeProvider { @Override public Type javaTypeForSchemaDefinitionType(final TypeDefinition type, final SchemaNode parentNode, - ModuleContext context) { + final ModuleContext context) { return javaTypeForSchemaDefinitionType(type, parentNode, null, context); } @@ -152,7 +152,7 @@ public final class TypeProviderImpl implements TypeProvider { */ @Override public Type javaTypeForSchemaDefinitionType(final TypeDefinition type, final SchemaNode parentNode, final - Restrictions restrictions, ModuleContext context) { + Restrictions restrictions, final ModuleContext context) { return javaTypeForSchemaDefType(type, parentNode, restrictions, this.schemaContext, this .genTypeDefsContextMap, context); } @@ -172,7 +172,7 @@ public final class TypeProviderImpl implements TypeProvider { return null; } - public Map>> getGenTypeDefsContextMap() { + public Map, Map>> getGenTypeDefsContextMap() { return this.genTypeDefsContextMap; } @@ -190,15 +190,16 @@ public final class TypeProviderImpl implements TypeProvider { * returned types (generated types). * */ - private void resolveTypeDefsFromContext(final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, final Map> additionalTypes) { + private void resolveTypeDefsFromContext(final SchemaContext schemaContext, + final Map, Map>> genTypeDefsContextMap, + final Map> additionalTypes) { final Set modules = schemaContext.getModules(); Preconditions.checkArgument(modules != null, "Set of Modules cannot be NULL!"); final List modulesSortedByDependency = ModuleDependencySort.sort(modules); for (final Module module : modulesSortedByDependency) { - Map> dateTypeMap = genTypeDefsContextMap.get(module.getName()); + Map, Map> dateTypeMap = genTypeDefsContextMap.get(module.getName()); if (dateTypeMap == null) { dateTypeMap = new HashMap<>(); } @@ -246,7 +247,7 @@ public final class TypeProviderImpl implements TypeProvider { final Module module = findParentModule(this.schemaContext, parentNode); if (module != null) { - final Map> modulesByDate = this.genTypeDefsContextMap.get(module.getName()); + final Map, Map> modulesByDate = this.genTypeDefsContextMap.get(module.getName()); final Map genTOs = modulesByDate.get(module.getRevision()); if (genTOs != null) { return genTOs.get(typeDefinition.getQName().getLocalName()); @@ -299,7 +300,7 @@ public final class TypeProviderImpl implements TypeProvider { */ @SuppressWarnings({ "rawtypes", "unchecked" }) public GeneratedTOBuilder provideGeneratedTOBuilderForBitsTypeDefinition(final String basePackageName, - final TypeDefinition typeDef, final String typeDefName, final String moduleName, ModuleContext context) { + final TypeDefinition typeDef, final String typeDefName, final String moduleName, final ModuleContext context) { Preconditions.checkArgument(typeDef != null, "typeDef cannot be NULL!"); Preconditions.checkArgument(basePackageName != null, "Base Package Name cannot be NULL!"); @@ -309,10 +310,10 @@ public final class TypeProviderImpl implements TypeProvider { final GeneratedTOBuilderImpl genTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeDefName, true, false, context); - final String typedefDescription = encodeAngleBrackets(typeDef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typeDef.getDescription().orElse(null)); genTOBuilder.setDescription(typedefDescription); - genTOBuilder.setReference(typeDef.getReference()); + genTOBuilder.setReference(typeDef.getReference().orElse(null)); genTOBuilder.setSchemaPath((List) typeDef.getPath().getPathFromRoot()); genTOBuilder.setModuleName(moduleName); genTOBuilder.setBaseType(typeDef); @@ -359,7 +360,7 @@ public final class TypeProviderImpl implements TypeProvider { @SuppressWarnings({ "rawtypes", "unchecked" }) public List provideGeneratedTOBuildersForUnionTypeDef(final String basePackageName, final UnionTypeDefinition typedef, final String typeDefName, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, ModuleContext context) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap, final ModuleContext context) { Preconditions.checkNotNull(basePackageName, "Base Package Name cannot be NULL!"); Preconditions.checkNotNull(typedef, "Type Definition cannot be NULL!"); Preconditions.checkNotNull(typedef.getQName(), "Type definition QName cannot be NULL!"); @@ -371,9 +372,9 @@ public final class TypeProviderImpl implements TypeProvider { final GeneratedTOBuilderImpl unionGenTOBuilder; unionGenTOBuilder = new GeneratedTOBuilderImpl(basePackageName, typeDefName, true, false, context); - final String typedefDescription = encodeAngleBrackets(typedef.getDescription()); + final String typedefDescription = encodeAngleBrackets(typedef.getDescription().orElse(null)); unionGenTOBuilder.setDescription(typedefDescription); - unionGenTOBuilder.setReference(typedef.getReference()); + unionGenTOBuilder.setReference(typedef.getReference().orElse(null)); unionGenTOBuilder.setSchemaPath((List) typedef.getPath().getPathFromRoot()); unionGenTOBuilder.setModuleName(module.getName()); @@ -423,7 +424,7 @@ public final class TypeProviderImpl implements TypeProvider { private Type javaTypeForSchemaDefType(final TypeDefinition typeDefinition, final SchemaNode parentNode, final Restrictions r, final SchemaContext schemaContext, - final Map>> genTypeDefsContextMap, ModuleContext context) { + final Map, Map>> genTypeDefsContextMap, final ModuleContext context) { Preconditions.checkArgument(typeDefinition != null, "Type Definition cannot be NULL!"); final String typedefName = typeDefinition.getQName().getLocalName(); Preconditions.checkArgument(typedefName != null, "Type Definitions Local Name cannot be NULL!"); @@ -468,7 +469,7 @@ public final class TypeProviderImpl implements TypeProvider { final String genTOName = JavaIdentifierNormalizer.normalizeSpecificIdentifier(typedefName, JavaIdentifier.CLASS); final String name = packageName + "." + genTOName; - if (module.equals(module1) && !(returnType.getFullyQualifiedName().equals(name))) { + if (module.equals(module1) && !returnType.getFullyQualifiedName().equals(name)) { returnType = shadedTOWithRestrictions(gto, r, context); } } @@ -491,11 +492,12 @@ public final class TypeProviderImpl implements TypeProvider { * typedef equals null */ private Type typedefToGeneratedType(final String basePackageName, final Module module, - final TypeDefinition typedef, final Map>> genTypeDefsContextMap, - final Map> additionalTypes, final SchemaContext schemaContext, ModuleContext context) { + final TypeDefinition typedef, + final Map, Map>> genTypeDefsContextMap, + final Map> additionalTypes, final SchemaContext schemaContext, final ModuleContext context) { final String moduleName = module.getName(); - final Date moduleRevision = module.getRevision(); - if ((basePackageName != null) && (moduleName != null) && (typedef != null)) { + final Optional moduleRevision = module.getRevision(); + if (basePackageName != null && moduleName != null && typedef != null) { final String typedefName = typedef.getQName().getLocalName(); final TypeDefinition innerTypeDefinition = typedef.getBaseType(); if (!(innerTypeDefinition instanceof LeafrefTypeDefinition) @@ -510,7 +512,7 @@ public final class TypeProviderImpl implements TypeProvider { genTypeDefsContextMap, context); genTOBuilder.setTypedef(true); genTOBuilder.setIsUnion(true); - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); returnType = genTOBuilder.toInstance(); } else if (innerTypeDefinition instanceof EnumTypeDefinition) { @@ -524,7 +526,7 @@ public final class TypeProviderImpl implements TypeProvider { provideGeneratedTOBuilderForBitsTypeDefinition( basePackageName, bitsTypeDefinition, typedefName, module.getName(), context); genTOBuilder.setTypedef(true); - addUnitsToGenTO(genTOBuilder, typedef.getUnits()); + addUnitsToGenTO(genTOBuilder, typedef.getUnits().orElse(null)); makeSerializable((GeneratedTOBuilderImpl) genTOBuilder); returnType = genTOBuilder.toInstance(); } else { @@ -533,7 +535,7 @@ public final class TypeProviderImpl implements TypeProvider { returnType = wrapJavaTypeIntoTO(basePackageName, typedef, javaType, module.getName(), context); } if (returnType != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(moduleName); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(moduleName); Map typeMap = modulesByDate.get(moduleRevision); if (typeMap != null) { if (typeMap.isEmpty()) { @@ -558,7 +560,7 @@ public final class TypeProviderImpl implements TypeProvider { * @return JAVA Type instance for typeDefinition */ private Type javaTypeForExtendedType(final TypeDefinition typeDefinition, final SchemaContext schemaContext, - final Map>> genTypeDefsContextMap, ModuleContext context) { + final Map, Map>> genTypeDefsContextMap, final ModuleContext context) { final String typedefName = typeDefinition.getQName().getLocalName(); final TypeDefinition baseTypeDef = baseTypeDefForExtendedType(typeDefinition); @@ -568,7 +570,7 @@ public final class TypeProviderImpl implements TypeProvider { final Module module = findParentModule(schemaContext, typeDefinition); final Restrictions r = BindingGeneratorUtil.getRestrictions(typeDefinition); if (module != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(module.getName()); final Map genTOs = modulesByDate.get(module.getRevision()); if (genTOs != null) { returnType = genTOs.get(typedefName); @@ -592,8 +594,8 @@ public final class TypeProviderImpl implements TypeProvider { * @return JAVA Type instance for typeDefinition */ private Type javaTypeForLeafrefOrIdentityRef(final TypeDefinition typeDefinition, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, - ModuleContext context) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap, + final ModuleContext context) { if (typeDefinition instanceof LeafrefTypeDefinition) { final LeafrefTypeDefinition leafref = (LeafrefTypeDefinition) typeDefinition; Preconditions.checkArgument(!isLeafRefSelfReference(leafref, parentNode, schemaContext), @@ -625,8 +627,8 @@ public final class TypeProviderImpl implements TypeProvider { * */ public Type provideTypeForLeafref(final LeafrefTypeDefinition leafrefType, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, - ModuleContext context) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap, + final ModuleContext context) { Type returnType = null; Preconditions.checkArgument(leafrefType != null, "Leafref Type Definition reference cannot be NULL!"); @@ -640,7 +642,7 @@ public final class TypeProviderImpl implements TypeProvider { if (strXPath.indexOf('[') == -1) { final Module module; final SchemaNode actualParentSchemaNode; - if ((parentNode instanceof DerivableSchemaNode) && ((DerivableSchemaNode) parentNode).isAddedByUses()) { + if (parentNode instanceof DerivableSchemaNode && ((DerivableSchemaNode) parentNode).isAddedByUses()) { final Optional originalNode = ((DerivableSchemaNode) parentNode).getOriginal(); Preconditions.checkArgument(originalNode.isPresent(), "originalNode can not be null."); actualParentSchemaNode = originalNode.get(); @@ -732,7 +734,7 @@ public final class TypeProviderImpl implements TypeProvider { * @return JAVA Type representation of dataNode */ private Type resolveTypeFromDataSchemaNode(final SchemaNode dataNode, final SchemaContext schemaContext, - final Map>> genTypeDefsContextMap, ModuleContext context) { + final Map, Map>> genTypeDefsContextMap, final ModuleContext context) { Type returnType = null; if (dataNode != null) { if (dataNode instanceof LeafSchemaNode) { @@ -767,8 +769,7 @@ public final class TypeProviderImpl implements TypeProvider { private static Type provideTypeForIdentityref(final IdentityrefTypeDefinition idref, final SchemaContext schemaContext) { //TODO: incompatibility with Binding spec v2, get first or only one final QName baseIdQName = idref.getIdentities().iterator().next().getQName(); - final Module module = schemaContext.findModuleByNamespaceAndRevision(baseIdQName.getNamespace(), - baseIdQName.getRevision()); + final Module module = schemaContext.findModule(baseIdQName.getModule()).orElse(null); IdentitySchemaNode identity = null; for (final IdentitySchemaNode id : module.getIdentities()) { if (id.getQName().equals(baseIdQName)) { @@ -790,7 +791,7 @@ public final class TypeProviderImpl implements TypeProvider { } private static GeneratedTransferObject shadedTOWithRestrictions(final GeneratedTransferObject gto, - final Restrictions r, ModuleContext context) { + final Restrictions r, final ModuleContext context) { final GeneratedTOBuilder gtob = new GeneratedTOBuilderImpl(gto.getPackageName(), gto.getName(), context); final GeneratedTransferObject parent = gto.getSuperType(); if (parent != null) { @@ -858,8 +859,8 @@ public final class TypeProviderImpl implements TypeProvider { */ private GeneratedTOBuilder resolveUnionSubtypeAsUnion(final GeneratedTOBuilder parentUnionGenTOBuilder, final UnionTypeDefinition unionSubtype, final String basePackageName, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, - ModuleContext context) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap, + final ModuleContext context) { final String newTOBuilderName = provideAvailableNameForGenTOBuilder(parentUnionGenTOBuilder.getName()); final GeneratedTOBuilder subUnionGenTOBUilder = provideGeneratedTOBuilderForUnionTypeDef( @@ -892,8 +893,8 @@ public final class TypeProviderImpl implements TypeProvider { */ public GeneratedTOBuilder provideGeneratedTOBuilderForUnionTypeDef(final String basePackageName, final UnionTypeDefinition typedef, final String typeDefName, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap, - ModuleContext context) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap, + final ModuleContext context) { final List builders = provideGeneratedTOBuildersForUnionTypeDef(basePackageName, typedef, typeDefName, parentNode, schemaContext, genTypeDefsContextMap, context); @@ -970,7 +971,7 @@ public final class TypeProviderImpl implements TypeProvider { */ private static void resolveExtendedSubtypeAsUnion(final GeneratedTOBuilder parentUnionGenTOBuilder, final TypeDefinition unionSubtype, final List regularExpressions, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap) { final String unionTypeName = unionSubtype.getQName().getLocalName(); final Type genTO = findGenTO(unionTypeName, unionSubtype, schemaContext, genTypeDefsContextMap); @@ -1020,11 +1021,11 @@ public final class TypeProviderImpl implements TypeProvider { * null it it doesn't exist */ private static Type findGenTO(final String searchedTypeName, final SchemaNode parentNode, - final SchemaContext schemaContext, final Map>> genTypeDefsContextMap) { + final SchemaContext schemaContext, final Map, Map>> genTypeDefsContextMap) { final Module typeModule = findParentModule(schemaContext, parentNode); if (typeModule != null && typeModule.getName() != null) { - final Map> modulesByDate = genTypeDefsContextMap.get(typeModule.getName()); + final Map, Map> modulesByDate = genTypeDefsContextMap.get(typeModule.getName()); final Map genTOs = modulesByDate.get(typeModule.getRevision()); if (genTOs != null) { return genTOs.get(searchedTypeName); @@ -1057,14 +1058,14 @@ public final class TypeProviderImpl implements TypeProvider { * */ private static Enumeration addInnerEnumerationToTypeBuilder(final EnumTypeDefinition enumTypeDef, - final String enumName, final GeneratedTypeBuilderBase typeBuilder, ModuleContext context) { + final String enumName, final GeneratedTypeBuilderBase typeBuilder, final ModuleContext context) { Preconditions.checkArgument(enumTypeDef != null, "EnumTypeDefinition reference cannot be NULL!"); Preconditions.checkArgument(enumTypeDef.getQName().getLocalName() != null, "Local Name in EnumTypeDefinition QName cannot be NULL!"); Preconditions.checkArgument(typeBuilder != null, "Generated Type Builder reference cannot be NULL!"); final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumName, context); - final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription()); + final String enumTypedefDescription = encodeAngleBrackets(enumTypeDef.getDescription().orElse(null)); enumBuilder.setDescription(enumTypedefDescription); enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef); return enumBuilder.toInstance(enumBuilder); @@ -1111,7 +1112,7 @@ public final class TypeProviderImpl implements TypeProvider { } else { leafRefValueNode = SchemaContextUtil.findDataSchemaNode(schemaContext, parentModule, leafRefStrippedXPath); } - return (leafRefValueNode != null) && leafRefValueNode.equals(parentNode); + return leafRefValueNode != null && leafRefValueNode.equals(parentNode); } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateForModule.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateForModule.scala.txt index 02dbb57aab..38b4c1fe20 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateForModule.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateForModule.scala.txt @@ -14,7 +14,6 @@ ***********************************************************@ @import org.opendaylight.mdsal.binding.javav2.generator.impl.util.YangTextTemplate -@import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil @import org.opendaylight.yangtools.yang.model.api.Module @import org.opendaylight.yangtools.yang.model.api.DocumentedNode @import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement @@ -34,19 +33,24 @@ @if(module.getImports() != null && !module.getImports().isEmpty()) { @for(moduleImport <- module.getImports()) { @if(moduleImport != null && moduleImport.getModuleName() != "") { - import @{moduleImport.getModuleName()} { prefix "@{moduleImport.getPrefix()}"; revision-date @{SimpleDateFormatUtil.getRevisionFormat().format(moduleImport.getRevision())}; } + import @{moduleImport.getModuleName()} { + prefix "@{moduleImport.getPrefix()}"; + @if(moduleImport.getRevision().isPresent()) { + revision-date @{moduleImport.getRevision().get().toString()}; + } + } } } } - @if(module.getRevision() != null) { + @if(module.getRevision().isPresent()) { @for(effectiveStatement <- module.asInstanceOf[EffectiveStatement[_, _]].effectiveSubstatements()){ @if(effectiveStatement.getDeclared().isInstanceOf[RevisionStatement]){ - @if(effectiveStatement.asInstanceOf[DocumentedNode].getDescription() == null || effectiveStatement.asInstanceOf[DocumentedNode].getDescription().isEmpty()){ - revision @{SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())}; - } else { - revision @{SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())} { - description "@{effectiveStatement.asInstanceOf[DocumentedNode].getDescription()}"; + @if(effectiveStatement.asInstanceOf[DocumentedNode].getDescription().isPresent()){ + revision @{module.getRevision().get().toString()} { + description "@{effectiveStatement.asInstanceOf[DocumentedNode].getDescription().get()}"; } + } else { + revision @{module.getRevision().get().toString()}; } } } @@ -108,4 +112,4 @@ @yangTemplateWriteUsesNodes(module.getUses(), module) } } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAction.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAction.scala.txt index db798a6838..16bed73143 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAction.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAction.scala.txt @@ -19,8 +19,8 @@ @(action: ActionDefinition, module: Module) action @{action.getQName().getLocalName()} { - @if(action.getDescription() != null && !action.getDescription().isEmpty()) { - "@{action.getDescription()}"; + @if(action.getDescription().isPresent()) { + "@{action.getDescription().get()}"; } @if(action.getGroupings() != null && !action.getGroupings().isEmpty()) { @yangTemplateWriteGroupingDefs(action.getGroupings(), module) @@ -35,10 +35,10 @@ action @{action.getQName().getLocalName()} { @yangTemplateWriteDataSchemaNodes(action.getOutput().getChildNodes, module) } } - @if(action.getReference() != null && !action.getReference().isEmpty()) { - reference "@{action.getReference()}"; + @if(action.getReference().isPresent()) { + reference "@{action.getReference().get()}"; } @if(action.getStatus() != Status.CURRENT) { status @{action.getStatus()}; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAugments.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAugments.scala.txt index 64d851d90b..7f22c44a97 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAugments.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteAugments.scala.txt @@ -14,22 +14,22 @@ ***********************************************************@ @import org.opendaylight.mdsal.binding.javav2.generator.impl.util.YangTextTemplate -@import org.opendaylight.yangtools.yang.model.api.AugmentationSchema +@import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode @import org.opendaylight.yangtools.yang.model.api.Module @import org.opendaylight.yangtools.yang.model.api.Status -@(augments: Set[_ <: AugmentationSchema], module: Module) +@(augments: Set[_ <: AugmentationSchemaNode], module: Module) @for(augment <- augments) { @if(augment != null) { augment "@{YangTextTemplate.formatToAugmentPath(augment.getTargetPath().getPathFromRoot())}" { @if(augment.getWhenCondition() != null && !augment.getWhenCondition().toString().isEmpty()) { when "@augment.getWhenCondition().toString()"; } - @if(augment.getDescription() != null && !augment.getDescription().isEmpty()) { - description "@augment.getDescription().toString()"; + @if(augment.getDescription().isPresent()) { + description "@augment.getDescription().get()"; } - @if(augment.getReference() != null && !augment.getReference().isEmpty()) { - reference "@augment.getReference().toString()"; + @if(augment.getReference().isPresent()) { + reference "@augment.getReference().get()"; } @if(augment.getStatus() != Status.CURRENT) { status "@augment.getStatus()"; @@ -45,4 +45,4 @@ } } } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteConstraints.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteConstraints.scala.txt deleted file mode 100644 index 7d1576abc2..0000000000 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteConstraints.scala.txt +++ /dev/null @@ -1,28 +0,0 @@ -@* - * Copyright (c) 2016 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 - *@ - -@********************************************************** -* Twirl YangTemplate for generating yang snippets. * -* Twirl is transformed to Scala and compiled. Then, * -* it can be called from Java with particular input * -* parameters to render desired output code. * -***********************************************************@ - -@import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition -@import org.opendaylight.yangtools.yang.model.api.Status - -@(constraint: ConstraintDefinition) -@if(constraint.isMandatory()) { - mandatory true; -} -@if(constraint.getMinElements() != null) { - min-elements @(constraint.getMinElements()); -} -@if(constraint.getMaxElements() != null) { - max-elements @(constraint.getMaxElements()); -} \ No newline at end of file diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDataSchemaNode.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDataSchemaNode.scala.txt index f31cabd457..c477ddbc8b 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDataSchemaNode.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDataSchemaNode.scala.txt @@ -15,13 +15,16 @@ @import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode @import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode -@import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode +@import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode @import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode @import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode @import org.opendaylight.yangtools.yang.model.api.DataSchemaNode +@import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus +@import org.opendaylight.yangtools.yang.model.api.ElementCountConstraintAware @import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode @import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode @import org.opendaylight.yangtools.yang.model.api.ListSchemaNode +@import org.opendaylight.yangtools.yang.model.api.MandatoryAware @import org.opendaylight.yangtools.yang.model.api.Module @import org.opendaylight.yangtools.yang.model.api.SchemaNode @import org.opendaylight.yangtools.yang.model.api.Status @@ -29,26 +32,18 @@ @(dataSchemaNode: DataSchemaNode, module: Module) @if(dataSchemaNode.isInstanceOf[ContainerSchemaNode]) { - @writeContSchemaNode(dataSchemaNode.asInstanceOf[ContainerSchemaNode], module) + @container(dataSchemaNode.asInstanceOf[ContainerSchemaNode], module) } @if(dataSchemaNode.isInstanceOf[AnyXmlSchemaNode]) { - anyxml @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getConstraints().isMandatory()){;} else { { - @if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getConstraints().isMandatory()){ - mandatory true; - } - @if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus()}; - } + anyxml @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].isMandatory()){;} else { { + @mandatory(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode]) + @status(dataSchemaNode) }} } @if(dataSchemaNode.isInstanceOf[AnyDataSchemaNode]) { - anydata @{dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getConstraints().isMandatory()){;} else { { - @if(dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getConstraints().isMandatory()){ - mandatory true; - } - @if(dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getStatus()}; - } + anydata @{dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyDataSchemaNode].isMandatory()){;} else { { + @mandatory(dataSchemaNode.asInstanceOf[AnyDataSchemaNode]) + @status(dataSchemaNode) }} } @if(dataSchemaNode.isInstanceOf[LeafSchemaNode]) { @@ -58,12 +53,8 @@ description "@{dataSchemaNode.asInstanceOf[LeafSchemaNode].getDescription()}"; } @yangTemplateWriteType(dataSchemaNode.asInstanceOf[LeafSchemaNode].getType()) - @if(dataSchemaNode.asInstanceOf[LeafSchemaNode].getConstraints() != null){ - @yangTemplateWriteConstraints(dataSchemaNode.asInstanceOf[LeafSchemaNode].getConstraints()) - } - @if(dataSchemaNode.asInstanceOf[LeafSchemaNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[LeafSchemaNode].getStatus()}; - } + @mandatory(dataSchemaNode.asInstanceOf[LeafSchemaNode]) + @status(dataSchemaNode) } } } @@ -73,42 +64,56 @@ ordered-by user; } type @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getType().getQName().getLocalName()}; - @if(dataSchemaNode.asInstanceOf[LeafListSchemaNode].getConstraints() != null){ - @yangTemplateWriteConstraints(dataSchemaNode.asInstanceOf[LeafListSchemaNode].getConstraints()) - } - @if(dataSchemaNode.asInstanceOf[LeafListSchemaNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getStatus()}; - } + @minmaxelements(dataSchemaNode.asInstanceOf[LeafListSchemaNode]) + @status(dataSchemaNode) } } -@if(dataSchemaNode.isInstanceOf[ChoiceCaseNode]) { - case @{dataSchemaNode.asInstanceOf[ChoiceCaseNode].getQName().getLocalName()} { - @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceCaseNode].getChildNodes()) { +@if(dataSchemaNode.isInstanceOf[CaseSchemaNode]) { + case @{dataSchemaNode.asInstanceOf[CaseSchemaNode].getQName().getLocalName()} { + @for(childNode <- dataSchemaNode.asInstanceOf[CaseSchemaNode].getChildNodes()) { @yangTemplateWriteDataSchemaNode(childNode, module) } - @if(dataSchemaNode.asInstanceOf[ChoiceCaseNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[ChoiceCaseNode].getStatus()}; - } + @status(dataSchemaNode) } } @if(dataSchemaNode.isInstanceOf[ChoiceSchemaNode]) { choice @{dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getQName().getLocalName()} { - @if(dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getConstraints() != null){ - @yangTemplateWriteConstraints(dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getConstraints()) - } - @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getCases()) { + @mandatory(dataSchemaNode.asInstanceOf[ChoiceSchemaNode]) + @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getCases().values()) { @yangTemplateWriteDataSchemaNode(childNode, module) } - @if(dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getStatus() != Status.CURRENT) { - status @{dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getStatus()}; - } + @status(dataSchemaNode) } } @if(dataSchemaNode.isInstanceOf[ListSchemaNode]) { - @writeListSchemaNode(dataSchemaNode.asInstanceOf[ListSchemaNode], module) + @list(dataSchemaNode.asInstanceOf[ListSchemaNode], module) } -@writeContSchemaNode(container: ContainerSchemaNode, module: Module) = { +@mandatory(aware: MandatoryAware) = { + @if(aware.isMandatory()) { + mandatory true; + } +} + +@minmaxelements(aware: ElementCountConstraintAware) = { + @if(aware.getElementCountConstraint().isPresent()) { + @defining(aware.getElementCountConstraint().get()) { constraint => + @if(constraint.getMinElements() != null) { + min-elements @{constraint.getMinElements()} + } + @if(constraint.getMaxElements() != null) { + max-elements @{constraint.getMaxElements()} + } + } + } +} + +@status(aware: WithStatus) = { + @if(aware.getStatus() != Status.CURRENT) { + status @{aware.getStatus()}; + } +} +@container(container: ContainerSchemaNode, module: Module) = { container @{container.getQName().getLocalName()} { @if(container.getChildNodes() != null && !container.getChildNodes().isEmpty()) { @yangTemplateWriteDataSchemaNodes(container.getChildNodes(), module) @@ -125,20 +130,16 @@ @if(container.getActions() != null && !container.getActions().isEmpty()) { @yangTemplateWriteActions(container.getActions(), module) } - @if(container.getStatus() != Status.CURRENT) { - status @{container.getStatus()}; - } + @status(container) } } -@writeListSchemaNode(list: ListSchemaNode, module: Module) = { +@list(list: ListSchemaNode, module: Module) = { list @{list.getQName().getLocalName()} { @if(list.isUserOrdered()){ ordered-by user; } - @if(dataSchemaNode.asInstanceOf[ListSchemaNode].getConstraints() != null){ - @yangTemplateWriteConstraints(dataSchemaNode.asInstanceOf[ListSchemaNode].getConstraints()) - } + @minmaxelements(list) key "@for(listKey <- list.getKeyDefinition()) {@{listKey.getLocalName()} }"; @if(!list.getUniqueConstraints().isEmpty()){ @for(listUnique <- list.getUniqueConstraints()){ @@ -163,8 +164,6 @@ @if(list.getActions() != null && !list.getActions().isEmpty()) { @yangTemplateWriteActions(list.getActions(), module) } - @if(list.getStatus() != Status.CURRENT) { - status @{list.getStatus()}; - } + @status(list) } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDeviation.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDeviation.scala.txt index 9750d74f5b..4b2b5f39ca 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDeviation.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteDeviation.scala.txt @@ -15,15 +15,15 @@ @import org.opendaylight.yangtools.yang.model.api.Deviation @import org.opendaylight.yangtools.yang.model.api.Status -@import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeviationEffectiveStatementImpl +@import org.opendaylight.yangtools.yang.model.api.stmt.DeviationEffectiveStatement @(deviation: Deviation) -deviation @{deviation.asInstanceOf[DeviationEffectiveStatementImpl].getDeclared().rawArgument()} { - @if(deviation.getReference() != null && !deviation.getReference().isEmpty()) { - reference "@{deviation.getReference()}"; +deviation @{deviation.asInstanceOf[DeviationEffectiveStatement].getDeclared().rawArgument()} { + @if(deviation.getReference().isPresent()) { + reference "@{deviation.getReference().get()}"; } - @if(deviation.getDescription() != null && !deviation.getDescription().isEmpty()) { - description "@{deviation.getDescription()}"; + @if(deviation.getDescription().isPresent()) { + description "@{deviation.getDescription().get()}"; } @for(deviate <- deviation.getDeviates()) { @if(deviate != null && deviate.getDeviateType() != null ) { @@ -47,4 +47,4 @@ deviation @{deviation.asInstanceOf[DeviationEffectiveStatementImpl].getDeclared( } } } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteExtension.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteExtension.scala.txt index 2e67b41902..c4567b6343 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteExtension.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteExtension.scala.txt @@ -18,16 +18,16 @@ @(extension: ExtensionDefinition) extension @{extension.getQName().getLocalName()}@if(extension.getArgument() == null || extension.getArgument().isEmpty()){;} else { { - @if(extension.getDescription() != null && !extension.getDescription().isEmpty()) { - description "@{extension.getDescription()}"; + @if(extension.getDescription().isPresent()) { + description "@{extension.getDescription().get()}"; } @if(extension.getArgument() != null && !extension.getArgument().isEmpty()) { argument @{extension.getArgument()}; } - @if(extension.getReference() != null && !extension.getReference().isEmpty()) { - reference "@{extension.getReference()}"; + @if(extension.getReference().isPresent()) { + reference "@{extension.getReference().get()}"; } @if(extension.getStatus() != Status.CURRENT) { status @{extension.getStatus()}; }} -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteFeature.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteFeature.scala.txt index 1b2376419a..2cb553462d 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteFeature.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteFeature.scala.txt @@ -18,13 +18,13 @@ @(feature: FeatureDefinition) feature @{feature.getQName().getLocalName()} { - @if(feature.getDescription() != null && !feature.getDescription().isEmpty()) { - description "@{feature.getDescription()}"; + @if(feature.getDescription().isPresent()) { + description "@{feature.getDescription().get()}"; } - @if(feature.getReference() != null && !feature.getReference().isEmpty()) { - reference "@{feature.getReference()}"; + @if(feature.getReference().isPresent()) { + reference "@{feature.getReference().get()}"; } @if(feature.getStatus() != Status.CURRENT) { status @{feature.getStatus()}; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteIdentity.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteIdentity.scala.txt index b90cda8927..d268bd168f 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteIdentity.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteIdentity.scala.txt @@ -18,14 +18,14 @@ @(identity: IdentitySchemaNode) identity @{identity.getQName().getLocalName()} { - @if(identity.getBaseIdentity() != null) { - base "(@writeIdentityNs(identity.getBaseIdentity()))@{identity.getBaseIdentity()}"; + @for(baseIdentity <- identity.getBaseIdentities()) { + base "(@writeIdentityNs(baseIdentity))@{baseIdentity}"; } - @if(identity.getDescription() != null && !identity.getDescription().isEmpty()) { - description "@{identity.getDescription()}"; + @if(identity.getDescription().isPresent()) { + description "@{identity.getDescription().get()}"; } - @if(identity.getReference() != null && !identity.getReference().isEmpty()) { - reference "@{identity.getReference()}"; + @if(identity.getReference().isPresent()) { + reference "@{identity.getReference().get()}"; } @if(identity.getStatus() != Status.CURRENT) { status @{identity.getStatus()}; @@ -36,4 +36,4 @@ identity @{identity.getQName().getLocalName()} { @if(identity.getQName().getNamespace() != null) { @{identity.getQName().getNamespace()}: } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteNotification.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteNotification.scala.txt index c9ca4a10a5..7d3acf4cca 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteNotification.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteNotification.scala.txt @@ -19,8 +19,8 @@ @(notification: NotificationDefinition, module: Module) notification @{notification.getQName().getLocalName()} { - @if(notification.getDescription() != null && !notification.getDescription().isEmpty()) { - description "@{notification.getDescription()}"; + @if(notification.getDescription().isPresent()) { + description "@{notification.getDescription().get()}"; } @if(notification.getChildNodes() != null && !notification.getChildNodes().isEmpty()) { @yangTemplateWriteDataSchemaNodes(notification.getChildNodes(), module) @@ -34,10 +34,10 @@ notification @{notification.getQName().getLocalName()} { @if(notification.getUses() != null && !notification.getUses().isEmpty()) { @yangTemplateWriteUsesNodes(notification.getUses(), module) } - @if(notification.getReference() != null && !notification.getReference().isEmpty()) { - reference "@{notification.getReference()}"; + @if(notification.getReference().isPresent()) { + reference "@{notification.getReference().get()}"; } @if(notification.getStatus() != Status.CURRENT) { status @{notification.getStatus()}; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteRPC.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteRPC.scala.txt index 0f522aa310..aaf53166d0 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteRPC.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteRPC.scala.txt @@ -19,8 +19,8 @@ @(rpc: RpcDefinition, module: Module) rpc @{rpc.getQName().getLocalName()} { - @if(rpc.getDescription() != null && !rpc.getDescription().isEmpty()) { - "@{rpc.getDescription()}"; + @if(rpc.getDescription().isPresent()) { + "@{rpc.getDescription().get()}"; } @if(rpc.getGroupings() != null && !rpc.getGroupings().isEmpty()) { @yangTemplateWriteGroupingDefs(rpc.getGroupings(), module) @@ -35,10 +35,10 @@ rpc @{rpc.getQName().getLocalName()} { @yangTemplateWriteDataSchemaNodes(rpc.getOutput().getChildNodes, module) } } - @if(rpc.getReference() != null && !rpc.getReference().isEmpty()) { - reference "@{rpc.getReference()}"; + @if(rpc.getReference().isPresent()) { + reference "@{rpc.getReference().get()}"; } @if(rpc.getStatus() != Status.CURRENT) { status @{rpc.getStatus()}; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteType.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteType.scala.txt index 1828770c8a..5a4043bd16 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteType.scala.txt +++ b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding/javav2/generator/impl/yangTemplateWriteType.scala.txt @@ -23,12 +23,18 @@ @import org.opendaylight.yangtools.yang.model.api.`type`.IdentityrefTypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.IdentityTypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.InstanceIdentifierTypeDefinition -@import org.opendaylight.yangtools.yang.model.api.`type`.IntegerTypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Int8TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Int16TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Int32TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Int64TypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.LeafrefTypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.StringTypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Uint8TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Uint16TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Uint32TypeDefinition +@import org.opendaylight.yangtools.yang.model.api.`type`.Uint64TypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.UnionTypeDefinition @import org.opendaylight.yangtools.yang.model.api.`type`.UnknownTypeDefinition -@import org.opendaylight.yangtools.yang.model.api.`type`.UnsignedIntegerTypeDefinition @(typeDefinition: TypeDefinition[_]) @if(typeDefinition.getBaseType() != null) { @@ -59,8 +65,17 @@ @if(typeDefinition.isInstanceOf[InstanceIdentifierTypeDefinition]){ type @(typeDefinition.asInstanceOf[InstanceIdentifierTypeDefinition].getBaseType().getQName().getLocalName()); } - @if(typeDefinition.isInstanceOf[IntegerTypeDefinition]){ - type @(typeDefinition.asInstanceOf[IntegerTypeDefinition].getBaseType().getQName().getLocalName()); + @if(typeDefinition.isInstanceOf[Int8TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Int8TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Int16TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Int16TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Int32TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Int32TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Int64TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Int64TypeDefinition].getBaseType().getQName().getLocalName()); } @if(typeDefinition.isInstanceOf[LeafrefTypeDefinition]){ type @(typeDefinition.asInstanceOf[LeafrefTypeDefinition].getBaseType().getQName().getLocalName()); @@ -74,8 +89,17 @@ @if(typeDefinition.isInstanceOf[UnknownTypeDefinition]){ type @(typeDefinition.asInstanceOf[UnknownTypeDefinition].getBaseType().getQName().getLocalName()); } - @if(typeDefinition.isInstanceOf[UnsignedIntegerTypeDefinition]){ - type @(typeDefinition.asInstanceOf[UnsignedIntegerTypeDefinition].getBaseType().getQName().getLocalName()); + @if(typeDefinition.isInstanceOf[Uint8TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Uint8TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Uint16TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Uint16TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Uint32TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Uint32TypeDefinition].getBaseType().getQName().getLocalName()); + } + @if(typeDefinition.isInstanceOf[Uint64TypeDefinition]){ + type @(typeDefinition.asInstanceOf[Uint64TypeDefinition].getBaseType().getQName().getLocalName()); } } else { type @(typeDefinition.getQName().getLocalName()); diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenTypeTest.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenTypeTest.java index fd5f15e370..dd698942d8 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenTypeTest.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenTypeTest.java @@ -14,16 +14,14 @@ import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import com.google.common.base.Optional; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; @@ -35,8 +33,8 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTyp import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentable; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -52,11 +50,9 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class AugmentToGenTypeTest { - @SuppressWarnings("unchecked") @Test(expected = UnsupportedOperationException.class) public void constructorTest() throws Throwable { - final Constructor constructor = - (Constructor) AugmentToGenType.class.getDeclaredConstructors()[0]; + final Constructor constructor = AugmentToGenType.class.getDeclaredConstructor(); constructor.setAccessible(true); final Object[] objs = {}; try { @@ -66,44 +62,24 @@ public class AugmentToGenTypeTest { } } - @SuppressWarnings("rawtypes") @Test - public void generateNullModuleTest() throws Exception { - final Class[] parameterTypes = - { Module.class, SchemaContext.class, TypeProvider.class, Map.class, Map.class, boolean.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("generate", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateNullModuleTest() { final SchemaContext context = null; final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); final Module m = null; - final Object[] args = { m, context, typeProvider, genCtx, genTypeBuilders, false }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generate(m, context, typeProvider, genCtx, genTypeBuilders, false); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Module reference cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Module reference cannot be NULL.", e.getMessage()); } } - @SuppressWarnings("rawtypes") @Test - public void generateNullModuleNameTest() throws Exception { - final Class[] parameterTypes = - { Module.class, SchemaContext.class, TypeProvider.class, Map.class, Map.class, boolean.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("generate", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateNullModuleNameTest() { final SchemaContext context = null; final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); @@ -111,29 +87,16 @@ public class AugmentToGenTypeTest { final Module m = mock(Module.class); when(m.getName()).thenReturn(null); - final Object[] args = { m, context, typeProvider, genCtx, genTypeBuilders, false }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generate(m, context, typeProvider, genCtx, genTypeBuilders, false); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Module name cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Module name cannot be NULL.", e.getMessage()); } } - @SuppressWarnings("rawtypes") @Test - public void generateNullModuleAugmentationsTest() throws Exception { - final Class[] parameterTypes = - { Module.class, SchemaContext.class, TypeProvider.class, Map.class, Map.class, boolean.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("generate", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateNullModuleAugmentationsTest() { final SchemaContext context = null; final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); @@ -142,50 +105,28 @@ public class AugmentToGenTypeTest { when(m.getName()).thenReturn("name"); when(m.getAugmentations()).thenReturn(null); - final Object[] args = { m, context, typeProvider, genCtx, genTypeBuilders, false }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generate(m, context, typeProvider, genCtx, genTypeBuilders, false); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - assertEquals("Augmentations Set cannot be NULL.", cause.getMessage()); + } catch (final IllegalStateException e) { + assertEquals("Augmentations Set cannot be NULL.", e.getMessage()); } } - @SuppressWarnings("rawtypes") @Test - public void generateWithoutAugmentationsTest() throws Exception { - final Class[] parameterTypes = - { Module.class, SchemaContext.class, TypeProvider.class, Map.class, Map.class, boolean.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("generate", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test.yang"); + public void generateWithoutAugmentationsTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/test.yang"); final TypeProvider typeProvider = new TypeProviderImpl(context); final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); - - final Object[] args = - { context.getModules().iterator().next(), context, typeProvider, genCtx, genTypeBuilders, false }; - final Map invoke = (Map) generate.invoke(AugmentToGenType.class, args); + final Map invoke = AugmentToGenType.generate(context.getModules().iterator().next(), + context, typeProvider, genCtx, genTypeBuilders, false); assertNotNull(invoke); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void generateWithAugmentationsTest() throws Exception { - final Class[] parameterTypes = - { Module.class, SchemaContext.class, TypeProvider.class, Map.class, Map.class, boolean.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("generate", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-augment.yang"); + public void generateWithAugmentationsTest() { + final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/test-augment.yang"); final TypeProvider typeProvider = new TypeProviderImpl(context); final Map genCtx = mock(Map.class); final Collection moduleContexts = new ArrayList<>(); @@ -199,76 +140,42 @@ public class AugmentToGenTypeTest { when(genCtx.get(context.getModules().iterator().next())).thenReturn(moduleContext); final Map> genTypeBuilders = new HashMap<>(); - final Object[] args = - { context.getModules().iterator().next(), context, typeProvider, genCtx, genTypeBuilders, false }; - final Map invoke = (Map) generate.invoke(AugmentToGenType.class, args); + final Map invoke = AugmentToGenType.generate(context.getModules().iterator().next(), + context, typeProvider, genCtx, genTypeBuilders, false); assertNotNull(invoke); } - @SuppressWarnings("rawtypes") @Test - public void resolveAugmentationsNullModuleTest() throws Exception { - final Class[] parameterTypes = { Module.class, SchemaContext.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("resolveAugmentations", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final Module m = null; - final SchemaContext schemaContext = null; - - final Object[] args = { m, schemaContext }; + public void resolveAugmentationsNullModuleTest() { try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.resolveAugmentations(null, null); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Module reference cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Module reference cannot be NULL.", e.getMessage()); } } - @SuppressWarnings("rawtypes") @Test - public void resolveAugmentationsNullAugmentationsTest() throws Exception { - final Class[] parameterTypes = { Module.class, SchemaContext.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("resolveAugmentations", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveAugmentationsNullAugmentationsTest() { final Module m = mock(Module.class); when(m.getAugmentations()).thenReturn(null); final SchemaContext schemaContext = mock(SchemaContext.class); - final Object[] args = { m, schemaContext }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.resolveAugmentations(m, schemaContext); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - assertEquals("Augmentations Set cannot be NULL.", cause.getMessage()); + } catch (final IllegalStateException e) { + assertEquals("Augmentations Set cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void resolveAugmentationsTest() throws Exception { - final Class[] parameterTypes = { Module.class, SchemaContext.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("resolveAugmentations", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveAugmentationsTest() { final Module m = mock(Module.class); final Module m2 = mock(Module.class); final SchemaContext schemaContext = mock(SchemaContext.class); - final Set augmentations = new HashSet<>(); + final Set augmentations = new HashSet<>(); final QName q1 = QName.create("q1", "2017-04-04", "q1"); final QName q2 = QName.create("q2", "2017-04-04", "q2"); @@ -276,106 +183,72 @@ public class AugmentToGenTypeTest { final QName q4 = QName.create("q4", "2017-04-04", "q4"); final QName q5 = QName.create("q5", "2017-04-04", "q5"); - final AugmentationSchema augmentationSchema1 = mock(AugmentationSchema.class); - when(augmentationSchema1.getTargetPath()).thenReturn(SchemaPath.create(true, q1, q2)); - final AugmentationSchema augmentationSchema2 = mock(AugmentationSchema.class); - when(augmentationSchema2.getTargetPath()).thenReturn(SchemaPath.create(true, q3, q4, q5)); - augmentations.add(augmentationSchema1); - augmentations.add(augmentationSchema2); + final AugmentationSchemaNode AugmentationSchemaNode1 = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode1.getTargetPath()).thenReturn(SchemaPath.create(true, q1, q2)); + final AugmentationSchemaNode AugmentationSchemaNode2 = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode2.getTargetPath()).thenReturn(SchemaPath.create(true, q3, q4, q5)); + augmentations.add(AugmentationSchemaNode1); + augmentations.add(AugmentationSchemaNode2); when(m.getAugmentations()).thenReturn(augmentations); - when(schemaContext.findModuleByNamespaceAndRevision(q1.getNamespace(), q1.getRevision())).thenReturn(m2); - when(schemaContext.findModuleByNamespaceAndRevision(q3.getNamespace(), q3.getRevision())).thenReturn(m2); + when(schemaContext.findModule(q1.getModule())).thenReturn(Optional.of(m2)); + when(schemaContext.findModule(q3.getModule())).thenReturn(Optional.of(m2)); - final Object[] args = { m, schemaContext }; - - final List result = - (List) generate.invoke(AugmentToGenType.class, args); + final List result = AugmentToGenType.resolveAugmentations(m, schemaContext); assertNotNull(result); assertTrue(!result.isEmpty()); - assertEquals(result.get(0), augmentationSchema1); - assertEquals(result.get(1), augmentationSchema2); + assertEquals(result.get(0), AugmentationSchemaNode1); + assertEquals(result.get(1), AugmentationSchemaNode2); } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullPckgNameTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullPckgNameTest() { final String augmPackName = null; - final Map.Entry> schemaPathAugmentListEntry = null; + final Map.Entry> schemaPathAugmentListEntry = null; final SchemaContext context = null; final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); final Module m = null; - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Package Name cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Package Name cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullAugSchemaTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullAugSchemaTest() { final String augmPackName = "pckg.name"; - final Map.Entry> schemaPathAugmentListEntry = null; + final Map.Entry> schemaPathAugmentListEntry = null; final SchemaContext context = null; final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); final Module m = null; - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Augmentation List Entry cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Augmentation List Entry cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullAugSchemaTargetPathTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullAugSchemaTargetPathTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); when(augmSchema.getTargetPath()).thenReturn(null); - final List augmentationSchemaList = new ArrayList<>(); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(null); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = null; final TypeProvider typeProvider = null; @@ -383,39 +256,27 @@ public class AugmentToGenTypeTest { final Map> genTypeBuilders = new HashMap<>(); final Module m = null; - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - assertEquals("Augmentation List Entry does not contain Target Path (Target Path is NULL).", cause.getMessage()); + } catch (final IllegalStateException e) { + assertEquals("Augmentation List Entry does not contain Target Path (Target Path is NULL).", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullAugSchemaListTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullAugSchemaListTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); - final List augmentationSchemaList = new ArrayList<>(); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = null; final TypeProvider typeProvider = null; @@ -423,50 +284,37 @@ public class AugmentToGenTypeTest { final Map> genTypeBuilders = new HashMap<>(); final Module m = null; - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - assertEquals("Augmentation List cannot be empty.", cause.getMessage()); + } catch (final IllegalStateException e) { + assertEquals("Augmentation List cannot be empty.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullAugSchemaTargetNodeTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullAugSchemaTargetNodeTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); when(augmSchema.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmSchema); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(augmSchema); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); final DataSchemaNode schNode = null; when(moduleAug.getDataChildByName(qnamePath)).thenReturn(schNode); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); @@ -477,50 +325,37 @@ public class AugmentToGenTypeTest { when(m.getNamespace()).thenReturn(qnamePath.getNamespace()); when(m.getRevision()).thenReturn(qnamePath.getRevision()); - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("augment target not found: " + path, cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("augment target not found: " + path, e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesNullAugTargetGTBTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesNullAugTargetGTBTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); when(augmSchema.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmSchema); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(augmSchema); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); final DataSchemaNode schNode = mock(DataSchemaNode.class); when(moduleAug.getDataChildByName(qnamePath)).thenReturn(schNode); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); @@ -531,54 +366,40 @@ public class AugmentToGenTypeTest { when(m.getNamespace()).thenReturn(qnamePath.getNamespace()); when(m.getRevision()).thenReturn(qnamePath.getRevision()); - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof NullPointerException); - assertEquals("Target type not yet generated: " + schNode, cause.getMessage()); + } catch (final NullPointerException e) { + assertEquals("Target type not yet generated: " + schNode, e.getMessage()); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void augmentationToGenTypesAugUsesNullOrigTargetTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesAugUsesNullOrigTargetTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); when(augmSchema.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmSchema); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(augmSchema); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); final DerivableSchemaNode targetSchNode = mock(DerivableSchemaNode.class); when(targetSchNode.getPath()).thenReturn(path); when(targetSchNode.isAddedByUses()).thenReturn(true); - final Optional optionalSchemaNode = Optional.absent(); - when(targetSchNode.getOriginal()).thenReturn(optionalSchemaNode); + when(targetSchNode.getOriginal()).thenReturn(Optional.empty()); when(moduleAug.getDataChildByName(qnamePath)).thenReturn(targetSchNode); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final TypeProvider typeProvider = null; final Map genCtx = new HashMap<>(); @@ -589,56 +410,43 @@ public class AugmentToGenTypeTest { when(m.getNamespace()).thenReturn(qnamePath.getNamespace()); when(m.getRevision()).thenReturn(qnamePath.getRevision()); - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, + genTypeBuilders, typeProvider); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); + } catch (final IllegalStateException e) { assertEquals("Failed to find target node from grouping in augmentation " + augmSchema + " in module " - + m.getName(), cause.getMessage()); + + m.getName(), e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void augmentationToGenTypesTargetChoicSchemaNodeTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesTargetChoicSchemaNodeTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); when(augmSchema.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmSchema); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(augmSchema); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); final ChoiceSchemaNode targetSchNode = mock(ChoiceSchemaNode.class); when(targetSchNode.getPath()).thenReturn(path); when(moduleAug.getDataChildByName(qnamePath)).thenReturn(targetSchNode); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final TypeProvider typeProvider = null; - final Map genCtx = mock(Map.class); + final Map genCtx = mock(Map.class); final Collection moduleContexts = new ArrayList<>(); final ModuleContext mc = new ModuleContext(); final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl(augmPackName, "augm", mc); @@ -653,23 +461,16 @@ public class AugmentToGenTypeTest { when(m.getNamespace()).thenReturn(qnamePath.getNamespace()); when(m.getRevision()).thenReturn(qnamePath.getRevision()); - final Object[] args = { augmPackName, schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider }; - final Map result = (Map) generate.invoke(AugmentToGenType.class, args); + final Map result = AugmentToGenType.augmentationToGenTypes(augmPackName, + schemaPathAugmentListEntry, m, context, false, genCtx, genTypeBuilders, typeProvider); assertNotNull(result); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void augmentationToGenTypesTest() throws Exception { - final Class[] parameterTypes = { String.class, Map.Entry.class, Module.class, SchemaContext.class, - boolean.class, Map.class, Map.class, TypeProvider.class }; - final Method generate = AugmentToGenType.class.getDeclaredMethod("augmentationToGenTypes", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augmentationToGenTypesTest() { final String augmPackName = "pckg.name"; - final AugmentationSchema augmSchema = mock(AugmentationSchema.class); + final AugmentationSchemaNode augmSchema = mock(AugmentationSchemaNode.class); final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); when(augmSchema.getTargetPath()).thenReturn(path); @@ -678,11 +479,11 @@ public class AugmentToGenTypeTest { final List unknownSchemaNodes = new ArrayList<>(); when(augmSchema.getUnknownSchemaNodes()).thenReturn(unknownSchemaNodes); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmSchema); - final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(augmSchema); + final Map.Entry> schemaPathAugmentListEntry = mock(Map.Entry.class); when(schemaPathAugmentListEntry.getKey()).thenReturn(path); - when(schemaPathAugmentListEntry.getValue()).thenReturn(augmentationSchemaList); + when(schemaPathAugmentListEntry.getValue()).thenReturn(AugmentationSchemaNodeList); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); @@ -696,8 +497,7 @@ public class AugmentToGenTypeTest { final Optional optionalSchemaNode = Optional.of(origSchNode); when(targetSchNode.getOriginal()).thenReturn(optionalSchemaNode); when(moduleAug.getDataChildByName(qnamePath)).thenReturn(targetSchNode); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final TypeProvider typeProvider = null; @@ -716,10 +516,9 @@ public class AugmentToGenTypeTest { when(moduleAug.getNamespace()).thenReturn(qnamePath.getNamespace()); when(moduleAug.getRevision()).thenReturn(qnamePath.getRevision()); - final Object[] args = - { augmPackName, schemaPathAugmentListEntry, moduleAug, context, false, genCtx, genTypeBuilders, typeProvider }; final Map result = - (Map) generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.augmentationToGenTypes(augmPackName, schemaPathAugmentListEntry, moduleAug, context, + false, genCtx, genTypeBuilders, typeProvider); assertNotNull(result); final ModuleContext moduleContext = result.get(moduleAug); assertTrue(moduleContext.getAugmentations().get(0).getName().contains("Augm")); @@ -730,71 +529,63 @@ public class AugmentToGenTypeTest { @Deprecated @Test - public void usesAugmentationToGenTypesNullPckgNameTest() throws Exception { + public void usesAugmentationToGenTypesNullPckgNameTest() { try { AugmentToGenType.usesAugmentationToGenTypes(null, null, null, null, null, null, null, null, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof IllegalArgumentException); + } catch (final IllegalArgumentException e) { assertEquals(e.getMessage(), "Package Name cannot be NULL."); } } @Deprecated @Test - public void usesAugmentationToGenTypesNullAugSchemaListEntryTest() throws Exception { + public void usesAugmentationToGenTypesNullAugSchemaListEntryTest() { try { AugmentToGenType.usesAugmentationToGenTypes(null, "", null, null, null, null, null, null, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof IllegalArgumentException); + } catch (final IllegalArgumentException e) { assertEquals(e.getMessage(), "Augmentation Schema List Entry cannot be NULL."); } } @Deprecated @Test - public void usesAugmentationToGenTypesEmptyAugSchemaListTest() throws Exception { - final List augmentationSchemaList = new ArrayList<>(); + public void usesAugmentationToGenTypesEmptyAugSchemaListTest() { + final List AugmentationSchemaNodeList = new ArrayList<>(); try { - AugmentToGenType.usesAugmentationToGenTypes(null, "", augmentationSchemaList, null, null, null, null, null, + AugmentToGenType.usesAugmentationToGenTypes(null, "", AugmentationSchemaNodeList, null, null, null, null, null, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof IllegalStateException); + } catch (final IllegalStateException e) { assertEquals(e.getMessage(), "Augmentation Schema List cannot be empty"); } } @Deprecated @Test - public void usesAugmentationToGenTypesNullAugSchemaNodeTargetPathTest() throws Exception { - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getTargetPath()).thenReturn(null); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmentationSchema); + public void usesAugmentationToGenTypesNullAugSchemaNodeTargetPathTest() { + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getTargetPath()).thenReturn(null); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(AugmentationSchemaNode); try { - AugmentToGenType.usesAugmentationToGenTypes(null, "", augmentationSchemaList, null, null, null, null, null, + AugmentToGenType.usesAugmentationToGenTypes(null, "", AugmentationSchemaNodeList, null, null, null, null, null, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof IllegalStateException); + } catch (final IllegalStateException e) { assertEquals(e.getMessage(), "Augmentation Schema does not contain Target Path (Target Path is NULL)."); } } @Deprecated @Test - public void usesAugmentationToGenTypesNullAugmentTargetTest() throws Exception { + public void usesAugmentationToGenTypesNullAugmentTargetTest() { final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getTargetPath()).thenReturn(path); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); - when(augmentationSchema.getUses()).thenReturn(uses); + when(AugmentationSchemaNode.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmentationSchema); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(AugmentationSchemaNode); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); @@ -807,8 +598,7 @@ public class AugmentToGenTypeTest { groupings.add(groupingDefinition); when(moduleAug.getGroupings()).thenReturn(groupings); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); @@ -820,27 +610,25 @@ public class AugmentToGenTypeTest { when(usesNode.getGroupingPath()).thenReturn(path); try { - AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", augmentationSchemaList, moduleAug, + AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", AugmentationSchemaNodeList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof IllegalArgumentException); + } catch (final IllegalArgumentException e) { assertEquals(e.getMessage(), "augment target not found: " + path); } } @Deprecated @Test - public void usesAugmentationToGenTypesNullTargetGTBTest() throws Exception { + public void usesAugmentationToGenTypesNullTargetGTBTest() { final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getTargetPath()).thenReturn(path); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); - when(augmentationSchema.getUses()).thenReturn(uses); + when(AugmentationSchemaNode.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmentationSchema); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(AugmentationSchemaNode); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); @@ -855,8 +643,7 @@ public class AugmentToGenTypeTest { groupings.add(groupingDefinition); when(moduleAug.getGroupings()).thenReturn(groupings); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final Map genCtx = new HashMap<>(); final Map> genTypeBuilders = new HashMap<>(); @@ -867,27 +654,25 @@ public class AugmentToGenTypeTest { when(usesNode.getGroupingPath()).thenReturn(path); try { - AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", augmentationSchemaList, moduleAug, + AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", AugmentationSchemaNodeList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, null); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof NullPointerException); + } catch (final NullPointerException e) { assertEquals(e.getMessage(), "Target type not yet generated: " + schNode); } } @Deprecated @Test - public void usesAugmentationToGenTypesTest() throws Exception { + public void usesAugmentationToGenTypesTest() { final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getTargetPath()).thenReturn(path); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); - when(augmentationSchema.getUses()).thenReturn(uses); + when(AugmentationSchemaNode.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmentationSchema); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(AugmentationSchemaNode); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); @@ -904,8 +689,7 @@ public class AugmentToGenTypeTest { groupings.add(groupingDefinition); when(moduleAug.getGroupings()).thenReturn(groupings); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final Map genCtx = new HashMap<>(); final ModuleContext mc = new ModuleContext(); @@ -921,23 +705,23 @@ public class AugmentToGenTypeTest { when(usesNode.getGroupingPath()).thenReturn(path); final Map result = AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", - augmentationSchemaList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, + AugmentationSchemaNodeList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, BindingNamespaceType.Data); assertNotNull(result); } @Deprecated @Test - public void usesAugmentationToGenTypesChoiceTest() throws Exception { + public void usesAugmentationToGenTypesChoiceTest() { final QName qnamePath = QName.create("test", "2017-04-04", "aug"); final SchemaPath path = SchemaPath.create(true, qnamePath); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getTargetPath()).thenReturn(path); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getTargetPath()).thenReturn(path); final Set uses = new HashSet<>(); - when(augmentationSchema.getUses()).thenReturn(uses); + when(AugmentationSchemaNode.getUses()).thenReturn(uses); - final List augmentationSchemaList = new ArrayList<>(); - augmentationSchemaList.add(augmentationSchema); + final List AugmentationSchemaNodeList = new ArrayList<>(); + AugmentationSchemaNodeList.add(AugmentationSchemaNode); final SchemaContext context = mock(SchemaContext.class); final Module moduleAug = mock(Module.class); @@ -954,8 +738,7 @@ public class AugmentToGenTypeTest { groupings.add(groupingDefinition); when(moduleAug.getGroupings()).thenReturn(groupings); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(moduleAug); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(moduleAug)); final Map genCtx = new HashMap<>(); final ModuleContext mc = new ModuleContext(); @@ -971,20 +754,13 @@ public class AugmentToGenTypeTest { when(usesNode.getGroupingPath()).thenReturn(path); final Map result = AugmentToGenType.usesAugmentationToGenTypes(context, "pckg.test.augm", - augmentationSchemaList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, + AugmentationSchemaNodeList, moduleAug, usesNode, usesNodeParent, genCtx, genTypeBuilders, false, null, BindingNamespaceType.Data); assertNotNull(result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void findOriginalTargetFromGroupingNonGroupingTest() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void findOriginalTargetFromGroupingNonGroupingTest() { final Module module = mock(Module.class); final QName qnamePath = QName.create("test", "2017-04-04", "test"); final SchemaPath schemaPath = SchemaPath.create(true, qnamePath); @@ -993,34 +769,20 @@ public class AugmentToGenTypeTest { when(module.getDataChildByName(qnamePath)).thenReturn(schNode); final SchemaContext context = mock(SchemaContext.class); - when(context.findModuleByNamespaceAndRevision(qnamePath .getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); final UsesNode usesNode = mock(UsesNode.class); when(usesNode.getGroupingPath()).thenReturn(schemaPath); - final Object[] args = { context, schemaPath, usesNode }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.findOriginalTargetFromGrouping(context, schemaPath, usesNode); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Failed to generate code for augment in " + usesNode, cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Failed to generate code for augment in " + usesNode, e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void findOriginalTargetFromGroupingAsUsesFailedTest() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void findOriginalTargetFromGroupingAsUsesFailedTest() { final Module module = mock(Module.class); final QName qnamePath = QName.create("test", "2017-04-04", "test"); final SchemaPath schemaPath = SchemaPath.create(true, qnamePath); @@ -1035,34 +797,21 @@ public class AugmentToGenTypeTest { when(module.getGroupings()).thenReturn(groupings); final SchemaContext context = mock(SchemaContext.class); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); final UsesNode usesNode = mock(UsesNode.class); when(usesNode.getGroupingPath()).thenReturn(schemaPath); - final Object[] args = { context, schemaPath, usesNode }; + final Object[] args = { }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.findOriginalTargetFromGrouping(context, schemaPath, usesNode); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - assertEquals("Failed to generate code for augment in " + usesNode, cause.getMessage()); + } catch (final IllegalStateException e) { + assertEquals("Failed to generate code for augment in " + usesNode, e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void findOriginalTargetFromGroupingReturnNullTest() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void findOriginalTargetFromGroupingReturnNullTest() { final Module module = mock(Module.class); final QName qnamePath = QName.create("test", "2017-04-04", "test"); final SchemaPath schemaPath = SchemaPath.create(true, qnamePath); @@ -1075,25 +824,17 @@ public class AugmentToGenTypeTest { when(module.getGroupings()).thenReturn(groupings); final SchemaContext context = mock(SchemaContext.class); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); final UsesNode usesNode = mock(UsesNode.class); when(usesNode.getGroupingPath()).thenReturn(schemaPath); - final Object[] args = { context, schemaPath, usesNode }; - final DataSchemaNode result = (DataSchemaNode) generate.invoke(AugmentToGenType.class, args); + final Object[] args = { }; + final DataSchemaNode result = AugmentToGenType.findOriginalTargetFromGrouping(context, schemaPath, usesNode); assertEquals(null, result); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void findOriginalTargetFromGroupingTest() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void findOriginalTargetFromGroupingTest() { final Module module = mock(Module.class); final QName qnamePath = QName.create("test", "2017-04-04", "test"); final SchemaPath schemaPath = SchemaPath.create(true, qnamePath); @@ -1111,25 +852,16 @@ public class AugmentToGenTypeTest { when(module.getGroupings()).thenReturn(groupings); final SchemaContext context = mock(SchemaContext.class); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); final UsesNode usesNode = mock(UsesNode.class); when(usesNode.getGroupingPath()).thenReturn(schemaPath); - final Object[] args = { context, schemaPath, usesNode }; - final DataSchemaNode result = (DataSchemaNode) generate.invoke(AugmentToGenType.class, args); + final DataSchemaNode result = AugmentToGenType.findOriginalTargetFromGrouping(context, schemaPath, usesNode); assertEquals(schNode, result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void findOriginalTargetFromGroupingChoiceTest() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void findOriginalTargetFromGroupingChoiceTest() { final Module module = mock(Module.class); final QName qnamePath = QName.create("test", "2017-04-04", "test"); final SchemaPath schemaPath = SchemaPath.create(true, qnamePath); @@ -1143,139 +875,83 @@ public class AugmentToGenTypeTest { when(module.getGroupings()).thenReturn(groupings); final SchemaContext context = mock(SchemaContext.class); - when(context.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(context.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); final UsesNode usesNode = mock(UsesNode.class); when(usesNode.getGroupingPath()).thenReturn(schemaPath); - final Object[] args = { context, schemaPath, usesNode }; - final DataSchemaNode result = (DataSchemaNode) generate.invoke(AugmentToGenType.class, args); + final DataSchemaNode result = AugmentToGenType.findOriginalTargetFromGrouping(context, schemaPath, usesNode); assertEquals(schNode, result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void generateTypesFromAugmentedChoiceCasesNullPckgNameTest() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class}; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesNullPckgNameTest() { final SchemaContext schemaContext = null; final Module module = null; final String pckgName = null; final Type targetType = null; final ChoiceSchemaNode targetNode = null; - final List schemaPathAugmentListEntry = null; + final List schemaPathAugmentListEntry = null; final DataNodeContainer usesNodeParent = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilder = new HashMap<>(); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, - usesNodeParent, genCtx, false, genTypeBuilder, null, BindingNamespaceType.Data }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, module, pckgName, targetType, + targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, genTypeBuilder, null, + BindingNamespaceType.Data); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Base Package Name cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Base Package Name cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void generateTypesFromAugmentedChoiceCasesNullTargetType() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesNullTargetType() { final SchemaContext schemaContext = null; final Module module = null; final String pckgName = ""; final Type targetType = null; final ChoiceSchemaNode targetNode = null; - final List schemaPathAugmentListEntry = null; + final List schemaPathAugmentListEntry = null; final DataNodeContainer usesNodeParent = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilder = new HashMap<>(); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, - usesNodeParent, genCtx, false, genTypeBuilder, null, BindingNamespaceType.Data }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, module, pckgName, targetType, + targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, genTypeBuilder, null, + BindingNamespaceType.Data); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Referenced Choice Type cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Referenced Choice Type cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes" }) @Test - public void generateTypesFromAugmentedChoiceCasesNullAugmentNodes() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesNullAugmentNodes() { final SchemaContext schemaContext = null; final Module module = null; final String pckgName = ""; final Type targetType = mock(Type.class); final ChoiceSchemaNode targetNode = null; - final List schemaPathAugmentListEntry = null; + final List schemaPathAugmentListEntry = null; final DataNodeContainer usesNodeParent = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilder = new HashMap<>(); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, - genCtx, false, genTypeBuilder, null, BindingNamespaceType.Data }; + final Object[] args = { }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, module, pckgName, targetType, + targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, genTypeBuilder, null, + BindingNamespaceType.Data); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Set of Choice Case Nodes cannot be NULL.", cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Set of Choice Case Nodes cannot be NULL.", e.getMessage()); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void generateTypesFromAugmentedChoiceCasesNullCaseNodeTest() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesNullCaseNodeTest() { final SchemaContext schemaContext = null; final Module module = null; final String pckgName = ""; @@ -1285,34 +961,23 @@ public class AugmentToGenTypeTest { final DataSchemaNode caseNode = null; augmentNodes.add(caseNode); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getChildNodes()).thenReturn(augmentNodes); - final List schemaPathAugmentListEntry = new ArrayList<>(); - schemaPathAugmentListEntry.add(augmentationSchema); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getChildNodes()).thenReturn(augmentNodes); + final List schemaPathAugmentListEntry = new ArrayList<>(); + schemaPathAugmentListEntry.add(AugmentationSchemaNode); final DataNodeContainer usesNodeParent = null; final Map genCtx = new HashMap<>(); final Map> genTypeBuilder = new HashMap<>(); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, - genCtx, false, genTypeBuilder, null, BindingNamespaceType.Data }; - final Map result = - (Map) generate.invoke(AugmentToGenType.class, args); + final Map result = AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, + module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, + genTypeBuilder, null, BindingNamespaceType.Data); assertEquals(genCtx, result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void generateTypesFromAugmentedChoiceCasesNullChildTest() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesNullChildTest() { final QName qnamePath = QName.create("test", "2017-04-04", "chcase"); final QName qnamePath2 = QName.create("test", "2017-04-04", "chcase2"); final SchemaPath path = SchemaPath.create(true, qnamePath, qnamePath2); @@ -1328,55 +993,45 @@ public class AugmentToGenTypeTest { final Type targetType = mock(Type.class); when(targetType.getFullyQualifiedName()).thenReturn(Augmentable.class.getName()); final Set augmentNodes = new HashSet<>(); - final ChoiceCaseNode caseNode = mock(ChoiceCaseNode.class); + final CaseSchemaNode caseNode = mock(CaseSchemaNode.class); when(caseNode.getPath()).thenReturn(path); when(caseNode.getQName()).thenReturn(qnamePath); + when(caseNode.getDescription()).thenReturn(Optional.empty()); + when(caseNode.getReference()).thenReturn(Optional.empty()); + augmentNodes.add(caseNode); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getChildNodes()).thenReturn(augmentNodes); - final List schemaPathAugmentListEntry = new ArrayList<>(); - schemaPathAugmentListEntry.add(augmentationSchema); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getChildNodes()).thenReturn(augmentNodes); + final List schemaPathAugmentListEntry = new ArrayList<>(); + schemaPathAugmentListEntry.add(AugmentationSchemaNode); final DataNodeContainer usesNodeParent = null; final ChoiceSchemaNode targetNode = mock(ChoiceSchemaNode.class); when(targetNode.getPath()).thenReturn(path); + when(targetNode.getDescription()).thenReturn(Optional.empty()); + when(targetNode.getReference()).thenReturn(Optional.empty()); + final Map genCtx = new HashMap<>(); genCtx.put(module, new ModuleContext()); final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl(pckgName, "test-case-node-augment", genCtx.get(module)); genCtx.get(module).addCaseType(path, gtb); final Map> genTypeBuilder = new HashMap<>(); - when(schemaContext.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(schemaContext.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, - genCtx, false, genTypeBuilder, null, BindingNamespaceType.Data }; try { - generate.invoke(AugmentToGenType.class, args); + AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, module, pckgName, targetType, + targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, genTypeBuilder, null, + BindingNamespaceType.Data); fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalArgumentException); - assertEquals("Failed to find parent type of choice " + targetNode, cause.getMessage()); + } catch (final IllegalArgumentException e) { + assertEquals("Failed to find parent type of choice " + targetNode, e.getMessage()); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void generateTypesFromAugmentedChoiceCasesTest() throws Exception { - final Class[] parameterTypes = - { SchemaContext.class, Module.class, String.class, Type.class, ChoiceSchemaNode.class, List.class, - DataNodeContainer.class, Map.class, boolean.class, Map.class, TypeProvider.class, - BindingNamespaceType.class }; - final Method generate = - AugmentToGenType.class.getDeclaredMethod("generateTypesFromAugmentedChoiceCases", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void generateTypesFromAugmentedChoiceCasesTest() { final QName qnamePath = QName.create("test", "2017-04-04", "chcase"); final QName qnamePath2 = QName.create("test", "2017-04-04", "chcase2"); final SchemaPath path = SchemaPath.create(true, qnamePath, qnamePath2); @@ -1384,7 +1039,7 @@ public class AugmentToGenTypeTest { final SchemaContext schemaContext = mock(SchemaContext.class); final Module module = mock(Module.class); when(module.getName()).thenReturn("test-module-case"); - final ChoiceCaseNode schemaNode = mock(ChoiceCaseNode.class); + final CaseSchemaNode schemaNode = mock(CaseSchemaNode.class); when(schemaNode.getPath()).thenReturn(path); when(module.getDataChildByName(qnamePath)).thenReturn(schemaNode); when(module.getRevision()).thenReturn(qnamePath.getRevision()); @@ -1393,19 +1048,23 @@ public class AugmentToGenTypeTest { final Type targetType = mock(Type.class); when(targetType.getFullyQualifiedName()).thenReturn(Augmentable.class.getName()); final Set augmentNodes = new HashSet<>(); - final ChoiceCaseNode caseNode = mock(ChoiceCaseNode.class); + final CaseSchemaNode caseNode = mock(CaseSchemaNode.class); when(caseNode.getPath()).thenReturn(path); when(caseNode.getQName()).thenReturn(qnamePath); + when(caseNode.getDescription()).thenReturn(Optional.empty()); + when(caseNode.getReference()).thenReturn(Optional.empty()); augmentNodes.add(caseNode); - final AugmentationSchema augmentationSchema = mock(AugmentationSchema.class); - when(augmentationSchema.getChildNodes()).thenReturn(augmentNodes); - final List schemaPathAugmentListEntry = new ArrayList<>(); - schemaPathAugmentListEntry.add(augmentationSchema); + final AugmentationSchemaNode AugmentationSchemaNode = mock(AugmentationSchemaNode.class); + when(AugmentationSchemaNode.getChildNodes()).thenReturn(augmentNodes); + final List schemaPathAugmentListEntry = new ArrayList<>(); + schemaPathAugmentListEntry.add(AugmentationSchemaNode); final DataNodeContainer usesNodeParent = null; final ChoiceSchemaNode targetNode = mock(ChoiceSchemaNode.class); when(targetNode.getPath()).thenReturn(path); + when(targetNode.getDescription()).thenReturn(Optional.empty()); + when(targetNode.getReference()).thenReturn(Optional.empty()); final Map genCtx = new HashMap<>(); final ModuleContext moduleContext = new ModuleContext(); final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl(pckgName, "test-case-node-augment", moduleContext); @@ -1413,13 +1072,11 @@ public class AugmentToGenTypeTest { genCtx.put(module, moduleContext); final Map> genTypeBuilder = new HashMap<>(); - when(schemaContext.findModuleByNamespaceAndRevision(qnamePath.getNamespace(), qnamePath.getRevision())) - .thenReturn(module); + when(schemaContext.findModule(qnamePath.getModule())).thenReturn(Optional.of(module)); - final Object[] args = { schemaContext, module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, - genCtx, false, genTypeBuilder, null ,BindingNamespaceType.Data }; - final Map result = - (Map) generate.invoke(AugmentToGenType.class, args); + final Map result = AugmentToGenType.generateTypesFromAugmentedChoiceCases(schemaContext, + module, pckgName, targetType, targetNode, schemaPathAugmentListEntry, usesNodeParent, genCtx, false, + genTypeBuilder, null, BindingNamespaceType.Data); assertNotNull(result); assertEquals(result.get(module), moduleContext); } diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtilsTest.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtilsTest.java index f43d0caca3..94ff461ee9 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtilsTest.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtilsTest.java @@ -8,26 +8,24 @@ package org.opendaylight.mdsal.binding.javav2.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.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import java.io.FileNotFoundException; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; -import org.opendaylight.mdsal.binding.javav2.generator.spi.TypeProvider; import org.opendaylight.mdsal.binding.javav2.generator.util.Types; import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTOBuilderImpl; import org.opendaylight.mdsal.binding.javav2.generator.util.generated.type.builder.GeneratedTypeBuilderImpl; @@ -56,152 +54,111 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class AuxiliaryGenUtilsTest { - @SuppressWarnings("unchecked") @Test(expected = UnsupportedOperationException.class) public void constructorTest() throws Throwable { - final Constructor constructor = - (Constructor) AuxiliaryGenUtils.class.getDeclaredConstructors()[0]; + final Constructor constructor = AuxiliaryGenUtils.class.getDeclaredConstructor(); constructor.setAccessible(true); - final Object[] objs = {}; try { - constructor.newInstance(objs); + constructor.newInstance(); } catch (final Exception e) { throw e.getCause(); } } - @SuppressWarnings("rawtypes") @Test - public void annotateDeprecatedIfNecessaryNonDepricatedTest() throws Exception { - final Class[] parameterTypes = { Status.class, GeneratedTypeBuilder.class }; - final Method generate = - AuxiliaryGenUtils.class.getDeclaredMethod("annotateDeprecatedIfNecessary", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void annotateDeprecatedIfNecessaryNonDepricatedTest() { final GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("test.deprecated", "Non_Deprecated", new ModuleContext()); final Status status = Status.CURRENT; - final Object[] args = { status, generatedTypeBuilder }; - generate.invoke(AuxiliaryGenUtils.class, args); + AuxiliaryGenUtils.annotateDeprecatedIfNecessary(status, generatedTypeBuilder); assertTrue(generatedTypeBuilder.toInstance().getAnnotations().isEmpty()); } - @SuppressWarnings("rawtypes") @Test - public void annotateDeprecatedIfNecessaryDepricatedTest() throws Exception { - final Class[] parameterTypes = { Status.class, GeneratedTypeBuilder.class }; - final Method generate = - AuxiliaryGenUtils.class.getDeclaredMethod("annotateDeprecatedIfNecessary", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void annotateDeprecatedIfNecessaryDepricatedTest() { final GeneratedTypeBuilderImpl generatedTypeBuilder = new GeneratedTypeBuilderImpl("test.deprecated", "Deprecated", new ModuleContext()); final Status status = Status.DEPRECATED; - final Object[] args = { status, generatedTypeBuilder }; - generate.invoke(AuxiliaryGenUtils.class, args); - assertTrue(!generatedTypeBuilder.toInstance().getAnnotations().isEmpty()); + AuxiliaryGenUtils.annotateDeprecatedIfNecessary(status, generatedTypeBuilder); + assertFalse(generatedTypeBuilder.toInstance().getAnnotations().isEmpty()); assertEquals("Deprecated", generatedTypeBuilder.toInstance().getAnnotations().get(0).getName()); } @Test - public void hasBuilderClassFalseTest() throws Exception { + public void hasBuilderClassFalseTest() { assertEquals(false, hasBuilderClass(LeafSchemaNode.class)); } @Test - public void hasBuilderClassContainerTest() throws Exception { + public void hasBuilderClassContainerTest() { assertEquals(true, hasBuilderClass(ContainerSchemaNode.class)); } @Test - public void hasBuilderClassListTest() throws Exception { + public void hasBuilderClassListTest() { assertEquals(true, hasBuilderClass(ListSchemaNode.class)); } @Test - public void hasBuilderClassRpcTest() throws Exception { + public void hasBuilderClassRpcTest() { assertEquals(true, hasBuilderClass(RpcDefinition.class)); } @Test - public void hasBuilderClassNotificationTest() throws Exception { + public void hasBuilderClassNotificationTest() { assertEquals(true, hasBuilderClass(NotificationDefinition.class)); } - @SuppressWarnings("rawtypes") @Test - public void qNameConstantTest() throws Exception { - final Class[] parameterTypes = { GeneratedTypeBuilderBase.class, String.class, QName.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("qNameConstant", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final GeneratedTypeBuilderBase gtbb = new GeneratedTypeBuilderImpl("test", "qname_constants", new ModuleContext()); + public void qNameConstantTest() { + final GeneratedTypeBuilderBase gtbb = new GeneratedTypeBuilderImpl("test", "qname_constants", + new ModuleContext()); final String constantName = "ConstantName"; final QName constantQName = QName.create("urn:constant", "2017-04-06", constantName); - final Object[] args = { gtbb, constantName, constantQName }; - final Constant result = (Constant) generate.invoke(AuxiliaryGenUtils.class, args); + final Constant result = AuxiliaryGenUtils.qNameConstant(gtbb, constantName, constantQName); assertEquals(constantName, result.getName()); } - @SuppressWarnings("rawtypes") @Test - public void constructGetterTest() throws Exception { - final Class[] parameterTypes = - { GeneratedTypeBuilder.class, String.class, String.class, Type.class, Status.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("constructGetter", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void constructGetterTest() { final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl("test", "Getter_of", new ModuleContext()); final String schemaNodeName = "schema_node_getter"; final String comment = null; final Type returnType = Types.STRING; final Status status = Status.DEPRECATED; - final Object[] args = { gtb, schemaNodeName, comment, returnType, status }; - final MethodSignatureBuilder result = (MethodSignatureBuilder) generate.invoke(AuxiliaryGenUtils.class, args); - assertEquals(new StringBuilder("get").append("SchemaNodeGetter").toString(), - result.toInstance(returnType).getName()); + final MethodSignatureBuilder result = AuxiliaryGenUtils.constructGetter(gtb, schemaNodeName, comment, + returnType, status); + assertEquals("getSchemaNodeGetter", result.toInstance(returnType).getName()); } @Test public void getterMethodNameBooleanTest() throws Exception { - assertEquals("isBooleanMethod", getterMethodName("boolean_method", Types.BOOLEAN)); + assertEquals("isBooleanMethod", AuxiliaryGenUtils.getterMethodName("boolean_method", Types.BOOLEAN)); } @Test public void getterMethodNameTest() throws Exception { - assertEquals("getClazz", getterMethodName("clazz", Types.CLASS)); + assertEquals("getClazz", AuxiliaryGenUtils.getterMethodName("clazz", Types.CLASS)); } - @SuppressWarnings("rawtypes") @Test - public void createDescriptionWithSchemaNodeTest() throws Exception { - final Class[] parameterTypes = { SchemaNode.class, String.class, SchemaContext.class, boolean.class, - BindingNamespaceType.class}; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("createDescription", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/generator/test-list.yang"); + public void createDescriptionWithSchemaNodeTest() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/generator/test-list.yang"); final ListSchemaNode containerSchemaNode = (ListSchemaNode) schemaContext.getModules().iterator().next().getChildNodes().iterator().next(); final String fullyQualifiedName = "org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.data.MyList"; - final Object[] args = { containerSchemaNode, fullyQualifiedName, schemaContext, true, BindingNamespaceType.Data }; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args); + final String result = AuxiliaryGenUtils.createDescription(containerSchemaNode, fullyQualifiedName, + schemaContext, true, BindingNamespaceType.Data); assertNotNull(result); assertTrue(result.contains("list my-list")); assertTrue(result.contains("leaf key")); @@ -212,59 +169,37 @@ public class AuxiliaryGenUtilsTest { assertTrue(result.contains("@see org.opendaylight.mdsal.gen.javav2.urn.test.simple.test.list.rev170314.key.my_list.MyListKey")); } - @SuppressWarnings("rawtypes") @Test - public void createDescriptionWithSchemaNodeWithDescriptionTest() throws Exception { - final Class[] parameterTypes = { SchemaNode.class, String.class, SchemaContext.class, boolean.class, - BindingNamespaceType.class}; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("createDescription", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void createDescriptionWithSchemaNodeWithDescriptionTest() { final SchemaContext schemaContext = - YangParserTestUtils.parseYangSource("/base/test-leaf-with-description.yang"); + YangParserTestUtils.parseYangResource("/base/test-leaf-with-description.yang"); final LeafSchemaNode containerSchemaNode = (LeafSchemaNode) schemaContext.getModules().iterator().next().getChildNodes().iterator().next(); final String fullyQualifiedName = "test.base.cont.with.leaf.MyList"; - final Object[] args = { containerSchemaNode, fullyQualifiedName, schemaContext, true, BindingNamespaceType.Data}; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args); + final String result = AuxiliaryGenUtils.createDescription(containerSchemaNode, fullyQualifiedName, + schemaContext, true, BindingNamespaceType.Data); assertNotNull(result); assertTrue(result.contains("I am leaf.")); } - @SuppressWarnings("rawtypes") @Test - public void createDescriptionTest() throws Exception { - final Class[] parameterTypes = { Module.class, boolean.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("createDescription", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/base/test-module.yang"); - - final Object[] args = { schemaContext.getModules().iterator().next(), true }; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args); + public void createDescriptionTest() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/base/test-module.yang"); + final String result = AuxiliaryGenUtils.createDescription(schemaContext.getModules().iterator().next(), true); assertNotNull(result); assertTrue(result.contains("Base test module description")); assertTrue(result.contains("test-module")); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void createDescriptionWithSchemaNodesTest() throws Exception { - final Class[] parameterTypes = { Set.class, Module.class, boolean.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("createDescription", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/base/test-rpc-and-notification.yang"); + public void createDescriptionWithSchemaNodesTest() { + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/base/test-rpc-and-notification.yang"); final Module module = schemaContext.getModules().iterator().next(); - Set schemaNodes = new HashSet<>(); + Set schemaNodes = new HashSet<>(); schemaNodes.add(module.getRpcs().iterator().next()); - final Object[] args = { schemaNodes, module, true }; - String result = (String) generate.invoke(AuxiliaryGenUtils.class, args); + String result = AuxiliaryGenUtils.createDescription(schemaNodes, module, true); assertNotNull(result); assertTrue(result.contains( "Interface for implementing the following YANG RPCs defined in module test-rpc-and-notification-module")); @@ -274,8 +209,7 @@ public class AuxiliaryGenUtilsTest { schemaNodes = new HashSet<>(); schemaNodes.add(module.getNotifications().iterator().next()); - final Object[] args_n = { schemaNodes, module, true }; - result = (String) generate.invoke(AuxiliaryGenUtils.class, args_n); + result = AuxiliaryGenUtils.createDescription(schemaNodes, module, true); assertNotNull(result); assertTrue(result.contains( "Interface for receiving the following YANG notifications defined in module test-rpc-and-notification-module")); @@ -283,93 +217,39 @@ public class AuxiliaryGenUtilsTest { assertTrue(result.contains("notification my-notification")); } - @SuppressWarnings({ "rawtypes" }) @Test - public void isNullOrEmptyIsNullTest() throws Exception { - final Class[] parameterTypes = { Collection.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("isNullOrEmpty", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final Collection list = null; - - final Object[] args_n = { list }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertTrue(result); + public void isNullOrEmptyIsNullTest() { + assertTrue(AuxiliaryGenUtils.isNullOrEmpty(null)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void isNullOrEmptyIsEmptyTest() throws Exception { - final Class[] parameterTypes = { Collection.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("isNullOrEmpty", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final Collection list = new ArrayList<>(); - - final Object[] args_n = { list }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertTrue(result); + public void isNullOrEmptyIsEmptyTest() { + assertTrue(AuxiliaryGenUtils.isNullOrEmpty(new ArrayList<>())); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void isNullOrEmptyNotNullNotEmptyTest() throws Exception { - final Class[] parameterTypes = { Collection.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("isNullOrEmpty", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final Collection list = new ArrayList<>(); + public void isNullOrEmptyNotNullNotEmptyTest() { + final Collection list = new ArrayList<>(); list.add(new Object()); - - final Object[] args_n = { list }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertTrue(!result); + assertFalse(AuxiliaryGenUtils.isNullOrEmpty(list)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void augGenTypeNameTest() throws Exception { - final Class[] parameterTypes = { Map.class, String.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("augGenTypeName", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void augGenTypeNameTest() { final Map builders = new HashMap<>(); builders.put("genTypeName1", new GeneratedTypeBuilderImpl("pckg.a1", "gen_a_1", new ModuleContext())); builders.put("genTypeName2", new GeneratedTypeBuilderImpl("pckg.a2", "gen_a_2", new ModuleContext())); final String genTypeName = "genTypeName"; - - final Object[] args_n = { builders, genTypeName }; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertEquals("genTypeName3", result); + assertEquals("genTypeName3", AuxiliaryGenUtils.augGenTypeName(builders, genTypeName)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void getAugmentIdentifierNullTest() throws Exception { - final Class[] parameterTypes = { List.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("getAugmentIdentifier", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final List list = new ArrayList<>(); - - final Object[] args_n = { list }; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertEquals(null, result); + public void getAugmentIdentifierNullTest() { + assertNull(AuxiliaryGenUtils.getAugmentIdentifier(new ArrayList<>())); } - @SuppressWarnings({ "rawtypes" }) @Test - public void getAugmentIdentifierTest() throws Exception { - final Class[] parameterTypes = { List.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("getAugmentIdentifier", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void getAugmentIdentifierTest() { final List list = new ArrayList<>(); final UnknownSchemaNode unknownSchemaNode = mock(UnknownSchemaNode.class); final QName qname = @@ -379,73 +259,50 @@ public class AuxiliaryGenUtilsTest { when(unknownSchemaNode.getNodeParameter()).thenReturn(value); list.add(unknownSchemaNode); - final Object[] args_n = { list }; - final String result = (String) generate.invoke(AuxiliaryGenUtils.class, args_n); - assertEquals(value, result); + assertEquals(value, AuxiliaryGenUtils.getAugmentIdentifier(list)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void resolveInnerEnumFromTypeDefinitionNullTest() throws Exception { - final Class[] parameterTypes = - { EnumTypeDefinition.class, QName.class, Map.class, GeneratedTypeBuilder.class, Module.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("resolveInnerEnumFromTypeDefinition", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveInnerEnumFromTypeDefinitionNullTest() { EnumTypeDefinition enumTypeDefinition = null; final QName qname = null; final GeneratedTypeBuilder gtb = null; - final Map map = new HashMap<>(); + final Map map = new HashMap<>(); final Module module = null; - final Object[] args_n = { enumTypeDefinition, qname, map, gtb, module }; - EnumBuilder result = (EnumBuilder) generate.invoke(AuxiliaryGenUtils.class, args_n); + EnumBuilder result = AuxiliaryGenUtils.resolveInnerEnumFromTypeDefinition(enumTypeDefinition, qname, map, gtb, + module); assertEquals(null, result); enumTypeDefinition = mock(EnumTypeDefinition.class); - final Object[] args1 = { enumTypeDefinition, qname, map, gtb, module }; - result = (EnumBuilder) generate.invoke(AuxiliaryGenUtils.class, args1); + result = AuxiliaryGenUtils.resolveInnerEnumFromTypeDefinition(enumTypeDefinition, qname, map, gtb, module); assertEquals(null, result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void resolveInnerEnumFromTypeDefinitionTest() throws Exception { - final Class[] parameterTypes = - { EnumTypeDefinition.class, QName.class, Map.class, GeneratedTypeBuilder.class, Module.class }; - final Method generate = - AuxiliaryGenUtils.class.getDeclaredMethod("resolveInnerEnumFromTypeDefinition", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveInnerEnumFromTypeDefinitionTest() { final QName qname = QName.create("urn:enum:test", "2017-12-04", "enum-test"); final EnumTypeDefinition enumTypeDefinition = mock(EnumTypeDefinition.class); final QName enumQName = QName.create(qname, "enum-qname-test"); when(enumTypeDefinition.getQName()).thenReturn(enumQName); final SchemaPath schemaPath = SchemaPath.create(true, enumQName); when(enumTypeDefinition.getPath()).thenReturn(schemaPath); - final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl("urn.enum.test.pckg", "enum-test", new ModuleContext()); + when(enumTypeDefinition.getDescription()).thenReturn(Optional.empty()); + when(enumTypeDefinition.getReference()).thenReturn(Optional.empty()); + final GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl("urn.enum.test.pckg", "enum-test", + new ModuleContext()); final Map map = new HashMap<>(); final Module module = mock(Module.class); final ModuleContext moduleContext = new ModuleContext(); map.put(module, moduleContext); - final Object[] args1 = { enumTypeDefinition, qname, map, gtb, module }; - final EnumBuilder result = (EnumBuilder) generate.invoke(AuxiliaryGenUtils.class, args1); + final EnumBuilder result = AuxiliaryGenUtils.resolveInnerEnumFromTypeDefinition(enumTypeDefinition, qname, map, + gtb, module); assertNotNull(result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void addTOToTypeBuilderNullTest() throws Exception { - final Class[] parameterTypes = - { TypeDefinition.class, GeneratedTypeBuilder.class, DataSchemaNode.class, Module.class, - TypeProvider.class, SchemaContext.class, ModuleContext.class, Map.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("addTOToTypeBuilder", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void addTOToTypeBuilderNullTest() { final BooleanTypeDefinition typeDef = mock(BooleanTypeDefinition.class); final GeneratedTypeBuilder typeBuilder = new GeneratedTypeBuilderImpl("test.boolean.type.def", "boolean-type-def", new ModuleContext()); @@ -460,34 +317,25 @@ public class AuxiliaryGenUtilsTest { final Map genCtx = new HashMap<>(); genCtx.put(parentModule, new ModuleContext()); - final Object[] args1 = { typeDef, typeBuilder, leaf, parentModule, typeProvider, schemaContext, new ModuleContext(), genCtx }; - final GeneratedTOBuilder result = (GeneratedTOBuilder) generate.invoke(AuxiliaryGenUtils.class, args1); + final GeneratedTOBuilder result = AuxiliaryGenUtils.addTOToTypeBuilder(typeDef, typeBuilder, leaf, parentModule, + typeProvider, schemaContext, new ModuleContext(), genCtx); assertEquals(null, result); } @Test - public void addTOToTypeBuilderUnionTest() throws Exception { + public void addTOToTypeBuilderUnionTest() { assertNotNull(addTOToBuilder("/base/test-union.yang")); } @Test - public void addTOToTypeBuilderBitsTest() throws Exception { + public void addTOToTypeBuilderBitsTest() { assertNotNull(addTOToBuilder("/base/test-bits.yang")); } - @SuppressWarnings({ "rawtypes" }) - private GeneratedTOBuilder addTOToBuilder(final String yangPath) - throws NoSuchMethodException, ReactorException, FileNotFoundException, URISyntaxException, - IllegalAccessException, InvocationTargetException { - final Class[] parameterTypes = { TypeDefinition.class, GeneratedTypeBuilder.class, DataSchemaNode.class, - Module.class, TypeProvider.class, SchemaContext.class, ModuleContext.class, Map.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("addTOToTypeBuilder", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final GeneratedTypeBuilder typeBuilder = - new GeneratedTypeBuilderImpl("test.boolean.spc.def", "spec-type-def", new ModuleContext()); - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource(yangPath); + private static GeneratedTOBuilder addTOToBuilder(final String yangPath) { + final GeneratedTypeBuilder typeBuilder = new GeneratedTypeBuilderImpl("test.boolean.spc.def", "spec-type-def", + new ModuleContext()); + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource(yangPath); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); final LeafSchemaNode leafSchemaNode = (LeafSchemaNode) schemaContext.getModules().iterator().next().getChildNodes().iterator().next(); @@ -495,74 +343,47 @@ public class AuxiliaryGenUtilsTest { final Map genCtx = new HashMap<>(); genCtx.put(schemaContext.getModules().iterator().next(), new ModuleContext()); - final Object[] args1 = { typeDef, typeBuilder, leafSchemaNode, schemaContext.getModules().iterator().next(), - typeProvider, schemaContext, new ModuleContext(), genCtx }; - return (GeneratedTOBuilder) generate.invoke(AuxiliaryGenUtils.class, args1); + return AuxiliaryGenUtils.addTOToTypeBuilder(typeDef, typeBuilder, leafSchemaNode, + schemaContext.getModules().iterator().next(), typeProvider, schemaContext, new ModuleContext(), genCtx); } - @SuppressWarnings({ "rawtypes" }) @Test - public void createReturnTypeForUnionTest() throws Exception { - final Class[] parameterTypes = { GeneratedTOBuilder.class, TypeDefinition.class, GeneratedTypeBuilder.class, - Module.class, TypeProvider.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("createReturnTypeForUnion", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void createReturnTypeForUnionTest() { final GeneratedTypeBuilder typeBuilder = new GeneratedTypeBuilderImpl("test.boolean.spc.def", "spec-type-def", new ModuleContext()); - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/base/test-union.yang"); + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/base/test-union.yang"); final TypeProviderImpl typeProvider = new TypeProviderImpl(schemaContext); final LeafSchemaNode leafSchemaNode = (LeafSchemaNode) schemaContext.getModules().iterator().next().getChildNodes().iterator().next(); final TypeDefinition> typeDef = leafSchemaNode.getType(); - final Object[] args1 = { addTOToBuilder("/base/test-union.yang"), typeDef, typeBuilder, - schemaContext.getModules().iterator().next(), typeProvider }; - final Type result = (Type) generate.invoke(AuxiliaryGenUtils.class, args1); + final Type result = AuxiliaryGenUtils.createReturnTypeForUnion(addTOToBuilder("/base/test-union.yang"), typeDef, + typeBuilder, schemaContext.getModules().iterator().next(), typeProvider); assertNotNull(result); } - @SuppressWarnings({ "rawtypes" }) @Test - public void isInnerTypeTrueTest() throws Exception { - final Class[] parameterTypes = { LeafSchemaNode.class, TypeDefinition.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("isInnerType", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void isInnerTypeTrueTest() { final LeafSchemaNode leaf = mock(LeafSchemaNode.class); - final TypeDefinition type = mock(TypeDefinition.class); + final TypeDefinition type = mock(TypeDefinition.class); final QName qname = QName.create("namespace", "2017-12-04", "localName"); final SchemaPath path = SchemaPath.create(true, qname); when(leaf.getPath()).thenReturn(path); when(type.getPath()).thenReturn(path); - final Object[] args1 = { leaf, type }; - boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args1); - assertNotNull(result); - assertTrue(result); + assertTrue(AuxiliaryGenUtils.isInnerType(leaf, type)); final QName qnameParent = QName.create(qname, "qnameParent"); final SchemaPath parent = SchemaPath.create(true, qname, qnameParent); when(type.getPath()).thenReturn(parent); - final Object[] args2 = { leaf, type }; - result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args2); - assertNotNull(result); - assertTrue(result); + assertTrue(AuxiliaryGenUtils.isInnerType(leaf, type)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void isInnerTypeFalseTest() throws Exception { - final Class[] parameterTypes = { LeafSchemaNode.class, TypeDefinition.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("isInnerType", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void isInnerTypeFalseTest() { final LeafSchemaNode leaf = mock(LeafSchemaNode.class); - final TypeDefinition type = mock(TypeDefinition.class); + final TypeDefinition type = mock(TypeDefinition.class); final QName qname = QName.create("namespace", "2017-12-04", "localName"); final SchemaPath path = SchemaPath.create(true, qname); when(leaf.getPath()).thenReturn(path); @@ -573,20 +394,11 @@ public class AuxiliaryGenUtilsTest { when(type.getPath()).thenReturn(parent); - final Object[] args2 = { leaf, type }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args2); - assertNotNull(result); - assertTrue(!result); + assertFalse(AuxiliaryGenUtils.isInnerType(leaf, type)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void resolveListKeyTOBuilderTest() throws Exception { - final Class[] parameterTypes = { String.class, ListSchemaNode.class, ModuleContext.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("resolveListKeyTOBuilder", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveListKeyTOBuilderTest() { final String pckgName = "pckg.name.test"; final ListSchemaNode list = mock(ListSchemaNode.class); final List keyDefs = new ArrayList<>(); @@ -595,90 +407,44 @@ public class AuxiliaryGenUtilsTest { when(list.getKeyDefinition()).thenReturn(keyDefs); when(list.getQName()).thenReturn(qname); - final Object[] args1 = { pckgName, list, new ModuleContext() }; - final GeneratedTOBuilder result = (GeneratedTOBuilder) generate.invoke(AuxiliaryGenUtils.class, args1); + final GeneratedTOBuilder result = AuxiliaryGenUtils.resolveListKeyTOBuilder(pckgName, list, + new ModuleContext()); assertNotNull(result); assertEquals("LocalnameKey", result.getName()); } - @SuppressWarnings({ "rawtypes" }) @Test - public void resolveLeafSchemaNodeAsPropertyFalseTest() throws Exception { - final Class[] parameterTypes = { String.class, GeneratedTOBuilder.class, LeafSchemaNode.class, Type.class, boolean.class }; - final Method generate = - AuxiliaryGenUtils.class.getDeclaredMethod("resolveLeafSchemaNodeAsProperty", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveLeafSchemaNodeAsPropertyFalseTest() { final GeneratedTOBuilder gtob = mock(GeneratedTOBuilder.class); final LeafSchemaNode leaf = mock(LeafSchemaNode.class); final boolean isReadOnly = true; final Type type = null; - final Object[] args2 = { "list", gtob, leaf, type, isReadOnly }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args2); - assertNotNull(result); - assertTrue(!result); + assertFalse(AuxiliaryGenUtils.resolveLeafSchemaNodeAsProperty("list", gtob, leaf, type, isReadOnly)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void resolveLeafSchemaNodeAsPropertyTrueTest() throws Exception { - final Class[] parameterTypes = { String.class, GeneratedTOBuilder.class, LeafSchemaNode.class, Type.class, boolean.class }; - final Method generate = - AuxiliaryGenUtils.class.getDeclaredMethod("resolveLeafSchemaNodeAsProperty", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void resolveLeafSchemaNodeAsPropertyTrueTest() { final GeneratedTOBuilder gtob = new GeneratedTOBuilderImpl("pckg.name.gto.tst", "gto_name", true); final LeafSchemaNode leaf = mock(LeafSchemaNode.class); + when(leaf.getDescription()).thenReturn(Optional.empty()); + when(leaf.getReference()).thenReturn(Optional.empty()); + final boolean isReadOnly = true; final Type type = mock(Type.class); when(leaf.getQName()).thenReturn(QName.create("ns", "2017-12-04", "ln")); - final Object[] args2 = { "list", gtob, leaf, type, isReadOnly }; - final boolean result = (boolean) generate.invoke(AuxiliaryGenUtils.class, args2); - assertNotNull(result); - assertTrue(result); + assertTrue(AuxiliaryGenUtils.resolveLeafSchemaNodeAsProperty("list", gtob, leaf, type, isReadOnly)); } - @SuppressWarnings({ "rawtypes" }) @Test - public void checkModuleAndModuleNameTest() throws Exception { - final Class[] parameterTypes = { Module.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("checkModuleAndModuleName", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void checkModuleAndModuleNameTest() { final Module module = mock(Module.class); when(module.getName()).thenReturn("moduleName"); - final Object[] args2 = { module }; - generate.invoke(AuxiliaryGenUtils.class, args2); + AuxiliaryGenUtils.checkModuleAndModuleName(module); } - @SuppressWarnings("rawtypes") - private String getterMethodName(final String schemaNodeName, final Type returnType) - throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { - final Class[] parameterTypes = - { String.class, Type.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("getterMethodName", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final Object[] args = { schemaNodeName, returnType }; - return (String) generate.invoke(AuxiliaryGenUtils.class, args); - } - - @SuppressWarnings("rawtypes") - private boolean hasBuilderClass(final Class clazz) throws Exception { - final Class[] parameterTypes = { SchemaNode.class, BindingNamespaceType.class }; - final Method generate = AuxiliaryGenUtils.class.getDeclaredMethod("hasBuilderClass", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - - final T schemaNode = mock(clazz); - - final Object[] args = { schemaNode, BindingNamespaceType.Data }; - return (boolean) generate.invoke(AuxiliaryGenUtils.class, args); + private static boolean hasBuilderClass(final Class clazz) { + return AuxiliaryGenUtils.hasBuilderClass(mock(clazz), BindingNamespaceType.Data); } } diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/BindingGeneratorImplTest.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/BindingGeneratorImplTest.java index a2fea07765..f92a468b44 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/BindingGeneratorImplTest.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/BindingGeneratorImplTest.java @@ -12,7 +12,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.api.BindingGenerator; @@ -30,7 +29,7 @@ public class BindingGeneratorImplTest { @Test public void genTypesTypeDefTest() throws Exception { final BindingGeneratorImpl bg = new BindingGeneratorImpl(false); - final SchemaContext schemaContext = YangParserTestUtils.parseYangSource("/generator/test-typedef.yang"); + final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/generator/test-typedef.yang"); final List generateTypes = bg.generateTypes(schemaContext); assertNotNull(generateTypes); for (final Type genType : generateTypes) { @@ -49,7 +48,7 @@ public class BindingGeneratorImplTest { @Test public void generatedTypesEnumTest() throws Exception { final BindingGenerator bg = new BindingGeneratorImpl(false); - final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/apple-test.yang"); + final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/apple-test.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -70,12 +69,10 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesUsesEnumLeafTest() throws Exception { + public void generatedTypesUsesEnumLeafTest() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final List sources = new ArrayList<>(); - sources.add("/uses-statement/test-uses-leaf-innertype-base.yang"); - sources.add("/uses-statement/test-uses-leaf-innertype.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sources); + final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/uses-statement/test-uses-leaf-innertype-base.yang", "/uses-statement/test-uses-leaf-innertype.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -97,12 +94,10 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesUsesBitsLeafTest() throws Exception { + public void generatedTypesUsesBitsLeafTest() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final List sources = new ArrayList<>(); - sources.add("/uses-statement/test-uses-leaf-innertype2-base.yang"); - sources.add("/uses-statement/test-uses-leaf-innertype2.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sources); + final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -131,12 +126,10 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesUsesUnionLeafTest() throws Exception { + public void generatedTypesUsesUnionLeafTest() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final List sources = new ArrayList<>(); - sources.add("/uses-statement/test-uses-leaf-innertype2-base.yang"); - sources.add("/uses-statement/test-uses-leaf-innertype2.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sources); + final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -165,12 +158,10 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesUsesLeafTest() throws Exception { + public void generatedTypesUsesLeafTest() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final List sources = new ArrayList<>(); - sources.add("/uses-statement/test-uses-leaf-innertype2-base.yang"); - sources.add("/uses-statement/test-uses-leaf-innertype2.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sources); + final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/uses-statement/test-uses-leaf-innertype2-base.yang", "/uses-statement/test-uses-leaf-innertype2.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -199,12 +190,11 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesUsesLeafInnertype3Test() throws Exception { + public void generatedTypesUsesLeafInnertype3Test() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final List sources = new ArrayList<>(); - sources.add("/uses-statement/test-uses-leaf-innertype3-base.yang"); - sources.add("/uses-statement/test-uses-leaf-innertype3.yang"); - final SchemaContext context = YangParserTestUtils.parseYangSources(sources); + final SchemaContext context = YangParserTestUtils.parseYangResources(BindingGeneratorImplTest.class, + "/uses-statement/test-uses-leaf-innertype3-base.yang", + "/uses-statement/test-uses-leaf-innertype3.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); @@ -238,9 +228,9 @@ public class BindingGeneratorImplTest { } @Test - public void generatedTypesTest() throws Exception { + public void generatedTypesTest() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final SchemaContext context = YangParserTestUtils.parseYangSource("/generator/test-list.yang"); + final SchemaContext context = YangParserTestUtils.parseYangResource("/generator/test-list.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); @@ -282,9 +272,9 @@ public class BindingGeneratorImplTest { } @Test - public void generateTypesDescriptionsTest() throws Exception { + public void generateTypesDescriptionsTest() { final BindingGenerator bg = new BindingGeneratorImpl(true); - final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/"); + final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/base/with_import/"); assertNotNull(context); final List generateTypes = bg.generateTypes(context, context.getModules()); @@ -306,7 +296,7 @@ public class BindingGeneratorImplTest { @Test public void generateTypesIdentityTest() throws Exception { final BindingGenerator bg = new BindingGeneratorImpl(true); - final SchemaContext context = YangParserTestUtils.parseYangSources("/identity/"); + final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/identity/"); assertNotNull(context); final List generateTypes = bg.generateTypes(context, context.getModules()); diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8542Test.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8542Test.java index a8c7c095b5..6a5f22f3c5 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8542Test.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8542Test.java @@ -11,18 +11,18 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; +import java.util.List; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.api.BindingGenerator; import org.opendaylight.mdsal.binding.javav2.model.api.Type; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; -import java.util.List; public class Bug8542Test { @Test - public void Bug8542Test() throws Exception { + public void testBug8542() { final BindingGenerator bg = new BindingGeneratorImpl(false); - final SchemaContext context = YangParserTestUtils.parseYangSource("/bug-8542/recursive-uses-augment.yang"); + final SchemaContext context = YangParserTestUtils.parseYangResource("/bug-8542/recursive-uses-augment.yang"); final List generateTypes = bg.generateTypes(context); assertNotNull(generateTypes); assertTrue(!generateTypes.isEmpty()); diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8575Test.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8575Test.java index c94f93346b..c5b7493534 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8575Test.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/Bug8575Test.java @@ -5,8 +5,6 @@ * 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.javav2.generator.impl; import static org.junit.Assert.assertNotNull; @@ -14,31 +12,26 @@ import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.lang.reflect.Method; import org.junit.Test; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; +import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; -import java.io.File; -import java.lang.reflect.Method; - public class Bug8575Test { @Test public void bug8575Test() throws Exception { - final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; + final Class[] parameterTypes = { SchemaContext.class, SchemaPath.class, UsesNode.class }; final Method generate = AugmentToGenType.class.getDeclaredMethod("findOriginalTargetFromGrouping", parameterTypes); assertNotNull(generate); generate.setAccessible(true); - File foo = new File(getClass().getResource( - "/bug-8575/foo.yang").toURI()); - - SchemaContext context = YangParserTestUtils.parseYangSources(foo); + SchemaContext context = YangParserTestUtils.parseYangResource("/bug-8575/foo.yang"); final QName groupingQname = QName.create("foo", "2017-05-15", "A"); final QName containerQname = QName.create("foo", "2017-05-15", "A1"); diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelperTest.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelperTest.java index 2e2b62572f..bf3a27aa7e 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelperTest.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelperTest.java @@ -10,15 +10,11 @@ package org.opendaylight.mdsal.binding.javav2.generator.impl; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import com.google.common.base.Optional; import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -45,60 +41,48 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; public class RpcActionGenHelperTest { + // Bridge for method references + @FunctionalInterface + private static interface GeneratorMethod { + Map generate(Module module, Map genCtx, + SchemaContext schemaContext, boolean verboseClassComments, + Map> genTypeBuilders, TypeProvider typeProvider); + } - @SuppressWarnings("unchecked") @Test(expected = UnsupportedOperationException.class) public void constructorTest() throws Throwable { - final Constructor constructor = - (Constructor) RpcActionGenHelper.class.getDeclaredConstructors()[0]; + final Constructor constructor = RpcActionGenHelper.class.getDeclaredConstructor(); constructor.setAccessible(true); - final Object[] objs = {}; try { - constructor.newInstance(objs); + constructor.newInstance(); } catch (final Exception e) { throw e.getCause(); } } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void getRoutingContextAbsentTest() throws Exception { - final Class[] parameterTypes = { DataSchemaNode.class }; - final Method generate = RpcActionGenHelper.class.getDeclaredMethod("getRoutingContext", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); + public void getRoutingContextAbsentTest() { final DataSchemaNode dataSchemaNode = mock(DataSchemaNode.class); final List unknownSchemaNodes = new ArrayList<>(); when(dataSchemaNode.getUnknownSchemaNodes()).thenReturn(unknownSchemaNodes); - final Object[] args = { dataSchemaNode }; - final Optional result = (Optional) generate.invoke(RpcActionGenHelper.class, args); + final Optional result = RpcActionGenHelper.getRoutingContext(dataSchemaNode); assertNotNull(result); assertTrue(!result.isPresent()); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void getRoutingContextTest() throws Exception { - final Class[] parameterTypes = { DataSchemaNode.class }; - final Method generate = RpcActionGenHelper.class.getDeclaredMethod("getRoutingContext", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void getRoutingContextTest() { final DataSchemaNode dataSchemaNode = mock(DataSchemaNode.class); final List unknownSchemaNodes = new ArrayList<>(); - final Field contextRef = RpcActionGenHelper.class.getDeclaredField("CONTEXT_REFERENCE"); - contextRef.setAccessible(true); - final QName nodeType = (QName) contextRef.get(RpcActionGenHelper.class); final UnknownSchemaNode unknownSchemaNode = mock(UnknownSchemaNode.class); - when(unknownSchemaNode.getNodeType()).thenReturn(nodeType); + when(unknownSchemaNode.getNodeType()).thenReturn(RpcActionGenHelper.CONTEXT_REFERENCE); final QName qname = QName.create("test", "2017-05-04", "unknown"); when(unknownSchemaNode.getQName()).thenReturn(qname); unknownSchemaNodes.add(unknownSchemaNode); when(dataSchemaNode.getUnknownSchemaNodes()).thenReturn(unknownSchemaNodes); - final Object[] args = { dataSchemaNode }; - final Optional result = (Optional) generate.invoke(RpcActionGenHelper.class, args); + final Optional result = RpcActionGenHelper.getRoutingContext(dataSchemaNode); assertNotNull(result); assertTrue(result.isPresent()); assertEquals(qname, result.get()); @@ -106,25 +90,18 @@ public class RpcActionGenHelperTest { @Ignore @Test - public void actionMethodsToGenTypeContainerAsParentTest() throws Exception { + public void actionMethodsToGenTypeContainerAsParentTest() { actionMethodsToGenType(ContainerSchemaNode.class, false); } @Ignore @Test - public void actionMethodsToGenTypeListAsParentTest() throws Exception { + public void actionMethodsToGenTypeListAsParentTest() { actionMethodsToGenType(ListSchemaNode.class, false); } - @SuppressWarnings("rawtypes") - @Test - public void rpcMethodsToGenTypeNullRpcsTest() throws Exception { - final Class[] parameterTypes = - { Module.class, Map.class, SchemaContext.class, boolean.class, Map.class, TypeProvider.class }; - final Method generate = RpcActionGenHelper.class.getDeclaredMethod("rpcMethodsToGenType", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + @Test(expected = IllegalStateException.class) + public void rpcMethodsToGenTypeNullRpcsTest() { final QName rpcQName = QName.create("test.rpc", "2017-05-04", "rpc-test"); final Module module = mock(Module.class); @@ -139,29 +116,12 @@ public class RpcActionGenHelperTest { final Map> genTypeBuilders = new HashMap<>(); final TypeProvider typeProvider = mock(TypeProvider.class); - final Object[] args = { module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider }; - - try { - generate.invoke(RpcActionGenHelper.class, args); - fail(); - } catch (final Exception e) { - assertNotNull(e); - assertTrue(e instanceof InvocationTargetException); - final Throwable cause = e.getCause(); - assertNotNull(cause); - assertTrue(cause instanceof IllegalStateException); - } + RpcActionGenHelper.rpcMethodsToGenType(module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, + typeProvider); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void rpcMethodsToGenTypeEmptyRpcsTest() throws Exception { - final Class[] parameterTypes = - { Module.class, Map.class, SchemaContext.class, boolean.class, Map.class, TypeProvider.class }; - final Method generate = RpcActionGenHelper.class.getDeclaredMethod("rpcMethodsToGenType", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void rpcMethodsToGenTypeEmptyRpcsTest() { final QName rpcQName = QName.create("test.rpc", "2017-05-04", "rpc-test"); final Module module = mock(Module.class); @@ -177,26 +137,18 @@ public class RpcActionGenHelperTest { final Map> genTypeBuilders = new HashMap<>(); final TypeProvider typeProvider = mock(TypeProvider.class); - final Object[] args = { module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider }; - final Map result = - (Map) generate.invoke(RpcActionGenHelper.class, args); + final Map result = RpcActionGenHelper.rpcMethodsToGenType(module, genCtx, schemaContext, + verboseClassComments, genTypeBuilders, typeProvider); assertNotNull(result); } @Test - public void rpcMethodsToGenTypeRoutedRpcTest() throws Exception { + public void rpcMethodsToGenTypeRoutedRpcTest() { actionMethodsToGenType(ContainerSchemaNode.class, true); } - @SuppressWarnings({ "rawtypes", "unchecked" }) @Test - public void rpcMethodsToGenTypeRpcTest() throws Exception { - final Class[] parameterTypes = - { Module.class, Map.class, SchemaContext.class, boolean.class, Map.class, TypeProvider.class }; - final Method generate = RpcActionGenHelper.class.getDeclaredMethod("rpcMethodsToGenType", parameterTypes); - assertNotNull(generate); - generate.setAccessible(true); - + public void rpcMethodsToGenTypeRpcTest() { final QName rpcQName = QName.create("test.rpc", "2017-05-04", "rpc-test"); final ContainerSchemaNode rpcParent = mock(ContainerSchemaNode.class); @@ -207,11 +159,16 @@ public class RpcActionGenHelperTest { when(module.getName()).thenReturn("module-name"); when(module.getRevision()).thenReturn(rpcQName.getRevision()); when(module.getNamespace()).thenReturn(rpcQName.getNamespace()); + when(module.getDescription()).thenReturn(java.util.Optional.empty()); + when(module.getReference()).thenReturn(java.util.Optional.empty()); final Set rpcs = new HashSet<>(); final RpcDefinition rpcDefinition = mock(RpcDefinition.class); + when(rpcDefinition.getDescription()).thenReturn(java.util.Optional.empty()); + when(rpcDefinition.getReference()).thenReturn(java.util.Optional.empty()); final SchemaPath rpcPath = SchemaPath.create(true, rpcParentQName, rpcQName); when(rpcDefinition.getPath()).thenReturn(rpcPath); when(rpcDefinition.getQName()).thenReturn(rpcQName); + when(module.getDataChildByName(rpcParentQName)).thenReturn(rpcParent); rpcs.add(rpcDefinition); when(module.getRpcs()).thenReturn(rpcs); @@ -221,6 +178,9 @@ public class RpcActionGenHelperTest { final SchemaPath inputSchemaPath = SchemaPath.create(true, rpcQName, qnameInput); when(input.getQName()).thenReturn(qnameInput); when(input.getPath()).thenReturn(inputSchemaPath); + when(input.getDescription()).thenReturn(java.util.Optional.empty()); + when(input.getReference()).thenReturn(java.util.Optional.empty()); + when(rpcDefinition.getInput()).thenReturn(input); final ContainerSchemaNode output = mock(ContainerSchemaNode.class); @@ -228,6 +188,8 @@ public class RpcActionGenHelperTest { final SchemaPath outputSchemaPath = SchemaPath.create(true, rpcQName, qnameOutput); when(output.getQName()).thenReturn(qnameOutput); when(output.getPath()).thenReturn(outputSchemaPath); + when(output.getDescription()).thenReturn(java.util.Optional.empty()); + when(output.getReference()).thenReturn(java.util.Optional.empty()); when(rpcDefinition.getOutput()).thenReturn(output); final Map genCtx = new HashMap<>(); @@ -235,32 +197,25 @@ public class RpcActionGenHelperTest { genCtx.put(module, moduleContext); final SchemaContext schemaContext = mock(SchemaContext.class); - when(schemaContext.findModuleByNamespaceAndRevision(rpcQName.getNamespace(), rpcQName.getRevision())) - .thenReturn(module); + when(schemaContext.findModule(rpcQName.getModule())).thenReturn(java.util.Optional.of(module)); final boolean verboseClassComments = false; final Map> genTypeBuilders = new HashMap<>(); final TypeProvider typeProvider = mock(TypeProvider.class); - final Object[] args = { module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider }; - final Map result = - (Map) generate.invoke(RpcActionGenHelper.class, args); + final Map result = RpcActionGenHelper.rpcMethodsToGenType(module, genCtx, schemaContext, + verboseClassComments, genTypeBuilders, typeProvider); assertNotNull(result); } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void actionMethodsToGenType(final Class clazz, - final boolean isRoutedRpc) throws Exception { - final Class[] parameterTypes = - { Module.class, Map.class, SchemaContext.class, boolean.class, Map.class, TypeProvider.class }; - Method generate; + private static void actionMethodsToGenType(final Class clazz, + final boolean isRoutedRpc) { + final GeneratorMethod generate; if (isRoutedRpc) { - generate = RpcActionGenHelper.class.getDeclaredMethod("rpcMethodsToGenType", parameterTypes); + generate = RpcActionGenHelper::rpcMethodsToGenType; } else { - generate = RpcActionGenHelper.class.getDeclaredMethod("actionMethodsToGenType", parameterTypes); + generate = RpcActionGenHelper::actionMethodsToGenType; } - assertNotNull(generate); - generate.setAccessible(true); final QName actionQName = QName.create("test.action", "2017-05-04", "action-test"); @@ -268,6 +223,8 @@ public class RpcActionGenHelperTest { when(module.getName()).thenReturn("module-name"); when(module.getRevision()).thenReturn(actionQName.getRevision()); when(module.getNamespace()).thenReturn(actionQName.getNamespace()); + when(module.getDescription()).thenReturn(java.util.Optional.empty()); + when(module.getReference()).thenReturn(java.util.Optional.empty()); final Collection childNodes = new ArrayList<>(); final T actionNodeContainer = mock(clazz); @@ -287,12 +244,16 @@ public class RpcActionGenHelperTest { when(actionDefinition.getQName()).thenReturn(actionQName); final SchemaPath actionPath = SchemaPath.create(true, actionQName); when(actionDefinition.getPath()).thenReturn(actionPath); + when(actionDefinition.getDescription()).thenReturn(java.util.Optional.empty()); + when(actionDefinition.getReference()).thenReturn(java.util.Optional.empty()); final ContainerSchemaNode input = mock(ContainerSchemaNode.class); final QName qnameInput = QName.create(actionQName, "action-input"); final SchemaPath inputSchemaPath = SchemaPath.create(true, actionQName, qnameInput); when(input.getQName()).thenReturn(qnameInput); when(input.getPath()).thenReturn(inputSchemaPath); + when(input.getDescription()).thenReturn(java.util.Optional.empty()); + when(input.getReference()).thenReturn(java.util.Optional.empty()); when(actionDefinition.getInput()).thenReturn(input); final ContainerSchemaNode output = mock(ContainerSchemaNode.class); @@ -300,6 +261,8 @@ public class RpcActionGenHelperTest { final SchemaPath outputSchemaPath = SchemaPath.create(true, actionQName, qnameOutput); when(output.getQName()).thenReturn(qnameOutput); when(output.getPath()).thenReturn(outputSchemaPath); + when(output.getDescription()).thenReturn(java.util.Optional.empty()); + when(output.getReference()).thenReturn(java.util.Optional.empty()); when(actionDefinition.getOutput()).thenReturn(output); actions.add(actionDefinition); @@ -312,8 +275,7 @@ public class RpcActionGenHelperTest { genCtx.put(module, moduleContext); final SchemaContext schemaContext = mock(SchemaContext.class); - when(schemaContext.findModuleByNamespaceAndRevision(actionQName.getNamespace(), actionQName.getRevision())) - .thenReturn(module); + when(schemaContext.findModule(actionQName.getModule())).thenReturn(java.util.Optional.of(module)); final boolean verboseClassComments = false; final Map> genTypeBuilders = new HashMap<>(); @@ -324,14 +286,14 @@ public class RpcActionGenHelperTest { final RpcDefinition rpcDef = mock(RpcDefinition.class); when(rpcDef.getPath()).thenReturn(outputSchemaPath); when(rpcDef.getQName()).thenReturn(qnameOutput); + when(rpcDef.getDescription()).thenReturn(java.util.Optional.empty()); + when(rpcDef.getReference()).thenReturn(java.util.Optional.empty()); + when(module.getDataChildByName(actionQName)).thenReturn((ContainerSchemaNode) actionNodeContainer); final List unknownSchemaNodes = new ArrayList<>(); final UnknownSchemaNode unknownSchemaNode = mock(UnknownSchemaNode.class); - final Field contextRef = RpcActionGenHelper.class.getDeclaredField("CONTEXT_REFERENCE"); - contextRef.setAccessible(true); - final QName nodeType = (QName) contextRef.get(RpcActionGenHelper.class); - when(unknownSchemaNode.getNodeType()).thenReturn(nodeType); - when(unknownSchemaNode.getQName()).thenReturn(nodeType); + when(unknownSchemaNode.getNodeType()).thenReturn(RpcActionGenHelper.CONTEXT_REFERENCE); + when(unknownSchemaNode.getQName()).thenReturn(RpcActionGenHelper.CONTEXT_REFERENCE); unknownSchemaNodes.add(unknownSchemaNode); when(((DataSchemaNode) actionNodeContainer).getUnknownSchemaNodes()).thenReturn(unknownSchemaNodes); when(rpcDef.getInput()).thenReturn(input); @@ -340,9 +302,8 @@ public class RpcActionGenHelperTest { when(module.getRpcs()).thenReturn(rpcs); } - final Object[] args = { module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider }; - final Map result = - (Map) generate.invoke(RpcActionGenHelper.class, args); + final Map result = generate.generate(module, genCtx, schemaContext, verboseClassComments, + genTypeBuilders, typeProvider); assertNotNull(result); } } diff --git a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/YangTemplateTest.java b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/YangTemplateTest.java index 2484b4a80b..60115e82a2 100644 --- a/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/YangTemplateTest.java +++ b/binding2/mdsal-binding2-generator-impl/src/test/java/org/opendaylight/mdsal/binding/javav2/generator/impl/YangTemplateTest.java @@ -11,17 +11,13 @@ package org.opendaylight.mdsal.binding.javav2.generator.impl; import static org.junit.Assert.assertTrue; import com.google.common.annotations.Beta; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; import java.util.Iterator; import java.util.Set; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.impl.txt.yangTemplateForModule; import org.opendaylight.mdsal.binding.javav2.generator.util.YangSnippetCleaner; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; @Beta @@ -30,8 +26,8 @@ public class YangTemplateTest { private Set modules; @Before - public void setup() throws URISyntaxException, ReactorException, FileNotFoundException { - this.modules = YangParserTestUtils.parseYangSources("/yang-template").getModules(); + public void setup() { + this.modules = YangParserTestUtils.parseYangResourceDirectory("/yang-template").getModules(); } @Test @@ -46,9 +42,12 @@ public class YangTemplateTest { moduleBody = yangTemplateForModule.render(iterator.next()).body().trim(); cleanedModuleBody = YangSnippetCleaner.clean(moduleBody); + System.out.println(cleanedModuleBody); assertTrue(cleanedModuleBody.contains("module yang-template-test {")); - assertTrue(cleanedModuleBody - .contains(" import yang-template-import { prefix \"yti\"; revision-date 2016-06-23; }")); + assertTrue(cleanedModuleBody.contains(" import yang-template-import {")); + assertTrue(cleanedModuleBody.contains(" prefix \"yti\";")); + assertTrue(cleanedModuleBody.contains(" revision-date 2016-06-23;")); + assertTrue(cleanedModuleBody.contains(" }")); assertTrue(cleanedModuleBody.contains(" anydata simple-anydata;")); assertTrue(cleanedModuleBody.contains(" container simple-container-with-action {")); assertTrue(cleanedModuleBody.contains(" leaf-list simple-leaf-list {")); diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java index ec86229a47..67ed5a72f8 100644 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/BindingGeneratorUtil.java @@ -19,6 +19,7 @@ import com.google.common.collect.Iterables; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; +import java.math.BigDecimal; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.ArrayList; @@ -27,6 +28,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.List; +import java.util.Optional; import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier; import org.opendaylight.mdsal.binding.javav2.model.api.Restrictions; import org.opendaylight.mdsal.binding.javav2.model.api.Type; @@ -36,18 +38,17 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignat import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.TypeMemberBuilder; import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; +import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; -import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition; import org.opendaylight.yangtools.yang.model.util.type.BaseTypes; import org.opendaylight.yangtools.yang.model.util.type.DecimalTypeBuilder; @@ -71,8 +72,8 @@ public final class BindingGeneratorUtil { private static final Restrictions EMPTY_RESTRICTIONS = new Restrictions() { @Override - public List getLengthConstraints() { - return Collections.emptyList(); + public Optional getLengthConstraint() { + return Optional.empty(); } @Override @@ -81,8 +82,8 @@ public final class BindingGeneratorUtil { } @Override - public List getRangeConstraints() { - return Collections.emptyList(); + public Optional> getRangeConstraint() { + return Optional.empty(); } @Override @@ -124,7 +125,7 @@ public final class BindingGeneratorUtil { } for (final MethodSignatureBuilder m : sortedCollection(SUID_MEMBER_COMPARATOR, to.getMethodDefinitions())) { - if (!(m.getAccessModifier().equals(AccessModifier.PRIVATE))) { + if (!m.getAccessModifier().equals(AccessModifier.PRIVATE)) { dout.writeUTF(m.getName()); dout.write(m.getAccessModifier().ordinal()); } @@ -138,7 +139,7 @@ public final class BindingGeneratorUtil { final byte[] hashBytes = SHA1_MD.get().digest(bout.toByteArray()); long hash = 0; for (int i = Math.min(hashBytes.length, 8) - 1; i >= 0; i--) { - hash = (hash << 8) | (hashBytes[i] & 0xFF); + hash = hash << 8 | hashBytes[i] & 0xFF; } return hash; } @@ -208,14 +209,14 @@ public final class BindingGeneratorUtil { } public static Restrictions getRestrictions(final TypeDefinition type) { - if ((type == null) || (type.getBaseType() == null)) { + if (type == null || type.getBaseType() == null) { if (type instanceof DecimalTypeDefinition) { final DecimalTypeDefinition decimal = (DecimalTypeDefinition) type; final DecimalTypeBuilder tmpBuilder = BaseTypes.decimalTypeBuilder(decimal.getPath()); tmpBuilder.setFractionDigits(decimal.getFractionDigits()); final DecimalTypeDefinition tmp = tmpBuilder.build(); - if (!tmp.getRangeConstraints().equals(decimal.getRangeConstraints())) { + if (!tmp.getRangeConstraint().equals(decimal.getRangeConstraint())) { return new Restrictions() { @Override public boolean isEmpty() { @@ -223,8 +224,8 @@ public final class BindingGeneratorUtil { } @Override - public List getRangeConstraints() { - return decimal.getRangeConstraints(); + public Optional> getRangeConstraint() { + return decimal.getRangeConstraint(); } @Override @@ -233,8 +234,8 @@ public final class BindingGeneratorUtil { } @Override - public List getLengthConstraints() { - return ImmutableList.of(); + public Optional getLengthConstraint() { + return Optional.empty(); } }; } @@ -243,9 +244,9 @@ public final class BindingGeneratorUtil { return EMPTY_RESTRICTIONS; } - final List length; + final Optional length; final List pattern; - final List range; + final Optional> range; /* * Take care of extended types. @@ -261,73 +262,56 @@ public final class BindingGeneratorUtil { if (type instanceof BinaryTypeDefinition) { final BinaryTypeDefinition binary = (BinaryTypeDefinition)type; final BinaryTypeDefinition base = binary.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - length = currentOrEmpty(binary.getLengthConstraints(), base.getLengthConstraints()); + if (base != null && base.getBaseType() != null) { + length = currentOrEmpty(binary.getLengthConstraint(), base.getLengthConstraint()); } else { - length = binary.getLengthConstraints(); + length = binary.getLengthConstraint(); } pattern = ImmutableList.of(); - range = ImmutableList.of(); + range = Optional.empty(); } else if (type instanceof DecimalTypeDefinition) { - length = ImmutableList.of(); + length = Optional.empty(); pattern = ImmutableList.of(); final DecimalTypeDefinition decimal = (DecimalTypeDefinition)type; final DecimalTypeDefinition base = decimal.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(decimal.getRangeConstraints(), base.getRangeConstraints()); + if (base != null && base.getBaseType() != null) { + range = currentOrEmpty(decimal.getRangeConstraint(), base.getRangeConstraint()); } else { - range = decimal.getRangeConstraints(); + range = decimal.getRangeConstraint(); } - } else if (type instanceof IntegerTypeDefinition) { - length = ImmutableList.of(); + } else if (type instanceof RangeRestrictedTypeDefinition) { + // Integer-like types + length = Optional.empty(); pattern = ImmutableList.of(); - - final IntegerTypeDefinition integer = (IntegerTypeDefinition)type; - final IntegerTypeDefinition base = integer.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(integer.getRangeConstraints(), base.getRangeConstraints()); - } else { - range = integer.getRangeConstraints(); - } + range = extractRangeConstraint((RangeRestrictedTypeDefinition)type); } else if (type instanceof StringTypeDefinition) { final StringTypeDefinition string = (StringTypeDefinition)type; final StringTypeDefinition base = string.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - length = currentOrEmpty(string.getLengthConstraints(), base.getLengthConstraints()); + if (base != null && base.getBaseType() != null) { + length = currentOrEmpty(string.getLengthConstraint(), base.getLengthConstraint()); } else { - length = string.getLengthConstraints(); + length = string.getLengthConstraint(); } pattern = uniquePatterns(string); - range = ImmutableList.of(); - } else if (type instanceof UnsignedIntegerTypeDefinition) { - length = ImmutableList.of(); - pattern = ImmutableList.of(); - - final UnsignedIntegerTypeDefinition unsigned = (UnsignedIntegerTypeDefinition)type; - final UnsignedIntegerTypeDefinition base = unsigned.getBaseType(); - if ((base != null) && (base.getBaseType() != null)) { - range = currentOrEmpty(unsigned.getRangeConstraints(), base.getRangeConstraints()); - } else { - range = unsigned.getRangeConstraints(); - } + range = Optional.empty(); } else { - length = ImmutableList.of(); + length = Optional.empty(); pattern = ImmutableList.of(); - range = ImmutableList.of(); + range = Optional.empty(); } // Now, this may have ended up being empty, too... - if (length.isEmpty() && pattern.isEmpty() && range.isEmpty()) { + if (!length.isPresent() && pattern.isEmpty() && !range.isPresent()) { return EMPTY_RESTRICTIONS; } // Nope, not empty allocate a holder return new Restrictions() { @Override - public List getRangeConstraints() { + public Optional> getRangeConstraint() { return range; } @Override @@ -335,7 +319,7 @@ public final class BindingGeneratorUtil { return pattern; } @Override - public List getLengthConstraints() { + public Optional getLengthConstraint() { return length; } @Override @@ -395,7 +379,7 @@ public final class BindingGeneratorUtil { * @throws NullPointerException if any of the arguments are null */ public static String packageNameForAugmentedGeneratedType(final String parentAugmentPackageName, - final AugmentationSchema augmentationSchema) { + final AugmentationSchemaNode augmentationSchema) { final QName last = augmentationSchema.getTargetPath().getLastComponent(); return generateNormalizedPackageName(parentAugmentPackageName, last); @@ -485,8 +469,8 @@ public final class BindingGeneratorUtil { } } - private static List currentOrEmpty(final List current, final List base) { - return current.equals(base) ? ImmutableList.of() : current; + private static > T currentOrEmpty(final T current, final T base) { + return current.equals(base) ? (T)Optional.empty() : current; } private static List uniquePatterns(final StringTypeDefinition type) { @@ -517,4 +501,15 @@ public final class BindingGeneratorUtil { return false; } + + private static > Optional> + extractRangeConstraint(final T def) { + final T base = (T) def.getBaseType(); + if (base != null && base.getBaseType() != null) { + return currentOrEmpty(def.getRangeConstraint(), base.getRangeConstraint()); + } + + return def.getRangeConstraint(); + } + } diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/Types.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/Types.java index a25bd4e120..a51ece91af 100644 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/Types.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/Types.java @@ -10,17 +10,19 @@ package org.opendaylight.mdsal.binding.javav2.generator.util; import com.google.common.annotations.Beta; import com.google.common.base.CharMatcher; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.Iterables; -import java.util.Collections; +import com.google.common.collect.Range; +import com.google.common.collect.RangeSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -36,7 +38,6 @@ import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation; import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; -import org.opendaylight.yangtools.yang.model.util.BaseConstraints; import org.w3c.dom.Document; @Beta @@ -112,29 +113,27 @@ public final class Types { public static ConcreteType typeForClass(final Class cls, final Restrictions restrictions) { - if (restrictions != null) { - if (restrictions instanceof DefaultRestrictions) { - return new ConcreteTypeImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); - } else { - return new BaseTypeWithRestrictionsImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); - } - } else { + if (restrictions == null) { return typeForClass(cls); } + if (restrictions instanceof DefaultRestrictions) { + return new ConcreteTypeImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); + } else { + return new BaseTypeWithRestrictionsImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); + } } public static ConcreteType typeForClass(final Class cls, final Restrictions restrictions, final ModuleContext moduleContext) { - if (restrictions != null) { - if (restrictions instanceof DefaultRestrictions) { - return new ConcreteTypeImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); - } else { - return new BaseTypeWithRestrictionsImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions, - moduleContext); - } - } else { + if (restrictions == null) { return typeForClass(cls); } + if (restrictions instanceof DefaultRestrictions) { + return new ConcreteTypeImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions); + } else { + return new BaseTypeWithRestrictionsImpl(cls.getPackage().getName(), cls.getSimpleName(), restrictions, + moduleContext); + } } /** @@ -224,7 +223,7 @@ public final class Types { * packageName and typeName */ public static WildcardType wildcardTypeFor(final String packageName, final String typeName, - final boolean isPkNameNormalized, final boolean isTypeNormalized, ModuleContext context) { + final boolean isPkNameNormalized, final boolean isTypeNormalized, final ModuleContext context) { return new WildcardTypeImpl(packageName, typeName, isPkNameNormalized, isTypeNormalized, context); } @@ -267,7 +266,7 @@ public final class Types { @Nullable public static String getOuterClassName(final Type valueType) { final String pkgName = valueType.getPackageName(); - final int index = CharMatcher.JAVA_UPPER_CASE.indexIn(pkgName); + final int index = CharMatcher.javaUpperCase().indexIn(pkgName); if (index >= 0) { // It is inner class. return Iterables.getFirst(DOT_SPLITTER.split(pkgName.substring(index)), null); @@ -278,7 +277,7 @@ public final class Types { @Nullable public static String getOuterClassPackageName(final Type valueType) { final String pkgName = valueType.getPackageName(); - final int index = CharMatcher.JAVA_UPPER_CASE.indexIn(pkgName); + final int index = CharMatcher.javaUpperCase().indexIn(pkgName); if (index >= 1) { return pkgName.substring(0, index - 1); } @@ -423,23 +422,49 @@ public final class Types { * if the type name has been normalized */ public WildcardTypeImpl(final String packageName, final String typeName, final boolean isPkNameNormalized, - final boolean isTypeNormalized, ModuleContext context) { + final boolean isTypeNormalized, final ModuleContext context) { super(packageName, typeName, isPkNameNormalized, isTypeNormalized, context); } } - public static DefaultRestrictions getDefaultRestrictions(final T min, final T max) { + public static > DefaultRestrictions getDefaultRestrictions(final T min, + final T max) { return new DefaultRestrictions<>(min, max); } - private static final class DefaultRestrictions implements Restrictions { - private final List rangeConstraints; + private static final class DefaultRestrictions> implements Restrictions { + private final RangeConstraint rangeConstraint; private DefaultRestrictions(final T min, final T max) { Preconditions.checkNotNull(min); Preconditions.checkNotNull(max); - this.rangeConstraints = Collections.singletonList(BaseConstraints.newRangeConstraint(min, max, Optional - .absent(), Optional.absent())); + this.rangeConstraint = new RangeConstraint() { + + @Override + public Optional getErrorAppTag() { + return Optional.empty(); + } + + @Override + public Optional getErrorMessage() { + return Optional.empty(); + } + + @Override + public Optional getDescription() { + return Optional.empty(); + } + + @Override + public Optional getReference() { + return Optional.empty(); + } + + @Override + public RangeSet getAllowedRanges() { + return ImmutableRangeSet.of(Range.closed(min, max)); + } + }; } @Override @@ -448,8 +473,8 @@ public final class Types { } @Override - public List getRangeConstraints() { - return this.rangeConstraints; + public Optional> getRangeConstraint() { + return Optional.ofNullable(rangeConstraint); } @Override @@ -458,8 +483,8 @@ public final class Types { } @Override - public List getLengthConstraints() { - return ImmutableList.of(); + public Optional getLengthConstraint() { + return Optional.empty(); } } } diff --git a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java index a8dcb1cdb9..f765e929d0 100644 --- a/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java +++ b/binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java @@ -45,12 +45,12 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil private String moduleName; private List schemaPath; - public EnumerationBuilderImpl(final String packageName, final String name, ModuleContext context) { + public EnumerationBuilderImpl(final String packageName, final String name, final ModuleContext context) { super(packageName, name, context); } public EnumerationBuilderImpl(final String packageName, final String name, final boolean isPkNameNormalized, - final boolean isTypeNormalized, ModuleContext context) { + final boolean isTypeNormalized, final ModuleContext context) { super(packageName, name, isPkNameNormalized, isTypeNormalized, context); } @@ -110,7 +110,8 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil final List enums = enumTypeDef.getValues(); if (enums != null) { enums.stream().filter(enumPair -> enumPair != null).forEach(enumPair -> this.addValue(enumPair.getName(), - enumPair.getValue(), enumPair.getDescription(), enumPair.getReference(), enumPair.getStatus())); + enumPair.getValue(), enumPair.getDescription().orElse(null), enumPair.getReference().orElse(null), + enumPair.getStatus())); } } @@ -151,14 +152,14 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil @Nullable @Override - public String getDescription() { - return this.description; + public Optional getDescription() { + return Optional.ofNullable(this.description); } @Nullable @Override - public String getReference() { - return this.reference; + public Optional getReference() { + return Optional.ofNullable(this.reference); } @Nonnull @@ -272,7 +273,7 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil builder.append(" ("); builder.append(valPair.getValue()); - if (i == (this.values.size() - 1)) { + if (i == this.values.size() - 1) { builder.append(" );"); } else { builder.append(" ),"); diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractBigRangeGenerator.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractBigRangeGenerator.java index b091037743..02aa25db47 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractBigRangeGenerator.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractBigRangeGenerator.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.javav2.java.api.generator.rangeGenerators; import com.google.common.collect.Range; -import java.util.Collection; +import java.util.Set; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; @@ -35,7 +35,9 @@ abstract class AbstractBigRangeGenerator> exten } @Override - protected final String generateRangeCheckerImplementation(final String checkerName, @Nonnull final Collection constraints) { + protected final String generateRangeCheckerImplementation(final String checkerName, + @Nonnull final RangeConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final String fieldName = checkerName.toUpperCase() + "_RANGES"; final StringBuilder sb = new StringBuilder(); @@ -49,9 +51,9 @@ abstract class AbstractBigRangeGenerator> exten .append(") java.lang.reflect.Array.newInstance(").append(RANGE).append(".class, ").append(constraints.size()).append(");\n"); int i = 0; - for (RangeConstraint r : constraints) { - final String min = format(getValue(r.getMin())); - final String max = format(getValue(r.getMax())); + for (Range r : constraints) { + final String min = format(getValue(r.lowerEndpoint())); + final String max = format(getValue(r.upperEndpoint())); sb.append(" a[").append(i++).append("] = ").append(RANGE).append(".closed(").append(min).append(", ").append(max).append(");\n"); } diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractPrimitiveRangeGenerator.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractPrimitiveRangeGenerator.java index 1f5448b0f9..2790640f15 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractPrimitiveRangeGenerator.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractPrimitiveRangeGenerator.java @@ -11,7 +11,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Range; import java.util.ArrayList; import java.util.Collection; -import java.util.List; +import java.util.Set; import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; import org.slf4j.Logger; @@ -47,14 +47,15 @@ abstract class AbstractPrimitiveRangeGenerator> return minValue.compareTo(minToEnforce) < 0; } - private Collection createExpressions(final Collection constraints) { + private Collection createExpressions(final RangeConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final Collection ret = new ArrayList<>(constraints.size()); - for (RangeConstraint r : constraints) { - final T min = getValue(r.getMin()); + for (Range r : constraints) { + final T min = getValue(r.lowerEndpoint()); final boolean needMin = needsMinimumEnforcement(min); - final T max = getValue(r.getMax()); + final T max = getValue(r.upperEndpoint()); final boolean needMax = needsMaximumEnforcement(max); if (!needMin && !needMax) { @@ -79,20 +80,15 @@ abstract class AbstractPrimitiveRangeGenerator> return ret; } - private String createRangeString(final Collection constraints) { - final List> ranges = new ArrayList<>(constraints.size()); - - for (RangeConstraint c : constraints) { - ranges.add(Range.closed(getValue(c.getMin()), getValue(c.getMax()))); - } - - return ranges.toString(); + private static String createRangeString(final RangeConstraint constraints) { + return constraints.getAllowedRanges().toString(); } @Override - protected final String generateRangeCheckerImplementation(final String checkerName, final Collection constraints) { + protected final String generateRangeCheckerImplementation(final String checkerName, + final RangeConstraint constraint) { final StringBuilder sb = new StringBuilder(); - final Collection expressions = createExpressions(constraints); + final Collection expressions = createExpressions(constraint); sb.append("private static void ").append(checkerName).append("(final ").append(primitiveName).append(" value) {\n"); @@ -104,7 +100,7 @@ abstract class AbstractPrimitiveRangeGenerator> } sb.append(" throw new IllegalArgumentException(String.format(\"Invalid range: %s, expected: ") - .append(createRangeString(constraints)).append(".\", value));\n"); + .append(createRangeString(constraint)).append(".\", value));\n"); } sb.append("}\n"); diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractRangeGenerator.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractRangeGenerator.java index bd6c812f4f..8eb814c12d 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractRangeGenerator.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/AbstractRangeGenerator.java @@ -10,7 +10,6 @@ package org.opendaylight.mdsal.binding.javav2.java.api.generator.rangeGenerators import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import java.util.Collection; import java.util.Map; import javax.annotation.Nonnull; import org.opendaylight.mdsal.binding.javav2.model.api.ConcreteType; @@ -106,22 +105,21 @@ public abstract class AbstractRangeGenerator> { /** * Generate the checker method source code. * @param checkerName Name of the checker method. - * @param constraints Restrictions which need to be applied. + * @param constraint Restrictions which need to be applied. * @return Method source code. */ - @Nonnull protected abstract String generateRangeCheckerImplementation(@Nonnull final String checkerName, @Nonnull final Collection constraints); + @Nonnull protected abstract String generateRangeCheckerImplementation(@Nonnull final String checkerName, + @Nonnull final RangeConstraint constraint); private static String rangeCheckerName(final String member) { return "check" + member + "Range"; } - public String generateRangeChecker(@Nonnull final String member, @Nonnull final Collection - constraints) { - Preconditions.checkArgument(!constraints.isEmpty(), "Restrictions may not be empty"); - return generateRangeCheckerImplementation(rangeCheckerName(member), constraints); + public String generateRangeChecker(@Nonnull final String member, @Nonnull final RangeConstraint constraint) { + return generateRangeCheckerImplementation(rangeCheckerName(member), constraint); } public String generateRangeCheckerCall(@Nonnull final String member, @Nonnull final String valueReference) { return rangeCheckerName(member) + '(' + valueReference + ");\n"; } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/LengthGenerator.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/LengthGenerator.java index 576c415915..926ca74d50 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/LengthGenerator.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/rangeGenerators/LengthGenerator.java @@ -8,10 +8,9 @@ package org.opendaylight.mdsal.binding.javav2.java.api.generator.rangeGenerators; import com.google.common.collect.Range; -import java.math.BigInteger; import java.util.ArrayList; import java.util.Collection; -import java.util.List; +import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.mdsal.binding.javav2.model.api.Type; @@ -26,19 +25,20 @@ public final class LengthGenerator { return "check" + member + "Length"; } - private static Collection createExpressions(final Collection constraints) { + private static Collection createExpressions(final LengthConstraint constraint) { + final Set> constraints = constraint.getAllowedRanges().asRanges(); final Collection ret = new ArrayList<>(constraints.size()); - for (LengthConstraint l : constraints) { + for (Range l : constraints) { final StringBuilder sb = new StringBuilder("length >"); // We have to deal with restrictions being out of integer's range - if (l.getMin().longValue() <= Integer.MAX_VALUE) { + if (l.lowerEndpoint() <= Integer.MAX_VALUE) { sb.append('='); } - sb.append(' ').append(l.getMin().intValue()); + sb.append(' ').append(l.lowerEndpoint()); - final int max = l.getMax().intValue(); + final int max = l.upperEndpoint(); if (max < Integer.MAX_VALUE) { sb.append(" && length <= ").append(max); } @@ -49,19 +49,13 @@ public final class LengthGenerator { return ret; } - private static String createLengthString(final Collection constraints) { - final List> ranges = new ArrayList<>(constraints.size()); - - for (LengthConstraint c : constraints) { - ranges.add(Range.closed(new BigInteger(c.getMin().toString()), new BigInteger(c.getMax().toString()))); - } - - return ranges.toString(); + private static String createLengthString(final LengthConstraint constraint) { + return new ArrayList<>(constraint.getAllowedRanges().asRanges()).toString(); } - private static String generateArrayLengthChecker(final String member, final Collection constraints) { + private static String generateArrayLengthChecker(final String member, final LengthConstraint constraint) { final StringBuilder sb = new StringBuilder(); - final Collection expressions = createExpressions(constraints); + final Collection expressions = createExpressions(constraint); sb.append("private static void ").append(lengthCheckerName(member)).append("(final byte[] value) {\n"); @@ -75,7 +69,7 @@ public final class LengthGenerator { } sb.append(" throw new IllegalArgumentException(String.format(\"Invalid length: %s, expected: ") - .append(createLengthString(constraints)).append(".\", java.util.Arrays.toString(value)));\n"); + .append(createLengthString(constraint)).append(".\", java.util.Arrays.toString(value)));\n"); } sb.append("}\n"); @@ -83,9 +77,9 @@ public final class LengthGenerator { return sb.toString(); } - private static String generateStringLengthChecker(final String member, final Collection constraints) { + private static String generateStringLengthChecker(final String member, final LengthConstraint constraint) { final StringBuilder sb = new StringBuilder(); - final Collection expressions = createExpressions(constraints); + final Collection expressions = createExpressions(constraint); sb.append("private static void ").append(lengthCheckerName(member)).append("(final String value) {\n"); @@ -99,7 +93,7 @@ public final class LengthGenerator { } sb.append(" throw new IllegalArgumentException(String.format(\"Invalid length: %s, expected: ") - .append(createLengthString(constraints)).append(".\", value));\n"); + .append(createLengthString(constraint)).append(".\", value));\n"); } sb.append("}\n"); @@ -107,12 +101,12 @@ public final class LengthGenerator { return sb.toString(); } - public static String generateLengthChecker(final String member, final Type type, final Collection - constraints) { + public static String generateLengthChecker(final String member, final Type type, + final LengthConstraint constraint) { if (TypeUtils.getBaseYangType(type).getName().contains("[")) { - return generateArrayLengthChecker(member, constraints); + return generateArrayLengthChecker(member, constraint); } else { - return generateStringLengthChecker(member, constraints); + return generateStringLengthChecker(member, constraint); } } diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java index cdf6f13108..3958b58973 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/BaseRenderer.java @@ -17,6 +17,7 @@ import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.javav2.generator.util.Types; import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil; @@ -29,6 +30,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.ParameterizedType; import org.opendaylight.mdsal.binding.javav2.model.api.Type; import org.opendaylight.mdsal.binding.javav2.model.api.WildcardType; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.common.Revision; public abstract class BaseRenderer { private static final String COMMA = ","; @@ -52,15 +54,15 @@ public abstract class BaseRenderer { return type; } - protected String getFromImportMap(@NonNull String typeName) { + protected String getFromImportMap(@NonNull final String typeName) { return importMap.get(typeName); } - protected void putToImportMap(@NonNull String typeName, String typePackageName) { + protected void putToImportMap(@NonNull final String typeName, final String typePackageName) { importMap.put(typeName, typePackageName); } - protected void putAllToImportMap(@NonNull Map imports) { + protected void putAllToImportMap(@NonNull final Map imports) { importMap.putAll(imports); } @@ -231,7 +233,7 @@ public abstract class BaseRenderer { return sb; } - protected GeneratedProperty findProperty(final GeneratedTransferObject gto, String name) { + protected GeneratedProperty findProperty(final GeneratedTransferObject gto, final String name) { for (GeneratedProperty prop : gto.getProperties()) { if (name.equals(prop.getName())) { return prop; @@ -250,23 +252,24 @@ public abstract class BaseRenderer { */ protected String emitConstant(final Constant constant) { final StringBuilder sb = new StringBuilder(); - final Object qname = constant.getValue(); + final Object value = constant.getValue(); sb.append("public static final ") .append(importedName(constant.getType())) .append(' ') .append(constant.getName()) .append(" = "); - if (qname instanceof QName) { - sb.append(QName.class.getName()) - .append(".create(\"") - .append(((QName) qname).getNamespace().toString()) - .append("\", \"") - .append(((QName) qname).getFormattedRevision()) - .append("\", \"") - .append(((QName) qname).getLocalName()) - .append("\").intern()"); + if (value instanceof QName) { + final QName qname = (QName) value; + sb.append(QName.class.getName()).append(".create(\"").append(qname.getNamespace()).append("\", "); + final Optional rev = qname.getRevision(); + if (rev.isPresent()) { + sb.append('"').append(rev.get()).append('"'); + } else { + sb.append("null"); + } + sb.append(", \"").append(qname.getLocalName()).append("\").intern()"); } else { - sb.append(qname); + sb.append(value); } sb.append(";\n"); return sb.toString(); @@ -288,7 +291,7 @@ public abstract class BaseRenderer { final Type t = pTypes[i]; String separator = COMMA; - if (i == (pTypes.length - 1)) { + if (i == pTypes.length - 1) { separator = ""; } diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java index 2202070676..578af596cd 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/ClassRenderer.java @@ -80,8 +80,7 @@ public class ClassRenderer extends BaseRenderer { Collections.sort(sorted, function); allProperties = ImmutableList.copyOf(sorted); - if (restrictions != null && (restrictions.getRangeConstraints() != null && !restrictions.getRangeConstraints() - .isEmpty())) { + if (restrictions != null && restrictions.getRangeConstraint().isPresent()) { rangeGenerator = AbstractRangeGenerator.forType(findProperty(genType, "value").getReturnType()); Preconditions.checkNotNull(rangeGenerator); } else { @@ -220,14 +219,14 @@ public class ClassRenderer extends BaseRenderer { final StringBuilder lengthRangeCheckerBuilder = new StringBuilder(); if (restrictions != null) { - if (restrictions.getLengthConstraints() != null && !restrictions.getLengthConstraints().isEmpty()) { + if (restrictions.getLengthConstraint().isPresent()) { lengthRangeCheckerBuilder.append(LengthGenerator.generateLengthChecker("_value", findProperty(genTO, - "value").getReturnType(), restrictions.getLengthConstraints())) + "value").getReturnType(), restrictions.getLengthConstraint().get())) .append("\n"); } - if (restrictions.getRangeConstraints() != null && !restrictions.getRangeConstraints().isEmpty()) { + if (restrictions.getRangeConstraint().isPresent()) { lengthRangeCheckerBuilder.append(rangeGenerator.generateRangeChecker("_value", restrictions - .getRangeConstraints())) + .getRangeConstraint().get())) .append("\n"); } } diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java index b70009c601..3c89af6f82 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/EnumRenderer.java @@ -39,7 +39,7 @@ public class EnumRenderer extends BaseRenderer { if (!enumeration.getValues().isEmpty()) { for (Enumeration.Pair pair : enumeration.getValues()) { final StringBuilder sb = new StringBuilder(); - sb.append(asJavadoc(encodeAngleBrackets(pair.getDescription()))); + sb.append(asJavadoc(encodeAngleBrackets(pair.getDescription().orElse(null)))); sb.append("\n"); sb.append(pair.getMappedName()); sb.append('('); diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/InterfaceRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/InterfaceRenderer.java index 52aa737521..63809dd7c9 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/InterfaceRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/InterfaceRenderer.java @@ -97,7 +97,7 @@ public class InterfaceRenderer extends BaseRenderer { generatedConstants, generatedInnerClasses).body(); } - private boolean isAccessor (final MethodSignature maybeGetter) { + private static boolean isAccessor(final MethodSignature maybeGetter) { return maybeGetter.getName().startsWith("is") || maybeGetter.getName().startsWith("get"); } diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java index ebb1e7f229..3e172fb134 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java +++ b/binding2/mdsal-binding2-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/renderers/YangModuleInfoTemplateRenderer.java @@ -34,6 +34,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.WildcardType; import org.opendaylight.mdsal.binding.javav2.spec.runtime.YangModelBindingProvider; import org.opendaylight.mdsal.binding.javav2.spec.runtime.YangModuleInfo; import org.opendaylight.yangtools.concepts.SemVer; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation; @@ -214,7 +215,7 @@ public class YangModuleInfoTemplateRenderer { } public static Module getSortedQName(final Set modules, final String name) { - final TreeMap sorted = new TreeMap<>(); + final TreeMap, Module> sorted = new TreeMap<>(Revision::compare); for (Module module : modules) { if (name.equals(module.getName())) { sorted.put(module.getRevision(), module); diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/builderTemplate.scala.txt b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/builderTemplate.scala.txt index f29a2b01d1..b1540681ed 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/builderTemplate.scala.txt +++ b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/builderTemplate.scala.txt @@ -256,27 +256,27 @@ public class @{genType.getName}Builder implements @{getSimpleNameForBuilder} <@{ @generateSetters() = { @for(field <- properties) { @if(!field.getReturnType.isInstanceOf[GeneratedType] && getRestrictions(field.getReturnType) != null) { - @if(getRestrictions(field.getReturnType).getRangeConstraints != null && !getRestrictions(field.getReturnType).getRangeConstraints.isEmpty) { + @if(getRestrictions(field.getReturnType).getRangeConstraint.isPresent) { @{AbstractRangeGenerator.forType(field.getReturnType).generateRangeChecker(toFirstUpper(field.getName), - getRestrictions(field.getReturnType).getRangeConstraints)} + getRestrictions(field.getReturnType).getRangeConstraint.get)} } - @if(getRestrictions(field.getReturnType).getLengthConstraints != null && !getRestrictions(field.getReturnType).getLengthConstraints.isEmpty) { + @if(getRestrictions(field.getReturnType).getLengthConstraint.isPresent) { @{LengthGenerator.generateLengthChecker(fieldName(field), field.getReturnType, - getRestrictions(field.getReturnType).getLengthConstraints)} + getRestrictions(field.getReturnType).getLengthConstraint.get)} } } public @{genType.getName}Builder set@{toFirstUpper(field.getName)}(final @{field.getReturnType.getFullyQualifiedName} value) { @if(!field.getReturnType.isInstanceOf[GeneratedType] && getRestrictions(field.getReturnType) != null) { if (value != null) { - @if(getRestrictions(field.getReturnType).getRangeConstraints != null && !getRestrictions(field.getReturnType).getRangeConstraints.isEmpty) { + @if(getRestrictions(field.getReturnType).getRangeConstraint.isPresent) { @if(field.getReturnType.isInstanceOf[ConcreteType]) { @{AbstractRangeGenerator.forType(field.getReturnType).generateRangeCheckerCall(toFirstUpper(field.getName), "value")} } else { @{AbstractRangeGenerator.forType(field.getReturnType).generateRangeCheckerCall(toFirstUpper(field.getName), "value.getValue()")} } } - @if(getRestrictions(field.getReturnType).getLengthConstraints != null && !getRestrictions(field.getReturnType).getLengthConstraints.isEmpty) { + @if(getRestrictions(field.getReturnType).getLengthConstraint.isPresent) { @if(field.getReturnType.isInstanceOf[ConcreteType]) { @{LengthGenerator.generateLengthCheckerCall(fieldName(field), "value")} } else { @@ -477,4 +477,4 @@ public class @{genType.getName}Builder implements @{getSimpleNameForBuilder} <@{ return true; } } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/classTemplateRestrictions.scala.txt b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/classTemplateRestrictions.scala.txt index 07e01edc26..0ce3e66535 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/classTemplateRestrictions.scala.txt +++ b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/classTemplateRestrictions.scala.txt @@ -14,14 +14,14 @@ @(currentType: Type, paramName: String, returnType: Type, rangeGenerator: AbstractRangeGenerator[_]) @if(getRestrictions(currentType) != null) { - @if(!getRestrictions(currentType).getLengthConstraints.isEmpty || !getRestrictions(currentType).getRangeConstraints.isEmpty) { + @if(getRestrictions(currentType).getLengthConstraint.isPresent || getRestrictions(currentType).getRangeConstraint.isPresent) { if (@{paramName} != null) { - @if(!getRestrictions(currentType).getLengthConstraints.isEmpty) { + @if(getRestrictions(currentType).getLengthConstraint.isPresent) { @{LengthGenerator.generateLengthCheckerCall(paramName, paramValue(returnType, paramName))} } - @if(!getRestrictions(currentType).getRangeConstraints.isEmpty) { + @if(getRestrictions(currentType).getRangeConstraint.isPresent) { @{rangeGenerator.generateRangeCheckerCall(paramName, paramValue(returnType, paramName))} } } } -} \ No newline at end of file +} diff --git a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt index e2a7fedaca..7b9232a636 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt +++ b/binding2/mdsal-binding2-java-api-generator/src/main/twirl/org/opendaylight/mdsal/binding/javav2/java/api/generator/yangModuleInfoTemplate.scala.txt @@ -28,7 +28,7 @@ public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yan private final @{importedNames.get("string")} name = "@{module.getName}"; private final @{importedNames.get("string")} namespace = "@{module.getNamespace.toString}"; private final @{importedNames.get("string")} semanticVersion = "@{module.getSemanticVersion}"; - private final @{importedNames.get("string")} revision = "@{module.getQNameModule.getFormattedRevision}"; + private final @{importedNames.get("string")} revision = @if(module.getRevision.isPresent) { "@{module.getRevision.get.toString}" } else { null }; private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(module, moduleFilePathResolver)}"; private final @{importedNames.get("set")} importedModules; @@ -49,7 +49,7 @@ public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yan private final @{importedNames.get("string")} name = "@{submodule.getName}"; private final @{importedNames.get("string")} semanticVersion = "@{submodule.getSemanticVersion}"; private final @{importedNames.get("string")} namespace = "@{submodule.getNamespace.toString}"; - private final @{importedNames.get("string")} revision = "@{submodule.getQNameModule.getFormattedRevision}"; + private final @{importedNames.get("string")} revision = @if(module.getRevision.isPresent) { "@{module.getRevision.get.toString}" } else { null }; private final @{importedNames.get("string")} resourcePath = "@{getSourcePath(submodule, moduleFilePathResolver)}"; private final @{importedNames.get("set")} importedModules; @@ -69,13 +69,8 @@ public final class @{MODULE_INFO_CLASS_NAME} implements @{importedNames.get("yan } @if(!module.getImports.isEmpty) { @for(moduleImport <- module.getImports) { - @if(moduleImport.getRevision == null) { - set.add(@{normalizeFullPackageName(getRootPackageName(getSortedQName(ctx.getModules, moduleImport - .getModuleName)))}.@{MODULE_INFO_CLASS_NAME}.getInstance()); - } else { - set.add(@{normalizeFullPackageName(getRootPackageName(ctx.findModuleByName(moduleImport - .getModuleName, moduleImport.getRevision)))}.@{MODULE_INFO_CLASS_NAME}.getInstance()); - } + set.add(@{normalizeFullPackageName(getRootPackageName(ctx.findModule(moduleImport + .getModuleName, moduleImport.getRevision).get))}.@{MODULE_INFO_CLASS_NAME}.getInstance()); } } @if(!module.getSubmodules.isEmpty) { diff --git a/binding2/mdsal-binding2-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/GeneratorJavaFileTest.java b/binding2/mdsal-binding2-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/GeneratorJavaFileTest.java index 57c7e8d958..34f82e2ed8 100644 --- a/binding2/mdsal-binding2-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/GeneratorJavaFileTest.java +++ b/binding2/mdsal-binding2-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/javav2/java/api/generator/GeneratorJavaFileTest.java @@ -27,7 +27,7 @@ public class GeneratorJavaFileTest { @Test public void generatedFilesTest() throws Exception { - final SchemaContext context = YangParserTestUtils.parseYangSources("/base/with_import/"); + final SchemaContext context = YangParserTestUtils.parseYangResourceDirectory("/base/with_import/"); final BindingGenerator bindingGenerator = new BindingGeneratorImpl(true); final List types = bindingGenerator.generateTypes(context, context.getModules()); final BuildContext buildContext = new DefaultBuildContext(); diff --git a/binding2/mdsal-binding2-maven-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/javav2/maven/api/gen/plugin/CodeGeneratorImpl.java b/binding2/mdsal-binding2-maven-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/javav2/maven/api/gen/plugin/CodeGeneratorImpl.java index 9b2a2caeb0..c81c5c74fe 100644 --- a/binding2/mdsal-binding2-maven-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/javav2/maven/api/gen/plugin/CodeGeneratorImpl.java +++ b/binding2/mdsal-binding2-maven-api-gen-plugin/src/main/java/org/opendaylight/mdsal/binding/javav2/maven/api/gen/plugin/CodeGeneratorImpl.java @@ -115,12 +115,6 @@ public final class CodeGeneratorImpl implements BasicCodeGenerator, BuildContext this.projectBaseDir = project.getBasedir(); } - @Override - public Collection generateSources(SchemaContext context, File outputBaseDir, Set currentModules) throws IOException { - return generateSources(context, outputBaseDir, currentModules, - m -> Optional.of("/" + m.getModuleSourcePath().replace(File.separator, "/"))); - } - private Collection generateModuleInfos(final File outputBaseDir, final Set yangModules, final SchemaContext context, final Function> moduleResourcePathResolver) { Builder result = ImmutableSet.builder(); diff --git a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContext.java b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContext.java index 3389b96f16..c4074dae2b 100644 --- a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContext.java +++ b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContext.java @@ -29,8 +29,8 @@ import java.util.Map.Entry; import java.util.Set; import javax.annotation.Nullable; import org.opendaylight.mdsal.binding.javav2.generator.api.ClassLoadingStrategy; -import org.opendaylight.mdsal.binding.javav2.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext; +import org.opendaylight.mdsal.binding.javav2.generator.impl.BindingGeneratorImpl; import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifier; import org.opendaylight.mdsal.binding.javav2.generator.util.JavaIdentifierNormalizer; import org.opendaylight.mdsal.binding.javav2.generator.util.ReferencedTypeImpl; @@ -45,9 +45,9 @@ import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; @@ -89,7 +89,7 @@ public class BindingRuntimeContext implements Immutable { private final ClassLoadingStrategy strategy; private final SchemaContext schemaContext; - private final Map augmentationToSchema = new HashMap<>(); + private final Map augmentationToSchema = new HashMap<>(); private final BiMap typeToDefiningSchema = HashBiMap.create(); private final Multimap choiceToCases = HashMultimap.create(); private final Map identities = new HashMap<>(); @@ -171,7 +171,7 @@ public class BindingRuntimeContext implements Immutable { * augmentations, which may be present in runtime for them, thus returned * schema is unsuitable for use for validation of data. *

    - * For retrieving {@link AugmentationSchema}, which will contains full model + * For retrieving {@link AugmentationSchemaNode}, which will contains full model * for child nodes, you should use method * {@link #getResolvedAugmentationSchema(DataNodeContainer, Class)} which * will return augmentation schema derived from supplied augmentation target @@ -184,7 +184,7 @@ public class BindingRuntimeContext implements Immutable { * @throws IllegalArgumentException * - if supplied class is not an augmentation */ - public @Nullable AugmentationSchema getAugmentationDefinition(final Class augClass) throws IllegalArgumentException { + public @Nullable AugmentationSchemaNode getAugmentationDefinition(final Class augClass) { Preconditions.checkArgument(Augmentation.class.isAssignableFrom(augClass), "Class %s does not represent augmentation", augClass); return this.augmentationToSchema.get(referencedType(augClass)); } @@ -210,18 +210,18 @@ public class BindingRuntimeContext implements Immutable { } /** - * Returns defining {@link AugmentationSchema} of target for supplied class. + * Returns defining {@link AugmentationSchemaNode} of target for supplied class. * * @param target * - {@link DataNodeContainer} * @param aug * - supplied class - * @return entry of {@link AugmentationSchema} according to its identifier + * @return entry of {@link AugmentationSchemaNode} according to its identifier * {@link AugmentationIdentifier} */ - public Entry getResolvedAugmentationSchema(final DataNodeContainer target, - final Class> aug) { - final AugmentationSchema origSchema = getAugmentationDefinition(aug); + public Entry getResolvedAugmentationSchema( + final DataNodeContainer target, final Class> aug) { + final AugmentationSchemaNode origSchema = getAugmentationDefinition(aug); Preconditions.checkArgument(origSchema != null, "Augmentation %s is not known in current schema context",aug); /* * FIXME: Validate augmentation schema lookup @@ -254,7 +254,7 @@ public class BindingRuntimeContext implements Immutable { } final AugmentationIdentifier identifier = new AugmentationIdentifier(childNames); - final AugmentationSchema proxy = new EffectiveAugmentationSchema(origSchema, realChilds); + final AugmentationSchemaNode proxy = new EffectiveAugmentationSchema(origSchema, realChilds); return new SimpleEntry<>(identifier, proxy); } @@ -270,9 +270,9 @@ public class BindingRuntimeContext implements Immutable { * @throws IllegalArgumentException * - if supplied class does not represent case */ - public Optional getCaseSchemaDefinition(final ChoiceSchemaNode schema, final Class childClass) throws IllegalArgumentException { + public Optional getCaseSchemaDefinition(final ChoiceSchemaNode schema, final Class childClass) throws IllegalArgumentException { final DataSchemaNode origSchema = getSchemaDefinition(childClass); - Preconditions.checkArgument(origSchema instanceof ChoiceCaseNode, "Supplied schema %s is not case.", origSchema); + Preconditions.checkArgument(origSchema instanceof CaseSchemaNode, "Supplied schema %s is not case.", origSchema); /* * FIXME: Make sure that if there are multiple augmentations of same @@ -281,8 +281,8 @@ public class BindingRuntimeContext implements Immutable { * unaware that he is using incorrect case which was generated for * choice inside grouping. */ - final Optional found = BindingSchemaContextUtils.findInstantiatedCase(schema, - (ChoiceCaseNode) origSchema); + final Optional found = BindingSchemaContextUtils.findInstantiatedCase(schema, + (CaseSchemaNode) origSchema); return found; } @@ -297,14 +297,14 @@ public class BindingRuntimeContext implements Immutable { } /** - * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition}) + * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchemaNode} or {@link TypeDefinition}) * from which supplied class was generated. Returned schema may be augmented with * additional information, which was not available at compile type * (e.g. third party augmentations). * * @param type Binding Class for which schema should be retrieved. * @return Instance of generated type (definition of Java API), along with - * {@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition} + * {@link DataSchemaNode}, {@link AugmentationSchemaNode} or {@link TypeDefinition} * which was used to generate supplied class. */ public Entry getTypeWithSchema(final Class type) { @@ -415,10 +415,9 @@ public class BindingRuntimeContext implements Immutable { public ImmutableMap getAvailableAugmentationTypes(final DataNodeContainer container) { final Map identifierToType = new HashMap<>(); if (container instanceof AugmentationTarget) { - final Set augments = ((AugmentationTarget) container).getAvailableAugmentations(); - for (final AugmentationSchema augment : augments) { + for (final AugmentationSchemaNode augment : ((AugmentationTarget) container).getAvailableAugmentations()) { // Augmentation must have child nodes if is to be used with Binding classes - AugmentationSchema augOrig = augment; + AugmentationSchemaNode augOrig = augment; while (augOrig.getOriginalDefinition().isPresent()) { augOrig = augOrig.getOriginalDefinition().get(); } @@ -435,7 +434,7 @@ public class BindingRuntimeContext implements Immutable { return ImmutableMap.copyOf(identifierToType); } - private static AugmentationIdentifier getAugmentationIdentifier(final AugmentationSchema augment) { + private static AugmentationIdentifier getAugmentationIdentifier(final AugmentationSchemaNode augment) { final Set childNames = new HashSet<>(); for (final DataSchemaNode child : augment.getChildNodes()) { childNames.add(child.getQName()); diff --git a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/ModuleInfoBackedContext.java b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/ModuleInfoBackedContext.java index ea7f83db9f..a321f9147d 100644 --- a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/ModuleInfoBackedContext.java +++ b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/ModuleInfoBackedContext.java @@ -26,6 +26,7 @@ import org.opendaylight.mdsal.binding.javav2.spec.runtime.YangModuleInfo; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.util.ClassLoaderUtils; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; @@ -111,7 +112,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy * @return optional of schema context */ public Optional tryToCreateSchemaContext() { - return ctxResolver.getSchemaContext(); + return Optional.fromJavaUtil(ctxResolver.getSchemaContext()); } private boolean resolveModuleInfo(final Class cls) { @@ -161,7 +162,7 @@ public class ModuleInfoBackedContext extends GeneratedClassLoadingStrategy } private static SourceIdentifier sourceIdentifierFrom(final YangModuleInfo moduleInfo) { - return RevisionSourceIdentifier.create(moduleInfo.getName(), Optional.of(moduleInfo.getRevision())); + return RevisionSourceIdentifier.create(moduleInfo.getName(), Revision.ofNullable(moduleInfo.getRevision())); } /** diff --git a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtils.java b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtils.java index bbe9d4f8f0..d8362422da 100644 --- a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtils.java +++ b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtils.java @@ -24,7 +24,8 @@ import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentation; import org.opendaylight.mdsal.binding.javav2.spec.structural.TreeChildNode; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.common.Revision; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -112,7 +113,7 @@ public final class BindingSchemaContextUtils { for (final DataSchemaNode child : ctx.getChildNodes()) { if (child instanceof ChoiceSchemaNode) { - final DataNodeContainer potential = findInCases(((ChoiceSchemaNode) child), targetQName); + final DataNodeContainer potential = findInCases((ChoiceSchemaNode) child, targetQName); if (potential != null) { return Optional.of(potential); } @@ -129,7 +130,7 @@ public final class BindingSchemaContextUtils { } private static DataNodeContainer findInCases(final ChoiceSchemaNode choiceNode, final QName targetQName) { - for (final ChoiceCaseNode caze : choiceNode.getCases()) { + for (final CaseSchemaNode caze : choiceNode.getCases().values()) { final Optional potential = findDataNodeContainer(caze, targetQName); if (potential.isPresent()) { return potential.get(); @@ -160,7 +161,7 @@ public final class BindingSchemaContextUtils { final YangModuleInfo moduleInfo, final Class targetType) { for (final OperationDefinition operation : operations) { final String operationNamespace = operation.getQName().getNamespace().toString(); - final String operationRevision = operation.getQName().getFormattedRevision(); + final String operationRevision = operation.getQName().getRevision().map(Revision::toString).orElse(null); if (moduleInfo.getNamespace().equals(operationNamespace) && moduleInfo.getRevision().equals(operationRevision)) { final Optional potential = findInputOutput(operation, targetType.getSimpleName()); @@ -229,9 +230,10 @@ public final class BindingSchemaContextUtils { * - choice case * @return choice case node if exists, absent() otherwise */ - public static Optional findInstantiatedCase(final ChoiceSchemaNode instantiatedChoice, final ChoiceCaseNode originalDefinition) { - ChoiceCaseNode potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName()); - if(originalDefinition.equals(potential)) { + public static Optional findInstantiatedCase(final ChoiceSchemaNode instantiatedChoice, final CaseSchemaNode originalDefinition) { + final QName qname = originalDefinition.getQName(); + final CaseSchemaNode potential = instantiatedChoice.getCaseNodeByName(qname); + if (originalDefinition.equals(potential)) { return Optional.of(potential); } if (potential != null) { @@ -247,11 +249,11 @@ public final class BindingSchemaContextUtils { // different, but local names are still same. // // Still we need to check equality of definition, because local name is not - // sufficient to uniquelly determine equality of cases - // - potential = instantiatedChoice.getCaseNodeByName(originalDefinition.getQName().getLocalName()); - if(potential != null && (originalDefinition.equals(SchemaNodeUtils.getRootOriginalIfPossible(potential)))) { - return Optional.of(potential); + // sufficient to uniquely determine equality of cases + for (CaseSchemaNode found : instantiatedChoice.findCaseNodes(qname.getLocalName())) { + if (originalDefinition.equals(SchemaNodeUtils.getRootOriginalIfPossible(found))) { + return Optional.of(found); + } } return Optional.absent(); } diff --git a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflections.java b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflections.java index c19e62d82a..2cff93c4e9 100644 --- a/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflections.java +++ b/binding2/mdsal-binding2-runtime/src/main/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflections.java @@ -9,6 +9,7 @@ package org.opendaylight.mdsal.binding.javav2.runtime.reflection; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; + import com.google.common.annotations.Beta; import com.google.common.base.Optional; import com.google.common.cache.CacheBuilder; @@ -46,6 +47,7 @@ import org.opendaylight.mdsal.binding.javav2.spec.structural.TreeChildNode; import org.opendaylight.yangtools.util.ClassLoaderUtils; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; +import org.opendaylight.yangtools.yang.common.Revision; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -265,7 +267,7 @@ public final class BindingReflections { * @return {@link QNameModule} from module info */ public static final QNameModule getQNameModule(final YangModuleInfo modInfo) { - return QNameModule.create(URI.create(modInfo.getNamespace()), QName.parseRevision(modInfo.getRevision())); + return QNameModule.create(URI.create(modInfo.getNamespace()), Revision.ofNullable(modInfo.getRevision())); } /** diff --git a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContextTest.java b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContextTest.java index 5df2959ebb..65478e1085 100644 --- a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContextTest.java +++ b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/BindingRuntimeContextTest.java @@ -10,15 +10,11 @@ package org.opendaylight.mdsal.binding.javav2.runtime.context; import static org.junit.Assert.assertNotNull; -import java.io.File; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; import org.junit.Before; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.generator.impl.GeneratedClassLoadingStrategy; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BindingRuntimeContextTest { @@ -28,9 +24,8 @@ public class BindingRuntimeContextTest { private DataNodeContainer myCont; @Before - public void setup() throws URISyntaxException, FileNotFoundException, ReactorException { - schemaContext = YangParserTestUtils.parseYangSources( - new File(getClass().getResource("/yang/test-runtime.yang").toURI())); + public void setup() { + schemaContext = YangParserTestUtils.parseYangResource("/yang/test-runtime.yang"); myCont = (DataNodeContainer) schemaContext.getChildNodes().iterator().next(); brc = BindingRuntimeContext.create(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), schemaContext); } diff --git a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtilsTest.java b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtilsTest.java index d87b5685a0..a2940d9595 100644 --- a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtilsTest.java +++ b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/context/util/BindingSchemaContextUtilsTest.java @@ -10,9 +10,6 @@ package org.opendaylight.mdsal.binding.javav2.runtime.context.util; import static org.junit.Assert.assertNotNull; -import java.io.File; -import java.io.FileNotFoundException; -import java.net.URISyntaxException; import org.junit.Before; import org.junit.Test; import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier; @@ -21,7 +18,6 @@ import org.opendaylight.mdsal.gen.javav2.org.test.runtime.rev170710.data.my_cont import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class BindingSchemaContextUtilsTest { @@ -35,9 +31,8 @@ public class BindingSchemaContextUtilsTest { @Before - public void setup() throws URISyntaxException, FileNotFoundException, ReactorException { - schemaContext = YangParserTestUtils.parseYangSources( - new File(getClass().getResource("/yang/test-runtime.yang").toURI())); + public void setup() { + schemaContext = YangParserTestUtils.parseYangResource("/yang/test-runtime.yang"); myCont = (DataNodeContainer) schemaContext.getChildNodes().iterator().next(); myChoice = (ChoiceSchemaNode) myCont.getChildNodes().iterator().next(); } @@ -46,6 +41,7 @@ public class BindingSchemaContextUtilsTest { public void utilTest() { assertNotNull(BindingSchemaContextUtils.findDataNodeContainer(schemaContext, MY_CONT_NODE_PATH)); assertNotNull(BindingSchemaContextUtils.findInstantiatedChoice(myCont, MyChoice.class)); - assertNotNull(BindingSchemaContextUtils.findInstantiatedCase(myChoice, myChoice.getCaseNodeByName("one"))); + assertNotNull(BindingSchemaContextUtils.findInstantiatedCase(myChoice, myChoice.findCaseNodes("one") + .iterator().next())); } } diff --git a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflectionsTest.java b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflectionsTest.java index ba76dd0941..0fb573c3b3 100644 --- a/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflectionsTest.java +++ b/binding2/mdsal-binding2-runtime/src/test/java/org/opendaylight/mdsal/binding/javav2/runtime/reflection/BindingReflectionsTest.java @@ -54,7 +54,7 @@ public class BindingReflectionsTest { assertFalse(BindingReflections .resolveOperationOutputClass(TestImplementation.class.getDeclaredMethod("rpcMethodTest2")).isPresent()); - assertTrue(BindingReflections.getQName(TestImplementation.class).toString().equals("test")); + assertTrue(BindingReflections.getQName(TestImplementation.class).toString().equals("()test")); assertNotNull(BindingReflections.getQNameModule(TestImplementation.class)); } @@ -75,7 +75,7 @@ public class BindingReflectionsTest { private static final class TestImplementation extends BaseIdentity implements Augmentation, Rpc { - public static final QName QNAME = QName.create("test"); + public static final QName QNAME = QName.create("", "test"); Future> rpcMethodTest() { return null; diff --git a/binding2/mdsal-binding2-util/src/main/java/org/opendaylight/mdsal/binding/javav2/util/BindingMapping.java b/binding2/mdsal-binding2-util/src/main/java/org/opendaylight/mdsal/binding/javav2/util/BindingMapping.java index ef0067fc79..a42b001efa 100644 --- a/binding2/mdsal-binding2-util/src/main/java/org/opendaylight/mdsal/binding/javav2/util/BindingMapping.java +++ b/binding2/mdsal-binding2-util/src/main/java/org/opendaylight/mdsal/binding/javav2/util/BindingMapping.java @@ -9,12 +9,14 @@ package org.opendaylight.mdsal.binding.javav2.util; import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableSet; -import java.text.SimpleDateFormat; +import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; /** @@ -50,19 +52,6 @@ public final class BindingMapping { public static final String RPC_INPUT_SUFFIX = "Input"; public static final String RPC_OUTPUT_SUFFIX = "Output"; - private static final ThreadLocal PACKAGE_DATE_FORMAT = new ThreadLocal() { - - @Override - protected SimpleDateFormat initialValue() { - return new SimpleDateFormat("yyMMdd"); - } - - @Override - public void set(final SimpleDateFormat value) { - throw new UnsupportedOperationException(); - } - }; - private BindingMapping() { throw new UnsupportedOperationException("Utility class"); } @@ -115,8 +104,18 @@ public final class BindingMapping { // packageNameBuilder.append(PACKAGE_DATE_FORMAT.get().format(module.getRevision())); // } - packageNameBuilder.append("rev"); - packageNameBuilder.append(PACKAGE_DATE_FORMAT.get().format(module.getRevision())); + final Optional optRev = module.getRevision(); + if (optRev.isPresent()) { + // Revision is in format 2017-10-26, we want the output to be 171026, which is a matter of picking the + // right characters. + final String rev = optRev.get().toString(); + checkArgument(rev.length() == 10, "Unsupported revision %s", rev); + packageNameBuilder.append("rev"); + packageNameBuilder.append(rev.substring(2, 4)).append(rev.substring(5, 7)).append(rev.substring(8)); + } else { + // No-revision packages are special + packageNameBuilder.append("norev"); + } return packageNameBuilder.toString(); } diff --git a/dom/mdsal-dom-api/src/test/java/org/opendaylight/controller/md/sal/dom/api/AbstractDOMDataTreeServiceTestSuite.java b/dom/mdsal-dom-api/src/test/java/org/opendaylight/controller/md/sal/dom/api/AbstractDOMDataTreeServiceTestSuite.java index 8d4d359dd2..33c9efbec5 100644 --- a/dom/mdsal-dom-api/src/test/java/org/opendaylight/controller/md/sal/dom/api/AbstractDOMDataTreeServiceTestSuite.java +++ b/dom/mdsal-dom-api/src/test/java/org/opendaylight/controller/md/sal/dom/api/AbstractDOMDataTreeServiceTestSuite.java @@ -34,7 +34,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo */ public abstract class AbstractDOMDataTreeServiceTestSuite { protected static final QNameModule TEST_MODULE = - QNameModule.create(URI.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"), null); + QNameModule.create(URI.create("urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store")); protected static final YangInstanceIdentifier UNORDERED_CONTAINER_IID = YangInstanceIdentifier.create( new NodeIdentifier(QName.create(TEST_MODULE, "lists")), diff --git a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifierTest.java b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifierTest.java index 70e3dc2107..2e3696e367 100644 --- a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifierTest.java +++ b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMDataTreeIdentifierTest.java @@ -26,7 +26,7 @@ public class DOMDataTreeIdentifierTest { private static final String COMPARE_FIRST_LISTS = "A-test-lists"; private static final String COMPARE_SECOND_LISTS = "B-test-lists"; private static final QNameModule TEST_MODULE = QNameModule.create(URI.create( - "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"), null); + "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store")); private static final YangInstanceIdentifier REF_YII_IID = YangInstanceIdentifier.create( new YangInstanceIdentifier.NodeIdentifier(QName.create(TEST_MODULE, REF_LISTS))); private static final YangInstanceIdentifier TEST_YII_IID = YangInstanceIdentifier.create( diff --git a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMExceptionsTest.java b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMExceptionsTest.java index f220e583c2..bef2b83473 100644 --- a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMExceptionsTest.java +++ b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMExceptionsTest.java @@ -22,7 +22,7 @@ public class DOMExceptionsTest { private static final String TEST_MESSAGE = "TestMessage"; private static final String TEST_LISTS = "test-lists"; private static final QNameModule TEST_MODULE = QNameModule.create(URI.create( - "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"), null); + "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store")); private static final YangInstanceIdentifier TEST_YI_ID = YangInstanceIdentifier.create( new YangInstanceIdentifier.NodeIdentifier(QName.create(TEST_MODULE, TEST_LISTS))); private static final DOMDataTreeIdentifier TEST_TREE = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, diff --git a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMRpcIdentifierTest.java b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMRpcIdentifierTest.java index e486388236..a1c8142cb2 100644 --- a/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMRpcIdentifierTest.java +++ b/dom/mdsal-dom-api/src/test/java/org/opendaylight/mdsal/dom/api/DOMRpcIdentifierTest.java @@ -23,7 +23,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class DOMRpcIdentifierTest { private static final String LOCAL_IDENT = "local"; private static final QNameModule TEST_MODULE = QNameModule.create(URI.create( - "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store"), null); + "urn:opendaylight:params:xml:ns:yang:controller:md:sal:test:store")); private static final DOMRpcIdentifier GLOBAL = DOMRpcIdentifier.create(SchemaPath.SAME, null); private static final DOMRpcIdentifier LOCAL = DOMRpcIdentifier.create(SchemaPath.ROOT,YangInstanceIdentifier.create( new NodeIdentifier(QName.create(TEST_MODULE, LOCAL_IDENT)))); diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRoutingTable.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRoutingTable.java index 4a9fe4cf43..04ea6b4b15 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRoutingTable.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRoutingTable.java @@ -145,7 +145,7 @@ final class DOMRpcRoutingTable { private static RpcDefinition findRpcDefinition(final SchemaContext context, final SchemaPath schemaPath) { if (context != null) { final QName qname = schemaPath.getPathFromRoot().iterator().next(); - final Module module = context.findModuleByNamespaceAndRevision(qname.getNamespace(), qname.getRevision()); + final Module module = context.findModule(qname.getModule()).orElse(null); if (module != null && module.getRpcs() != null) { for (RpcDefinition rpc : module.getRpcs()) { if (qname.equals(rpc.getQName())) { diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/RoutedDOMRpcRoutingTableEntry.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/RoutedDOMRpcRoutingTableEntry.java index 7801f826e5..2fc06a0f54 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/RoutedDOMRpcRoutingTableEntry.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/RoutedDOMRpcRoutingTableEntry.java @@ -7,12 +7,12 @@ */ package org.opendaylight.mdsal.dom.broker; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import java.util.List; import java.util.Map; +import java.util.Optional; import org.opendaylight.mdsal.dom.api.DOMRpcException; import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; import org.opendaylight.mdsal.dom.api.DOMRpcImplementation; diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProvider.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProvider.java index 3ea9b69cf5..ac1471d436 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProvider.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProvider.java @@ -8,15 +8,15 @@ package org.opendaylight.mdsal.dom.broker.schema; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.ListenableFuture; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.api.DOMSchemaServiceExtension; @@ -49,7 +49,7 @@ public class ScanningSchemaServiceProvider final Optional schema = contextResolver.getSchemaContext(); if (schema.isPresent()) { if (LOG.isDebugEnabled()) { - LOG.debug("Got new SchemaContext: # of modules {}", schema.get().getAllModuleIdentifiers().size()); + LOG.debug("Got new SchemaContext: # of modules {}", schema.get().getModules().size()); } notifyListeners(schema.get()); } @@ -112,7 +112,7 @@ public class ScanningSchemaServiceProvider @Override public SchemaContext getGlobalContext() { - return contextResolver.getSchemaContext().orNull(); + return contextResolver.getSchemaContext().orElse(null); } @Override @@ -133,8 +133,7 @@ public class ScanningSchemaServiceProvider } @Override - public CheckedFuture - getSource(final SourceIdentifier sourceIdentifier) { + public ListenableFuture getSource(final SourceIdentifier sourceIdentifier) { return contextResolver.getSource(sourceIdentifier); } diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java index 4cd75d5f24..a40a2cab27 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java @@ -58,7 +58,7 @@ public class DOMBrokerTest { private CommitExecutorService commitExecutor; @Before - public void setupStore() throws Exception { + public void setupStore() { final InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", MoreExecutors.newDirectExecutorService()); final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", @@ -75,7 +75,7 @@ public class DOMBrokerTest { .build(); commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor()); - futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB"); + futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB", DOMBrokerTest.class); executor = new DeadlockDetectingListeningExecutorService(commitExecutor, TransactionCommitDeadlockException.DEADLOCK_EXCEPTION_SUPPLIER, futureExecutor); domBroker = new SerializedDOMDataBroker(stores, executor); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeListenerTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeListenerTest.java index 51c40728d4..64519a509a 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeListenerTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeListenerTest.java @@ -91,7 +91,7 @@ public class DOMDataTreeListenerTest { LogicalDatastoreType.CONFIGURATION, TestModel.OUTER_LIST_PATH); @Before - public void setupStore() throws Exception { + public void setupStore() { final InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", MoreExecutors.newDirectExecutorService()); final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", @@ -108,7 +108,8 @@ public class DOMDataTreeListenerTest { .build(); commitExecutor = new CommitExecutorService(Executors.newSingleThreadExecutor()); - futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB"); + futureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool(1, 5, "FCB", + DOMDataTreeListenerTest.class); executor = new DeadlockDetectingListeningExecutorService(commitExecutor, TransactionCommitDeadlockException.DEADLOCK_EXCEPTION_SUPPLIER, futureExecutor); domBroker = new SerializedDOMDataBroker(stores, executor); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouterTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouterTest.java index 440260d812..24b2353e00 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouterTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouterTest.java @@ -24,7 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; public class DOMRpcRouterTest extends TestUtils { @Test - public void registerRpcImplementation() throws Exception { + public void registerRpcImplementation() { try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) { DOMRpcRoutingTable routingTable = rpcRouter.routingTable(); assertFalse(routingTable.getRpcs().containsKey(SchemaPath.ROOT)); @@ -42,14 +42,14 @@ public class DOMRpcRouterTest extends TestUtils { } @Test - public void invokeRpc() throws Exception { + public void invokeRpc() { try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) { assertNotNull(rpcRouter.invokeRpc(SchemaPath.create(false, TestModel.TEST_QNAME), null)); } } @Test - public void registerRpcListener() throws Exception { + public void registerRpcListener() { try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) { final DOMRpcAvailabilityListener listener = mock(DOMRpcAvailabilityListener.class); @@ -65,7 +65,7 @@ public class DOMRpcRouterTest extends TestUtils { } @Test - public void onGlobalContextUpdated() throws Exception { + public void onGlobalContextUpdated() { try (DOMRpcRouter rpcRouter = new DOMRpcRouter()) { final DOMRpcRoutingTable routingTableOriginal = rpcRouter.routingTable(); @@ -78,7 +78,7 @@ public class DOMRpcRouterTest extends TestUtils { } @Test(expected = RejectedExecutionException.class) - public void close() throws Exception { + public void close() { final DOMRpcRouter rpcRouter = new DOMRpcRouter(); rpcRouter.close(); rpcRouter.registerRpcImplementation(getTestRpcImplementation(), DOMRpcIdentifier.create(SchemaPath.ROOT, null)); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMTransactionChainTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMTransactionChainTest.java index f957bab004..73c7dcc503 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMTransactionChainTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMTransactionChainTest.java @@ -41,7 +41,7 @@ public class DOMTransactionChainTest { private AbstractDOMDataBroker domBroker; @Before - public void setupStore() throws Exception { + public void setupStore() { final InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", MoreExecutors.newDirectExecutorService()); final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeProducerMultiShardTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeProducerMultiShardTest.java index 4da15e53fb..9a4a012740 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeProducerMultiShardTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeProducerMultiShardTest.java @@ -55,23 +55,10 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class ShardedDOMDataTreeProducerMultiShardTest { - private static final Logger LOG = LoggerFactory.getLogger(ShardedDOMDataTreeProducerMultiShardTest.class); - - private static SchemaContext schemaContext = null; - - static { - try { - schemaContext = TestModel.createTestContext(); - } catch (final ReactorException e) { - LOG.error("Unable to create schema context for TestModel", e); - } - } + private static final SchemaContext SCHEMA_CONTEXT = TestModel.createTestContext(); private static final DOMDataTreeIdentifier ROOT_ID = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.EMPTY); @@ -107,7 +94,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest { MockitoAnnotations.initMocks(this); rootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - rootShard.onGlobalContextUpdated(schemaContext); + rootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final ShardedDOMDataTree dataTree = new ShardedDOMDataTree(); final DOMDataTreeProducer shardRegProducer = dataTree.createProducer(Collections.singletonList(ROOT_ID)); @@ -228,7 +215,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest { doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap()); final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(schemaContext); + innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); innerShardReg = dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, shardRegProducer); @@ -335,7 +322,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest { final ContainerNode lowerShardContainer = ImmutableContainerNodeBuilder.create() .withNodeIdentifier(new NodeIdentifier(TestModel.ANOTHER_SHARD_CONTAINER)) .withChild(ImmutableLeafNodeBuilder.create().withNodeIdentifier( - new NodeIdentifier(TestModel.ANOTHER_SHARD_VALUE)).build()) + new NodeIdentifier(TestModel.ANOTHER_SHARD_VALUE)).withValue("").build()) .build(); cursor.write(TestModel.ANOTHER_SHARD_PATH.getLastPathArgument(), lowerShardContainer); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java index 3a3a2e8a1b..d6b4b8c3b4 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTreeTest.java @@ -58,23 +58,10 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableLeafNodeBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableMapNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class ShardedDOMDataTreeTest { - private static final Logger LOG = LoggerFactory.getLogger(ShardedDOMDataTreeProducerMultiShardTest.class); - - private static SchemaContext schemaContext = null; - - static { - try { - schemaContext = TestModel.createTestContext(); - } catch (final ReactorException e) { - LOG.error("Unable to create schema context for TestModel", e); - } - } + private static final SchemaContext SCHEMA_CONTEXT = TestModel.createTestContext(); private static final DOMDataTreeIdentifier ROOT_ID = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY); @@ -108,7 +95,7 @@ public class ShardedDOMDataTreeTest { MockitoAnnotations.initMocks(this); rootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - rootShard.onGlobalContextUpdated(schemaContext); + rootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final ShardedDOMDataTree dataTree = new ShardedDOMDataTree(); final DOMDataTreeProducer shardRegProducer = dataTree.createProducer(Collections.singletonList(ROOT_ID)); @@ -129,7 +116,7 @@ public class ShardedDOMDataTreeTest { rootShardReg.close(); final InMemoryDOMDataTreeShard newRootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - newRootShard.onGlobalContextUpdated(schemaContext); + newRootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer = dataTreeService.createProducer(Collections.singletonList(ROOT_ID)); final ListenerRegistration newRootShardReg = @@ -137,7 +124,7 @@ public class ShardedDOMDataTreeTest { shardRegProducer.close(); final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(schemaContext); + innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer2 = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); ListenerRegistration innerShardReg = @@ -220,7 +207,7 @@ public class ShardedDOMDataTreeTest { doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap()); InMemoryDOMDataTreeShard testShard = InMemoryDOMDataTreeShard.create(TEST_ID, executor, 1); - testShard.onGlobalContextUpdated(schemaContext); + testShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer regProducer = dataTreeService.createProducer(Collections.singleton(TEST_ID)); dataTreeService.registerDataTreeShard(TEST_ID, testShard, regProducer); @@ -267,7 +254,7 @@ public class ShardedDOMDataTreeTest { final DOMDataTreeProducer shardProducer = dataTreeService.createProducer( Collections.singletonList(outerListPath)); final InMemoryDOMDataTreeShard outerListShard = InMemoryDOMDataTreeShard.create(outerListPath, executor, 1000); - outerListShard.onGlobalContextUpdated(schemaContext); + outerListShard.onGlobalContextUpdated(SCHEMA_CONTEXT); final ListenerRegistration oid1ShardRegistration = dataTreeService.registerDataTreeShard(outerListPath, outerListShard, shardProducer); @@ -412,7 +399,7 @@ public class ShardedDOMDataTreeTest { public void testLargerSubshardSpace() throws Exception { final InMemoryDOMDataTreeShard outerListShard = InMemoryDOMDataTreeShard.create(OUTER_LIST_ID, executor, 1, 1); - outerListShard.onGlobalContextUpdated(schemaContext); + outerListShard.onGlobalContextUpdated(SCHEMA_CONTEXT); try (DOMDataTreeProducer producer = dataTreeService.createProducer(Collections.singletonList(OUTER_LIST_ID))) { diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataWriteTransactionTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataWriteTransactionTest.java index 1f80b1ff18..5defa45ee6 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataWriteTransactionTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataWriteTransactionTest.java @@ -67,7 +67,7 @@ public class ShardedDOMDataWriteTransactionTest { Collections.singletonList(ROOT_ID)); shardedDOMDataTree.registerDataTreeShard(ROOT_ID, rootShard, shardRegProducer); shardRegProducer.close(); - final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("test")); + final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("", "test")); final DOMDataTreeProducer producer = shardedDOMDataTree.createProducer(Collections.singletonList(ROOT_ID)); final DOMDataTreeCursorAwareTransaction transaction = producer.createTransaction(false); diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProviderTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProviderTest.java index c56318c960..657e833ff1 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProviderTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProviderTest.java @@ -13,7 +13,6 @@ import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import com.google.common.util.concurrent.CheckedFuture; import java.net.URL; import java.util.ArrayList; import java.util.Collection; @@ -24,10 +23,10 @@ import org.junit.Test; import org.mockito.internal.util.io.IOUtil; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; +import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier; -import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; @@ -67,7 +66,7 @@ public class ScanningSchemaServiceProviderTest { assertFalse(schemaService.hasListeners()); final SchemaContextHolder actualSchemaCtx = new SchemaContextHolder(); - final SchemaContextListener listener = prepareSchemaCtxListener(actualSchemaCtx); + final SchemaContextListener listener = actualSchemaCtx::setSchemaContext; final ListenerRegistration registerSchemaContextListener = schemaService.registerSchemaContextListener(listener); assertEquals(registerSchemaContextListener.getInstance(), listener); @@ -82,7 +81,7 @@ public class ScanningSchemaServiceProviderTest { final SchemaContextHolder actualSchemaCtx = new SchemaContextHolder(); - final SchemaContextListener schemaCtxListener = prepareSchemaCtxListener(actualSchemaCtx); + final SchemaContextListener schemaCtxListener = actualSchemaCtx::setSchemaContext; final ListenerRegistration registerSchemaContextListener = schemaService.registerSchemaContextListener(schemaCtxListener); assertEquals(registerSchemaContextListener.getInstance(), schemaCtxListener); @@ -128,9 +127,7 @@ public class ScanningSchemaServiceProviderTest { assertTrue(baseSchemaContext.getModules().size() == 1); final SchemaContextHolder actualSchemaCtx = new SchemaContextHolder(); - final SchemaContextListener schemaCtxListener = prepareSchemaCtxListener(actualSchemaCtx); - - schemaService.registerSchemaContextListener(schemaCtxListener); + schemaService.registerSchemaContextListener(actualSchemaCtx::setSchemaContext); assertEquals(baseSchemaContext, actualSchemaCtx.getSchemaContext()); @@ -147,13 +144,11 @@ public class ScanningSchemaServiceProviderTest { assertEquals(nextSchemaContext, actualSchemaCtx.getSchemaContext()); } - @SuppressWarnings("deprecation") @Test public void getSourceTest() throws Exception { - final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("odl-datastore-test", "2014-03-13"); - final CheckedFuture source = - schemaService.getSource(sourceIdentifier); - final YangTextSchemaSource yangTextSchemaSource = source.checkedGet(); + final SourceIdentifier sourceIdentifier = RevisionSourceIdentifier.create("odl-datastore-test", + Revision.of("2014-03-13")); + final YangTextSchemaSource yangTextSchemaSource = schemaService.getSource(sourceIdentifier).get(); final Collection lines = IOUtil.readLines(yangTextSchemaSource.openStream()); assertEquals("module odl-datastore-test {", lines.iterator().next()); } @@ -173,16 +168,6 @@ public class ScanningSchemaServiceProviderTest { assertTrue(!registerAvailableYangs.isEmpty()); } - private SchemaContextListener prepareSchemaCtxListener(final SchemaContextHolder actualSchemaCtx) { - return new SchemaContextListener() { - - @Override - public void onGlobalContextUpdated(final SchemaContext context) { - actualSchemaCtx.setSchemaContext(context); - } - }; - } - private class SchemaContextHolder { private SchemaContext schemaCtx; diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/util/TestModel.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/util/TestModel.java index 11f27b1d09..799a3e841b 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/util/TestModel.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/util/TestModel.java @@ -7,12 +7,9 @@ */ package org.opendaylight.mdsal.dom.broker.util; -import java.io.InputStream; -import java.util.Collections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public final class TestModel { @@ -47,17 +44,12 @@ public final class TestModel { YangInstanceIdentifier.builder(INNER_CONTAINER_PATH).node(ANOTHER_SHARD_CONTAINER).build(); public static final YangInstanceIdentifier NEW_SHARD_LIST_PATH = YangInstanceIdentifier.builder(ANOTHER_SHARD_PATH).node(NEW_SHARD_LIST).build(); - private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang"; private TestModel() { throw new UnsupportedOperationException(); } - public static SchemaContext createTestContext() throws ReactorException { - return YangParserTestUtils.parseYangStreams(Collections.singletonList(getInputStream())); - } - - private static InputStream getInputStream() { - return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG); + public static SchemaContext createTestContext() { + return YangParserTestUtils.parseYangResource("/odl-datastore-test.yang"); } } diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisher.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisher.java index d6a8e0ad71..644e7d368c 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisher.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisher.java @@ -8,7 +8,6 @@ package org.opendaylight.mdsal.dom.store.inmemory; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.ArrayList; import java.util.Collection; @@ -17,6 +16,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import javax.annotation.Nonnull; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/DataTreeModificationCursorAdaptor.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/DataTreeModificationCursorAdaptor.java index a4986e714d..d1af2383fb 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/DataTreeModificationCursorAdaptor.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/DataTreeModificationCursorAdaptor.java @@ -74,7 +74,7 @@ final class DataTreeModificationCursorAdaptor extends ForwardingObject implement } public Optional> readNode(final PathArgument child) { - return delegate.readNode(child); + return Optional.fromJavaUtil(delegate.readNode(child)); } @Override diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStore.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStore.java index 5ebcc83916..20f2f7d4cf 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStore.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStore.java @@ -28,10 +28,10 @@ import org.opendaylight.yangtools.util.ExecutorServiceUtil; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; -import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; @@ -52,7 +52,7 @@ public class InMemoryDOMDataStore extends TransactionReadyPrototype impl Identifiable, SchemaContextListener, AutoCloseable, DOMStoreTreeChangePublisher { private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMDataStore.class); - private final DataTree dataTree = InMemoryDataTreeFactory.getInstance().create(TreeType.OPERATIONAL); + private final DataTree dataTree = new InMemoryDataTreeFactory().create(DataTreeConfiguration.DEFAULT_OPERATIONAL); private final AtomicLong txCounter = new AtomicLong(0); private final InMemoryDOMStoreTreeChangePublisher changePublisher; diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactory.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactory.java index d823e29ecd..947137c43f 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactory.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactory.java @@ -69,7 +69,7 @@ public final class InMemoryDOMDataStoreFactory { int dclExecutorMaxPoolSize = actualProperties.getMaxDataChangeExecutorPoolSize(); ExecutorService dataChangeListenerExecutor = SpecialExecutors.newBlockingBoundedFastThreadPool( - dclExecutorMaxPoolSize, dclExecutorMaxQueueSize, name + "-DCL"); + dclExecutorMaxPoolSize, dclExecutorMaxQueueSize, name + "-DCL", InMemoryDOMDataStore.class); final InMemoryDOMDataStore dataStore = new InMemoryDOMDataStore(name, dataChangeListenerExecutor, actualProperties.getMaxDataChangeListenerQueueSize(), debugTransactions); diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShard.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShard.java index f6c95b8054..a2c6957f62 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShard.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShard.java @@ -39,8 +39,8 @@ import org.opendaylight.yangtools.util.concurrent.FastThreadPoolExecutor; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.tree.CursorAwareDataTreeSnapshot; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTree; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeConfiguration; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; -import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; @@ -65,8 +65,14 @@ public class InMemoryDOMDataTreeShard implements ReadableWriteableDOMDataTreeSha final int maxDataChangeListenerQueueSize, final int submitQueueSize) { this.prefix = Preconditions.checkNotNull(prefix); - final TreeType treeType = treeTypeFor(prefix.getDatastoreType()); - this.dataTree = InMemoryDataTreeFactory.getInstance().create(treeType, prefix.getRootIdentifier()); + final DataTreeConfiguration treeBaseConfig = treeTypeFor(prefix.getDatastoreType()); + final DataTreeConfiguration treeConfig = new DataTreeConfiguration.Builder(treeBaseConfig.getTreeType()) + .setMandatoryNodesValidation(treeBaseConfig.isMandatoryNodesValidationEnabled()) + .setUniqueIndexes(treeBaseConfig.isUniqueIndexEnabled()) + .setRootPath(prefix.getRootIdentifier()) + .build(); + + this.dataTree = new InMemoryDataTreeFactory().create(treeConfig); this.shardChangePublisher = new InMemoryDOMDataTreeShardChangePublisher(dataTreeChangeExecutor, maxDataChangeListenerQueueSize, dataTree, prefix.getRootIdentifier(), childShards); @@ -218,12 +224,12 @@ public class InMemoryDOMDataTreeShard implements ReadableWriteableDOMDataTreeSha return new ChildShardContext(prefix, (WriteableDOMDataTreeShard) child); } - private static TreeType treeTypeFor(final LogicalDatastoreType dsType) { + private static DataTreeConfiguration treeTypeFor(final LogicalDatastoreType dsType) { switch (dsType) { case CONFIGURATION: - return TreeType.CONFIGURATION; + return DataTreeConfiguration.DEFAULT_CONFIGURATION; case OPERATIONAL: - return TreeType.OPERATIONAL; + return DataTreeConfiguration.DEFAULT_OPERATIONAL; default: throw new IllegalArgumentException("Unsupported Data Store type:" + dsType); } diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java index 647a67e131..b7e32a89a1 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMStoreTreeChangePublisher.java @@ -7,9 +7,9 @@ */ package org.opendaylight.mdsal.dom.store.inmemory; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import java.util.Collection; +import java.util.Optional; import java.util.concurrent.ExecutorService; import javax.annotation.Nonnull; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; @@ -50,8 +50,8 @@ final class InMemoryDOMStoreTreeChangePublisher extends AbstractDOMStoreTreeChan } @Override - protected void notifyListener(AbstractDOMDataTreeChangeListenerRegistration registration, - Collection changes) { + protected void notifyListener(final AbstractDOMDataTreeChangeListenerRegistration registration, + final Collection changes) { LOG.debug("Enqueueing candidates {} for registration {}", changes, registration); notificationManager.submitNotifications(registration, changes); } diff --git a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java index caa4f17ee3..1849dc317f 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java +++ b/dom/mdsal-dom-inmemory-datastore/src/main/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransaction.java @@ -8,7 +8,6 @@ package org.opendaylight.mdsal.dom.store.inmemory; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.ListenableFuture; @@ -16,6 +15,7 @@ import com.google.common.util.concurrent.ListeningExecutorService; import java.util.ArrayList; import java.util.Iterator; import java.util.Map.Entry; +import java.util.Optional; import java.util.concurrent.atomic.AtomicLong; import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java index 868e86355d..2476d22f63 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java @@ -15,7 +15,6 @@ import static org.junit.Assert.assertTrue; import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; -import java.io.IOException; import java.util.concurrent.ExecutionException; import org.junit.Before; import org.junit.Ignore; @@ -39,8 +38,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; public class InMemoryDataStoreTest { @@ -48,7 +45,7 @@ public class InMemoryDataStoreTest { private InMemoryDOMDataStore domStore; @Before - public void setupStore() throws IOException, YangSyntaxErrorException, ReactorException { + public void setupStore() { domStore = new InMemoryDOMDataStore("TEST", MoreExecutors.newDirectExecutorService()); schemaContext = TestModel.createTestContext(); domStore.onGlobalContextUpdated(schemaContext); diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java index 38fd827a52..e3944882d4 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/TestModel.java @@ -7,14 +7,9 @@ */ package org.opendaylight.controller.md.sal.dom.store.impl; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public final class TestModel { @@ -32,17 +27,12 @@ public final class TestModel { public static final YangInstanceIdentifier TEST_PATH = YangInstanceIdentifier.of(TEST_QNAME); public static final YangInstanceIdentifier OUTER_LIST_PATH = YangInstanceIdentifier.builder(TEST_PATH).node(OUTER_LIST_QNAME).build(); - private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang"; private TestModel() { throw new UnsupportedOperationException(); } - public static SchemaContext createTestContext() throws IOException, YangSyntaxErrorException, ReactorException { - return YangParserTestUtils.parseYangStreams(Collections.singletonList(getInputStream())); - } - - private static InputStream getInputStream() { - return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG); + public static SchemaContext createTestContext() { + return YangParserTestUtils.parseYangResource("/odl-datastore-test.yang"); } } diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java index 30d0143d34..fc7cb593d5 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/AbstractDOMShardTreeChangePublisherTest.java @@ -18,10 +18,10 @@ import static org.mockito.Mockito.verify; import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.DATA_TREE; import static org.opendaylight.mdsal.dom.store.inmemory.TestUtils.resetMocks; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import java.util.Collection; import java.util.Map; +import java.util.Optional; import javax.annotation.Nonnull; import org.junit.After; import org.junit.Before; @@ -47,7 +47,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableCo public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTreeChangePublisher { private static final YangInstanceIdentifier YANG_INSTANCE_IDENTIFIER = - YangInstanceIdentifier.of(QName.create("test")); + YangInstanceIdentifier.of(QName.create("", "test")); private static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YANG_INSTANCE_IDENTIFIER); @@ -72,11 +72,11 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre @Test public void registerTreeChangeListenerTest() throws Exception { final DOMDataTreeChangeListener domDataTreeChangeListener = mock(DOMDataTreeChangeListener.class); - final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class); + final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class); final DataTreeSnapshot initialSnapshot = mock(DataTreeSnapshot.class); - final DataContainerNode initialData = + final DataContainerNode initialData = ImmutableContainerNodeBuilder.create() - .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(QName.create("test"))) + .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(QName.create("", "test"))) .build(); doReturn(initialSnapshot).when(DATA_TREE).takeSnapshot(); doReturn(Optional.of(initialData)).when(initialSnapshot).readNode(any()); @@ -103,7 +103,7 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre @Test(expected = UnsupportedOperationException.class) public void registerTreeChangeListenerTestWithException() throws Exception { final DOMDataTreeChangeListener domDataTreeChangeListener = mock(DOMDataTreeChangeListener.class); - final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class); + final ListenerRegistration listenerRegistration = mock(ListenerRegistration.class); doReturn(listenerRegistration) .when(READABLE_WRITEABLE_DOM_DATA_TREE_SHARD).registerTreeChangeListener(any(), any()); final DOMDataTreeIdentifier domDataTreeIdentifier = @@ -129,8 +129,8 @@ public class AbstractDOMShardTreeChangePublisherTest extends AbstractDOMShardTre } @Override - protected void notifyListener(AbstractDOMDataTreeChangeListenerRegistration registration, - Collection changes) { + protected void notifyListener(final AbstractDOMDataTreeChangeListenerRegistration registration, + final Collection changes) { // NOOP } diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardTest.java index 57bf562c8f..4671cfc44f 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardTest.java @@ -39,14 +39,14 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.CursorAwareDataTreeS public class InMemoryDOMDataTreeShardTest { @Test - public void basicTest() throws Exception { + public void basicTest() { final InMemoryDOMDataTreeShard inMemoryDOMDataTreeShard = InMemoryDOMDataTreeShard.create(DOM_DATA_TREE_IDENTIFIER, MoreExecutors.directExecutor(), 1); final DOMDataTreeIdentifier domDataTreeIdentifier = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, - YangInstanceIdentifier.of(QName.create("Test"))); + YangInstanceIdentifier.of(QName.create("", "Test"))); final ReadableWriteableDOMDataTreeShard domDataTreeShard = mock(ReadableWriteableDOMDataTreeShard.class); doReturn("testReadableWriteableDOMDataTreeShard").when(domDataTreeShard).toString(); @@ -80,7 +80,7 @@ public class InMemoryDOMDataTreeShardTest { } @Test - public void createTransactionWithException() throws Exception { + public void createTransactionWithException() { final DOMDataTreeIdentifier domDataTreeIdentifier = new DOMDataTreeIdentifier(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY); diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardThreePhaseCommitCohortTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardThreePhaseCommitCohortTest.java index b7a47226a5..d3bdaba354 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardThreePhaseCommitCohortTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataTreeShardThreePhaseCommitCohortTest.java @@ -28,20 +28,20 @@ import org.junit.Test; import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; public class InMemoryDOMDataTreeShardThreePhaseCommitCohortTest { - private static final DataTreeCandidate DATA_TREE_CANDIDATE = mock(DataTreeCandidate.class); + private static final DataTreeCandidateTip DATA_TREE_CANDIDATE = mock(DataTreeCandidateTip.class); private static final DataTreeCandidateNode DATA_TREE_CANDIDATE_NODE = mock(DataTreeCandidateNode.class); private static final DataTreeModification DATA_TREE_MODIFICATION = mock(DataTreeModification.class); private static final InMemoryDOMDataTreeShardChangePublisher IN_MEMORY_DOM_DATA_TREE_SHARD_CHANGE_PUBLISHER = new InMemoryDOMDataTreeShardChangePublisher(MoreExecutors.directExecutor(), 1, DATA_TREE, - YangInstanceIdentifier.of(QName.create("test")), ImmutableMap.of()); + YangInstanceIdentifier.of(QName.create("", "test")), ImmutableMap.of()); private static final InMemoryDOMDataTreeShardThreePhaseCommitCohort IN_MEMORY_DOM_DATA_TREE_SHARD_THREE_PHASE_COMMIT_COHORT = new InMemoryDOMDataTreeShardThreePhaseCommitCohort(DATA_TREE, DATA_TREE_MODIFICATION, diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransactionTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransactionTest.java index 92e05ccbb6..07ac444ade 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransactionTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InmemoryDOMDataTreeShardWriteTransactionTest.java @@ -37,8 +37,8 @@ import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext; import org.opendaylight.mdsal.dom.spi.shard.ReadableWriteableDOMDataTreeShard; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode; +import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModificationCursor; import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType; @@ -50,7 +50,7 @@ public class InmemoryDOMDataTreeShardWriteTransactionTest { private static final ShardRootModificationContext SHARD_ROOT_MODIFICATION_CONTEXT = mock(ShardRootModificationContext.class); private static final YangInstanceIdentifier YANG_INSTANCE_IDENTIFIER = - YangInstanceIdentifier.of(QName.create("test")); + YangInstanceIdentifier.of(QName.create("", "test")); private static final DOMDataTreeIdentifier DOM_DATA_TREE_IDENTIFIER = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, YANG_INSTANCE_IDENTIFIER); private static final ForeignShardModificationContext FOREIGN_SHARD_MODIFICATION_CONTEXT = @@ -75,7 +75,7 @@ public class InmemoryDOMDataTreeShardWriteTransactionTest { doReturn(DataTreeModificationCursorAdaptor.of(dataTreeModificationCursor)) .when(SHARD_ROOT_MODIFICATION_CONTEXT).cursor(); doNothing().when(SHARD_ROOT_MODIFICATION_CONTEXT).closeCursor(); - final DataTreeCandidate dataTreeCandidate = mock(DataTreeCandidate.class); + final DataTreeCandidateTip dataTreeCandidate = mock(DataTreeCandidateTip.class); final DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class); doReturn(dataTreeCandidateNode).when(dataTreeCandidate).getRootNode(); doReturn(ModificationType.WRITE).when(dataTreeCandidateNode).getModificationType(); diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationTest.java index 94c8237320..9ae9985766 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/ShardDataModificationTest.java @@ -45,7 +45,8 @@ public class ShardDataModificationTest { public void setUp() throws Exception { doReturn(DOM_DATA_TREE_IDENTIFIER).when(SHARD_ROOT_MODIFICATION_CONTEXT).getIdentifier(); shardDataModification = TestUtils.createModification(SHARD_ROOT_MODIFICATION_CONTEXT, - ImmutableMap.of(YangInstanceIdentifier.of(QName.create("test")), FOREIGN_SHARD_MODIFICATION_CONTEXT)); + ImmutableMap.of(YangInstanceIdentifier.of(QName.create("", "test")), + FOREIGN_SHARD_MODIFICATION_CONTEXT)); final Map children = ImmutableMap.of(DOM_DATA_TREE_IDENTIFIER, FOREIGN_SHARD_MODIFICATION_CONTEXT); diff --git a/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/OsgiBundleScanningSchemaServiceTest.java b/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/OsgiBundleScanningSchemaServiceTest.java index ebd8ecea4a..ee781dd298 100644 --- a/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/OsgiBundleScanningSchemaServiceTest.java +++ b/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/OsgiBundleScanningSchemaServiceTest.java @@ -16,6 +16,7 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -26,6 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.Filter; +import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; public class OsgiBundleScanningSchemaServiceTest { @@ -34,7 +36,7 @@ public class OsgiBundleScanningSchemaServiceTest { private final BundleContext bundleContext = mock(BundleContext.class, "bundleContext"); @Before - public void setUp() throws Exception { + public void setUp() throws InvalidSyntaxException { destroyInstance(); doReturn(mock(Filter.class)).when(bundleContext).createFilter(any()); doNothing().when(bundleContext).addBundleListener(any()); @@ -50,7 +52,7 @@ public class OsgiBundleScanningSchemaServiceTest { @SuppressWarnings("checkstyle:IllegalCatch") @After - public void destroyInstance() throws Exception { + public void destroyInstance() { try { OsgiBundleScanningSchemaService.getInstance(); OsgiBundleScanningSchemaService.destroyInstance(); @@ -60,7 +62,7 @@ public class OsgiBundleScanningSchemaServiceTest { } @Test - public void basicTest() throws Exception { + public void basicTest() { assertTrue(osgiService instanceof DOMSchemaService); final SchemaContext schemaContext = TestModel.createTestContext(); @@ -85,7 +87,7 @@ public class OsgiBundleScanningSchemaServiceTest { } @Test(expected = UnsupportedOperationException.class) - public void sessionContextTest() throws Exception { + public void sessionContextTest() { osgiService.getSessionContext(); } } diff --git a/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/util/TestModel.java b/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/util/TestModel.java index 752329bb11..2027c221d4 100644 --- a/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/util/TestModel.java +++ b/dom/mdsal-dom-schema-service-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/service/osgi/util/TestModel.java @@ -7,12 +7,9 @@ */ package org.opendaylight.mdsal.dom.schema.service.osgi.util; -import java.io.InputStream; -import java.util.Collections; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public class TestModel { @@ -47,13 +44,8 @@ public class TestModel { YangInstanceIdentifier.builder(INNER_CONTAINER_PATH).node(ANOTHER_SHARD_CONTAINER).build(); public static final YangInstanceIdentifier NEW_SHARD_LIST_PATH = YangInstanceIdentifier.builder(ANOTHER_SHARD_PATH).node(NEW_SHARD_LIST).build(); - private static final String DATASTORE_TEST_YANG = "/odl-datastore-test.yang"; - public static SchemaContext createTestContext() throws ReactorException { - return YangParserTestUtils.parseYangStreams(Collections.singletonList(getInputStream())); - } - - private static InputStream getInputStream() { - return TestModel.class.getResourceAsStream(DATASTORE_TEST_YANG); + public static SchemaContext createTestContext() { + return YangParserTestUtils.parseYangResource("/odl-datastore-test.yang"); } } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/CompatDOMDataTreeListenerRegistry.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/CompatDOMDataTreeListenerRegistry.java index 7ccf689729..62357f627b 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/CompatDOMDataTreeListenerRegistry.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/CompatDOMDataTreeListenerRegistry.java @@ -10,11 +10,11 @@ package org.opendaylight.mdsal.dom.spi.shard; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import java.util.ArrayList; import java.util.Collection; +import java.util.Optional; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.api.DOMDataTreeListener; import org.opendaylight.mdsal.dom.spi.store.DOMStoreTreeChangePublisher; diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DOMDataTreeChangeListenerAggregator.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DOMDataTreeChangeListenerAggregator.java index 97f3d28e30..5226a15cc6 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DOMDataTreeChangeListenerAggregator.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DOMDataTreeChangeListenerAggregator.java @@ -7,7 +7,6 @@ */ package org.opendaylight.mdsal.dom.spi.shard; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableList; @@ -20,6 +19,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Optional; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperation.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperation.java index 09fb097dee..887d453e51 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperation.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperation.java @@ -23,7 +23,7 @@ abstract class DelegatingReadableCursorOperation extends ForwardingObject implem @Override public Optional> readNode(final PathArgument arg) { - return delegate().readNode(arg); + return Optional.fromJavaUtil(delegate().readNode(arg)); } @Override diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperation.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperation.java index b563b7f79b..8026fb348e 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperation.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperation.java @@ -8,8 +8,8 @@ package org.opendaylight.mdsal.dom.spi.shard; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import java.util.Optional; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransaction.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransaction.java index cfac807262..7fe884194f 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransaction.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransaction.java @@ -65,7 +65,7 @@ public final class SnapshotBackedReadTransaction extends } try { - return Futures.immediateCheckedFuture(snapshot.readNode(path)); + return Futures.immediateCheckedFuture(Optional.fromJavaUtil(snapshot.readNode(path))); } catch (Exception e) { LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e); return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed", e)); diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransaction.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransaction.java index 9937931c74..219d65abd3 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransaction.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransaction.java @@ -45,7 +45,7 @@ public final class SnapshotBackedReadWriteTransaction extends final Optional> result; try { - result = readSnapshotNode(path); + result = Optional.fromJavaUtil(readSnapshotNode(path)); } catch (Exception e) { LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e); return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed", e)); diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransaction.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransaction.java index 8da8fd472d..5deb8fd2c5 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransaction.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransaction.java @@ -11,9 +11,9 @@ import static com.google.common.base.Preconditions.checkState; import com.google.common.annotations.Beta; import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Throwables; +import java.util.Optional; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableEntryTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableEntryTest.java index 22305f46f2..eaaa8642de 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableEntryTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableEntryTest.java @@ -23,11 +23,11 @@ public class DOMDataTreePrefixTableEntryTest { final DOMDataTreePrefixTableEntry domDataTreePrefixTableEntry = new DOMDataTreePrefixTableEntry<>(); final PathArgument pathArgument = mock(PathArgument.class); final Object testObject = new Object(); - final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("test")); + final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("", "test")); assertEquals(pathArgument, new DOMDataTreePrefixTableEntry<>(pathArgument).getIdentifier()); domDataTreePrefixTableEntry.store(yangInstanceIdentifier, testObject); - assertEquals(QName.create("test"), + assertEquals(QName.create("", "test"), domDataTreePrefixTableEntry.lookup(yangInstanceIdentifier).getIdentifier().getNodeType()); domDataTreePrefixTableEntry.remove(yangInstanceIdentifier); domDataTreePrefixTableEntry.remove(yangInstanceIdentifier); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableTest.java index 2df469b57b..e66d21d4cb 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/DOMDataTreePrefixTableTest.java @@ -22,12 +22,12 @@ public class DOMDataTreePrefixTableTest { public void basicTest() throws Exception { final DOMDataTreePrefixTable domDataTreePrefixTable = DOMDataTreePrefixTable.create(); final Object testObject = new Object(); - final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("test")); + final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.of(QName.create("", "test")); final DOMDataTreeIdentifier domDataTreeIdentifier = new DOMDataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, yangInstanceIdentifier); domDataTreePrefixTable.store(domDataTreeIdentifier, testObject); - assertEquals(QName.create("test"), + assertEquals(QName.create("", "test"), domDataTreePrefixTable.lookup(domDataTreeIdentifier).getIdentifier().getNodeType()); domDataTreePrefixTable.remove(domDataTreeIdentifier); assertNull(domDataTreePrefixTable.lookup(domDataTreeIdentifier).getIdentifier()); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RegistrationTreeNodeTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RegistrationTreeNodeTest.java index 079798075a..13949374e0 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RegistrationTreeNodeTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RegistrationTreeNodeTest.java @@ -43,11 +43,11 @@ public class RegistrationTreeNodeTest { assertNotNull(registrationTreeNode.ensureChild(pathArgument)); assertNotNull(registrationTreeNode.getExactChild(pathArgument)); - final NodeWithValue nodeWithValue = new NodeWithValue<>(QName.create("testNode"), new Object()); + final NodeWithValue nodeWithValue = new NodeWithValue<>(QName.create("", "testNode"), new Object()); assertEquals(Collections.EMPTY_LIST, registrationTreeNode.getInexactChildren(nodeWithValue)); assertEquals(Collections.EMPTY_LIST, registrationTreeNode.getInexactChildren(pathArgument)); - final NodeIdentifier nodeWithoutValue = new NodeIdentifier(QName.create("testNode")); + final NodeIdentifier nodeWithoutValue = new NodeIdentifier(QName.create("", "testNode")); assertNotNull(registrationTreeNode.ensureChild(nodeWithoutValue)); assertFalse(registrationTreeNode.getInexactChildren(nodeWithValue).isEmpty()); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RpcRoutingStrategyTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RpcRoutingStrategyTest.java index c0ee5ace48..3642ece433 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RpcRoutingStrategyTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/RpcRoutingStrategyTest.java @@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; public class RpcRoutingStrategyTest { private static RpcRoutingStrategy rpcRoutingStrategy; - private static final QName Q_NAME = QName.create("testQname"); + private static final QName Q_NAME = QName.create("", "testQname"); private static final RpcDefinition RPC_DEFINITION = mock(RpcDefinition.class); private static final DataSchemaNode DATA_SCHEMA_NODE = mock(DataSchemaNode.class); private static final UnknownSchemaNode UNKNOWN_SCHEMA_NODE = mock(UnknownSchemaNode.class); @@ -41,7 +41,7 @@ public class RpcRoutingStrategyTest { doReturn(containerSchemaNode).when(RPC_DEFINITION).getInput(); doReturn(ImmutableSet.of(DATA_SCHEMA_NODE)).when(containerSchemaNode).getChildNodes(); doReturn(ImmutableList.of(UNKNOWN_SCHEMA_NODE)).when(DATA_SCHEMA_NODE).getUnknownSchemaNodes(); - doReturn(QName.create("testNode")).when(UNKNOWN_SCHEMA_NODE).getNodeType(); + doReturn(QName.create("", "testNode")).when(UNKNOWN_SCHEMA_NODE).getNodeType(); doReturn(Q_NAME).when(RPC_DEFINITION).getQName(); rpcRoutingStrategy = RpcRoutingStrategy.from(RPC_DEFINITION); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperationTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperationTest.java index fdc7d6b59e..83f62411f2 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperationTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/DelegatingReadableCursorOperationTest.java @@ -14,7 +14,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; +import java.util.Optional; import org.junit.After; import org.junit.Test; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -26,7 +26,7 @@ public class DelegatingReadableCursorOperationTest extends DelegatingReadableCur @Test public void basicTest() throws Exception { - final Optional> nodeOptional = Optional.absent(); + final Optional> nodeOptional = Optional.empty(); doReturn(nodeOptional).when(MOCK_CURSOR_SNAPSHOT).readNode(TestUtils.PATH_ARGUMENT); doNothing().when(MOCK_CURSOR_SNAPSHOT).exit(); doNothing().when(MOCK_CURSOR_SNAPSHOT).enter(TestUtils.PATH_ARGUMENT); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/TestUtils.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/TestUtils.java index d05944a2aa..cc30f39deb 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/TestUtils.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/TestUtils.java @@ -32,7 +32,7 @@ final class TestUtils { static final PathArgument PATH_ARGUMENT = mock(PathArgument.class); - static final NodeIdentifier NODE_IDENTIFIER = NodeIdentifier.create(QName.create("test")); + static final NodeIdentifier NODE_IDENTIFIER = NodeIdentifier.create(QName.create("", "test")); static final NormalizedNode NORMALIZED_NODE = mock(NormalizedNode.class); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperationTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperationTest.java index 7c01d61a16..7d7787b37b 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperationTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/shard/WritableNodeOperationTest.java @@ -11,11 +11,11 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; +import java.util.Optional; import org.junit.After; import org.junit.Assert; import org.junit.Before; diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java index 0ef4b4ab51..4a1f8a261f 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/AbstractDOMStoreTreeChangePublisherTest.java @@ -37,7 +37,7 @@ public class AbstractDOMStoreTreeChangePublisherTest extends AbstractDOMStoreTre final DataTreeCandidate dataTreeCandidate = mock(DataTreeCandidate.class); final DataTreeCandidateNode dataTreeCandidateNode = mock(DataTreeCandidateNode.class, "dataTreeCandidateNode"); final YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.builder() - .node(QName.create("node1")).node(QName.create("node2")).build(); + .node(QName.create("", "node1")).node(QName.create("", "node2")).build(); doReturn(dataTreeCandidateNode).when(dataTreeCandidate).getRootNode(); doReturn(ModificationType.WRITE).when(dataTreeCandidateNode).getModificationType(); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransactionTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransactionTest.java index 1ea902b80c..15dd743b22 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransactionTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransactionTest.java @@ -37,7 +37,7 @@ public class SnapshotBackedReadTransactionTest { final NormalizedNode testNode = mock(NormalizedNode.class); final Optional> optional = Optional.of(testNode); doReturn("testNode").when(testNode).toString(); - doReturn(optional).when(DATA_TREE_SNAPSHOT).readNode(YangInstanceIdentifier.EMPTY); + doReturn(java.util.Optional.of(testNode)).when(DATA_TREE_SNAPSHOT).readNode(YangInstanceIdentifier.EMPTY); assertTrue(snapshotBackedReadTransaction.exists(YangInstanceIdentifier.EMPTY).get()); assertEquals(optional, snapshotBackedReadTransaction.read(YangInstanceIdentifier.EMPTY).get()); diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransactionTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransactionTest.java index cbe5eea479..2e9b26bdf5 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransactionTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransactionTest.java @@ -46,7 +46,7 @@ public class SnapshotBackedReadWriteTransactionTest { final NormalizedNode testNode = mock(NormalizedNode.class); final Optional> optional = Optional.of(testNode); doReturn("testNode").when(testNode).toString(); - doReturn(optional).when(DATA_TREE_MODIFICATION).readNode(YangInstanceIdentifier.EMPTY); + doReturn(java.util.Optional.of(testNode)).when(DATA_TREE_MODIFICATION).readNode(YangInstanceIdentifier.EMPTY); assertTrue(snapshotBackedReadWriteTransaction.exists(YangInstanceIdentifier.EMPTY).get()); assertEquals(optional, snapshotBackedReadWriteTransaction.read(YangInstanceIdentifier.EMPTY).get()); } diff --git a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransactionTest.java b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransactionTest.java index 6eb33c285b..3962dc56b1 100644 --- a/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransactionTest.java +++ b/dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedWriteTransactionTest.java @@ -17,7 +17,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import com.google.common.base.MoreObjects; -import com.google.common.base.Optional; +import java.util.Optional; import org.junit.Assert; import org.junit.Before; import org.junit.Test; diff --git a/entityownership/mdsal-eos-dom-api/src/test/java/org/opendaylight/mdsal/eos/dom/api/DOMEntityOwnershipChangeTest.java b/entityownership/mdsal-eos-dom-api/src/test/java/org/opendaylight/mdsal/eos/dom/api/DOMEntityOwnershipChangeTest.java index b13940e1dc..f38015a5a2 100644 --- a/entityownership/mdsal-eos-dom-api/src/test/java/org/opendaylight/mdsal/eos/dom/api/DOMEntityOwnershipChangeTest.java +++ b/entityownership/mdsal-eos-dom-api/src/test/java/org/opendaylight/mdsal/eos/dom/api/DOMEntityOwnershipChangeTest.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class DOMEntityOwnershipChangeTest { private static final String ENTITY_TYPE = "type"; - private static final YangInstanceIdentifier ID = YangInstanceIdentifier.of(QName.create("test")); + private static final YangInstanceIdentifier ID = YangInstanceIdentifier.of(QName.create("", "test")); private static final DOMEntity ENTITY = new DOMEntity(ENTITY_TYPE, ID); @Test -- 2.36.6