X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fcluster%2Fdatastore%2Fmodel%2FSchemaContextHelper.java;h=2a3e62176c20078916fce36974a5d50040a920d5;hb=4e696d9795fe7eef40369c05c340d137394126f3;hp=33957388463fd6225feb57ce1135364ee90d2551;hpb=c222e37f2a0f0f3f6266242fbea2d3b018f4e6e3;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java index 3395738846..2a3e62176c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java @@ -8,30 +8,70 @@ package org.opendaylight.controller.md.cluster.datastore.model; -import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; - +import com.google.common.io.ByteSource; +import com.google.common.io.Resources; +import java.io.File; +import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import java.util.Set; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; +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 SchemaContextHelper { + public static final String ODL_DATASTORE_TEST_YANG = "/odl-datastore-test.yang"; + public static final String PEOPLE_YANG = "/people.yang"; + public static final String CARS_YANG = "/cars.yang"; + public static InputStream getInputStream(final String yangFileName) { - return TestModel.class.getResourceAsStream(yangFileName); + return SchemaContextHelper.class.getResourceAsStream(yangFileName); } public static SchemaContext full(){ - YangParserImpl parser = new YangParserImpl(); + return select(ODL_DATASTORE_TEST_YANG, PEOPLE_YANG, CARS_YANG); + } + + public static SchemaContext select(String... schemaFiles){ + final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); + final SchemaContext schemaContext; List streams = new ArrayList<>(); - streams.add(getInputStream("/odl-datastore-test.yang")); - streams.add(getInputStream("/people.yang")); - streams.add(getInputStream("/cars.yang")); - Set modules = parser.parseYangModelsFromStreams(streams); - return parser.resolveSchemaContext(modules); + for(String schemaFile : schemaFiles){ + streams.add(getInputStream(schemaFile)); + } + + try { + schemaContext = reactor.buildEffective(streams); + } catch (ReactorException e) { + throw new RuntimeException("Unable to build schema context from " + streams, e); + } + + return schemaContext; + } + + public static SchemaContext entityOwners() { + final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); + final SchemaContext schemaContext; + File file = null; + try { + file = new File("src/main/yang/entity-owners.yang"); + final List sources = Arrays.asList(Resources.asByteSource(file.toURI().toURL())); + try { + schemaContext = reactor.buildEffective(sources); + } catch (IOException e1) { + throw new ExceptionInInitializerError(e1); + } catch (ReactorException e2) { + throw new RuntimeException("Unable to build schema context from " + sources, e2); + } + return schemaContext; + } catch (MalformedURLException e3) { + throw new RuntimeException("Malformed URL detected in " + file, e3); + } } }