import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.MoreExecutors;
-import java.util.LinkedList;
-import java.util.List;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
+import java.util.HashSet;
import java.util.Map;
import java.util.ServiceLoader;
+import java.util.Set;
import java.util.concurrent.Executors;
-import org.opendaylight.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.binding.api.DataBroker;
import org.opendaylight.mdsal.binding.api.NotificationPublishService;
import org.opendaylight.mdsal.binding.api.NotificationService;
import org.opendaylight.mdsal.binding.dom.adapter.BindingAdapterFactory;
import org.opendaylight.mdsal.binding.dom.adapter.ConstantAdapterContext;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
+import org.opendaylight.mdsal.binding.dom.adapter.spi.AdapterFactory;
import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
+import org.opendaylight.mdsal.binding.runtime.spi.BindingRuntimeHelpers;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataBroker;
+import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService;
+import org.opendaylight.mdsal.dom.api.DOMNotificationService;
import org.opendaylight.mdsal.dom.broker.DOMNotificationRouter;
+import org.opendaylight.mdsal.dom.broker.RouterDOMNotificationService;
+import org.opendaylight.mdsal.dom.broker.RouterDOMPublishNotificationService;
import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker;
import org.opendaylight.mdsal.dom.spi.FixedDOMSchemaService;
import org.opendaylight.mdsal.dom.spi.store.DOMStore;
private final NotificationPublishService notificationPublishService;
private EffectiveModelContext schemaCtx;
private BindingDOMCodecServices bindingDOMCodecServices;
- private BindingAdapterFactory adapterFactory ;
-
+ private AdapterFactory adapterFactory;
+ private DOMNotificationService domNotificationService;
+ private DOMNotificationPublishService domNotificationPublishService;
+ @SuppressFBWarnings(value = "MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR")
public DataStoreContextImpl() {
- List<YangModuleInfo> moduleInfos = new LinkedList<>();
+ Set<YangModuleInfo> moduleInfos = new HashSet<>();
ServiceLoader<YangModelBindingProvider> yangProviderLoader = ServiceLoader.load(YangModelBindingProvider.class);
for (YangModelBindingProvider yangModelBindingProvider : yangProviderLoader) {
moduleInfos.add(yangModelBindingProvider.getModuleInfo());
schemaCtx = BindingRuntimeHelpers.createEffectiveModel(moduleInfos);
bindingDOMCodecServices = new BindingCodecContext(BindingRuntimeHelpers.createRuntimeContext());
adapterFactory = new BindingAdapterFactory(new ConstantAdapterContext(bindingDOMCodecServices));
- domNotificationRouter = DOMNotificationRouter.create(16);
+ domNotificationRouter = new DOMNotificationRouter(16);
+ domNotificationService = new RouterDOMNotificationService(domNotificationRouter);
+ domNotificationPublishService = new RouterDOMPublishNotificationService(domNotificationRouter);
datastores = createDatastores();
domDataBroker = createDOMDataBroker();
dataBroker = createDataBroker();
}
@Override
- public NotificationService createNotificationService() {
- return adapterFactory.createNotificationService(domNotificationRouter);
+ public final NotificationService createNotificationService() {
+ return adapterFactory.createNotificationService(domNotificationService);
}
@Override
- public NotificationPublishService createNotificationPublishService() {
- return adapterFactory.createNotificationPublishService(domNotificationRouter);
+ public final NotificationPublishService createNotificationPublishService() {
+ return adapterFactory.createNotificationPublishService(domNotificationPublishService);
}
@Override
return schemaCtx;
}
- @Override
- public BindingNormalizedNodeSerializer getBindingToNormalizedNodeCodec() {
- return bindingDOMCodecServices;
- }
-
@Override
public NotificationService getNotificationService() {
return notificationService;
}
private DOMStore createConfigurationDatastore() {
- return InMemoryDOMDataStoreFactory.create("CFG",
- FixedDOMSchemaService.of(bindingDOMCodecServices.getRuntimeContext()));
+ return InMemoryDOMDataStoreFactory.create("DOM-CFG", new FixedDOMSchemaService(schemaCtx));
}
private DOMStore createOperationalDatastore() {
- return InMemoryDOMDataStoreFactory.create("OPER",
- FixedDOMSchemaService.of(bindingDOMCodecServices.getRuntimeContext()));
+ return InMemoryDOMDataStoreFactory.create("DOM-OPER", new FixedDOMSchemaService(schemaCtx));
+ }
+
+ @Override
+ public BindingDOMCodecServices getBindingDOMCodecServices() {
+ return bindingDOMCodecServices;
}