final var modGen = entry.getValue();
// index the module's runtime type
- modGen.runtimeType().ifPresent(type -> {
- safePut(modules, "modules", entry.getKey(), type);
- });
+ safePut(modules, "modules", entry.getKey(), modGen.runtimeType().orElseThrow());
// index module's identities and RPC input/outputs
for (var gen : modGen) {
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
import org.opendaylight.yangtools.yang.common.AbstractQName;
import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
*/
public final class ModuleGenerator extends AbstractCompositeGenerator<ModuleEffectiveStatement, ModuleRuntimeType> {
private final @NonNull JavaTypeName yangModuleInfo;
- private final @NonNull ClassPlacement placement;
/**
* Note that for sake of simplicity of lookup and child mapping, this instance serves as the root for all child
ModuleGenerator(final ModuleEffectiveStatement statement) {
super(statement);
yangModuleInfo = JavaTypeName.create(javaPackage(), BindingMapping.MODULE_INFO_CLASS_NAME);
- placement = computePlacement();
- prefixMember = placement != ClassPlacement.NONE || haveSecondary()
- ? domain().addPrefix(this, new ModuleNamingStrategy(statement.argument())) : null;
- }
-
- private @NonNull ClassPlacement computePlacement() {
- return statement().findFirstEffectiveSubstatement(DataTreeEffectiveStatement.class).isPresent()
- || statement().findFirstEffectiveSubstatement(ChoiceEffectiveStatement.class).isPresent()
- ? ClassPlacement.TOP_LEVEL : ClassPlacement.NONE;
- }
-
- private boolean haveSecondary() {
- for (Generator child : this) {
- if (child instanceof AbstractImplicitGenerator) {
- return true;
- }
- }
- return false;
+ prefixMember = domain().addPrefix(this, new ModuleNamingStrategy(statement.argument()));
}
@Override
return domain();
}
- @Override
- ClassPlacement classPlacement() {
- return placement;
- }
-
@Override
Member createMember(final CollisionDomain domain) {
return domain.addSecondary(this, prefixMember, BindingMapping.DATA_ROOT_SUFFIX);
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/augment-relative-xpath-models"));
assertNotNull("genTypes is null", genTypes);
- assertEquals(26, genTypes.size());
+ assertEquals(27, genTypes.size());
GeneratedTransferObject gtInterfaceKey = null;
GeneratedType gtInterface = null;
assertNotNull("Schema Context is null", context);
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(context);
- assertEquals(28, genTypes.size());
+ assertEquals(31, genTypes.size());
GeneratedTransferObject gtInterfaceKey = null;
GeneratedType gtInterface = null;
public void binaryTypeTest() {
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/binary-type-test-models"));
- assertEquals(9, genTypes.size());
+ assertEquals(10, genTypes.size());
}
}
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"));
- assertEquals(9, generateTypes.size());
+ assertEquals(11, generateTypes.size());
}
@Test
public void testBaseYangTypes() {
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResource("/base-yang-types.yang"));
- assertEquals(19, types.size());
+ assertEquals(20, types.size());
}
}
final EffectiveModelContext context = YangParserTestUtils.parseYangResources(Bug1862Test.class,
"/base-yang-types.yang", "/test-type-provider.yang");
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(context);
- assertEquals(41, types.size());
+ assertEquals(42, types.size());
final MethodSignature fooGetter = types.stream()
.filter(type -> type.getFullyQualifiedName().equals(
"org.opendaylight.yang.gen.v1.urn.opendaylight.org.test.type.provider.model.rev140912.Foo"))
YangParserTestUtils.parseYangResourceDirectory("/choice-case-type-test-models"));
assertNotNull("genTypes is null", genTypes);
- assertEquals(40, genTypes.size());
+ assertEquals(41, genTypes.size());
// test for file choice-monitoring
String pcgPref = "org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.choice.monitoring.rev130701."
ControllerTest.class,
"/controller-models/controller-network.yang", "/controller-models/controller-openflow.yang",
"/ietf-models/ietf-inet-types.yang"));
- assertEquals(54, genTypes.size());
+ assertEquals(56, genTypes.size());
}
}
"/enum-test-models/ietf-interfaces@2012-11-15.yang", "/ietf-models/iana-if-type.yang"));
assertNotNull(genTypes);
- assertEquals("Expected count of all Generated Types", 6, genTypes.size());
+ assertEquals(7, genTypes.size());
GeneratedType genInterface = null;
for (final GeneratedType type : genTypes) {
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
"/ietf-models/iana-if-type.yang"));
assertNotNull(genTypes);
- assertEquals(1, genTypes.size());
+ assertEquals(2, genTypes.size());
- final GeneratedType type = genTypes.get(0);
+ final GeneratedType type = genTypes.get(1);
assertThat(type, instanceOf(Enumeration.class));
final Enumeration enumer = (Enumeration) type;
"/enum-test-models/abstract-topology@2013-02-08.yang", "/enum-test-models/ietf-interfaces@2012-11-15.yang",
"/ietf-models/iana-if-type.yang"));
assertNotNull(genTypes);
- assertEquals(24, genTypes.size());
+ assertEquals(25, genTypes.size());
GeneratedType genInterface = null;
for (final GeneratedType type : genTypes) {
"/leafref-test-models/abstract-topology@2013-02-08.yang", "/ietf-models/ietf-interfaces.yang",
"/ietf-models/ietf-inet-types.yang", "/ietf-models/ietf-yang-types.yang",
"/ietf-models/iana-if-type.yang");
- assertNotNull("Schema Context is null", context);
+ assertNotNull(context);
final Set<Module> toGenModules = new HashSet<>();
for (final Module module : context.getModules()) {
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(context, toGenModules);
assertNotNull("genTypes is null", genTypes);
- assertEquals(24, genTypes.size());
+ assertEquals(25, genTypes.size());
}
}
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(context);
- assertEquals(54, genTypes.size());
+ assertEquals(56, genTypes.size());
GeneratedTransferObject gtIfcKey = null;
GeneratedType gtIfc = null;
"/abstract-topology.yang", "/ietf-models/ietf-inet-types.yang"));
assertNotNull(genTypes);
- assertEquals(29, genTypes.size());
+ assertEquals(30, genTypes.size());
}
@Test
public void testAugmentRpcInput() {
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(YangParserTestUtils.parseYangResource(
"/augment-rpc-input.yang"));
- assertEquals(5, genTypes.size());
+ assertEquals(6, genTypes.size());
}
}
final List<GeneratedType> generateTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResource("/mdsal269.yang"));
assertNotNull(generateTypes);
- assertEquals(4, generateTypes.size());
+ assertEquals(5, generateTypes.size());
final GeneratedType mplsLabelType = generateTypes.stream().filter(type -> type.getFullyQualifiedName()
.equals("org.opendaylight.yang.gen.v1.mdsal269.rev180130.MplsLabel")).findFirst().get();
List<GeneratedType> generateTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal-300"));
assertNotNull(generateTypes);
- assertEquals(18, generateTypes.size());
+ assertEquals(19, generateTypes.size());
}
}
final List<GeneratedType> generateTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResource("/mdsal335.yang"));
assertNotNull(generateTypes);
- assertEquals(2, generateTypes.size());
+ assertEquals(3, generateTypes.size());
final GeneratedType gen = generateTypes.stream()
.filter(type -> type.getFullyQualifiedName()
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal-459/"));
assertNotNull(types);
- assertEquals(6, types.size());
+ assertEquals(7, types.size());
final Set<JavaTypeName> typeNames = types.stream().map(GeneratedType::getIdentifier)
.collect(Collectors.toSet());
assertEquals(ImmutableSet.of(
JavaTypeName.create("org.opendaylight.yang.gen.v1.base.norev", "Foo"),
JavaTypeName.create("org.opendaylight.yang.gen.v1.base.norev", "BaseData"),
+ JavaTypeName.create("org.opendaylight.yang.gen.v1.aug.norev", "AugData"),
JavaTypeName.create("org.opendaylight.yang.gen.v1.aug.norev", "Foo1"),
JavaTypeName.create("org.opendaylight.yang.gen.v1.aug.norev.foo", "Bar"),
JavaTypeName.create("org.opendaylight.yang.gen.v1.aug.norev.foo.bar", "Output"),
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResource("/mdsal500.yang"));
assertNotNull(types);
- assertEquals(3, types.size());
+ assertEquals(4, types.size());
- final GeneratedType rpcService = types.get(2);
+ final GeneratedType rpcService = types.get(3);
assertEquals("Mdsal500Service", rpcService.getName());
final List<MethodSignature> methods = rpcService.getMethodDefinitions();
assertEquals(1, methods.size());
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal-516"));
assertNotNull(types);
- assertEquals(7, types.size());
+ assertEquals(8, types.size());
}
}
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal-517"));
assertNotNull(types);
- assertEquals(11, types.size());
+ assertEquals(12, types.size());
}
}
final List<GeneratedType> types = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal-531"));
assertNotNull(types);
- assertEquals(9, types.size());
+ assertEquals(10, types.size());
}
}
public void builderTemplateGenerateListenerMethodsTest() {
final List<GeneratedType> genTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResource("/mdsal554.yang"));
- assertEquals(4, genTypes.size());
+ assertEquals(5, genTypes.size());
- final List<MethodSignature> methods = genTypes.get(3).getMethodDefinitions();
+ final List<MethodSignature> methods = genTypes.get(4).getMethodDefinitions();
assertEquals(3, methods.size());
// status deprecated
public void testAugmentLinking() {
final var generatedTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal715"));
- assertEquals(12, generatedTypes.size());
+ assertEquals(15, generatedTypes.size());
}
}
public void testModuleUsesAugmentLinking() {
final var generatedTypes = DefaultBindingGenerator.generateFor(
YangParserTestUtils.parseYangResourceDirectory("/mdsal718"));
- assertEquals(10, generatedTypes.size());
+ assertEquals(13, generatedTypes.size());
}
}
UnionTypeDefTest.class, "/union-test-models/abstract-topology.yang", "/ietf-models/ietf-inet-types.yang"));
assertNotNull("genTypes is null", genTypes);
- assertEquals(33, genTypes.size());
+ assertEquals(34, genTypes.size());
// TODO: implement test
}
// Test if all sources are generated from 'module foo'
File fooParent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO);
- CompilationTestUtils.assertFilesCount(fooParent, 5);
+ assertTrue(new File(fooParent, "FooData.java").exists());
assertTrue(new File(fooParent, "IgpLinkAttributes.java").exists());
assertTrue(new File(fooParent, "Link1.java").exists());
assertTrue(new File(fooParent, "Link1Builder.java").exists());
+ CompilationTestUtils.assertFilesCount(fooParent, 6);
// Test if all sources are generated from 'module bar'
File barParent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
- CompilationTestUtils.assertFilesCount(barParent, 8);
assertTrue(new File(barParent, "BarData.java").exists());
assertTrue(new File(barParent, "NetworkTopology.java").exists());
assertTrue(new File(barParent, "NetworkTopologyBuilder.java").exists());
assertTrue(new File(barParent, "Link.java").exists());
assertTrue(new File(barParent, "LinkAttributes.java").exists());
+ CompilationTestUtils.assertFilesCount(barParent, 8);
File networkParent = new File(barParent, "network");
CompilationTestUtils.assertFilesCount(networkParent, 1);
File topologyParent = new File(networkParent, "topology");
- CompilationTestUtils.assertFilesCount(topologyParent, 3);
assertTrue(new File(topologyParent, "Topology.java").exists());
assertTrue(new File(topologyParent, "TopologyBuilder.java").exists());
assertTrue(new File(topologyParent, "TopologyKey.java").exists());
+ CompilationTestUtils.assertFilesCount(topologyParent, 3);
File linkParent = new File(barParent, "link");
- CompilationTestUtils.assertFilesCount(linkParent, 3);
assertTrue(new File(linkParent, "Link.java").exists());
assertTrue(new File(linkParent, "LinkBuilder.java").exists());
assertTrue(new File(linkParent, "LinkKey.java").exists());
+ CompilationTestUtils.assertFilesCount(linkParent, 3);
// Test if all sources are generated from 'module baz'
File bazParent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAZ);
- CompilationTestUtils.assertFilesCount(bazParent, 5);
+ assertTrue(new File(bazParent, "BazData.java").exists());
assertTrue(new File(bazParent, "IgpLinkAttributes1.java").exists());
assertTrue(new File(bazParent, "IgpLinkAttributes1Builder.java").exists());
assertTrue(new File(bazParent, "LinkAttributes.java").exists());
+ CompilationTestUtils.assertFilesCount(bazParent, 6);
// Test if sources are compilable
CompilationTestUtils.testCompilation(sourcesOutputDir, compiledOutputDir);
// Test if all sources are generated from module foo
File parent = new File(sourcesOutputDir, NS_FOO);
+ assertTrue(new File(parent, "FooData.java").exists());
+ assertTrue(new File(parent, "FooGr1.java").exists());
+ assertTrue(new File(parent, "Nodes.java").exists());
+ assertTrue(new File(parent, "NodesBuilder.java").exists());
assertFilesCount(parent, 6);
- final File fooData = new File(parent, "FooData.java");
- final File fooGr1 = new File(parent, "FooGr1.java");
- final File nodes = new File(parent, "Nodes.java");
- final File nodesBuilder = new File(parent, "NodesBuilder.java");
- assertTrue(fooData.exists());
- assertTrue(fooGr1.exists());
- assertTrue(nodes.exists());
- assertTrue(nodesBuilder.exists());
// Test if all sources are generated from module bar
parent = new File(sourcesOutputDir, NS_BAR);
- assertFilesCount(parent, 3);
- File barGr1 = new File(parent, "BarGr1.java");
- File barGr2 = new File(parent, "BarGr2.java");
- assertTrue(barGr1.exists());
- assertTrue(barGr2.exists());
+ assertTrue(new File(parent, "BarData.java").exists());
+ assertTrue(new File(parent, "BarGr1.java").exists());
+ assertTrue(new File(parent, "BarGr2.java").exists());
+ assertFilesCount(parent, 4);
// Test if all sources are generated from module baz
parent = new File(sourcesOutputDir, NS_BAZ);
- assertFilesCount(parent, 2);
- File bazGr1 = new File(parent, "BazGr1.java");
- assertTrue(bazGr1.exists());
+ assertTrue(new File(parent, "BazData.java").exists());
+ assertTrue(new File(parent, "BazGr1.java").exists());
+ assertFilesCount(parent, 3);
// Test if sources are compilable
testCompilation(sourcesOutputDir, compiledOutputDir);
assertTrue(new File(parent, "OpenObject.java").exists());
assertTrue(new File(parent, "ExplicitRouteObject.java").exists());
assertTrue(new File(parent, "PathKeySubobject.java").exists());
- CompilationTestUtils.assertFilesCount(parent, 10);
+ assertTrue(new File(parent, "FooData.java").exists());
+ CompilationTestUtils.assertFilesCount(parent, 11);
parent = new File(parent, "object");
assertTrue(new File(parent, "Nodes.java").exists());
// Test if all sources were generated from 'module bar'
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
+ assertTrue(new File(parent, "BarData.java").exists());
assertTrue(new File(parent, "BasicExplicitRouteSubobjects.java").exists());
assertTrue(new File(parent, "ExplicitRouteSubobjects.java").exists());
assertTrue(new File(parent, "RouteSubobjects.java").exists());
- CompilationTestUtils.assertFilesCount(parent, 6);
+ CompilationTestUtils.assertFilesCount(parent, 7);
parent = new File(parent, "route");
CompilationTestUtils.assertFilesCount(parent, 1);
// Test if all sources were generated from 'module foo'
File parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO);
- final File fooListener = new File(parent, "FooListener.java");
- File pathAttributes = new File(parent, "PathAttributes.java");
- final File update = new File(parent, "Update.java");
- final File updateBuilder = new File(parent, "UpdateBuilder.java");
- assertTrue(fooListener.exists());
- assertTrue(pathAttributes.exists());
- assertTrue(update.exists());
- assertTrue(updateBuilder.exists());
- CompilationTestUtils.assertFilesCount(parent, 7);
+ assertTrue(new File(parent, "FooData.java").exists());
+ assertTrue(new File(parent, "FooListener.java").exists());
+ assertTrue(new File(parent, "PathAttributes.java").exists());
+ assertTrue(new File(parent, "Update.java").exists());
+ assertTrue(new File(parent, "UpdateBuilder.java").exists());
+ CompilationTestUtils.assertFilesCount(parent, 8);
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO + CompilationTestUtils.FS + "path");
CompilationTestUtils.assertFilesCount(parent, 1);
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_FOO + CompilationTestUtils.FS + "update");
CompilationTestUtils.assertFilesCount(parent, 2);
- pathAttributes = new File(parent, "PathAttributes.java");
- final File pathAttributesBuilder = new File(parent, "PathAttributesBuilder.java");
- assertTrue(pathAttributes.exists());
- assertTrue(pathAttributesBuilder.exists());
+ assertTrue(new File(parent, "PathAttributes.java").exists());
+ assertTrue(new File(parent, "PathAttributesBuilder.java").exists());
// Test if all sources were generated from 'module bar'
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
- final File destination = new File(parent, "Destination.java");
- final File pathAttributes1 = new File(parent, "PathAttributes1.java");
- final File pathAttributes1Builder = new File(parent, "PathAttributes1Builder.java");
- assertTrue(destination.exists());
- assertTrue(pathAttributes1.exists());
- assertTrue(pathAttributes1Builder.exists());
- CompilationTestUtils.assertFilesCount(parent, 6);
+ assertTrue(new File(parent, "BarData.java").exists());
+ assertTrue(new File(parent, "Destination.java").exists());
+ assertTrue(new File(parent, "PathAttributes1.java").exists());
+ assertTrue(new File(parent, "PathAttributes1Builder.java").exists());
+ CompilationTestUtils.assertFilesCount(parent, 7);
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR + CompilationTestUtils.FS + "destination");
CompilationTestUtils.assertFilesCount(parent, 2);
parent = new File(parent, "unreach");
CompilationTestUtils.assertFilesCount(parent, 1);
parent = new File(parent, "nlri");
- final File withdrawnRoutes = new File(parent, "WithdrawnRoutes.java");
- final File withdrawnRoutesBuilder = new File(parent, "WithdrawnRoutesBuilder.java");
- assertTrue(withdrawnRoutes.exists());
- assertTrue(withdrawnRoutesBuilder.exists());
+ assertTrue(new File(parent, "WithdrawnRoutes.java").exists());
+ assertTrue(new File(parent, "WithdrawnRoutesBuilder.java").exists());
CompilationTestUtils.assertFilesCount(parent, 2);
// Test if all sources were generated from 'module baz'
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAZ);
- CompilationTestUtils.assertFilesCount(parent, 3);
- final File linkstateDestination = new File(parent, "LinkstateDestination.java");
- assertTrue(linkstateDestination.exists());
+ assertTrue(new File(parent, "BazData.java").exists());
+ assertTrue(new File(parent, "LinkstateDestination.java").exists());
+ CompilationTestUtils.assertFilesCount(parent, 4);
parent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAZ + CompilationTestUtils.FS + "update");
CompilationTestUtils.assertFilesCount(parent, 1);
assertTrue(new File(fooParent, "NodesBuilder.java").exists());
final File barParent = new File(sourcesOutputDir, CompilationTestUtils.NS_BAR);
- CompilationTestUtils.assertFilesCount(barParent, 2);
+ CompilationTestUtils.assertFilesCount(barParent, 3);
+ assertTrue(new File(barParent, "BarData.java").exists());
assertTrue(new File(barParent, "IdentityClass.java").exists());
// Test if sources are compilable