blob: 15279e082ec37da0fe45c10bb55c86b82ce156c5 [file] [log] [blame]
Madan Jampani10073672016-01-21 19:13:59 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2016-present Open Networking Laboratory
Madan Jampani10073672016-01-21 19:13:59 -08003 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.onosproject.store.primitives.impl;
18
Madan Jampani10073672016-01-21 19:13:59 -080019import java.util.Collection;
20import java.util.Map.Entry;
21import java.util.Objects;
22import java.util.Set;
23import java.util.concurrent.CompletableFuture;
Madan Jampani0463cf92016-05-04 14:46:08 -070024import java.util.concurrent.Executor;
Madan Jampani10073672016-01-21 19:13:59 -080025import java.util.function.BiFunction;
Madan Jampani1d3b6172016-04-28 13:22:57 -070026import java.util.function.Consumer;
Madan Jampani10073672016-01-21 19:13:59 -080027import java.util.function.Predicate;
28
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070029import com.google.common.base.MoreObjects;
Jordan Halterman948d6592017-04-20 17:18:24 -070030import org.onosproject.store.primitives.MapUpdate;
Madan Jampani74da78b2016-02-09 21:18:36 -080031import org.onosproject.store.primitives.TransactionId;
Madan Jampani10073672016-01-21 19:13:59 -080032import org.onosproject.store.service.AsyncConsistentMap;
33import org.onosproject.store.service.MapEventListener;
Jordan Halterman948d6592017-04-20 17:18:24 -070034import org.onosproject.store.service.TransactionLog;
35import org.onosproject.store.service.Version;
Madan Jampani10073672016-01-21 19:13:59 -080036import org.onosproject.store.service.Versioned;
Madan Jampani0463cf92016-05-04 14:46:08 -070037
Madan Jampani10073672016-01-21 19:13:59 -080038/**
39 * {@code AsyncConsistentMap} that merely delegates control to
40 * another AsyncConsistentMap.
41 *
42 * @param <K> key type
43 * @param <V> value type
44 */
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070045public class DelegatingAsyncConsistentMap<K, V>
46 extends DelegatingDistributedPrimitive implements AsyncConsistentMap<K, V> {
Madan Jampani10073672016-01-21 19:13:59 -080047
48 private final AsyncConsistentMap<K, V> delegateMap;
49
50 DelegatingAsyncConsistentMap(AsyncConsistentMap<K, V> delegateMap) {
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070051 super(delegateMap);
52 this.delegateMap = delegateMap;
Madan Jampani10073672016-01-21 19:13:59 -080053 }
54
55 @Override
56 public CompletableFuture<Integer> size() {
57 return delegateMap.size();
58 }
59
60 @Override
61 public CompletableFuture<Boolean> containsKey(K key) {
62 return delegateMap.containsKey(key);
63 }
64
65 @Override
66 public CompletableFuture<Boolean> containsValue(V value) {
67 return delegateMap.containsValue(value);
68 }
69
70 @Override
71 public CompletableFuture<Versioned<V>> get(K key) {
72 return delegateMap.get(key);
73 }
74
75 @Override
Jordan Haltermanf6272442017-04-20 02:18:08 -070076 public CompletableFuture<Versioned<V>> getOrDefault(K key, V defaultValue) {
77 return delegateMap.getOrDefault(key, defaultValue);
78 }
79
80 @Override
Madan Jampani10073672016-01-21 19:13:59 -080081 public CompletableFuture<Versioned<V>> computeIf(K key,
82 Predicate<? super V> condition,
83 BiFunction<? super K, ? super V, ? extends V> remappingFunction) {
84 return delegateMap.computeIf(key, condition, remappingFunction);
85 }
86
87 @Override
88 public CompletableFuture<Versioned<V>> put(K key, V value) {
89 return delegateMap.put(key, value);
90 }
91
92 @Override
93 public CompletableFuture<Versioned<V>> putAndGet(K key, V value) {
94 return delegateMap.putAndGet(key, value);
95 }
96
97 @Override
98 public CompletableFuture<Versioned<V>> remove(K key) {
99 return delegateMap.remove(key);
100 }
101
102 @Override
103 public CompletableFuture<Void> clear() {
104 return delegateMap.clear();
105 }
106
107 @Override
108 public CompletableFuture<Set<K>> keySet() {
109 return delegateMap.keySet();
110 }
111
112 @Override
113 public CompletableFuture<Collection<Versioned<V>>> values() {
114 return delegateMap.values();
115 }
116
117 @Override
118 public CompletableFuture<Set<Entry<K, Versioned<V>>>> entrySet() {
119 return delegateMap.entrySet();
120 }
121
122 @Override
123 public CompletableFuture<Versioned<V>> putIfAbsent(K key, V value) {
124 return delegateMap.putIfAbsent(key, value);
125 }
126
127 @Override
128 public CompletableFuture<Boolean> remove(K key, V value) {
129 return delegateMap.remove(key, value);
130 }
131
132 @Override
133 public CompletableFuture<Boolean> remove(K key, long version) {
134 return delegateMap.remove(key, version);
135 }
136
137 @Override
138 public CompletableFuture<Versioned<V>> replace(K key, V value) {
139 return delegateMap.replace(key, value);
140 }
141
142 @Override
143 public CompletableFuture<Boolean> replace(K key, V oldValue, V newValue) {
144 return delegateMap.replace(key, oldValue, newValue);
145 }
146
147 @Override
148 public CompletableFuture<Boolean> replace(K key, long oldVersion, V newValue) {
149 return delegateMap.replace(key, oldVersion, newValue);
150 }
151
152 @Override
Madan Jampani0463cf92016-05-04 14:46:08 -0700153 public CompletableFuture<Void> addListener(MapEventListener<K, V> listener, Executor executor) {
154 return delegateMap.addListener(listener, executor);
Madan Jampani10073672016-01-21 19:13:59 -0800155 }
156
157 @Override
158 public CompletableFuture<Void> removeListener(MapEventListener<K, V> listener) {
159 return delegateMap.removeListener(listener);
160 }
161
162 @Override
Jordan Halterman948d6592017-04-20 17:18:24 -0700163 public CompletableFuture<Version> begin(TransactionId transactionId) {
164 return delegateMap.begin(transactionId);
165 }
166
167 @Override
168 public CompletableFuture<Boolean> prepare(TransactionLog<MapUpdate<K, V>> transactionLog) {
169 return delegateMap.prepare(transactionLog);
170 }
171
172 @Override
173 public CompletableFuture<Boolean> prepareAndCommit(TransactionLog<MapUpdate<K, V>> transactionLog) {
174 return delegateMap.prepareAndCommit(transactionLog);
Madan Jampani74da78b2016-02-09 21:18:36 -0800175 }
176
177 @Override
178 public CompletableFuture<Void> commit(TransactionId transactionId) {
179 return delegateMap.commit(transactionId);
180 }
181
182 @Override
183 public CompletableFuture<Void> rollback(TransactionId transactionId) {
184 return delegateMap.rollback(transactionId);
185 }
186
187 @Override
Madan Jampani1d3b6172016-04-28 13:22:57 -0700188 public void addStatusChangeListener(Consumer<Status> listener) {
189 delegateMap.addStatusChangeListener(listener);
190 }
191
192 @Override
193 public void removeStatusChangeListener(Consumer<Status> listener) {
194 delegateMap.removeStatusChangeListener(listener);
195 }
196
197 @Override
198 public Collection<Consumer<Status>> statusChangeListeners() {
199 return delegateMap.statusChangeListeners();
200 }
201
202 @Override
Madan Jampani10073672016-01-21 19:13:59 -0800203 public String toString() {
204 return MoreObjects.toStringHelper(getClass())
205 .add("delegateMap", delegateMap)
206 .toString();
207 }
208
209 @Override
210 public int hashCode() {
211 return Objects.hash(delegateMap);
212 }
213
214 @Override
215 public boolean equals(Object other) {
216 if (other instanceof DelegatingAsyncConsistentMap) {
217 DelegatingAsyncConsistentMap<K, V> that = (DelegatingAsyncConsistentMap) other;
218 return this.delegateMap.equals(that.delegateMap);
219 }
220 return false;
221 }
222}