import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangStatementStreamSource;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
public class ConstraintDefinitionsTest {
@Test
public void testConstraintDefinitions() throws ParseException, ReactorException, URISyntaxException, IOException,
YangSyntaxErrorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-
- reactor.addSource(YangStatementStreamSource.create(
- YangTextSchemaSource.forResource("/constraint-definitions-test/foo.yang")));
- final SchemaContext schemaContext = reactor.buildEffective();
+ final SchemaContext schemaContext = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(YangStatementStreamSource.create(
+ YangTextSchemaSource.forResource("/constraint-definitions-test/foo.yang")))
+ .buildEffective();
assertNotNull(schemaContext);
final Module testModule = schemaContext.findModule("foo", Revision.of("2016-09-20")).get();
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.DescriptionStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.IncludeStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ModuleStatementImpl;
@Test
public void descriptionAndReferenceTest11() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(ROOT_MODULE, CHILD_MODULE, CHILD_MODULE_1, IMPORTED_MODULE);
-
- reactor.build().getRootStatements().forEach(declaredStmt -> {
- if (declaredStmt instanceof ModuleStatementImpl) {
- declaredStmt.declaredSubstatements().forEach(subStmt -> {
- if (subStmt instanceof IncludeStatementImpl
- && subStmt.rawArgument().equals("child-module")) {
- subStmt.declaredSubstatements().forEach(Bug6874Test::verifyDescAndRef);
- }
- });
- }
- });
+ YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(ROOT_MODULE, CHILD_MODULE, CHILD_MODULE_1, IMPORTED_MODULE)
+ .build().getRootStatements().forEach(declaredStmt -> {
+ if (declaredStmt instanceof ModuleStatementImpl) {
+ declaredStmt.declaredSubstatements().forEach(subStmt -> {
+ if (subStmt instanceof IncludeStatementImpl
+ && subStmt.rawArgument().equals("child-module")) {
+ subStmt.declaredSubstatements().forEach(Bug6874Test::verifyDescAndRef);
+ }
+ });
+ }
+ });
}
@SuppressWarnings("rawtypes")
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
public class AugmentProcessTest {
@Test
public void multipleAugmentsAndMultipleModulesTest() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
- addSources(reactor, MULTIPLE_AUGMENT_ROOT, MULTIPLE_AUGMENT_IMPORTED,
- MULTIPLE_AUGMENT_SUBMODULE);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(MULTIPLE_AUGMENT_ROOT, MULTIPLE_AUGMENT_IMPORTED, MULTIPLE_AUGMENT_SUBMODULE)
+ .buildEffective();
assertNotNull(result);
}
@Test
public void multipleAugmentTest() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
- addSources(reactor, MULTIPLE_AUGMENT);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(MULTIPLE_AUGMENT)
+ .buildEffective();
assertNotNull(result);
}
@Test(expected = SomeModifiersUnresolvedException.class)
public void multipleAugmentIncorrectPathTest() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
- addSources(reactor, MULTIPLE_AUGMENT_INCORRECT);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(MULTIPLE_AUGMENT_INCORRECT)
+ .buildEffective();
assertNull(result);
}
@Test(expected = SomeModifiersUnresolvedException.class)
public void multipleAugmentIncorrectPathAndGrpTest() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
- addSources(reactor, MULTIPLE_AUGMENT_INCORRECT2);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(MULTIPLE_AUGMENT_INCORRECT2)
+ .buildEffective();
assertNull(result);
}
@Test
public void readAndParseYangFileTest() throws ReactorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
- addSources(reactor, AUGMENTED, ROOT);
-
- final SchemaContext root = reactor.buildEffective();
+ final SchemaContext root = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(AUGMENTED, ROOT)
+ .buildEffective();
assertNotNull(root);
final Module augmentedModule = root.findModules("augmented").iterator().next();
assertNotNull(grpAddNode);
}
- private static void addSources(final CrossSourceStatementReactor.BuildAction reactor,
- final StatementStreamSource... sources) {
- for (final StatementStreamSource source : sources) {
- reactor.addSource(source);
- }
- }
-
@Test
public void caseShortHandAugmentingTest() throws Exception {
final SchemaContext context = StmtTestUtils.parseYangSources("/choice-case-type-test-models");
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.EffectiveModelContext;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
@Test
public void readAndParseYangFileTest() throws SourceException, ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(AUGMENTED, ROOT);
-
- EffectiveModelContext result = reactor.build();
+ EffectiveModelContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(AUGMENTED, ROOT)
+ .build();
assertNotNull(result);
}
}
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor.BuildAction;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
public class EffectiveBuildTest {
@Test
public void effectiveBuildTest() throws ReactorException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(SIMPLE_MODULE);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild().addSources(SIMPLE_MODULE)
+ .buildEffective();
assertNotNull(result);
@Test
public void extensionsTest() throws ReactorException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(YANG_EXT);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild().addSource(YANG_EXT).buildEffective();
assertNotNull(result);
Set<GroupingDefinition> groupings = result.getGroupings();
@Test
public void mockTest() throws ReactorException, FileNotFoundException, URISyntaxException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSource(YANG_EXT);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild().addSource(YANG_EXT).buildEffective();
assertNotNull(result);
}
}
@Test
public void inImportOrderTest() throws ReactorException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(ROOT_WITHOUT_IMPORT, IMPORT_ROOT, IMPORT_DERIVED);
- EffectiveModelContext result = reactor.build();
+ EffectiveModelContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(ROOT_WITHOUT_IMPORT, IMPORT_ROOT, IMPORT_DERIVED)
+ .build();
assertNotNull(result);
}
@Test
public void inInverseOfImportOrderTest() throws ReactorException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(IMPORT_DERIVED, IMPORT_ROOT, ROOT_WITHOUT_IMPORT);
- EffectiveModelContext result = reactor.build();
+ EffectiveModelContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(IMPORT_DERIVED, IMPORT_ROOT, ROOT_WITHOUT_IMPORT)
+ .build();
assertNotNull(result);
}
@Test
public void missingImportedSourceTest() {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(IMPORT_DERIVED, ROOT_WITHOUT_IMPORT);
+ BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(IMPORT_DERIVED, ROOT_WITHOUT_IMPORT);
try {
reactor.build();
fail("reactor.process should fail due to missing imported source");
@Test
public void circularImportsTest() {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(CYCLE_YIN, CYCLE_YANG);
+ BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(CYCLE_YIN, CYCLE_YANG);
try {
reactor.build();
fail("reactor.process should fail due to circular import");
@Test
public void selfImportTest() {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(IMPORT_SELF, IMPORT_ROOT, ROOT_WITHOUT_IMPORT);
+ BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(IMPORT_SELF, IMPORT_ROOT, ROOT_WITHOUT_IMPORT);
try {
reactor.build();
fail("reactor.process should fail due to self import");
@Test
public void bug2649Test() throws ReactorException {
- BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(FOO, IMPORT);
-
- SchemaContext buildEffective = reactor.buildEffective();
+ SchemaContext buildEffective = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(FOO, IMPORT)
+ .buildEffective();
assertNotNull(buildEffective);
}
}
import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
public class MoreRevisionsTest {
@Test
public void readAndParseYangFileTest() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSource(REVFILE);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild().addSource(REVFILE).buildEffective();
assertNotNull(result);
final Module moduleByName = result.getModules().iterator().next();
assertEquals("2015-06-07", moduleByName.getQNameModule().getRevision().get().toString());
@Test
public void twoRevisionsTest() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-
- reactor.addSources(TED_20130712, TED_20131021, IETF_TYPES);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(TED_20130712, TED_20131021, IETF_TYPES)
+ .buildEffective();
assertNotNull(result);
}
@Test
public void twoRevisionsTest2() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-
- reactor.addSources(NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021, IETF_TYPES);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021, IETF_TYPES)
+ .buildEffective();
assertNotNull(result);
Set<Module> modules = result.getModules();
@Test
public void moreRevisionsListKeyTest() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
-
- reactor.addSources(TED_20130712, TED_20131021, ISIS_20130712,
- ISIS_20131021, L3_20130712, L3_20131021, IETF_TYPES,
- NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021);
-
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(TED_20130712, TED_20131021, ISIS_20130712, ISIS_20131021, L3_20130712, L3_20131021)
+ .addSources(IETF_TYPES,NETWORK_TOPOLOGY_20130712, NETWORK_TOPOLOGY_20131021)
+ .buildEffective();
assertNotNull(result);
}
public static SchemaContext loadModules(final URI resourceDirectory)
throws ReactorException, IOException, YangSyntaxErrorException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR
- .newBuild();
+ final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
File[] files = new File(resourceDirectory).listFiles();
for (File file : files) {
public static Module loadYinModule(final YinTextSchemaSource source) throws ReactorException, SAXException,
IOException {
- final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(source)));
- SchemaContext ctx = reactor.buildEffective();
+ final SchemaContext ctx = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(YinStatementStreamSource.create(YinTextToDomTransformer.transformSource(source)))
+ .buildEffective();
return ctx.getModules().iterator().next();
}
import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor;
+import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor.BuildAction;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline;
import org.opendaylight.yangtools.yang.stmt.TestUtils;
import org.xml.sax.SAXException;
@Test
public void readAndParseYinFileTestModel() throws SourceException, ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(YIN_FILE, EXT_FILE, EXT_USE_FILE);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSources(YIN_FILE, EXT_FILE, EXT_USE_FILE)
+ .buildEffective();
assertNotNull(result);
}
// parsing yin file whose import statement references a module which does not exist
@Test(expected = SomeModifiersUnresolvedException.class)
public void readAndParseInvalidYinFileTest() throws ReactorException {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(INVALID_YIN_FILE);
- SchemaContext result = reactor.buildEffective();
+ SchemaContext result = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(INVALID_YIN_FILE)
+ .buildEffective();
assertNotNull(result);
}
// parsing yin file with duplicate key name in a list statement
public void readAndParseInvalidYinFileTest2() {
- CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild();
- reactor.addSources(INVALID_YIN_FILE_2);
+ BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild()
+ .addSource(INVALID_YIN_FILE_2);
try {
reactor.buildEffective();
*
* @param source
* which should be added into main sources
+ * @return This build action, for fluent use.
*/
- public void addSource(final StatementStreamSource source) {
+ public BuildAction addSource(final StatementStreamSource source) {
context.addSource(source);
+ return this;
}
/**
*
* @param sources
* which should be added into main sources
+ * @return This build action, for fluent use.
*/
- public void addSources(final StatementStreamSource... sources) {
+ public BuildAction addSources(final StatementStreamSource... sources) {
addSources(Arrays.asList(sources));
+ return this;
}
- public void addSources(final Collection<? extends StatementStreamSource> sources) {
+ public BuildAction addSources(final Collection<? extends StatementStreamSource> sources) {
for (final StatementStreamSource source : sources) {
context.addSource(source);
}
+ return this;
}
/**
*
* @param libSources
* yang sources which should be added into library sources
+ * @return This build action, for fluent use.
*/
- public void addLibSources(final StatementStreamSource... libSources) {
+ public BuildAction addLibSources(final StatementStreamSource... libSources) {
addLibSources(Arrays.asList(libSources));
+ return this;
}
- public void addLibSources(final Collection<StatementStreamSource> libSources) {
+ public BuildAction addLibSources(final Collection<StatementStreamSource> libSources) {
for (final StatementStreamSource libSource : libSources) {
context.addLibSource(libSource);
}
+ return this;
}
/**
* @param supportedFeatures
* Set of supported features in the final SchemaContext.
* If the set is empty, no features encountered will be supported.
+ * @return This build action, for fluent use.
*/
- public void setSupportedFeatures(@Nonnull final Set<QName> supportedFeatures) {
+ public BuildAction setSupportedFeatures(@Nonnull final Set<QName> supportedFeatures) {
checkState(!supportedFeaturesSet, "Supported features should be set only once.");
context.setSupportedFeatures(requireNonNull(supportedFeatures));
supportedFeaturesSet = true;
+ return this;
}
/**
* @param modulesDeviatedByModules
* Map of YANG modules (Map key) which can be deviated by specified modules (Map value) in the final
* SchemaContext. If the map is empty, no deviations encountered will be supported.
+ * @return This build action, for fluent use.
*/
- public void setModulesWithSupportedDeviations(
+ public BuildAction setModulesWithSupportedDeviations(
@Nonnull final Map<QNameModule, Set<QNameModule>> modulesDeviatedByModules) {
checkState(!modulesDeviatedByModulesSet, "Modules with supported deviations should be set only once.");
context.setModulesDeviatedByModules(requireNonNull(modulesDeviatedByModules));
modulesDeviatedByModulesSet = true;
+ return this;
}
/**