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.broker.impl.compat.BackwardsCompatibleDataBroker;
15 import org.opendaylight.controller.md.sal.dom.broker.impl.mount.DOMMountPointServiceImpl;
16 import org.opendaylight.controller.sal.core.api.BrokerService;
17 import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry;
18 import org.opendaylight.controller.sal.core.api.data.DataBrokerService;
19 import org.opendaylight.controller.sal.core.api.data.DataProviderService;
20 import org.opendaylight.controller.sal.core.api.model.SchemaService;
21 import org.opendaylight.controller.sal.core.api.mount.MountProvisionService;
22 import org.opendaylight.controller.sal.core.api.mount.MountService;
23 import org.opendaylight.controller.sal.dom.broker.BackwardsCompatibleMountPointManager;
24 import org.opendaylight.controller.sal.dom.broker.BrokerImpl;
25 import org.opendaylight.controller.sal.dom.broker.GlobalBundleScanningSchemaServiceImpl;
26 import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker;
27 import org.opendaylight.controller.sal.dom.broker.impl.SchemaContextProviders;
32 public final class DomBrokerImplModule extends org.opendaylight.controller.config.yang.md.sal.dom.impl.AbstractDomBrokerImplModule
35 public DomBrokerImplModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
36 super(identifier, dependencyResolver);
39 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) {
40 super(identifier, dependencyResolver, oldModule, oldInstance);
44 public void validate(){
49 public java.lang.AutoCloseable createInstance() {
50 final DOMDataBroker asyncBroker= getAsyncDataBrokerDependency();
52 final ClassToInstanceMap<BrokerService> services = MutableClassToInstanceMap.create();
55 final SchemaService schemaService = getSchemaServiceImpl();
56 services.putInstance(SchemaService.class, schemaService);
57 final SchemaAwareRpcBroker router = new SchemaAwareRpcBroker("/", SchemaContextProviders
58 .fromSchemaService(schemaService));
59 services.putInstance(RpcProvisionRegistry.class, router);
61 services.putInstance(DOMDataBroker.class, asyncBroker);
62 final DataProviderService legacyData = new BackwardsCompatibleDataBroker(asyncBroker,schemaService);
63 services.putInstance(DataProviderService.class,legacyData);
64 services.putInstance(DataBrokerService.class, legacyData);
66 final DOMMountPointService mountService = new DOMMountPointServiceImpl();
67 services.putInstance(DOMMountPointService.class, mountService);
69 // TODO remove backwards service, use only new DOMMountPointService
70 final MountProvisionService backwardsMountService = new BackwardsCompatibleMountPointManager(mountService);
71 services.putInstance(MountService.class, backwardsMountService);
72 services.putInstance(MountProvisionService.class, backwardsMountService);
74 return new BrokerImpl(router, services);
77 private SchemaService getSchemaServiceImpl() {
78 final SchemaService schemaService;
79 if(getRootSchemaService() != null) {
80 schemaService = getRootSchemaServiceDependency();
82 schemaService = GlobalBundleScanningSchemaServiceImpl.getInstance();