1 package org.opendaylight.controller.sal.dom.broker.impl
3 import org.opendaylight.controller.md.sal.common.api.data.DataReader
4 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler
5 import org.opendaylight.controller.md.sal.common.api.data.DataModification
6 import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction
7 import org.opendaylight.yangtools.yang.common.RpcResult
9 import java.util.concurrent.ConcurrentHashMap
10 import org.opendaylight.controller.sal.common.util.Rpcs
11 import java.util.Collections
12 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier
13 import org.opendaylight.yangtools.yang.data.api.CompositeNode
14 import static extension org.opendaylight.controller.sal.dom.broker.impl.DataUtils.*;
16 class HashMapDataStore //
18 DataReader<InstanceIdentifier, CompositeNode>, DataCommitHandler<InstanceIdentifier, CompositeNode> {
20 val Map<InstanceIdentifier, CompositeNode> configuration = new ConcurrentHashMap();
21 val Map<InstanceIdentifier, CompositeNode> operational = new ConcurrentHashMap();
23 override readConfigurationData(InstanceIdentifier path) {
24 configuration.read(path);
27 override readOperationalData(InstanceIdentifier path) {
28 operational.read(path);
34 override requestCommit(DataModification<InstanceIdentifier, CompositeNode> modification) {
35 return new HashMapDataStoreTransaction(modification, this);
38 def RpcResult<Void> rollback(HashMapDataStoreTransaction transaction) {
39 return Rpcs.getRpcResult(true, null, Collections.emptySet);
42 def RpcResult<Void> finish(HashMapDataStoreTransaction transaction) {
43 val modification = transaction.modification;
44 configuration.putAll(modification.updatedConfigurationData);
45 operational.putAll(modification.updatedOperationalData);
47 for (removal : modification.removedConfigurationData) {
48 configuration.remove(removal);
50 for (removal : modification.removedOperationalData) {
51 operational.remove(removal);
53 return Rpcs.getRpcResult(true, null, Collections.emptySet);
58 class HashMapDataStoreTransaction implements //
59 DataCommitTransaction<InstanceIdentifier, CompositeNode> {
61 val DataModification<InstanceIdentifier, CompositeNode> modification
64 val HashMapDataStore datastore;
67 DataModification<InstanceIdentifier, CompositeNode> modify,
68 HashMapDataStore store
70 _modification = modify;
74 override finish() throws IllegalStateException {
75 datastore.finish(this);
79 override getModification() {
83 override rollback() throws IllegalStateException {
84 datastore.rollback(this);