29
29
import com .aerospike .mapper .tools .converters .MappingConverter ;
30
30
import com .aerospike .mapper .tools .utils .MapperUtils ;
31
31
import com .aerospike .mapper .tools .virtuallist .VirtualList ;
32
+ import reactor .core .publisher .Mono ;
32
33
33
34
public class AeroMapper implements IAeroMapper {
34
35
@@ -52,48 +53,30 @@ public Builder(IAerospikeClient client) {
52
53
53
54
}
54
55
}
55
-
56
+
56
57
@ Override
57
- public void save (@ NotNull Object ... objects ) throws AerospikeException {
58
- for (Object thisObject : objects ) {
58
+ public < T > void save (@ NotNull T ... objects ) throws AerospikeException {
59
+ for (T thisObject : objects ) {
59
60
this .save (thisObject );
60
61
}
61
62
}
62
63
63
64
@ Override
64
- public void save (@ NotNull Object object , String ... binNames ) throws AerospikeException {
65
- save (null , object , RecordExistsAction .REPLACE , binNames );
65
+ public <T > void save (@ NotNull T object , String ... binNames ) throws AerospikeException {
66
+ WritePolicy writePolicy = generateWritePolicyFromObject (object );
67
+ writePolicy .recordExistsAction = RecordExistsAction .REPLACE ;
68
+ save (writePolicy , object , binNames );
66
69
}
67
70
71
+ @ SuppressWarnings ("unchecked" )
68
72
@ Override
69
- public void save (@ NotNull WritePolicy writePolicy , @ NotNull Object object , String ... binNames )
73
+ public < T > void save (@ NotNull WritePolicy writePolicy , @ NotNull T object , String ... binNames )
70
74
throws AerospikeException {
71
- save (writePolicy , object , null , binNames );
72
- }
73
-
74
- @ SuppressWarnings ("unchecked" )
75
- private <T > void save (WritePolicy writePolicy , @ NotNull T object , RecordExistsAction recordExistsAction ,
76
- String [] binNames ) {
77
75
Class <T > clazz = (Class <T >) object .getClass ();
78
76
ClassCacheEntry <T > entry = MapperUtils .getEntryAndValidateNamespace (clazz , this );
79
- if (writePolicy == null ) {
80
- writePolicy = new WritePolicy (entry .getWritePolicy ());
81
- if (recordExistsAction != null ) {
82
- writePolicy .recordExistsAction = recordExistsAction ;
83
- }
84
-
85
- // #132 -- Ensure that if an overriding TTL / sendkey is passed in the policy it
86
- // is NOT overwritten. Hence
87
- // only if the policy is null do we override these settings.
88
- Integer ttl = entry .getTtl ();
89
- Boolean sendKey = entry .getSendKey ();
90
77
91
- if (ttl != null ) {
92
- writePolicy .expiration = ttl ;
93
- }
94
- if (sendKey != null ) {
95
- writePolicy .sendKey = sendKey ;
96
- }
78
+ if (writePolicy == null ) {
79
+ writePolicy = generateWritePolicyFromObject (object );
97
80
}
98
81
99
82
String set = entry .getSetName ();
@@ -109,8 +92,38 @@ private <T> void save(WritePolicy writePolicy, @NotNull T object, RecordExistsAc
109
92
}
110
93
111
94
@ Override
112
- public void update (@ NotNull Object object , String ... binNames ) throws AerospikeException {
113
- save (null , object , RecordExistsAction .UPDATE , binNames );
95
+ public <T > void insert (@ NotNull T object , String ... binNames ) {
96
+ WritePolicy writePolicy = generateWritePolicyFromObject (object );
97
+ writePolicy .recordExistsAction = RecordExistsAction .CREATE_ONLY ;
98
+ save (writePolicy , object , binNames );
99
+ }
100
+
101
+ @ Override
102
+ public <T > void update (@ NotNull T object , String ... binNames ) throws AerospikeException {
103
+ WritePolicy writePolicy = generateWritePolicyFromObject (object );
104
+ writePolicy .recordExistsAction = RecordExistsAction .UPDATE ;
105
+ save (writePolicy , object , binNames );
106
+ }
107
+
108
+ @ SuppressWarnings ("unchecked" )
109
+ private <T > WritePolicy generateWritePolicyFromObject (T object ) {
110
+ Class <T > clazz = (Class <T >) object .getClass ();
111
+ ClassCacheEntry <T > entry = MapperUtils .getEntryAndValidateNamespace (clazz , this );
112
+
113
+ WritePolicy writePolicy = new WritePolicy (entry .getWritePolicy ());
114
+
115
+ // #132 -- Ensure that if an overriding TTL / sendKey is passed in the policy it
116
+ // is NOT overwritten. Hence, only if the policy is null do we override these settings.
117
+ Integer ttl = entry .getTtl ();
118
+ Boolean sendKey = entry .getSendKey ();
119
+
120
+ if (ttl != null ) {
121
+ writePolicy .expiration = ttl ;
122
+ }
123
+ if (sendKey != null ) {
124
+ writePolicy .sendKey = sendKey ;
125
+ }
126
+ return writePolicy ;
114
127
}
115
128
116
129
@ Override
0 commit comments