1 package org.opendaylight.controller.sal.binding.impl
3 import org.opendaylight.controller.md.sal.common.api.data.DataReader
4 import org.opendaylight.controller.sal.binding.api.data.RuntimeDataProvider
5 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler
6 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
7 import org.opendaylight.yangtools.yang.binding.DataObject
8 import org.opendaylight.controller.md.sal.common.api.data.DataModification
9 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction
10 import org.opendaylight.yangtools.yang.common.RpcResult
12 import java.util.concurrent.ConcurrentHashMap
13 import org.opendaylight.controller.sal.common.util.Rpcs
14 import java.util.Collections
16 class HashMapDataStore //
18 RuntimeDataProvider, DataCommitHandler<InstanceIdentifier<? extends DataObject>, DataObject> {
20 val Map<InstanceIdentifier<? extends DataObject>,DataObject> configuration = new ConcurrentHashMap();
21 val Map<InstanceIdentifier<? extends DataObject>,DataObject> operational = new ConcurrentHashMap();
24 override readConfigurationData(InstanceIdentifier<? extends DataObject> path) {
25 configuration.get(path);
28 override readOperationalData(InstanceIdentifier<? extends DataObject> path) {
29 operational.get(path);
32 override requestCommit(DataModification<InstanceIdentifier<? extends DataObject>, DataObject> modification) {
33 return new HashMapDataStoreTransaction(modification,this);
36 def RpcResult<Void> rollback(HashMapDataStoreTransaction transaction) {
37 return Rpcs.getRpcResult(true,null,Collections.emptySet);
40 def RpcResult<Void> finish(HashMapDataStoreTransaction transaction) {
41 val modification = transaction.modification;
42 configuration.putAll(modification.updatedConfigurationData);
43 operational.putAll(modification.updatedOperationalData);
45 for(removal : modification.removedConfigurationData) {
46 configuration.remove(removal);
48 for(removal : modification.removedOperationalData) {
49 operational.remove(removal);
51 return Rpcs.getRpcResult(true,null,Collections.emptySet);
56 class HashMapDataStoreTransaction implements //
57 DataCommitTransaction<InstanceIdentifier<? extends DataObject>, DataObject> {
59 val DataModification<InstanceIdentifier<? extends DataObject>, DataObject> modification
62 val HashMapDataStore datastore;
66 DataModification<InstanceIdentifier<? extends DataObject>, DataObject> modify,
67 HashMapDataStore store
69 _modification = modify;
73 override finish() throws IllegalStateException {
74 datastore.finish(this);
78 override getModification() {
82 override rollback() throws IllegalStateException {
83 datastore.rollback(this);