Committed by
Gerrit Code Review
Ensure serialization exceptions are appropriately reported
Change-Id: Ib7a11f246a79e84e7d1a9e4bddc85d08e0f0cbf0
Showing
1 changed file
with
86 additions
and
23 deletions
... | @@ -26,6 +26,7 @@ import java.util.function.Function; | ... | @@ -26,6 +26,7 @@ import java.util.function.Function; |
26 | import java.util.function.Predicate; | 26 | import java.util.function.Predicate; |
27 | import java.util.stream.Collectors; | 27 | import java.util.stream.Collectors; |
28 | 28 | ||
29 | +import org.onlab.util.Tools; | ||
29 | import org.onosproject.store.primitives.TransactionId; | 30 | import org.onosproject.store.primitives.TransactionId; |
30 | import org.onosproject.store.service.AsyncConsistentMap; | 31 | import org.onosproject.store.service.AsyncConsistentMap; |
31 | import org.onosproject.store.service.MapEvent; | 32 | import org.onosproject.store.service.MapEvent; |
... | @@ -80,45 +81,73 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi | ... | @@ -80,45 +81,73 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi |
80 | 81 | ||
81 | @Override | 82 | @Override |
82 | public CompletableFuture<Boolean> containsKey(K1 key) { | 83 | public CompletableFuture<Boolean> containsKey(K1 key) { |
83 | - return backingMap.containsKey(keyEncoder.apply(key)); | 84 | + try { |
85 | + return backingMap.containsKey(keyEncoder.apply(key)); | ||
86 | + } catch (Exception e) { | ||
87 | + return Tools.exceptionalFuture(e); | ||
88 | + } | ||
84 | } | 89 | } |
85 | 90 | ||
86 | @Override | 91 | @Override |
87 | public CompletableFuture<Boolean> containsValue(V1 value) { | 92 | public CompletableFuture<Boolean> containsValue(V1 value) { |
88 | - return backingMap.containsValue(valueEncoder.apply(value)); | 93 | + try { |
94 | + return backingMap.containsValue(valueEncoder.apply(value)); | ||
95 | + } catch (Exception e) { | ||
96 | + return Tools.exceptionalFuture(e); | ||
97 | + } | ||
89 | } | 98 | } |
90 | 99 | ||
91 | @Override | 100 | @Override |
92 | public CompletableFuture<Versioned<V1>> get(K1 key) { | 101 | public CompletableFuture<Versioned<V1>> get(K1 key) { |
93 | - return backingMap.get(keyEncoder.apply(key)).thenApply(versionedValueTransform); | 102 | + try { |
103 | + return backingMap.get(keyEncoder.apply(key)).thenApply(versionedValueTransform); | ||
104 | + } catch (Exception e) { | ||
105 | + return Tools.exceptionalFuture(e); | ||
106 | + } | ||
94 | } | 107 | } |
95 | 108 | ||
96 | @Override | 109 | @Override |
97 | public CompletableFuture<Versioned<V1>> computeIf(K1 key, | 110 | public CompletableFuture<Versioned<V1>> computeIf(K1 key, |
98 | Predicate<? super V1> condition, | 111 | Predicate<? super V1> condition, |
99 | BiFunction<? super K1, ? super V1, ? extends V1> remappingFunction) { | 112 | BiFunction<? super K1, ? super V1, ? extends V1> remappingFunction) { |
100 | - return backingMap.computeIf(keyEncoder.apply(key), | 113 | + try { |
101 | - v -> condition.test(valueDecoder.apply(v)), | 114 | + return backingMap.computeIf(keyEncoder.apply(key), |
102 | - (k, v) -> valueEncoder.apply(remappingFunction.apply(keyDecoder.apply(k), | 115 | + v -> condition.test(valueDecoder.apply(v)), |
103 | - valueDecoder.apply(v)))) | 116 | + (k, v) -> valueEncoder.apply(remappingFunction.apply(keyDecoder.apply(k), |
104 | - .thenApply(versionedValueTransform); | 117 | + valueDecoder.apply(v)))) |
118 | + .thenApply(versionedValueTransform); | ||
119 | + } catch (Exception e) { | ||
120 | + return Tools.exceptionalFuture(e); | ||
121 | + } | ||
105 | } | 122 | } |
106 | 123 | ||
107 | @Override | 124 | @Override |
108 | public CompletableFuture<Versioned<V1>> put(K1 key, V1 value) { | 125 | public CompletableFuture<Versioned<V1>> put(K1 key, V1 value) { |
109 | - return backingMap.put(keyEncoder.apply(key), valueEncoder.apply(value)) | 126 | + try { |
110 | - .thenApply(versionedValueTransform); | 127 | + return backingMap.put(keyEncoder.apply(key), valueEncoder.apply(value)) |
128 | + .thenApply(versionedValueTransform); | ||
129 | + } catch (Exception e) { | ||
130 | + return Tools.exceptionalFuture(e); | ||
131 | + } | ||
111 | } | 132 | } |
112 | 133 | ||
113 | @Override | 134 | @Override |
114 | public CompletableFuture<Versioned<V1>> putAndGet(K1 key, V1 value) { | 135 | public CompletableFuture<Versioned<V1>> putAndGet(K1 key, V1 value) { |
115 | - return backingMap.putAndGet(keyEncoder.apply(key), valueEncoder.apply(value)) | 136 | + try { |
116 | - .thenApply(versionedValueTransform); | 137 | + return backingMap.putAndGet(keyEncoder.apply(key), valueEncoder.apply(value)) |
138 | + .thenApply(versionedValueTransform); | ||
139 | + } catch (Exception e) { | ||
140 | + return Tools.exceptionalFuture(e); | ||
141 | + } | ||
117 | } | 142 | } |
118 | 143 | ||
119 | @Override | 144 | @Override |
120 | public CompletableFuture<Versioned<V1>> remove(K1 key) { | 145 | public CompletableFuture<Versioned<V1>> remove(K1 key) { |
121 | - return backingMap.remove(keyEncoder.apply(key)).thenApply(versionedValueTransform); | 146 | + try { |
147 | + return backingMap.remove(keyEncoder.apply(key)).thenApply(versionedValueTransform); | ||
148 | + } catch (Exception e) { | ||
149 | + return Tools.exceptionalFuture(e); | ||
150 | + } | ||
122 | } | 151 | } |
123 | 152 | ||
124 | @Override | 153 | @Override |
... | @@ -149,34 +178,60 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi | ... | @@ -149,34 +178,60 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi |
149 | 178 | ||
150 | @Override | 179 | @Override |
151 | public CompletableFuture<Versioned<V1>> putIfAbsent(K1 key, V1 value) { | 180 | public CompletableFuture<Versioned<V1>> putIfAbsent(K1 key, V1 value) { |
152 | - return backingMap.putIfAbsent(keyEncoder.apply(key), valueEncoder.apply(value)) | 181 | + try { |
153 | - .thenApply(versionedValueTransform); | 182 | + return backingMap.putIfAbsent(keyEncoder.apply(key), valueEncoder.apply(value)) |
183 | + .thenApply(versionedValueTransform); | ||
184 | + } catch (Exception e) { | ||
185 | + return Tools.exceptionalFuture(e); | ||
186 | + } | ||
154 | } | 187 | } |
155 | 188 | ||
156 | @Override | 189 | @Override |
157 | public CompletableFuture<Boolean> remove(K1 key, V1 value) { | 190 | public CompletableFuture<Boolean> remove(K1 key, V1 value) { |
158 | - return backingMap.remove(keyEncoder.apply(key), valueEncoder.apply(value)); | 191 | + try { |
192 | + return backingMap.remove(keyEncoder.apply(key), valueEncoder.apply(value)); | ||
193 | + } catch (Exception e) { | ||
194 | + return Tools.exceptionalFuture(e); | ||
195 | + } | ||
159 | } | 196 | } |
160 | 197 | ||
161 | @Override | 198 | @Override |
162 | public CompletableFuture<Boolean> remove(K1 key, long version) { | 199 | public CompletableFuture<Boolean> remove(K1 key, long version) { |
163 | - return backingMap.remove(keyEncoder.apply(key), version); | 200 | + try { |
201 | + return backingMap.remove(keyEncoder.apply(key), version); | ||
202 | + } catch (Exception e) { | ||
203 | + return Tools.exceptionalFuture(e); | ||
204 | + } | ||
164 | } | 205 | } |
165 | 206 | ||
166 | @Override | 207 | @Override |
167 | public CompletableFuture<Versioned<V1>> replace(K1 key, V1 value) { | 208 | public CompletableFuture<Versioned<V1>> replace(K1 key, V1 value) { |
168 | - return backingMap.replace(keyEncoder.apply(key), valueEncoder.apply(value)) | 209 | + try { |
169 | - .thenApply(versionedValueTransform); | 210 | + return backingMap.replace(keyEncoder.apply(key), valueEncoder.apply(value)) |
211 | + .thenApply(versionedValueTransform); | ||
212 | + } catch (Exception e) { | ||
213 | + return Tools.exceptionalFuture(e); | ||
214 | + } | ||
170 | } | 215 | } |
171 | 216 | ||
172 | @Override | 217 | @Override |
173 | public CompletableFuture<Boolean> replace(K1 key, V1 oldValue, V1 newValue) { | 218 | public CompletableFuture<Boolean> replace(K1 key, V1 oldValue, V1 newValue) { |
174 | - return backingMap.replace(keyEncoder.apply(key), valueEncoder.apply(oldValue), valueEncoder.apply(newValue)); | 219 | + try { |
220 | + return backingMap.replace(keyEncoder.apply(key), | ||
221 | + valueEncoder.apply(oldValue), | ||
222 | + valueEncoder.apply(newValue)); | ||
223 | + } catch (Exception e) { | ||
224 | + return Tools.exceptionalFuture(e); | ||
225 | + } | ||
175 | } | 226 | } |
176 | 227 | ||
177 | @Override | 228 | @Override |
178 | public CompletableFuture<Boolean> replace(K1 key, long oldVersion, V1 newValue) { | 229 | public CompletableFuture<Boolean> replace(K1 key, long oldVersion, V1 newValue) { |
179 | - return backingMap.replace(keyEncoder.apply(key), oldVersion, valueEncoder.apply(newValue)); | 230 | + try { |
231 | + return backingMap.replace(keyEncoder.apply(key), oldVersion, valueEncoder.apply(newValue)); | ||
232 | + } catch (Exception e) { | ||
233 | + return Tools.exceptionalFuture(e); | ||
234 | + } | ||
180 | } | 235 | } |
181 | 236 | ||
182 | @Override | 237 | @Override |
... | @@ -200,7 +255,11 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi | ... | @@ -200,7 +255,11 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi |
200 | 255 | ||
201 | @Override | 256 | @Override |
202 | public CompletableFuture<Boolean> prepare(MapTransaction<K1, V1> transaction) { | 257 | public CompletableFuture<Boolean> prepare(MapTransaction<K1, V1> transaction) { |
203 | - return backingMap.prepare(transaction.map(keyEncoder, valueEncoder)); | 258 | + try { |
259 | + return backingMap.prepare(transaction.map(keyEncoder, valueEncoder)); | ||
260 | + } catch (Exception e) { | ||
261 | + return Tools.exceptionalFuture(e); | ||
262 | + } | ||
204 | } | 263 | } |
205 | 264 | ||
206 | @Override | 265 | @Override |
... | @@ -215,7 +274,11 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi | ... | @@ -215,7 +274,11 @@ public class TranscodingAsyncConsistentMap<K1, V1, K2, V2> implements AsyncConsi |
215 | 274 | ||
216 | @Override | 275 | @Override |
217 | public CompletableFuture<Boolean> prepareAndCommit(MapTransaction<K1, V1> transaction) { | 276 | public CompletableFuture<Boolean> prepareAndCommit(MapTransaction<K1, V1> transaction) { |
218 | - return backingMap.prepareAndCommit(transaction.map(keyEncoder, valueEncoder)); | 277 | + try { |
278 | + return backingMap.prepareAndCommit(transaction.map(keyEncoder, valueEncoder)); | ||
279 | + } catch (Exception e) { | ||
280 | + return Tools.exceptionalFuture(e); | ||
281 | + } | ||
219 | } | 282 | } |
220 | 283 | ||
221 | private class InternalBackingMapEventListener implements MapEventListener<K2, V2> { | 284 | private class InternalBackingMapEventListener implements MapEventListener<K2, V2> { | ... | ... |
-
Please register or login to post a comment