3939import org .springframework .data .couchbase .core .ReactiveCouchbaseTemplate ;
4040import org .springframework .data .couchbase .core .convert .CouchbaseCustomConversions ;
4141import org .springframework .data .couchbase .core .convert .CouchbasePropertyValueConverterFactory ;
42- import org .springframework .data .couchbase .core .convert .CryptoConverter ;
4342import org .springframework .data .couchbase .core .convert .MappingCouchbaseConverter ;
4443import org .springframework .data .couchbase .core .convert .translation .JacksonTranslationService ;
4544import org .springframework .data .couchbase .core .convert .translation .TranslationService ;
8887@ Configuration
8988public abstract class AbstractCouchbaseConfiguration {
9089
90+ ObjectMapper mapper ;
91+ CryptoManager cryptoManager = null ;
92+
9193 /**
9294 * The connection string which allows the SDK to connect to the cluster.
9395 * <p>
@@ -155,9 +157,8 @@ public ClusterEnvironment couchbaseClusterEnvironment() {
155157 if (!nonShadowedJacksonPresent ()) {
156158 throw new CouchbaseException ("non-shadowed Jackson not present" );
157159 }
158- CryptoManager cryptoManager = cryptoManager ();
159- builder .jsonSerializer (JacksonJsonSerializer .create (couchbaseObjectMapper (cryptoManager )));
160- builder .cryptoManager (cryptoManager );
160+ builder .jsonSerializer (JacksonJsonSerializer .create (getCouchbaseObjectMapper ()));
161+ builder .cryptoManager (getCryptoManager ());
161162 configureEnvironment (builder );
162163 return builder .build ();
163164 }
@@ -167,8 +168,7 @@ public ClusterEnvironment couchbaseClusterEnvironment() {
167168 *
168169 * @param builder the builder that can be customized.
169170 */
170- protected void configureEnvironment (final ClusterEnvironment .Builder builder ) {
171- }
171+ protected void configureEnvironment (final ClusterEnvironment .Builder builder ) {}
172172
173173 @ Bean (name = BeanNames .COUCHBASE_TEMPLATE )
174174 public CouchbaseTemplate couchbaseTemplate (CouchbaseClientFactory couchbaseClientFactory ,
@@ -177,6 +177,7 @@ public CouchbaseTemplate couchbaseTemplate(CouchbaseClientFactory couchbaseClien
177177 getDefaultConsistency ());
178178 }
179179
180+ @ Deprecated
180181 public CouchbaseTemplate couchbaseTemplate (CouchbaseClientFactory couchbaseClientFactory ,
181182 MappingCouchbaseConverter mappingCouchbaseConverter ) {
182183 return couchbaseTemplate (couchbaseClientFactory , mappingCouchbaseConverter , new JacksonTranslationService ());
@@ -189,6 +190,7 @@ public ReactiveCouchbaseTemplate reactiveCouchbaseTemplate(CouchbaseClientFactor
189190 getDefaultConsistency ());
190191 }
191192
193+ @ Deprecated
192194 public ReactiveCouchbaseTemplate reactiveCouchbaseTemplate (CouchbaseClientFactory couchbaseClientFactory ,
193195 MappingCouchbaseConverter mappingCouchbaseConverter ) {
194196 return reactiveCouchbaseTemplate (couchbaseClientFactory , mappingCouchbaseConverter ,
@@ -288,7 +290,7 @@ public MappingCouchbaseConverter mappingCouchbaseConverter(CouchbaseMappingConte
288290 @ Bean
289291 public TranslationService couchbaseTranslationService () {
290292 final JacksonTranslationService jacksonTranslationService = new JacksonTranslationService ();
291- jacksonTranslationService .setObjectMapper (couchbaseObjectMapper ( cryptoManager () ));
293+ jacksonTranslationService .setObjectMapper (getCouchbaseObjectMapper ( ));
292294 jacksonTranslationService .afterPropertiesSet ();
293295 // for sdk3, we need to ask the mapper _it_ uses to ignore extra fields...
294296 JacksonTransformers .MAPPER .configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
@@ -309,35 +311,26 @@ public CouchbaseMappingContext couchbaseMappingContext(CustomConversions customC
309311 return mappingContext ;
310312 }
311313
312- /**
313- * Creates a {@link ObjectMapper} for the jsonSerializer of the ClusterEnvironment
314- *
315- * @return ObjectMapper
316- */
317- private ObjectMapper couchbaseObjectMapper () {
318- return couchbaseObjectMapper (cryptoManager ());
314+ private ObjectMapper getCouchbaseObjectMapper () {
315+ if (mapper != null ) {
316+ return mapper ;
317+ }
318+ return mapper = couchbaseObjectMapper ();
319319 }
320320
321321 /**
322322 * Creates a {@link ObjectMapper} for the jsonSerializer of the ClusterEnvironment
323323 *
324- * @param cryptoManager
325324 * @return ObjectMapper
326325 */
327-
328- ObjectMapper mapper ;
329-
330- public ObjectMapper couchbaseObjectMapper (CryptoManager cryptoManager ) {
331- if (mapper != null ) {
332- return mapper ;
333- }
334- mapper = new ObjectMapper (); // or use the one from the Java SDK (?) JacksonTransformers.MAPPER
335- mapper .configure (com .fasterxml .jackson .databind .DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
336- mapper .registerModule (new JsonValueModule ());
337- if (cryptoManager != null ) {
338- mapper .registerModule (new EncryptionModule (cryptoManager ));
326+ public ObjectMapper couchbaseObjectMapper () {
327+ ObjectMapper om = new ObjectMapper (); // or use the one from the Java SDK (?) JacksonTransformers.MAPPER
328+ om .configure (com .fasterxml .jackson .databind .DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
329+ om .registerModule (new JsonValueModule ());
330+ if (getCryptoManager () != null ) {
331+ om .registerModule (new EncryptionModule (getCryptoManager ()));
339332 }
340- return mapper ;
333+ return om ;
341334 }
342335
343336 /**
@@ -405,7 +398,7 @@ protected boolean autoIndexCreation() {
405398 */
406399 @ Bean (name = BeanNames .COUCHBASE_CUSTOM_CONVERSIONS )
407400 public CustomConversions customConversions () {
408- return customConversions (cryptoManager ());
401+ return customConversions (getCryptoManager ());
409402 }
410403
411404 /**
@@ -428,14 +421,18 @@ public CustomConversions customConversions(CryptoManager cryptoManager) {
428421 return customConversions ;
429422 }
430423
431- @ Bean
432- protected CryptoManager cryptoManager () {
433- return null ;
424+ /**
425+ * cryptoManager can be null, so it cannot be a bean and then used as an arg for bean methods
426+ */
427+ private CryptoManager getCryptoManager () {
428+ if (cryptoManager == null ) {
429+ cryptoManager = cryptoManager ();
430+ }
431+ return cryptoManager ;
434432 }
435433
436- @ Bean
437- protected CryptoConverter cryptoConverter (CryptoManager cryptoManager ) {
438- return cryptoManager == null ? null : new CryptoConverter (cryptoManager );
434+ protected CryptoManager cryptoManager () {
435+ return null ;
439436 }
440437
441438 /**
0 commit comments