Refactor DataBroker adapter wiring
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / resources / org / opendaylight / blueprint / binding-broker.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
3            xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0">
4
5   <!-- Runtime binding/normalized mapping service -->
6
7   <reference id="classLoadingStrategy" interface="org.opendaylight.mdsal.binding.generator.api.ClassLoadingStrategy"/>
8   <reference id="schemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService" />
9
10   <bean id="mappingCodec" class="org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodecFactory"
11          factory-method="newInstance">
12     <argument ref="classLoadingStrategy"/>
13   </bean>
14
15   <!-- Register the BindingToNormalizedNodeCodec with the SchemaService as a SchemaContextListener -->
16   <bean id="mappingCodecListenerReg" class="org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodecFactory"
17          factory-method="registerInstance" destroy-method="close">
18     <argument ref="mappingCodec"/>
19     <argument ref="schemaService"/>
20   </bean>
21
22   <service ref="mappingCodec" odl:type="default">
23     <interfaces>
24       <value>org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer</value>
25       <value>org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory</value>
26     </interfaces>
27   </service>
28
29   <!-- TODO: remove this service as it is referring to a class. To do that we need to migrate everyone over to 'factory' -->
30   <service id="codec" ref="mappingCodec" interface="org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec"/>
31
32   <!-- Adapter service -->
33   <bean id="adapterFactory" class="org.opendaylight.controller.md.sal.binding.impl.BindingToDOMAdapterFactory">
34     <argument ref="mappingCodec"/>
35   </bean>
36
37   <service id="factory" ref="adapterFactory">
38     <interfaces>
39       <value>org.opendaylight.controller.md.sal.binding.spi.AdapterFactory</value>
40     </interfaces>
41   </service>
42
43   <!-- Binding RPC Registry Service -->
44
45   <reference id="domRpcService" interface="org.opendaylight.controller.md.sal.dom.api.DOMRpcService"/>
46
47   <bean id="bindingRpcServiceAdapter" class="org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcServiceAdapter" >
48     <argument ref="domRpcService"/>
49     <argument ref="mappingCodec"/>
50   </bean>
51
52   <reference id="domRpcRegistry" interface="org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService"/>
53
54   <bean id="bindingRpcProviderAdapter" class="org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcProviderServiceAdapter" >
55     <argument ref="domRpcRegistry"/>
56     <argument ref="mappingCodec"/>
57   </bean>
58
59   <bean id="bindingRpcRegistry" class="org.opendaylight.controller.md.sal.binding.compat.HeliumRpcProviderRegistry" >
60     <argument ref="bindingRpcServiceAdapter"/>
61     <argument ref="bindingRpcProviderAdapter"/>
62   </bean>
63
64   <service ref="bindingRpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"
65           odl:type="default"/>
66
67   <!-- Binding MountPoint Service -->
68
69   <reference id="domMountPointService" interface="org.opendaylight.controller.md.sal.dom.api.DOMMountPointService"/>
70
71   <bean id="bindingMountPointService" class="org.opendaylight.controller.md.sal.binding.impl.BindingDOMMountPointServiceAdapter" >
72     <argument ref="domMountPointService"/>
73     <argument ref="mappingCodec"/>
74   </bean>
75
76   <service ref="bindingMountPointService" interface="org.opendaylight.controller.md.sal.binding.api.MountPointService"
77           odl:type="default"/>
78
79   <!-- Binding Notification Service -->
80
81   <reference id="domNotificationService" interface="org.opendaylight.controller.md.sal.dom.api.DOMNotificationService"/>
82
83   <bean id="bindingNotificationServiceAdapter" class="org.opendaylight.controller.md.sal.binding.impl.BindingDOMNotificationServiceAdapter">
84     <argument>
85       <bean factory-ref="mappingCodec" factory-method="getCodecRegistry"/>
86     </argument>
87     <argument ref="domNotificationService"/>
88   </bean>
89
90   <service ref="bindingNotificationServiceAdapter" interface="org.opendaylight.controller.md.sal.binding.api.NotificationService"
91           odl:type="default"/>
92
93   <reference id="domNotificationPublishService" interface="org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService"/>
94
95   <bean id="bindingNotificationPublishAdapter" class="org.opendaylight.controller.md.sal.binding.impl.BindingDOMNotificationPublishServiceAdapter">
96     <argument ref="mappingCodec"/>
97     <argument ref="domNotificationPublishService"/>
98   </bean>
99
100   <service ref="bindingNotificationPublishAdapter" interface="org.opendaylight.controller.md.sal.binding.api.NotificationPublishService"
101           odl:type="default"/>
102
103   <reference id="domNotificationListenerRegistry" interface="org.opendaylight.controller.md.sal.dom.spi.DOMNotificationSubscriptionListenerRegistry"/>
104
105   <bean id="bindingNotificationProviderService" class="org.opendaylight.controller.md.sal.binding.compat.HeliumNotificationProviderServiceWithInterestListeners">
106     <argument ref="bindingNotificationPublishAdapter"/>
107     <argument ref="bindingNotificationServiceAdapter"/>
108     <argument ref="domNotificationListenerRegistry"/>
109   </bean>
110
111   <service ref="bindingNotificationProviderService" odl:type="default">
112     <interfaces>
113       <value>org.opendaylight.controller.sal.binding.api.NotificationProviderService</value>
114       <value>org.opendaylight.controller.sal.binding.api.NotificationService</value>
115     </interfaces>
116   </service>
117
118   <!-- Binding DataBroker -->
119
120   <reference id="domDefaultDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
121           odl:type="default"/>
122
123   <bean id="bindingDataBroker" factory-ref="adapterFactory" factory-method="createDataBroker">
124     <argument ref="domDefaultDataBroker"/>
125   </bean>
126
127   <service ref="bindingDataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
128           odl:type="default"/>
129
130   <!-- Binding PingPong DataBroker -->
131
132   <reference id="domPingPongDataBroker" interface="org.opendaylight.controller.md.sal.dom.api.DOMDataBroker"
133           odl:type="pingpong"/>
134
135   <bean id="bindingPingPongDataBroker" factory-ref="adapterFactory" factory-method="createDataBroker">
136     <argument ref="domPingPongDataBroker"/>
137   </bean>
138
139   <service ref="bindingPingPongDataBroker" interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
140           odl:type="pingpong"/>
141
142   <!-- Legacy BindingAwareBroker -->
143
144   <bean id="bindingAwareBroker" class="org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker"
145       init-method="start" destroy-method="close">
146     <argument value="deprecated-BindingAwareBroker"/>
147     <property name="dataBroker" ref="bindingDataBroker"/>
148     <property name="mountService" ref="bindingMountPointService"/>
149     <property name="rpcBroker" ref="bindingRpcRegistry"/>
150     <property name="notificationBroker" ref="bindingNotificationProviderService"/>
151     <property name="notificationPublishService" ref="bindingNotificationPublishAdapter"/>
152   </bean>
153
154   <service ref="bindingAwareBroker" interface="org.opendaylight.controller.sal.binding.api.BindingAwareBroker"/>
155 </blueprint>