2 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.controller.config.yang.md.sal.dom.impl;
10 import com.google.common.collect.ClassToInstanceMap;
11 import com.google.common.collect.MutableClassToInstanceMap;
12 import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
13 import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService;
14 import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService;
15 import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService;
16 import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService;
17 import org.opendaylight.controller.md.sal.dom.api.DOMRpcService;
18 import org.opendaylight.controller.md.sal.dom.broker.impl.DOMNotificationRouter;
19 import org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter;
20 import org.opendaylight.controller.md.sal.dom.broker.impl.mount.DOMMountPointServiceImpl;
21 import org.opendaylight.controller.sal.core.api.BrokerService;
22 import org.opendaylight.controller.sal.core.api.model.SchemaService;
23 import org.opendaylight.controller.sal.dom.broker.BrokerImpl;
24 import org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl;
29 public final class DomBrokerImplModule extends org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractDomBrokerImplModule
32 public DomBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
33 super(identifier, dependencyResolver);
36 public DomBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final DomBrokerImplModule oldModule, final java.lang.AutoCloseable oldInstance) {
37 super(identifier, dependencyResolver, oldModule, oldInstance);
41 public void validate(){
46 public java.lang.AutoCloseable createInstance() {
47 final DOMDataBroker asyncBroker= getAsyncDataBrokerDependency();
49 final ClassToInstanceMap<BrokerService> services = MutableClassToInstanceMap.create();
51 // TODO: retrieve from config subsystem
52 final int queueDepth = 1024;
54 final DOMNotificationRouter domNotificationRouter = DOMNotificationRouter.create(queueDepth);
55 services.putInstance(DOMNotificationService.class, domNotificationRouter);
56 services.putInstance(DOMNotificationPublishService.class, domNotificationRouter);
58 final SchemaService schemaService = getSchemaServiceImpl();
59 services.putInstance(SchemaService.class, schemaService);
61 services.putInstance(DOMDataBroker.class, asyncBroker);
63 final DOMRpcRouter rpcRouter = new DOMRpcRouter();
64 schemaService.registerSchemaContextListener(rpcRouter);
65 services.putInstance(DOMRpcService.class, rpcRouter);
66 services.putInstance(DOMRpcProviderService.class, rpcRouter);
68 final DOMMountPointService mountService = new DOMMountPointServiceImpl();
69 services.putInstance(DOMMountPointService.class, mountService);
71 return new BrokerImpl(rpcRouter, services);
74 private SchemaService getSchemaServiceImpl() {
75 final SchemaService schemaService;
76 if(getRootSchemaService() != null) {
77 schemaService = getRootSchemaServiceDependency();
79 schemaService = GlobalBundleScanningSchemaServiceImpl.getInstance();