Declare switchmanager in dependencyManagement in commons, declare its
[controller.git] / opendaylight / md-sal / sal-binding-api / src / main / java / org / opendaylight / controller / sal / binding / api / data / DataModification.java
1 package org.opendaylight.controller.sal.binding.api.data;
2
3 import java.util.Map;
4 import java.util.Set;
5 import java.util.concurrent.Future;
6
7 import org.opendaylight.yangtools.yang.binding.DataObject;
8 import org.opendaylight.yangtools.yang.binding.Identifiable;
9 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
10 import org.opendaylight.yangtools.yang.common.RpcResult;
11
12 public interface DataModification {
13     
14     /**
15      * Returns transaction identifier
16      * 
17      * @return Transaction identifier
18      */
19     Object getIdentifier();
20     
21     TransactionStatus getStatus();
22     
23     /**
24      * Reads data from overal data storage which includes
25      * runtime and configuration data.
26      * 
27      * @param path
28      * @return
29      */
30     DataObject read(InstanceIdentifier path);
31     
32     /**
33      * Reads data from configuration data storage.
34      * 
35      * @param path Instance identifier which 
36      * @return
37      */
38     DataObject readConfiguration(InstanceIdentifier path);
39     
40     void putRuntimeData(InstanceIdentifier path,DataObject data);
41     void putConfigurationData(InstanceIdentifier path,DataObject data);
42     void removeRuntimeData(InstanceIdentifier path);
43     void removeConfigurationData(InstanceIdentifier path);
44
45
46     Map<InstanceIdentifier,DataObject> getRuntimeDataUpdates();
47     Map<InstanceIdentifier,DataObject> getConfigurationDataUpdates();
48     Set<InstanceIdentifier> getRemovals();
49     Set<InstanceIdentifier> getConfigurationRemovals();
50     
51     /**
52      * Commits transaction to be stored in global data repository.
53      * 
54      * 
55      * @return  Future object which returns RpcResult with TransactionStatus 
56      *          when transaction is processed by store.
57      */
58     Future<RpcResult<TransactionStatus>> commit();
59     
60     void registerListener(DataTransactionListener listener);
61     void unregisterListener(DataTransactionListener listener);
62     
63     public enum TransactionStatus {
64         
65         UNSUBMITTED,
66         COMMITING,
67         COMMITED,
68         FAILED,
69         CANCELED
70     }
71     
72     public interface DataTransactionListener {
73         
74         void onStatusUpdated(DataModification transaction,TransactionStatus status);
75         
76     }
77 }