|
1 | 1 | package com.aerospike.mapper.tools; |
2 | 2 |
|
3 | | -import java.util.Arrays; |
4 | | -import java.util.Objects; |
5 | | -import java.util.function.Function; |
6 | | - |
7 | | -import javax.validation.constraints.NotNull; |
8 | | - |
9 | 3 | import com.aerospike.client.AerospikeException; |
10 | 4 | import com.aerospike.client.Bin; |
11 | 5 | import com.aerospike.client.Key; |
|
24 | 18 | import com.aerospike.mapper.tools.converters.MappingConverter; |
25 | 19 | import com.aerospike.mapper.tools.utils.MapperUtils; |
26 | 20 | import com.aerospike.mapper.tools.virtuallist.ReactiveVirtualList; |
27 | | - |
28 | 21 | import reactor.core.publisher.Flux; |
29 | 22 | import reactor.core.publisher.Mono; |
30 | 23 |
|
| 24 | +import javax.validation.constraints.NotNull; |
| 25 | +import java.util.Arrays; |
| 26 | +import java.util.Objects; |
| 27 | +import java.util.function.Function; |
| 28 | + |
31 | 29 | public class ReactiveAeroMapper implements IReactiveAeroMapper { |
32 | 30 |
|
33 | 31 | private final IAerospikeReactorClient reactorClient; |
34 | 32 | private final IAeroMapper aeroMapper; |
35 | 33 | private final MappingConverter mappingConverter; |
36 | 34 |
|
37 | | - /** |
38 | | - * Create a new Builder to instantiate the AeroMapper. |
39 | | - * @author tfaulkes |
40 | | - * |
41 | | - */ |
42 | | - public static class Builder extends AbstractBuilder<ReactiveAeroMapper> { |
43 | | - public Builder(IAerospikeReactorClient reactorClient) { |
44 | | - super(new ReactiveAeroMapper(reactorClient)); |
45 | | - ClassCache.getInstance().setReactiveDefaultPolicies(reactorClient); |
46 | | - } |
47 | | - } |
48 | | - |
49 | 35 | private ReactiveAeroMapper(@NotNull IAerospikeReactorClient reactorClient) { |
50 | 36 | this.reactorClient = reactorClient; |
51 | 37 | this.aeroMapper = new AeroMapper.Builder(reactorClient.getAerospikeClient()).build(); |
@@ -205,7 +191,15 @@ public <T> Flux<T> read(BatchPolicy batchPolicy, @NotNull Class<T> clazz, @NotNu |
205 | 191 | return readBatch(batchPolicy, clazz, keys, entry, operations); |
206 | 192 | } |
207 | 193 |
|
208 | | - private <T> Mono<T> read(Policy readPolicy, @NotNull Class<T> clazz, @NotNull Key key, @NotNull ClassCacheEntry<T> entry, boolean resolveDependencies) { |
| 194 | + @SuppressWarnings("unchecked") |
| 195 | + private <T> Mono<T> read(Policy readPolicy, @NotNull Class<T> clazz, @NotNull Key key, |
| 196 | + @NotNull ClassCacheEntry<T> entry, boolean resolveDependencies) { |
| 197 | + if (readPolicy == null || readPolicy.filterExp == null) { |
| 198 | + Object objectForKey = LoadedObjectResolver.get(key); |
| 199 | + if (objectForKey != null) { |
| 200 | + return Mono.just((T) objectForKey); |
| 201 | + } |
| 202 | + } |
209 | 203 | if (readPolicy == null) { |
210 | 204 | readPolicy = entry.getReadPolicy(); |
211 | 205 | } |
@@ -368,7 +362,8 @@ public <T> ReactiveVirtualList<T> asBackedList(@NotNull Object object, @NotNull |
368 | 362 | } |
369 | 363 |
|
370 | 364 | @Override |
371 | | - public <T> ReactiveVirtualList<T> asBackedList(@NotNull Class<?> owningClazz, @NotNull Object key, @NotNull String binName, Class<T> elementClazz) { |
| 365 | + public <T> ReactiveVirtualList<T> asBackedList(@NotNull Class<?> owningClazz, @NotNull Object key, |
| 366 | + @NotNull String binName, Class<T> elementClazz) { |
372 | 367 | return new ReactiveVirtualList<>(this, owningClazz, key, binName, elementClazz); |
373 | 368 | } |
374 | 369 |
|
@@ -454,4 +449,14 @@ public Mono<Key> getRecordKey(Object obj) { |
454 | 449 | ClassCacheEntry<?> entry = ClassCache.getInstance().loadClass(obj.getClass(), this); |
455 | 450 | return entry == null ? null : Mono.just(new Key(entry.getNamespace(), entry.getSetName(), Value.get(entry.getKey(obj)))); |
456 | 451 | } |
| 452 | + |
| 453 | + /** |
| 454 | + * Create a new Builder to instantiate the AeroMapper. |
| 455 | + */ |
| 456 | + public static class Builder extends AbstractBuilder<ReactiveAeroMapper> { |
| 457 | + public Builder(IAerospikeReactorClient reactorClient) { |
| 458 | + super(new ReactiveAeroMapper(reactorClient)); |
| 459 | + ClassCache.getInstance().setReactiveDefaultPolicies(reactorClient); |
| 460 | + } |
| 461 | + } |
457 | 462 | } |
0 commit comments