2929import java .util .Objects ;
3030import java .util .Optional ;
3131
32+ import static java .util .Objects .requireNonNull ;
3233import static java .util .concurrent .TimeUnit .MILLISECONDS ;
3334import static java .util .stream .Collectors .toList ;
3435import static java .util .stream .StreamSupport .stream ;
3940 */
4041public class CouchbaseBucketManager implements BucketManager {
4142
42- private static final String VALUE_FIELD = "value" ;
43-
4443 private static final Jsonb JSONB = JsonbBuilder .create ();
4544
4645 private final Bucket bucket ;
@@ -54,57 +53,56 @@ public class CouchbaseBucketManager implements BucketManager {
5453
5554 @ Override
5655 public <K , V > void put (K key , V value ) throws NullPointerException {
57- Objects .requireNonNull (key , "key is required" );
58- Objects .requireNonNull (value , "value is required" );
59- JsonObject jsonObject = JsonObject .create ()
60- .put ("value" , JSONB .toJson (value ));
61-
62- bucket .upsert (JsonDocument .create (key .toString (), jsonObject ));
56+ requireNonNull (key , "key is required" );
57+ requireNonNull (value , "value is required" );
58+ bucket .upsert (JsonDocument .create (key .toString (), JsonObjectCouchbaseUtil .toJson (JSONB , value )));
6359 }
6460
6561 @ Override
6662 public <K > void put (KeyValueEntity <K > entity ) throws NullPointerException {
67- Objects . requireNonNull (entity , "entity is required" );
63+ requireNonNull (entity , "entity is required" );
6864 put (entity .getKey (), convert (entity .getValue ()));
6965 }
7066
7167 @ Override
7268 public <K > void put (KeyValueEntity <K > entity , Duration ttl ) throws NullPointerException , UnsupportedOperationException {
73- Objects .requireNonNull (entity , "entity is required" );
74- Objects .requireNonNull (ttl , "ttl is required" );
75- JsonObject jsonObject = JsonObject .create ()
76- .put (VALUE_FIELD , entity .getValue ().get ());
69+ requireNonNull (entity , "entity is required" );
70+ requireNonNull (ttl , "ttl is required" );
71+
72+
73+ JsonObject jsonObject = JsonObjectCouchbaseUtil .toJson (JSONB , entity .get ());
7774
78- bucket .upsert (JsonDocument .create (entity .getKey ().toString (), jsonObject ), ttl .toMillis (), MILLISECONDS );
75+ JsonDocument jsonDocument = JsonDocument .create (entity .getKey ().toString (), (int ) ttl .getSeconds (), jsonObject );
76+ bucket .upsert (jsonDocument , ttl .toMillis (), MILLISECONDS );
7977 }
8078
8179 @ Override
8280 public <K > void put (Iterable <KeyValueEntity <K >> keyValueEntities ) throws NullPointerException {
83- Objects . requireNonNull (keyValueEntities , "keyValueEntities is required" );
81+ requireNonNull (keyValueEntities , "keyValueEntities is required" );
8482 keyValueEntities .forEach (this ::put );
8583 }
8684
8785 @ Override
8886 public <K > void put (Iterable <KeyValueEntity <K >> keyValueEntities , Duration ttl ) throws NullPointerException , UnsupportedOperationException {
89- Objects . requireNonNull (keyValueEntities , "keyValueEntities is required" );
90- Objects . requireNonNull (ttl , "ttl is required" );
87+ requireNonNull (keyValueEntities , "keyValueEntities is required" );
88+ requireNonNull (ttl , "ttl is required" );
9189 keyValueEntities .forEach (k -> this .put (k , ttl ));
9290 }
9391
9492 @ Override
9593 public <K > Optional <Value > get (K key ) throws NullPointerException {
96- Objects . requireNonNull (key , "key is required" );
94+ requireNonNull (key , "key is required" );
9795 JsonDocument jsonDocument = bucket .get (key .toString ());
9896 if (Objects .isNull (jsonDocument )) {
9997 return Optional .empty ();
10098 }
101- Object value = jsonDocument .content (). get ( VALUE_FIELD ) ;
99+ Object value = jsonDocument .content ();
102100 return Optional .of (ValueJSON .of (value .toString ()));
103101 }
104102
105103 @ Override
106104 public <K > Iterable <Value > get (Iterable <K > keys ) throws NullPointerException {
107- Objects . requireNonNull (keys , "keys is required" );
105+ requireNonNull (keys , "keys is required" );
108106 return stream (keys .spliterator (), false )
109107 .map (this ::get )
110108 .filter (Optional ::isPresent )
@@ -114,13 +112,13 @@ public <K> Iterable<Value> get(Iterable<K> keys) throws NullPointerException {
114112
115113 @ Override
116114 public <K > void remove (K key ) throws NullPointerException {
117- Objects . requireNonNull (key , "key is required" );
115+ requireNonNull (key , "key is required" );
118116 bucket .remove (key .toString ());
119117 }
120118
121119 @ Override
122120 public <K > void remove (Iterable <K > keys ) throws NullPointerException {
123- Objects . requireNonNull (keys , "keys is required" );
121+ requireNonNull (keys , "keys is required" );
124122 keys .forEach (this ::remove );
125123 }
126124
0 commit comments