Bump odlparent/yangtools/mdsal
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / md / cluster / datastore / model / SchemaContextHelper.java
index 33957388463fd6225feb57ce1135364ee90d2551..0e421b1bc6065225622ad088afb96e8c8f1f419e 100644 (file)
@@ -5,33 +5,50 @@
  * 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.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 java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+
+public final 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";
+
+    private static volatile EffectiveModelContext FULL;
 
-public class SchemaContextHelper {
+    private SchemaContextHelper() {
+
+    }
 
     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();
-        List<InputStream> streams = new ArrayList<>();
-        streams.add(getInputStream("/odl-datastore-test.yang"));
-        streams.add(getInputStream("/people.yang"));
-        streams.add(getInputStream("/cars.yang"));
+    public static EffectiveModelContext full() {
+        EffectiveModelContext ret = FULL;
+        if (ret == null) {
+            synchronized (SchemaContextHelper.class) {
+                ret = FULL;
+                if (ret == null) {
+                    ret = FULL = select(ODL_DATASTORE_TEST_YANG, PEOPLE_YANG, CARS_YANG);
+                }
+            }
+        }
+
+        return ret;
+    }
 
-        Set<Module> modules = parser.parseYangModelsFromStreams(streams);
-        return parser.resolveSchemaContext(modules);
+    public static EffectiveModelContext select(final String... schemaFiles) {
+        return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, schemaFiles);
+    }
 
+    public static EffectiveModelContext distributedShardedDOMDataTreeSchemaContext() {
+        // we need prefix-shard-configuration and odl-datastore-test models
+        // for DistributedShardedDOMDataTree tests
+        return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, ODL_DATASTORE_TEST_YANG,
+            "/META-INF/yang/prefix-shard-configuration@2017-01-10.yang");
     }
 }