Changed model versions to dependencies
[controller.git] / opendaylight / md-sal / sal-binding-api / src / main / java / org / opendaylight / controller / sal / binding / api / data / DataBrokerService.java
index 7ee6c65a90749111528c7089e736c99cc41da04f..aa846ff78db2dd4a71ea77087978c559879ec654 100644 (file)
@@ -9,8 +9,12 @@ package org.opendaylight.controller.sal.binding.api.data;
 
 import java.util.concurrent.Future;
 
+import org.opendaylight.controller.md.sal.common.api.data.DataChangePublisher;
+import org.opendaylight.controller.md.sal.common.api.data.DataModificationTransactionFactory;
+import org.opendaylight.controller.md.sal.common.api.data.DataReader;
 import org.opendaylight.controller.sal.binding.api.BindingAwareService;
 import org.opendaylight.controller.sal.common.DataStoreIdentifier;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.DataRoot;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -23,7 +27,11 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
  * 
  * @see DataProviderService
  */
-public interface DataBrokerService extends BindingAwareService {
+public interface DataBrokerService extends //
+        BindingAwareService, //
+        DataModificationTransactionFactory<InstanceIdentifier<? extends DataObject>, DataObject>, //
+        DataReader<InstanceIdentifier<? extends DataObject>, DataObject>, //
+        DataChangePublisher<InstanceIdentifier<? extends DataObject>, DataObject, DataChangeListener> {
 
     /**
      * Returns a data from specified Data Store.
@@ -36,6 +44,7 @@ public interface DataBrokerService extends BindingAwareService {
      *            Identifier of the store, from which will be data retrieved
      * @return data visible to the consumer
      */
+    @Deprecated
     <T extends DataRoot> T getData(DataStoreIdentifier store, Class<T> rootType);
 
     /**
@@ -139,21 +148,49 @@ public interface DataBrokerService extends BindingAwareService {
     @Deprecated
     Future<RpcResult<Void>> commit(DataStoreIdentifier store);
 
-    
-    DataObject getData(InstanceIdentifier data);
-
-    DataObject getConfigurationData(InstanceIdentifier data);
+    @Deprecated
+    DataObject getData(InstanceIdentifier<? extends DataObject> data);
 
-    
+    @Deprecated
+    DataObject getConfigurationData(InstanceIdentifier<?> data);
     /**
      * Creates a data modification transaction.
      * 
      * @return new blank data modification transaction.
      */
-    DataModification beginTransaction();
+    DataModificationTransaction beginTransaction();
 
-    public void registerChangeListener(InstanceIdentifier path, DataChangeListener changeListener);
-    
-    public void unregisterChangeListener(InstanceIdentifier path, DataChangeListener changeListener);
+    @Deprecated
+    public void registerChangeListener(InstanceIdentifier<? extends DataObject> path, DataChangeListener changeListener);
 
+    @Deprecated
+    public void unregisterChangeListener(InstanceIdentifier<? extends DataObject> path, DataChangeListener changeListener);
+
+    /**
+     * Reads data subtree from configurational store. 
+     * (Store which is populated by consumer, which is usually used to 
+     * inject state into providers. E.g. Flow configuration)-
+     * 
+     */
+    @Override
+    public DataObject readConfigurationData(InstanceIdentifier<? extends DataObject> path);
+    
+    /**
+     * Reads data subtree from operational store. 
+     * (Store which is populated by providers, which is usually used to 
+     * capture state of providers. E.g. Topology)
+     * 
+     */
+    @Override
+    public DataObject readOperationalData(InstanceIdentifier<? extends DataObject> path);
+    
+    /**
+     * Register a data change listener for particular subtree. 
+     * 
+     * Callback is invoked each time data in subtree changes.
+     * 
+     */
+    @Override
+    public ListenerRegistration<DataChangeListener> registerDataChangeListener(
+            InstanceIdentifier<? extends DataObject> path, DataChangeListener listener);
 }