blob: 972fd729533be7cf94645ecf4c4b88bd523a7715 [file] [log] [blame]
Aaron Kruglikoved88ff62016-08-01 16:02:09 -07001/*
2 * Copyright 2016-present Open Networking Laboratory
3 *
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
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070019import java.util.Collection;
20import java.util.Map;
21import java.util.NavigableMap;
22import java.util.NavigableSet;
23import java.util.Objects;
24import java.util.Set;
25import java.util.concurrent.CompletableFuture;
26import java.util.concurrent.Executor;
27import java.util.function.BiFunction;
28import java.util.function.Predicate;
29
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070030import org.onosproject.store.primitives.MapUpdate;
31import org.onosproject.store.primitives.TransactionId;
32import org.onosproject.store.service.AsyncConsistentTreeMap;
33import org.onosproject.store.service.MapEventListener;
34import org.onosproject.store.service.TransactionLog;
35import org.onosproject.store.service.Version;
36import org.onosproject.store.service.Versioned;
37
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070038import static com.google.common.base.Preconditions.checkNotNull;
39
40/**
41 * A {@link AsyncConsistentTreeMap} that delegates control to another instance
42 * of {@link AsyncConsistentTreeMap}.
43 */
44public class DelegatingAsyncConsistentTreeMap<V>
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070045 extends DelegatingDistributedPrimitive implements AsyncConsistentTreeMap<V> {
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070046
47 private final AsyncConsistentTreeMap<V> delegateMap;
48
49 DelegatingAsyncConsistentTreeMap(AsyncConsistentTreeMap<V> delegateMap) {
Jordan Halterman9bdc24f2017-04-19 23:45:12 -070050 super(delegateMap);
Aaron Kruglikoved88ff62016-08-01 16:02:09 -070051 this.delegateMap = checkNotNull(delegateMap,
52 "delegate map cannot be null");
53 }
54
55 @Override
56 public CompletableFuture<String> firstKey() {
57 return delegateMap.firstKey();
58 }
59
60 @Override
61 public CompletableFuture<String> lastKey() {
62 return delegateMap.lastKey();
63 }
64
65 @Override
66 public CompletableFuture<Map.Entry<String, Versioned<V>>> ceilingEntry(String key) {
67 return delegateMap.ceilingEntry(key);
68 }
69
70 @Override
71 public CompletableFuture<Map.Entry<String, Versioned<V>>> floorEntry(String key) {
72 return delegateMap.floorEntry(key);
73 }
74
75 @Override
76 public CompletableFuture<Map.Entry<String, Versioned<V>>> higherEntry(String key) {
77 return delegateMap.higherEntry(key);
78 }
79
80 @Override
81 public CompletableFuture<Map.Entry<String, Versioned<V>>> lowerEntry(String key) {
82 return delegateMap.lowerEntry(key);
83 }
84
85 @Override
86 public CompletableFuture<Map.Entry<String, Versioned<V>>> firstEntry() {
87 return delegateMap.firstEntry();
88 }
89
90 @Override
91 public CompletableFuture<Map.Entry<String, Versioned<V>>> lastEntry() {
92 return delegateMap.lastEntry();
93 }
94
95 @Override
96 public CompletableFuture<Map.Entry<String, Versioned<V>>> pollFirstEntry() {
97 return delegateMap.pollFirstEntry();
98 }
99
100 @Override
101 public CompletableFuture<Map.Entry<String, Versioned<V>>> pollLastEntry() {
102 return delegateMap.pollLastEntry();
103 }
104
105 @Override
106 public CompletableFuture<String> lowerKey(String key) {
107 return delegateMap.lowerKey(key);
108 }
109
110 @Override
111 public CompletableFuture<String> floorKey(String key) {
112 return delegateMap.floorKey(key);
113 }
114
115 @Override
116 public CompletableFuture<String> ceilingKey(String key) {
117 return delegateMap.ceilingKey(key);
118 }
119
120 @Override
121 public CompletableFuture<String> higherKey(String key) {
122 return delegateMap.higherKey(key);
123 }
124
125 @Override
126 public CompletableFuture<NavigableSet<String>> navigableKeySet() {
127 return delegateMap.navigableKeySet();
128 }
129
130 @Override
131 public CompletableFuture<NavigableMap<String, V>> subMap(
132 String upperKey,
133 String lowerKey,
134 boolean inclusiveUpper,
135 boolean inclusiveLower) {
136 return delegateMap.subMap(upperKey, lowerKey,
137 inclusiveUpper, inclusiveLower);
138 }
139
140 @Override
Aaron Kruglikoved88ff62016-08-01 16:02:09 -0700141 public CompletableFuture<Integer> size() {
142 return delegateMap.size();
143 }
144
145 @Override
146 public CompletableFuture<Boolean> containsKey(String key) {
147 return delegateMap.containsKey(key);
148 }
149
150 @Override
151 public CompletableFuture<Boolean> containsValue(V value) {
152 return delegateMap.containsValue(value);
153 }
154
155 @Override
156 public CompletableFuture<Versioned<V>> get(String key) {
157 return delegateMap.get(key);
158 }
159
160 @Override
Jordan Haltermanf6272442017-04-20 02:18:08 -0700161 public CompletableFuture<Versioned<V>> getOrDefault(String key, V defaultValue) {
162 return delegateMap.getOrDefault(key, defaultValue);
163 }
164
165 @Override
Aaron Kruglikoved88ff62016-08-01 16:02:09 -0700166 public CompletableFuture<Versioned<V>> computeIf(
167 String key,
168 Predicate<? super V> condition,
169 BiFunction<? super String, ? super V,
170 ? extends V> remappingFunction) {
171 return delegateMap.computeIf(key, condition, remappingFunction);
172 }
173
174 @Override
175 public CompletableFuture<Versioned<V>> put(String key, V value) {
176 return delegateMap.put(key, value);
177 }
178
179 @Override
180 public CompletableFuture<Versioned<V>> putAndGet(String key, V value) {
181 return delegateMap.putAndGet(key, value);
182 }
183
184 @Override
185 public CompletableFuture<Versioned<V>> remove(String key) {
186 return delegateMap.remove(key);
187 }
188
189 @Override
190 public CompletableFuture<Void> clear() {
191 return delegateMap.clear();
192 }
193
194 @Override
195 public CompletableFuture<Set<String>> keySet() {
196 return delegateMap.keySet();
197 }
198
199 @Override
200 public CompletableFuture<Collection<Versioned<V>>> values() {
201 return delegateMap.values();
202 }
203
204 @Override
205 public CompletableFuture<Set<Map.Entry<String, Versioned<V>>>> entrySet() {
206 return delegateMap.entrySet();
207 }
208
209 @Override
210 public CompletableFuture<Versioned<V>> putIfAbsent(String key, V value) {
211 return delegateMap.putIfAbsent(key, value);
212 }
213
214 @Override
215 public CompletableFuture<Boolean> remove(String key, V value) {
216 return delegateMap.remove(key, value);
217 }
218
219 @Override
220 public CompletableFuture<Boolean> remove(String key, long version) {
221 return delegateMap.remove(key, version);
222 }
223
224 @Override
225 public CompletableFuture<Versioned<V>> replace(String key, V value) {
226 return delegateMap.replace(key, value);
227 }
228
229 @Override
230 public CompletableFuture<Boolean> replace(String key, V oldValue,
231 V newValue) {
232 return delegateMap.replace(key, oldValue, newValue);
233 }
234
235 @Override
236 public CompletableFuture<Boolean> replace(String key, long oldVersion,
237 V newValue) {
238 return delegateMap.replace(key, oldVersion, newValue);
239 }
240
241 @Override
242 public CompletableFuture<Void> addListener(
243 MapEventListener<String, V> listener, Executor executor) {
244 return delegateMap.addListener(listener, executor);
245 }
246
247 @Override
248 public CompletableFuture<Void> removeListener(
249 MapEventListener<String, V> listener) {
250 return delegateMap.removeListener(listener);
251 }
252
253 @Override
Jordan Halterman948d6592017-04-20 17:18:24 -0700254 public CompletableFuture<Version> begin(TransactionId transactionId) {
255 return delegateMap.begin(transactionId);
256 }
257
258 @Override
259 public CompletableFuture<Boolean> prepare(TransactionLog<MapUpdate<String, V>> transactionLog) {
260 return delegateMap.prepare(transactionLog);
261 }
262
263 @Override
264 public CompletableFuture<Boolean> prepareAndCommit(TransactionLog<MapUpdate<String, V>> transactionLog) {
265 return delegateMap.prepareAndCommit(transactionLog);
Aaron Kruglikoved88ff62016-08-01 16:02:09 -0700266 }
267
268 @Override
269 public CompletableFuture<Void> commit(TransactionId transactionId) {
270 return delegateMap.commit(transactionId);
271 }
272
273 @Override
274 public CompletableFuture<Void> rollback(TransactionId transactionId) {
275 return delegateMap.rollback(transactionId);
276 }
277
278 @Override
Aaron Kruglikoved88ff62016-08-01 16:02:09 -0700279 public boolean equals(Object other) {
280 if (other instanceof DelegatingAsyncConsistentTreeMap) {
281 DelegatingAsyncConsistentTreeMap<V> that =
282 (DelegatingAsyncConsistentTreeMap) other;
283 return this.delegateMap.equals(that.delegateMap);
284 }
285 return false;
286 }
287
288 @Override
289 public int hashCode() {
290 return Objects.hash(delegateMap);
291 }
Aaron Kruglikoved88ff62016-08-01 16:02:09 -0700292}