More defensive RPC handling in DOM Broker
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / impl / connect / dom / BindingDomConnectorDeployer.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.sal.binding.impl.connect.dom;
9
10 import static com.google.common.base.Preconditions.checkNotNull;
11
12 import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
13 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
14 import org.opendaylight.controller.sal.binding.api.data.DataProviderService;
15 import org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker;
16 import org.opendaylight.controller.sal.core.api.Broker.ProviderSession;
17 import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry;
18 import org.opendaylight.controller.sal.core.api.notify.NotificationPublishService;
19
20 public class BindingDomConnectorDeployer {
21
22     private static BindingIndependentMappingService mappingService;
23
24     public static BindingIndependentConnector tryToDeployConnector(RootBindingAwareBroker baBroker,
25             ProviderSession domSession) {
26         checkNotNull(baBroker);
27         checkNotNull(domSession);
28         BindingIndependentConnector connector = createConnector(mappingService);
29         return connector;
30     }
31
32     public static BindingIndependentConnector createConnector(BindingIndependentMappingService mappingService) {
33         BindingIndependentConnector connector = new BindingIndependentConnector();
34         connector.setMappingService(mappingService);
35         return connector;
36     }
37
38     public static BindingIndependentConnector createConnector(BindingIndependentConnector source) {
39         BindingIndependentConnector connector = new BindingIndependentConnector();
40         connector.setMappingService(source.getMappingService());
41         return connector;
42     }
43     
44     public static void startDataForwarding(BindingIndependentConnector connector, DataProviderService baService,
45             ProviderSession domContext) {
46         startDataForwarding(connector, baService,
47                 domContext.getService(org.opendaylight.controller.sal.core.api.data.DataProviderService.class));
48     }
49
50     public static void startRpcForwarding(BindingIndependentConnector connector,
51             RpcProviderRegistry rpcProviderRegistry, ProviderSession domProviderContext) {
52         startRpcForwarding(connector, rpcProviderRegistry, domProviderContext.getService(RpcProvisionRegistry.class));
53
54     }
55     
56     public static void startNotificationForwarding(BindingIndependentConnector connector, NotificationProviderService provider,ProviderSession domProviderContext) {
57         startNotificationForwarding(connector, provider, domProviderContext.getService(NotificationPublishService.class));
58     }
59
60     public static void startRpcForwarding(BindingIndependentConnector connector, RpcProviderRegistry baService,
61             RpcProvisionRegistry domService) {
62         if (connector.isRpcForwarding()) {
63             return;
64         }
65
66         connector.setDomRpcRegistry(domService);
67         connector.setBindingRpcRegistry(baService);
68         connector.startRpcForwarding();
69     }
70
71     public static void startDataForwarding(BindingIndependentConnector connector, DataProviderService baService,
72             org.opendaylight.controller.sal.core.api.data.DataProviderService domService) {
73         if (connector.isDataForwarding()) {
74             return;
75         }
76
77         connector.setBindingDataService(baService);
78         connector.setDomDataService(domService);
79         connector.startDataForwarding();
80     }
81     
82     public static void startNotificationForwarding(BindingIndependentConnector connector, NotificationProviderService baService, NotificationPublishService domService) {
83         if(connector.isNotificationForwarding()) {
84             return;
85         }
86         
87         // FIXME
88     }
89
90     //
91     // public static BindingIndependentMappingService getGlobalMappingService()
92     // {
93     // return mappingService;
94     // }
95     //
96     // protected static BindingIndependentMappingService
97     // setGlobalMappingService(BindingIndependentMappingService service) {
98     // mappingService= service;
99     // return mappingService;
100     // }
101     //
102     // public static BindingIndependentConnector
103     // tryToDeployConnector(MountProviderInstance baMount,MountProvisionInstance
104     // domMount) {
105     //
106     //
107     // return null;
108     // }
109
110 }