From c9fac55958e5492dd7e5ae387e8d6d50e78c2fd1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 30 Sep 2019 07:08:26 +0200 Subject: [PATCH] Make DOMSchemaService operate of EffectiveModelContext We are stepping towards working on Declared/EffectiveStatements instead of SchemaNodes, this exposes EffectiveModelContext from the DOMSchemaService. JIRA: MDSAL-435 Change-Id: I6b24f423e104683e008a97595647a7b9ce4d3a11 Signed-off-by: Robert Varga --- .../adapter/BindingToNormalizedNodeCodec.java | 9 +++--- .../adapter/BindingNormalizedCodecTest.java | 26 +++++++++------- .../test/AbstractBaseDataBrokerTest.java | 7 ++--- .../adapter/test/AbstractDataBrokerTest.java | 4 +-- .../AbstractDataBrokerTestCustomizer.java | 4 +-- .../test/AbstractNotificationBrokerTest.java | 4 +-- .../adapter/test/AbstractSchemaAwareTest.java | 25 ++++++++-------- .../adapter/test/util/MockSchemaService.java | 29 ++++++++---------- .../mdsal/dom/api/DOMSchemaService.java | 15 ++++++---- .../dom/broker/AbstractDOMRoutingTable.java | 13 ++++---- .../dom/broker/DOMActionRoutingTable.java | 9 +++--- .../mdsal/dom/broker/DOMRpcRouter.java | 13 ++++---- .../mdsal/dom/broker/DOMRpcRoutingTable.java | 7 +++-- .../schema/ScanningSchemaServiceProvider.java | 22 +++++++------- .../mdsal/dom/broker/DOMBrokerTest.java | 4 +-- .../broker/DOMDataTreeChangeListenerTest.java | 2 +- .../dom/broker/DOMDataTreeListenerTest.java | 4 +-- .../mdsal/dom/broker/DOMRpcRouterTest.java | 2 +- .../dom/broker/DOMTransactionChainTest.java | 4 +-- ...rdedDOMDataTreeProducerMultiShardTest.java | 12 ++++---- .../dom/broker/ShardedDOMDataTreeTest.java | 12 ++++---- .../ScanningSchemaServiceProviderTest.java | 23 +++++++------- .../store/inmemory/InMemoryDOMDataStore.java | 21 +++++-------- .../inmemory/InMemoryDOMDataTreeShard.java | 10 +++---- .../InMemoryDOMDataStoreFactoryTest.java | 6 ++-- .../InMemoryDOMDataTreeShardTest.java | 2 +- .../store/inmemory/InMemoryDataStoreTest.java | 19 +++++++++--- .../mdsal/dom/store/inmemory/TestModel.java | 4 +-- ...pl.java => EffectiveModelContextImpl.java} | 22 +++++++------- .../osgi/impl/OSGiDOMSchemaService.java | 30 +++++++++---------- .../mdsal/dom/schema/osgi/impl/TestModel.java | 4 +-- .../dom/spi/AbstractDOMSchemaService.java | 10 +++---- .../mdsal/dom/spi/FixedDOMSchemaService.java | 25 ++++++++-------- 33 files changed, 210 insertions(+), 193 deletions(-) rename dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/{SchemaSchemaContextListenerImpl.java => EffectiveModelContextImpl.java} (60%) 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 b65573aaff..14afc58e6c 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 @@ -66,11 +66,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.codec.DeserializationException; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.NotificationDefinition; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,7 +84,7 @@ import org.slf4j.LoggerFactory; * NOTE: this class is non-final to allow controller adapter migration without duplicated code. */ @Singleton -public class BindingToNormalizedNodeCodec implements BindingNormalizedNodeSerializer, SchemaContextListener, +public class BindingToNormalizedNodeCodec implements BindingNormalizedNodeSerializer, EffectiveModelContextListener, AutoCloseable { private static final long WAIT_DURATION_SEC = 5; @@ -317,9 +318,9 @@ public class BindingToNormalizedNodeCodec implements BindingNormalizedNodeSerial } @Override - public void onGlobalContextUpdated(final SchemaContext context) { + public void onModelContextUpdated(final EffectiveModelContext newModelContext) { final BindingRuntimeContext runtimeContext = DefaultBindingRuntimeContext.create( - generator.generateTypeMapping(context), classLoadingStrategy); + generator.generateTypeMapping(newModelContext), classLoadingStrategy); codecRegistry.onBindingRuntimeContextUpdated(runtimeContext); futureSchema.onRuntimeContextUpdated(runtimeContext); } 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 e19d958e98..eec5c987ee 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 @@ -41,9 +41,10 @@ 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.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; +import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement; import org.opendaylight.yangtools.yang.model.util.AbstractSchemaContext; public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @@ -61,10 +62,10 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { .node(TopLevelList.QNAME).nodeWithKey(TopLevelList.QNAME, NAME_QNAME, TOP_FOO_KEY.getName()).build(); private BindingToNormalizedNodeCodec codec; - private SchemaContext context; + private EffectiveModelContext context; @Override - protected void setupWithSchema(final SchemaContext schemaContext) { + protected void setupWithSchema(final EffectiveModelContext schemaContext) { this.context = schemaContext; this.codec = new BindingToNormalizedNodeCodec(new DefaultBindingRuntimeGenerator(), GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), new BindingNormalizedNodeCodecRegistry(), @@ -73,7 +74,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @Test public void testComplexAugmentationSerialization() { - this.codec.onGlobalContextUpdated(this.context); + this.codec.onModelContextUpdated(this.context); final PathArgument lastArg = this.codec.toYangInstanceIdentifier(BA_TREE_COMPLEX_USES).getLastPathArgument(); assertTrue(lastArg instanceof AugmentationIdentifier); } @@ -81,7 +82,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @Test public void testLeafOnlyAugmentationSerialization() { - this.codec.onGlobalContextUpdated(this.context); + this.codec.onModelContextUpdated(this.context); final PathArgument leafOnlyLastArg = this.codec.toYangInstanceIdentifier(BA_TREE_LEAF_ONLY) .getLastPathArgument(); assertTrue(leafOnlyLastArg instanceof AugmentationIdentifier); @@ -91,7 +92,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @Test @SuppressWarnings("checkstyle:illegalCatch") public void testToYangInstanceIdentifierBlocking() { - this.codec.onGlobalContextUpdated(new EmptySchemaContext()); + this.codec.onModelContextUpdated(new EmptyEffectiveModelContext()); final CountDownLatch done = new CountDownLatch(1); final AtomicReference yangId = new AtomicReference<>(); @@ -107,7 +108,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { }).start(); Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS); - this.codec.onGlobalContextUpdated(this.context); + this.codec.onModelContextUpdated(this.context); assertTrue("toYangInstanceIdentifierBlocking completed", Uninterruptibles.awaitUninterruptibly(done, 3, TimeUnit.SECONDS)); @@ -125,7 +126,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { @Test public void testGetRpcMethodToSchemaPathBlocking() { - this.codec.onGlobalContextUpdated(new EmptySchemaContext()); + this.codec.onModelContextUpdated(new EmptyEffectiveModelContext()); testGetRpcMethodToSchemaPath(); } @@ -146,7 +147,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { }).start(); Uninterruptibles.sleepUninterruptibly(500, TimeUnit.MILLISECONDS); - this.codec.onGlobalContextUpdated(this.context); + this.codec.onModelContextUpdated(this.context); assertTrue("getRpcMethodToSchemaPath completed", Uninterruptibles.awaitUninterruptibly(done, 3, TimeUnit.SECONDS)); @@ -163,7 +164,7 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { fail("rockTheHouse RPC method not found"); } - static class EmptySchemaContext extends AbstractSchemaContext { + static class EmptyEffectiveModelContext extends AbstractSchemaContext implements EffectiveModelContext { @Override public Set getModules() { return ImmutableSet.of(); @@ -183,5 +184,10 @@ public class BindingNormalizedCodecTest extends AbstractSchemaAwareTest { protected SetMultimap getNameToModules() { return ImmutableSetMultimap.of(); } + + @Override + public Map getModuleStatements() { + return ImmutableMap.of(); + } } } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractBaseDataBrokerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractBaseDataBrokerTest.java index 9f8baa5436..ea4c2ef27c 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractBaseDataBrokerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractBaseDataBrokerTest.java @@ -13,10 +13,9 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.mdsal.dom.api.DOMDataBroker; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public abstract class AbstractBaseDataBrokerTest extends AbstractSchemaAwareTest { - private static final int ASSERT_COMMIT_DEFAULT_TIMEOUT = 5000; private AbstractDataBrokerTestCustomizer testCustomizer; @@ -33,7 +32,7 @@ public abstract class AbstractBaseDataBrokerTest extends AbstractSchemaAwareTest } @Override - protected void setupWithSchema(final SchemaContext context) { + protected void setupWithSchema(final EffectiveModelContext context) { testCustomizer = createDataBrokerTestCustomizer(); dataBroker = testCustomizer.createDataBroker(); domBroker = testCustomizer.getDOMDataBroker(); @@ -52,7 +51,7 @@ public abstract class AbstractBaseDataBrokerTest extends AbstractSchemaAwareTest assertCommit(commit, ASSERT_COMMIT_DEFAULT_TIMEOUT); } - protected static final void assertCommit(final ListenableFuture commit, long timeoutInMS) { + protected static final void assertCommit(final ListenableFuture commit, final long timeoutInMS) { try { commit.get(timeoutInMS, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTest.java index 41c1963fe9..8f1639f092 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTest.java @@ -8,7 +8,7 @@ package org.opendaylight.mdsal.binding.dom.adapter.test; import org.opendaylight.mdsal.binding.api.DataBroker; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; /** * Abstract base for DataBroker tests. Note that it performs synchronous commits via a direct executor which can cause @@ -21,7 +21,7 @@ public class AbstractDataBrokerTest extends AbstractBaseDataBrokerTest { } @Override - protected void setupWithSchema(SchemaContext context) { + protected void setupWithSchema(final EffectiveModelContext context) { super.setupWithSchema(context); setupWithDataBroker(getDataBroker()); } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTestCustomizer.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTestCustomizer.java index 05112678ed..120bbfc398 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTestCustomizer.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractDataBrokerTestCustomizer.java @@ -28,7 +28,7 @@ import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter; import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker; import org.opendaylight.mdsal.dom.spi.store.DOMStore; import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public abstract class AbstractDataBrokerTestCustomizer { @@ -110,7 +110,7 @@ public abstract class AbstractDataBrokerTestCustomizer { return this.datastores; } - public void updateSchema(final SchemaContext ctx) { + public void updateSchema(final EffectiveModelContext ctx) { this.schemaService.changeSchema(ctx); } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractNotificationBrokerTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractNotificationBrokerTest.java index c711bca0f6..abcc6e74c3 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractNotificationBrokerTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractNotificationBrokerTest.java @@ -11,7 +11,7 @@ import org.opendaylight.mdsal.binding.api.NotificationPublishService; import org.opendaylight.mdsal.binding.api.NotificationService; import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec; import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public class AbstractNotificationBrokerTest extends AbstractSchemaAwareTest { private BindingToNormalizedNodeCodec bindingToNormalizedNodeCodec; @@ -21,7 +21,7 @@ public class AbstractNotificationBrokerTest extends AbstractSchemaAwareTest { @Override - protected void setupWithSchema(final SchemaContext context) { + protected void setupWithSchema(final EffectiveModelContext context) { final DataBrokerTestCustomizer testCustomizer = createDataBrokerTestCustomizer(); domNotificationRouter = testCustomizer.getDomNotificationRouter(); notificationService = testCustomizer.createNotificationService(); diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractSchemaAwareTest.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractSchemaAwareTest.java index 9b8505325d..05a3c46922 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractSchemaAwareTest.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/AbstractSchemaAwareTest.java @@ -17,18 +17,19 @@ import org.opendaylight.binding.runtime.spi.GeneratedClassLoadingStrategy; import org.opendaylight.binding.runtime.spi.ModuleInfoBackedContext; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; import org.opendaylight.yangtools.yang.binding.YangModuleInfo; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; public abstract class AbstractSchemaAwareTest { - private static final LoadingCache, SchemaContext> SCHEMA_CONTEXT_CACHE = - CacheBuilder.newBuilder().weakValues().build(new CacheLoader, SchemaContext>() { - @Override - public SchemaContext load(final Set key) { - return ModuleInfoBackedContext.cacheContext( - GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), ImmutableSet.copyOf(key)) - .tryToCreateModelContext().get(); - } - }); + private static final LoadingCache, EffectiveModelContext> SCHEMA_CONTEXT_CACHE = + CacheBuilder.newBuilder().weakValues().build( + new CacheLoader, EffectiveModelContext>() { + @Override + public EffectiveModelContext load(final Set key) { + return ModuleInfoBackedContext.cacheContext( + GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), ImmutableSet.copyOf(key)) + .tryToCreateModelContext().get(); + } + }); @Before public final void setup() throws Exception { @@ -39,7 +40,7 @@ public abstract class AbstractSchemaAwareTest { return BindingReflections.cacheModuleInfos(Thread.currentThread().getContextClassLoader()); } - protected SchemaContext getSchemaContext() throws Exception { + protected EffectiveModelContext getSchemaContext() throws Exception { return SCHEMA_CONTEXT_CACHE.getUnchecked(getModuleInfos()); } @@ -48,5 +49,5 @@ public abstract class AbstractSchemaAwareTest { * * @param context schema context */ - protected abstract void setupWithSchema(SchemaContext context); + protected abstract void setupWithSchema(EffectiveModelContext context); } diff --git a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java index a75d987c04..32545a1854 100644 --- a/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java +++ b/binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/test/util/MockSchemaService.java @@ -13,34 +13,29 @@ import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.api.DOMSchemaServiceExtension; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.util.ListenerRegistry; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; -import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider; -public final class MockSchemaService implements DOMSchemaService, SchemaContextProvider { +public final class MockSchemaService implements DOMSchemaService, EffectiveModelContextProvider { - private SchemaContext schemaContext; + private EffectiveModelContext schemaContext; - final ListenerRegistry listeners = ListenerRegistry.create(); + final ListenerRegistry listeners = ListenerRegistry.create(); @Override - public synchronized SchemaContext getGlobalContext() { + public synchronized EffectiveModelContext getGlobalContext() { return schemaContext; } @Override - public synchronized SchemaContext getSessionContext() { - return schemaContext; - } - - @Override - public ListenerRegistration registerSchemaContextListener( - final SchemaContextListener listener) { + public ListenerRegistration registerSchemaContextListener( + final EffectiveModelContextListener listener) { return listeners.register(listener); } @Override - public synchronized SchemaContext getSchemaContext() { + public synchronized EffectiveModelContext getEffectiveModelContext() { return schemaContext; } @@ -49,8 +44,8 @@ public final class MockSchemaService implements DOMSchemaService, SchemaContextP return ImmutableClassToInstanceMap.of(); } - public synchronized void changeSchema(final SchemaContext newContext) { + public synchronized void changeSchema(final EffectiveModelContext newContext) { schemaContext = newContext; - listeners.streamListeners().forEach(listener -> listener.onGlobalContextUpdated(schemaContext)); + listeners.streamListeners().forEach(listener -> listener.onModelContextUpdated(schemaContext)); } } diff --git a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMSchemaService.java b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMSchemaService.java index 8066671d6d..a0342fc9be 100644 --- a/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMSchemaService.java +++ b/dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMSchemaService.java @@ -8,23 +8,27 @@ package org.opendaylight.mdsal.dom.api; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; public interface DOMSchemaService extends DOMExtensibleService { /** * Returns session specific YANG schema context. * * @return schemaContext + * @deprecated This method never fully materialized, use {@link #getGlobalContext()} instead. */ - SchemaContext getSessionContext(); + @Deprecated + default EffectiveModelContext getSessionContext() { + throw new UnsupportedOperationException("getSessionContext() is not specified nor implemented"); + } /** * Returns global schema context. * * @return schemaContext */ - SchemaContext getGlobalContext(); + EffectiveModelContext getGlobalContext(); /** * Register a listener for changes in schema context. @@ -32,5 +36,6 @@ public interface DOMSchemaService extends DOMExtensibleService registerSchemaContextListener(SchemaContextListener listener); + ListenerRegistration registerSchemaContextListener( + EffectiveModelContextListener listener); } diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRoutingTable.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRoutingTable.java index 914164d62d..ae81b34fd4 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRoutingTable.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/AbstractDOMRoutingTable.java @@ -26,7 +26,7 @@ import java.util.Map.Entry; import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; /** @@ -41,15 +41,14 @@ import org.opendaylight.yangtools.yang.model.api.SchemaPath; abstract class AbstractDOMRoutingTable> { private final Map operations; - private final SchemaContext schemaContext; + private final EffectiveModelContext schemaContext; - AbstractDOMRoutingTable(final Map operations, - final SchemaContext schemaContext) { + AbstractDOMRoutingTable(final Map operations, final EffectiveModelContext schemaContext) { this.operations = requireNonNull(operations); this.schemaContext = schemaContext; } - AbstractDOMRoutingTable setSchemaContext(final SchemaContext context) { + AbstractDOMRoutingTable setSchemaContext(final EffectiveModelContext context) { final Builder b = ImmutableMap.builder(); for (Entry e : operations.entrySet()) { @@ -149,9 +148,9 @@ abstract class AbstractDOMRoutingTable newInstance(Map operations, - SchemaContext schemaContext); + EffectiveModelContext schemaContext); abstract ListMultimap decomposeIdentifiers(Set instances); - abstract E createOperationEntry(SchemaContext context, SchemaPath key, Map> implementations); + abstract E createOperationEntry(EffectiveModelContext context, SchemaPath key, Map> implementations); } diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMActionRoutingTable.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMActionRoutingTable.java index 00a062cba1..58669acfa4 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMActionRoutingTable.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMActionRoutingTable.java @@ -20,6 +20,7 @@ import org.opendaylight.mdsal.dom.api.DOMActionInstance; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; import org.opendaylight.yangtools.yang.model.api.ActionNodeContainer; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -35,13 +36,13 @@ final class DOMActionRoutingTable extends AbstractDOMRoutingTable actions, - final SchemaContext schemaContext) { + final EffectiveModelContext schemaContext) { super(actions, schemaContext); } @Override protected DOMActionRoutingTable newInstance(final Map operations, - final SchemaContext schemaContext) { + final EffectiveModelContext schemaContext) { return new DOMActionRoutingTable(operations, schemaContext); } @@ -56,8 +57,8 @@ final class DOMActionRoutingTable extends AbstractDOMRoutingTable> implementations) { + protected DOMActionRoutingTableEntry createOperationEntry(final EffectiveModelContext context, + final SchemaPath type, final Map> implementations) { final ActionDefinition actionDef = findActionDefinition(context, type); if (actionDef == null) { //FIXME: return null directly instead of providing kind of unknown entry. diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java index e05d4e628e..2128bd7fa9 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMRpcRouter.java @@ -69,13 +69,13 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public final class DOMRpcRouter extends AbstractRegistration implements SchemaContextListener { +public final class DOMRpcRouter extends AbstractRegistration implements EffectiveModelContextListener { private static final ThreadFactory THREAD_FACTORY = new ThreadFactoryBuilder().setNameFormat( "DOMRpcRouter-listener-%s").setDaemon(true).build(); @@ -175,13 +175,14 @@ public final class DOMRpcRouter extends AbstractRegistration implements SchemaCo } @Override - public synchronized void onGlobalContextUpdated(final SchemaContext context) { + public synchronized void onModelContextUpdated(final EffectiveModelContext newModelContext) { final DOMRpcRoutingTable oldTable = routingTable; - final DOMRpcRoutingTable newTable = (DOMRpcRoutingTable) oldTable.setSchemaContext(context); + final DOMRpcRoutingTable newTable = (DOMRpcRoutingTable) oldTable.setSchemaContext(newModelContext); routingTable = newTable; final DOMActionRoutingTable oldActionTable = actionRoutingTable; - final DOMActionRoutingTable newActionTable = (DOMActionRoutingTable) oldActionTable.setSchemaContext(context); + final DOMActionRoutingTable newActionTable = + (DOMActionRoutingTable) oldActionTable.setSchemaContext(newModelContext); actionRoutingTable = newActionTable; } 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 6a70f38ba3..82249d6266 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 @@ -19,6 +19,7 @@ import org.opendaylight.mdsal.dom.api.DOMRpcImplementation; import org.opendaylight.mdsal.dom.spi.RpcRoutingStrategy; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -29,7 +30,7 @@ final class DOMRpcRoutingTable extends AbstractDOMRoutingTable rpcs, - final SchemaContext schemaContext) { + final EffectiveModelContext schemaContext) { super(rpcs, schemaContext); } @@ -40,7 +41,7 @@ final class DOMRpcRoutingTable extends AbstractDOMRoutingTable operations, - final SchemaContext schemaContext) { + final EffectiveModelContext schemaContext) { return new DOMRpcRoutingTable(operations, schemaContext); } @@ -55,7 +56,7 @@ final class DOMRpcRoutingTable extends AbstractDOMRoutingTable> implementations) { final RpcDefinition rpcDef = findRpcDefinition(context, key); if (rpcDef == null) { 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 98e084f548..1b7d8c55e5 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 @@ -19,8 +19,8 @@ import org.opendaylight.mdsal.dom.spi.AbstractDOMSchemaService; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.util.ListenerRegistry; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; @@ -36,12 +36,12 @@ public class ScanningSchemaServiceProvider extends AbstractDOMSchemaService.With private final YangTextSchemaContextResolver contextResolver = YangTextSchemaContextResolver.create("global-bundle"); @GuardedBy("lock") - private final ListenerRegistry listeners = ListenerRegistry.create(); + private final ListenerRegistry listeners = ListenerRegistry.create(); private final Object lock = new Object(); public void tryToUpdateSchemaContext() { synchronized (lock) { - final Optional optSchema = contextResolver.getSchemaContext(); + final Optional optSchema = contextResolver.getEffectiveModelContext(); optSchema.ifPresent(schema -> { if (LOG.isDebugEnabled()) { LOG.debug("Got new SchemaContext: # of modules {}", schema.getModules().size()); @@ -53,11 +53,11 @@ public class ScanningSchemaServiceProvider extends AbstractDOMSchemaService.With @VisibleForTesting @SuppressWarnings("checkstyle:IllegalCatch") - public void notifyListeners(final SchemaContext schemaContext) { + public void notifyListeners(final EffectiveModelContext schemaContext) { synchronized (lock) { listeners.streamListeners().forEach(listener -> { try { - listener.onGlobalContextUpdated(schemaContext); + listener.onModelContextUpdated(schemaContext); } catch (final Exception e) { LOG.error("Exception occured during invoking listener {}", listener, e); } @@ -84,15 +84,15 @@ public class ScanningSchemaServiceProvider extends AbstractDOMSchemaService.With } @Override - public SchemaContext getGlobalContext() { - return contextResolver.getSchemaContext().orElse(null); + public EffectiveModelContext getGlobalContext() { + return contextResolver.getEffectiveModelContext().orElse(null); } @Override - public ListenerRegistration registerSchemaContextListener( - final SchemaContextListener listener) { + public ListenerRegistration registerSchemaContextListener( + final EffectiveModelContextListener listener) { synchronized (lock) { - contextResolver.getSchemaContext().ifPresent(listener::onGlobalContextUpdated); + contextResolver.getEffectiveModelContext().ifPresent(listener::onModelContextUpdated); return listeners.register(listener); } } 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 f4ed7f182b..598eb7584a 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 @@ -62,8 +62,8 @@ public class DOMBrokerTest extends AbstractDatastoreTest { final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", MoreExecutors.newDirectExecutorService()); - operStore.onGlobalContextUpdated(SCHEMA_CONTEXT); - configStore.onGlobalContextUpdated(SCHEMA_CONTEXT); + operStore.onModelContextUpdated(SCHEMA_CONTEXT); + configStore.onModelContextUpdated(SCHEMA_CONTEXT); final ImmutableMap stores = ImmutableMap.builder() diff --git a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeChangeListenerTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeChangeListenerTest.java index 3fa4e3eabb..a9caac9acb 100644 --- a/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeChangeListenerTest.java +++ b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMDataTreeChangeListenerTest.java @@ -42,7 +42,7 @@ public class DOMDataTreeChangeListenerTest extends AbstractDatastoreTest { @Before public void setUp() { domStore = new InMemoryDOMDataStore("Mdsal217", MoreExecutors.newDirectExecutorService()); - domStore.onGlobalContextUpdated(SCHEMA_CONTEXT); + domStore.onModelContextUpdated(SCHEMA_CONTEXT); } @Test 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 9c5848ca22..8342f227db 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 @@ -93,8 +93,8 @@ public class DOMDataTreeListenerTest extends AbstractDatastoreTest { final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", MoreExecutors.newDirectExecutorService()); - operStore.onGlobalContextUpdated(SCHEMA_CONTEXT); - configStore.onGlobalContextUpdated(SCHEMA_CONTEXT); + operStore.onModelContextUpdated(SCHEMA_CONTEXT); + configStore.onModelContextUpdated(SCHEMA_CONTEXT); final ImmutableMap stores = ImmutableMap.builder() 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 fd9461b6d9..f35adf97ed 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 @@ -70,7 +70,7 @@ public class DOMRpcRouterTest extends TestUtils { final DOMRpcRoutingTable routingTableOriginal = rpcRouter.routingTable(); - rpcRouter.onGlobalContextUpdated(TestModel.createTestContext()); + rpcRouter.onModelContextUpdated(TestModel.createTestContext()); final DOMRpcRoutingTable routingTableChanged = rpcRouter.routingTable(); assertNotEquals(routingTableOriginal, routingTableChanged); 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 28a5539956..005745b53d 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 @@ -46,8 +46,8 @@ public class DOMTransactionChainTest extends AbstractDatastoreTest { final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", MoreExecutors.newDirectExecutorService()); - operStore.onGlobalContextUpdated(SCHEMA_CONTEXT); - configStore.onGlobalContextUpdated(SCHEMA_CONTEXT); + operStore.onModelContextUpdated(SCHEMA_CONTEXT); + configStore.onModelContextUpdated(SCHEMA_CONTEXT); final ImmutableMap stores = ImmutableMap.builder() 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 25bc4b2bf9..978d4fba96 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 @@ -92,7 +92,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT MockitoAnnotations.initMocks(this); rootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - rootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + rootShard.onModelContextUpdated(SCHEMA_CONTEXT); final ShardedDOMDataTree dataTree = new ShardedDOMDataTree(); final DOMDataTreeProducer shardRegProducer = dataTree.createProducer(Collections.singletonList(ROOT_ID)); @@ -213,7 +213,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap()); final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); innerShardReg = dataTreeService.registerDataTreeShard(INNER_CONTAINER_ID, innerShard, shardRegProducer); @@ -253,7 +253,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT @Test public void testMultipleShardsProducerClose() throws Exception { final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); assertTrue(rootShard.getProducers().isEmpty()); @@ -296,7 +296,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT @Test public void testMultipleShardsChildProducerClose() throws Exception { final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer innerShardRegProducer = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); @@ -336,7 +336,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT @Test public void testMultipleShardsProducerCloseForSubshardAttached() throws Exception { final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer innerShardRegProducer = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); @@ -359,7 +359,7 @@ public class ShardedDOMDataTreeProducerMultiShardTest extends AbstractDatastoreT Collections.singletonList(INNER_CONTAINER_ID).toString()); final InMemoryDOMDataTreeShard test2Shard = InMemoryDOMDataTreeShard.create(TEST2_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer test2ShardRegProducer = dataTreeService.createProducer(Collections.singletonList(TEST2_ID)); 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 c50438cabb..771312c05c 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 @@ -92,7 +92,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { MockitoAnnotations.initMocks(this); rootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - rootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + rootShard.onModelContextUpdated(SCHEMA_CONTEXT); final ShardedDOMDataTree dataTree = new ShardedDOMDataTree(); final DOMDataTreeProducer shardRegProducer = dataTree.createProducer(Collections.singletonList(ROOT_ID)); @@ -119,7 +119,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { rootShardReg.close(); final InMemoryDOMDataTreeShard newRootShard = InMemoryDOMDataTreeShard.create(ROOT_ID, executor, 1); - newRootShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + newRootShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer = dataTreeService.createProducer(Collections.singletonList(ROOT_ID)); final ListenerRegistration newRootShardReg = @@ -127,7 +127,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { shardRegProducer.close(); final InMemoryDOMDataTreeShard innerShard = InMemoryDOMDataTreeShard.create(INNER_CONTAINER_ID, executor, 1); - innerShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + innerShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer shardRegProducer2 = dataTreeService.createProducer(Collections.singletonList(INNER_CONTAINER_ID)); ListenerRegistration innerShardReg = @@ -210,7 +210,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { doNothing().when(mockedDataTreeListener).onDataTreeChanged(anyCollection(), anyMap()); InMemoryDOMDataTreeShard testShard = InMemoryDOMDataTreeShard.create(TEST_ID, executor, 1); - testShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + testShard.onModelContextUpdated(SCHEMA_CONTEXT); final DOMDataTreeProducer regProducer = dataTreeService.createProducer(Collections.singleton(TEST_ID)); dataTreeService.registerDataTreeShard(TEST_ID, testShard, regProducer); @@ -257,7 +257,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { final DOMDataTreeProducer shardProducer = dataTreeService.createProducer( Collections.singletonList(outerListPath)); final InMemoryDOMDataTreeShard outerListShard = InMemoryDOMDataTreeShard.create(outerListPath, executor, 1000); - outerListShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + outerListShard.onModelContextUpdated(SCHEMA_CONTEXT); final ListenerRegistration oid1ShardRegistration = dataTreeService.registerDataTreeShard(outerListPath, outerListShard, shardProducer); @@ -402,7 +402,7 @@ public class ShardedDOMDataTreeTest extends AbstractDatastoreTest { public void testLargerSubshardSpace() throws Exception { final InMemoryDOMDataTreeShard outerListShard = InMemoryDOMDataTreeShard.create(OUTER_LIST_ID, executor, 1, 1); - outerListShard.onGlobalContextUpdated(SCHEMA_CONTEXT); + outerListShard.onModelContextUpdated(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/schema/ScanningSchemaServiceProviderTest.java b/dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/schema/ScanningSchemaServiceProviderTest.java index e06ccdee07..a285b6affe 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 @@ -24,8 +24,9 @@ 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.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; 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.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; @@ -66,8 +67,8 @@ public class ScanningSchemaServiceProviderTest { assertFalse(schemaService.hasListeners()); final SchemaContextHolder actualSchemaCtx = new SchemaContextHolder(); - final SchemaContextListener listener = actualSchemaCtx::setSchemaContext; - final ListenerRegistration registerSchemaContextListener = + final EffectiveModelContextListener listener = actualSchemaCtx::setSchemaContext; + final ListenerRegistration registerSchemaContextListener = schemaService.registerSchemaContextListener(listener); assertEquals(registerSchemaContextListener.getInstance(), listener); assertEquals(schemaService.getSchemaContext(), actualSchemaCtx.getSchemaContext()); @@ -75,14 +76,14 @@ public class ScanningSchemaServiceProviderTest { @Test public void notifyListenersTest() { - final SchemaContext baseSchemaCtx = schemaService.getGlobalContext(); + final EffectiveModelContext baseSchemaCtx = schemaService.getGlobalContext(); assertNotNull(baseSchemaCtx); assertTrue(baseSchemaCtx.getModules().size() == 1); final SchemaContextHolder actualSchemaCtx = new SchemaContextHolder(); - final SchemaContextListener schemaCtxListener = actualSchemaCtx::setSchemaContext; - final ListenerRegistration registerSchemaContextListener = + final EffectiveModelContextListener schemaCtxListener = actualSchemaCtx::setSchemaContext; + final ListenerRegistration registerSchemaContextListener = schemaService.registerSchemaContextListener(schemaCtxListener); assertEquals(registerSchemaContextListener.getInstance(), schemaCtxListener); assertNotNull(actualSchemaCtx.getSchemaContext()); @@ -91,7 +92,7 @@ public class ScanningSchemaServiceProviderTest { addYang("/empty-test1.yang"); addYangs(schemaService); - final SchemaContext nextSchemaCtx = schemaService.getGlobalContext(); + final EffectiveModelContext nextSchemaCtx = schemaService.getGlobalContext(); assertNotNull(nextSchemaCtx); assertTrue(nextSchemaCtx.getModules().size() == 2); @@ -103,7 +104,7 @@ public class ScanningSchemaServiceProviderTest { addYang("/empty-test2.yang"); addYangs(schemaService); - final SchemaContext unregistredListenerSchemaCtx = schemaService.getGlobalContext(); + final EffectiveModelContext unregistredListenerSchemaCtx = schemaService.getGlobalContext(); assertNotNull(unregistredListenerSchemaCtx); assertTrue(unregistredListenerSchemaCtx.getModules().size() == 3); @@ -170,13 +171,13 @@ public class ScanningSchemaServiceProviderTest { private class SchemaContextHolder { - private SchemaContext schemaCtx; + private EffectiveModelContext schemaCtx; - public void setSchemaContext(final SchemaContext ctx) { + public void setSchemaContext(final EffectiveModelContext ctx) { schemaCtx = ctx; } - public SchemaContext getSchemaContext() { + public EffectiveModelContext getSchemaContext() { return schemaCtx; } } 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 f8f10522da..aa36a99cca 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 @@ -36,23 +36,18 @@ 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.impl.schema.tree.InMemoryDataTreeFactory; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * In-memory DOM Data Store. - * - *

- * Implementation of {@link DOMStore} which uses {@link DataTree} and other - * classes such as {@link SnapshotBackedWriteTransaction}. - * {@link org.opendaylight.mdsal.dom.spi.store.SnapshotBackedReadTransaction} to implement {@link DOMStore} - * contract. - * + * In-memory DOM Data Store. Implementation of {@link DOMStore} which uses {@link DataTree} and other classes such as + * {@link SnapshotBackedWriteTransaction}. + * {@link org.opendaylight.mdsal.dom.spi.store.SnapshotBackedReadTransaction} to implement {@link DOMStore} contract. */ public class InMemoryDOMDataStore extends TransactionReadyPrototype implements DOMStore, - Identifiable, SchemaContextListener, AutoCloseable, DOMStoreTreeChangePublisher { + Identifiable, EffectiveModelContextListener, AutoCloseable, DOMStoreTreeChangePublisher { private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMDataStore.class); private final AtomicLong txCounter = new AtomicLong(0); @@ -130,8 +125,8 @@ public class InMemoryDOMDataStore extends TransactionReadyPrototype impl } @Override - public synchronized void onGlobalContextUpdated(final SchemaContext ctx) { - dataTree.setSchemaContext(ctx); + public synchronized void onModelContextUpdated(final EffectiveModelContext newModelContext) { + dataTree.setEffectiveModelContext(newModelContext); } @SuppressWarnings("checkstyle:IllegalCatch") 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 e03795b214..0eea70c545 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 @@ -42,13 +42,13 @@ 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.impl.schema.tree.InMemoryDataTreeFactory; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Beta -public class InMemoryDOMDataTreeShard implements ReadableWriteableDOMDataTreeShard, SchemaContextListener { +public class InMemoryDOMDataTreeShard implements ReadableWriteableDOMDataTreeShard, EffectiveModelContextListener { private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMDataTreeShard.class); private static final int DEFAULT_SUBMIT_QUEUE_SIZE = 1000; @@ -98,8 +98,8 @@ public class InMemoryDOMDataTreeShard implements ReadableWriteableDOMDataTreeSha } @Override - public void onGlobalContextUpdated(final SchemaContext context) { - dataTree.setSchemaContext(context); + public void onModelContextUpdated(final EffectiveModelContext newModelContext) { + dataTree.setEffectiveModelContext(newModelContext); } @Override diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactoryTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactoryTest.java index 1cf3ce1aca..5a079acce2 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactoryTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDOMDataStoreFactoryTest.java @@ -21,7 +21,7 @@ import org.junit.Test; import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; public class InMemoryDOMDataStoreFactoryTest { @@ -29,7 +29,7 @@ public class InMemoryDOMDataStoreFactoryTest { public void basicTest() throws Exception { final String testStoreName = "TestStore"; final DOMSchemaService domSchemaService = mock(DOMSchemaService.class); - doReturn(null).when(domSchemaService).registerSchemaContextListener(any(SchemaContextListener.class)); + doReturn(null).when(domSchemaService).registerSchemaContextListener(any(EffectiveModelContextListener.class)); final InMemoryDOMDataStore inMemoryDOMDataStore = InMemoryDOMDataStoreFactory.create(testStoreName, domSchemaService); @@ -40,7 +40,7 @@ public class InMemoryDOMDataStoreFactoryTest { doReturn("testListener").when(domDataTreeChangeListener).toString(); doNothing().when(domDataTreeChangeListener).onDataTreeChanged(any()); doNothing().when(domDataTreeChangeListener).onInitialData(); - inMemoryDOMDataStore.onGlobalContextUpdated(TestModel.createTestContext()); + inMemoryDOMDataStore.onModelContextUpdated(TestModel.createTestContext()); inMemoryDOMDataStore.registerTreeChangeListener(YangInstanceIdentifier.empty(), domDataTreeChangeListener); final AutoCloseable autoCloseable = mock(AutoCloseable.class); 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 d2e9856996..c45ac2effc 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 @@ -66,7 +66,7 @@ public class InMemoryDOMDataTreeShardTest { doReturn(inMemoryDOMDataTreeShard.createModificationFactory(prefixes)) .when(mockProducer).getModificationFactory(); - inMemoryDOMDataTreeShard.onGlobalContextUpdated(createTestContext()); + inMemoryDOMDataTreeShard.onModelContextUpdated(createTestContext()); inMemoryDOMDataTreeShard.createTransaction("", mockProducer, mock(CursorAwareDataTreeSnapshot.class)); final DOMDataTreeChangeListener domDataTreeChangeListener = mock(DOMDataTreeChangeListener.class); diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDataStoreTest.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDataStoreTest.java index d4c64204c5..a65ff18456 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDataStoreTest.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/InMemoryDataStoreTest.java @@ -16,8 +16,10 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import java.util.Optional; import java.util.concurrent.ExecutionException; +import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; import org.mockito.Mockito; @@ -37,18 +39,27 @@ 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.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.api.EffectiveModelContext; public class InMemoryDataStoreTest { + private static EffectiveModelContext SCHEMA_CONTEXT; - private SchemaContext schemaContext; private InMemoryDOMDataStore domStore; + @BeforeClass + public static void beforeClass() { + SCHEMA_CONTEXT = TestModel.createTestContext(); + } + + @AfterClass + public static void afterClass() { + SCHEMA_CONTEXT = null; + } + @Before public void setupStore() { domStore = new InMemoryDOMDataStore("TEST", MoreExecutors.newDirectExecutorService()); - schemaContext = TestModel.createTestContext(); - domStore.onGlobalContextUpdated(schemaContext); + domStore.onModelContextUpdated(SCHEMA_CONTEXT); } @Test diff --git a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/TestModel.java b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/TestModel.java index ff8f9e7866..c77a4f2e78 100644 --- a/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/TestModel.java +++ b/dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/mdsal/dom/store/inmemory/TestModel.java @@ -9,7 +9,7 @@ package org.opendaylight.mdsal.dom.store.inmemory; 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.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public final class TestModel { @@ -41,7 +41,7 @@ public final class TestModel { throw new UnsupportedOperationException(); } - public static SchemaContext createTestContext() { + public static EffectiveModelContext createTestContext() { return YangParserTestUtils.parseYangResource("/odl-datastore-test.yang"); } } diff --git a/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/SchemaSchemaContextListenerImpl.java b/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/EffectiveModelContextImpl.java similarity index 60% rename from dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/SchemaSchemaContextListenerImpl.java rename to dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/EffectiveModelContextImpl.java index 6f4eeaa385..753f718065 100644 --- a/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/SchemaSchemaContextListenerImpl.java +++ b/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/EffectiveModelContextImpl.java @@ -15,33 +15,33 @@ import java.util.Dictionary; import java.util.Hashtable; import java.util.Map; import org.gaul.modernizer_maven_annotations.SuppressModernizer; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Deactivate; /** - * A Factory Component which implements {@link SchemaContextListener}. Instances of this component are created through - * by {@link OSGiDOMSchemaService} each time a listener is registered. + * A Factory Component which implements {@link EffectiveModelContextListener}. Instances of this component are created + * through by {@link OSGiDOMSchemaService} each time a listener is registered. */ -@Component(factory = SchemaSchemaContextListenerImpl.FACTORY_NAME, service = SchemaContextListener.class) -public final class SchemaSchemaContextListenerImpl implements SchemaContextListener { +@Component(factory = EffectiveModelContextImpl.FACTORY_NAME, service = EffectiveModelContextListener.class) +public final class EffectiveModelContextImpl implements EffectiveModelContextListener { static final String FACTORY_NAME = "org.opendaylight.mdsal.dom.schema.osgi.impl.SchemaSchemaContextListener"; @VisibleForTesting static final String DELEGATE = "org.opendaylight.mdsal.dom.schema.osgi.SchemaSchemaContextListener"; - private SchemaContextListener delegate = null; + private EffectiveModelContextListener delegate = null; @Override - public void onGlobalContextUpdated(final SchemaContext context) { - delegate.onGlobalContextUpdated(context); + public void onModelContextUpdated(final EffectiveModelContext newModelContext) { + delegate.onModelContextUpdated(newModelContext); } @Activate void activate(final Map properties) { - delegate = (SchemaContextListener) verifyNotNull(properties.get(DELEGATE)); + delegate = (EffectiveModelContextListener) verifyNotNull(properties.get(DELEGATE)); } @Deactivate @@ -50,7 +50,7 @@ public final class SchemaSchemaContextListenerImpl implements SchemaContextListe } @SuppressModernizer - static Dictionary props(final SchemaContextListener delegate) { + static Dictionary props(final EffectiveModelContextListener delegate) { final Dictionary ret = new Hashtable<>(2); ret.put(DELEGATE, requireNonNull(delegate)); return ret; diff --git a/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/OSGiDOMSchemaService.java b/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/OSGiDOMSchemaService.java index 38e4f2d2a3..28d76bd0ec 100644 --- a/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/OSGiDOMSchemaService.java +++ b/dom/mdsal-dom-schema-osgi/src/main/java/org/opendaylight/mdsal/dom/schema/osgi/impl/OSGiDOMSchemaService.java @@ -18,8 +18,7 @@ import org.opendaylight.mdsal.dom.schema.osgi.OSGiModuleInfoSnapshot; import org.opendaylight.mdsal.dom.spi.AbstractDOMSchemaService; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; import org.osgi.service.component.ComponentFactory; import org.osgi.service.component.ComponentInstance; import org.osgi.service.component.annotations.Activate; @@ -40,10 +39,10 @@ import org.slf4j.LoggerFactory; public final class OSGiDOMSchemaService extends AbstractDOMSchemaService { private static final Logger LOG = LoggerFactory.getLogger(OSGiDOMSchemaService.class); - @Reference(target = "(component.factory=" + SchemaSchemaContextListenerImpl.FACTORY_NAME + ")") + @Reference(target = "(component.factory=" + EffectiveModelContextImpl.FACTORY_NAME + ")") ComponentFactory listenerFactory = null; - private final List listeners = new CopyOnWriteArrayList<>(); + private final List listeners = new CopyOnWriteArrayList<>(); private volatile ModuleInfoSnapshot currentSnapshot; @@ -53,8 +52,8 @@ public final class OSGiDOMSchemaService extends AbstractDOMSchemaService { } @Override - public ListenerRegistration registerSchemaContextListener( - final SchemaContextListener listener) { + public ListenerRegistration registerSchemaContextListener( + final EffectiveModelContextListener listener) { return registerListener(requireNonNull(listener)); } @@ -69,13 +68,13 @@ public final class OSGiDOMSchemaService extends AbstractDOMSchemaService { @Reference(cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC, policyOption = ReferencePolicyOption.GREEDY) - void addListener(final SchemaContextListener listener) { + void addListener(final EffectiveModelContextListener listener) { LOG.trace("Adding listener {}", listener); listeners.add(listener); - listener.onGlobalContextUpdated(getGlobalContext()); + listener.onModelContextUpdated(getGlobalContext()); } - void removeListener(final SchemaContextListener listener) { + void removeListener(final EffectiveModelContextListener listener) { LOG.trace("Removing listener {}", listener); listeners.remove(listener); } @@ -92,12 +91,12 @@ public final class OSGiDOMSchemaService extends AbstractDOMSchemaService { LOG.info("DOM Schema services deactivated"); } - private @NonNull ListenerRegistration registerListener( - final @NonNull SchemaContextListener listener) { - final ComponentInstance reg = listenerFactory.newInstance(SchemaSchemaContextListenerImpl.props(listener)); + private @NonNull ListenerRegistration registerListener( + final @NonNull EffectiveModelContextListener listener) { + final ComponentInstance reg = listenerFactory.newInstance(EffectiveModelContextImpl.props(listener)); return new ListenerRegistration<>() { @Override - public SchemaContextListener getInstance() { + public EffectiveModelContextListener getInstance() { return listener; } @@ -109,9 +108,10 @@ public final class OSGiDOMSchemaService extends AbstractDOMSchemaService { } @SuppressWarnings("checkstyle:illegalCatch") - private static void notifyListener(final SchemaContext context, final SchemaContextListener listener) { + private static void notifyListener(final EffectiveModelContext context, + final EffectiveModelContextListener listener) { try { - listener.onGlobalContextUpdated(context); + listener.onModelContextUpdated(context); } catch (RuntimeException e) { LOG.warn("Failed to notify listener {}", listener, e); } diff --git a/dom/mdsal-dom-schema-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/osgi/impl/TestModel.java b/dom/mdsal-dom-schema-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/osgi/impl/TestModel.java index f136e4976c..73e2a35c8b 100644 --- a/dom/mdsal-dom-schema-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/osgi/impl/TestModel.java +++ b/dom/mdsal-dom-schema-osgi/src/test/java/org/opendaylight/mdsal/dom/schema/osgi/impl/TestModel.java @@ -9,7 +9,7 @@ package org.opendaylight.mdsal.dom.schema.osgi.impl; 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.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public final class TestModel { @@ -49,7 +49,7 @@ public final class TestModel { } - public static SchemaContext createTestContext() { + public static EffectiveModelContext createTestContext() { return YangParserTestUtils.parseYangResource("/odl-datastore-test.yang"); } } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/AbstractDOMSchemaService.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/AbstractDOMSchemaService.java index dbcb9d4cae..a6a48d5370 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/AbstractDOMSchemaService.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/AbstractDOMSchemaService.java @@ -14,8 +14,8 @@ import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.api.DOMSchemaServiceExtension; import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider; /** * Base class to implement DOMSchemaService more easily while providing a bridge between MD-SAL DOM Schema services @@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; */ @Beta @NonNullByDefault -public abstract class AbstractDOMSchemaService implements DOMSchemaService, SchemaContextProvider { +public abstract class AbstractDOMSchemaService implements DOMSchemaService, EffectiveModelContextProvider { public abstract static class WithYangTextSources extends AbstractDOMSchemaService implements DOMYangTextSourceProvider { @Override @@ -35,13 +35,13 @@ public abstract class AbstractDOMSchemaService implements DOMSchemaService, Sche } @Override - public final SchemaContext getSchemaContext() { + public final EffectiveModelContext getEffectiveModelContext() { // Always route context queries to a single method return getGlobalContext(); } @Override - public final SchemaContext getSessionContext() { + public final EffectiveModelContext getSessionContext() { // This method should not be implemented throw new UnsupportedOperationException(); } diff --git a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/FixedDOMSchemaService.java b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/FixedDOMSchemaService.java index f73cc27bd1..f9db3190aa 100644 --- a/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/FixedDOMSchemaService.java +++ b/dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/FixedDOMSchemaService.java @@ -19,8 +19,9 @@ import org.opendaylight.mdsal.dom.api.DOMSchemaServiceExtension; import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.NoOpListenerRegistration; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextListener; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContextProvider; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; @@ -38,7 +39,7 @@ public class FixedDOMSchemaService extends AbstractDOMSchemaService { private static final class WithYangTextSources extends FixedDOMSchemaService implements DOMYangTextSourceProvider { private final @NonNull SchemaSourceProvider schemaSourceProvider; - WithYangTextSources(final SchemaContextProvider schemaContextProvider, + WithYangTextSources(final EffectiveModelContextProvider schemaContextProvider, final SchemaSourceProvider schemaSourceProvider) { super(schemaContextProvider); this.schemaSourceProvider = requireNonNull(schemaSourceProvider); @@ -55,30 +56,30 @@ public class FixedDOMSchemaService extends AbstractDOMSchemaService { } } - private final @NonNull SchemaContextProvider schemaContextProvider; + private final @NonNull EffectiveModelContextProvider schemaContextProvider; - private FixedDOMSchemaService(final SchemaContextProvider schemaContextProvider) { + private FixedDOMSchemaService(final EffectiveModelContextProvider schemaContextProvider) { this.schemaContextProvider = requireNonNull(schemaContextProvider); } - public static @NonNull DOMSchemaService of(final SchemaContextProvider schemaContextProvider) { + public static @NonNull DOMSchemaService of(final EffectiveModelContextProvider schemaContextProvider) { return new FixedDOMSchemaService(schemaContextProvider); } - public static @NonNull DOMSchemaService of(final SchemaContextProvider schemaContextProvider, + public static @NonNull DOMSchemaService of(final EffectiveModelContextProvider schemaContextProvider, final SchemaSourceProvider yangTextSourceProvider) { return new WithYangTextSources(schemaContextProvider, requireNonNull(yangTextSourceProvider)); } @Override - public final SchemaContext getGlobalContext() { - return schemaContextProvider.getSchemaContext(); + public final EffectiveModelContext getGlobalContext() { + return schemaContextProvider.getEffectiveModelContext(); } @Override - public final @NonNull ListenerRegistration registerSchemaContextListener( - final SchemaContextListener listener) { - listener.onGlobalContextUpdated(getGlobalContext()); + public final @NonNull ListenerRegistration registerSchemaContextListener( + final EffectiveModelContextListener listener) { + listener.onModelContextUpdated(getGlobalContext()); return NoOpListenerRegistration.of(listener); } } -- 2.36.6