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
15 class HashMapDataStore //
17 DataReader<InstanceIdentifier, CompositeNode>, DataCommitHandler<InstanceIdentifier, CompositeNode> {
19 val Map<InstanceIdentifier, CompositeNode> configuration = new ConcurrentHashMap();
20 val Map<InstanceIdentifier, CompositeNode> operational = new ConcurrentHashMap();
22 override readConfigurationData(InstanceIdentifier path) {
23 configuration.get(path);
26 override readOperationalData(InstanceIdentifier path) {
27 operational.get(path);
30 override requestCommit(DataModification<InstanceIdentifier, CompositeNode> modification) {
31 return new HashMapDataStoreTransaction(modification, this);
34 def RpcResult<Void> rollback(HashMapDataStoreTransaction transaction) {
35 return Rpcs.getRpcResult(true, null, Collections.emptySet);
38 def RpcResult<Void> finish(HashMapDataStoreTransaction transaction) {
39 val modification = transaction.modification;
40 configuration.putAll(modification.updatedConfigurationData);
41 operational.putAll(modification.updatedOperationalData);
43 for (removal : modification.removedConfigurationData) {
44 configuration.remove(removal);
46 for (removal : modification.removedOperationalData) {
47 operational.remove(removal);
49 return Rpcs.getRpcResult(true, null, Collections.emptySet);
54 class HashMapDataStoreTransaction implements //
55 DataCommitTransaction<InstanceIdentifier, CompositeNode> {
57 val DataModification<InstanceIdentifier, CompositeNode> modification
60 val HashMapDataStore datastore;
63 DataModification<InstanceIdentifier, CompositeNode> modify,
64 HashMapDataStore store
66 _modification = modify;
70 override finish() throws IllegalStateException {
71 datastore.finish(this);
75 override getModification() {
79 override rollback() throws IllegalStateException {
80 datastore.rollback(this);