X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fbroker%2Fimpl%2Fcompat%2FBackwardsCompatibleDataBroker.java;h=8405a78c33a46f7f943624d4b6c6b1bd8aeb18f5;hp=5b34fba69ac1b0eaebabaf8a82c801082eacc864;hb=73bda4f755598599f45cc46cd51c652c0a36e532;hpb=803d525860fbb1974b65ba5605ba5a9dfe1928a4 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/compat/BackwardsCompatibleDataBroker.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/compat/BackwardsCompatibleDataBroker.java index 5b34fba69a..8405a78c33 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/compat/BackwardsCompatibleDataBroker.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/compat/BackwardsCompatibleDataBroker.java @@ -1,5 +1,7 @@ package org.opendaylight.controller.md.sal.dom.broker.impl.compat; +import javax.annotation.concurrent.ThreadSafe; + import org.opendaylight.controller.md.sal.common.api.RegistrationListener; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandlerRegistration; @@ -11,6 +13,7 @@ import org.opendaylight.controller.sal.core.api.data.DataChangeListener; import org.opendaylight.controller.sal.core.api.data.DataModificationTransaction; import org.opendaylight.controller.sal.core.api.data.DataProviderService; import org.opendaylight.controller.sal.core.api.data.DataValidator; +import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; @@ -18,19 +21,18 @@ import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; +import org.opendaylight.yangtools.yang.model.api.SchemaServiceListener; -public class BackwardsCompatibleDataBroker implements DataProviderService, SchemaContextListener { +@ThreadSafe +public class BackwardsCompatibleDataBroker implements DataProviderService { private final DOMDataBroker backingBroker; - private DataNormalizer normalizer; + private volatile DataNormalizer normalizer; + private final ListenerRegistration schemaReg; - public BackwardsCompatibleDataBroker(final DOMDataBroker newBiDataImpl) { + public BackwardsCompatibleDataBroker(final DOMDataBroker newBiDataImpl, final SchemaService schemaService) { backingBroker = newBiDataImpl; - } - - @Override - public void onGlobalContextUpdated(final SchemaContext ctx) { - normalizer = new DataNormalizer(ctx); + schemaReg = schemaService.registerSchemaServiceListener(new SchemaListener()); } @Override @@ -75,7 +77,7 @@ public class BackwardsCompatibleDataBroker implements DataProviderService, Schem } @Override - public Registration> registerCommitHandler( + public Registration registerCommitHandler( final InstanceIdentifier path, final DataCommitHandler commitHandler) { // FIXME Do real forwarding return new AbstractObjectRegistration>(commitHandler) { @@ -115,13 +117,13 @@ public class BackwardsCompatibleDataBroker implements DataProviderService, Schem } @Override - public Registration> registerConfigurationReader( + public Registration registerConfigurationReader( final InstanceIdentifier path, final DataReader reader) { throw new UnsupportedOperationException("Data Reader contract is not supported."); } @Override - public Registration> registerOperationalReader( + public Registration registerOperationalReader( final InstanceIdentifier path, final DataReader reader) { throw new UnsupportedOperationException("Data Reader contract is not supported."); } @@ -148,4 +150,13 @@ public class BackwardsCompatibleDataBroker implements DataProviderService, Schem return listener; } } + + private class SchemaListener implements SchemaContextListener { + + @Override + public void onGlobalContextUpdated(final SchemaContext ctx) { + normalizer = new DataNormalizer(ctx); + } + + } }