Skip to content

Commit 3e91248

Browse files
committed
Fix config bean dependencies.
Closes #1557.
1 parent b0d96fc commit 3e91248

File tree

2 files changed

+35
-61
lines changed

2 files changed

+35
-61
lines changed

src/main/java/org/springframework/data/couchbase/config/AbstractCouchbaseConfiguration.java

+32-35
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
import org.springframework.data.couchbase.core.ReactiveCouchbaseTemplate;
4040
import org.springframework.data.couchbase.core.convert.CouchbaseCustomConversions;
4141
import org.springframework.data.couchbase.core.convert.CouchbasePropertyValueConverterFactory;
42-
import org.springframework.data.couchbase.core.convert.CryptoConverter;
4342
import org.springframework.data.couchbase.core.convert.MappingCouchbaseConverter;
4443
import org.springframework.data.couchbase.core.convert.translation.JacksonTranslationService;
4544
import org.springframework.data.couchbase.core.convert.translation.TranslationService;
@@ -88,6 +87,9 @@
8887
@Configuration
8988
public 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
/**

src/test/java/org/springframework/data/couchbase/repository/CouchbaseRepositoryFieldLevelEncryptionIntegrationTests.java

+3-26
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,9 @@ public String getBucketName() {
344344
}
345345

346346
@Override
347-
public ObjectMapper couchbaseObjectMapper(CryptoManager cryptoManager) {
348-
ObjectMapper om = super.couchbaseObjectMapper(cryptoManager);
349-
om.registerModule(new JodaModule());
347+
public ObjectMapper couchbaseObjectMapper() {
348+
ObjectMapper om = super.couchbaseObjectMapper();
349+
om.registerModule(new JodaModule()); // to test joda mapping
350350
return om;
351351
}
352352

@@ -356,8 +356,6 @@ protected void configureEnvironment(ClusterEnvironment.Builder builder) {
356356
builder.securityConfig(
357357
SecurityConfig.builder().trustManagerFactory(InsecureTrustManagerFactory.INSTANCE).enableTls(true));
358358
}
359-
CryptoManager cryptoManager = cryptoManager();
360-
builder.cryptoManager(cryptoManager).build();
361359
}
362360

363361
@Override
@@ -390,27 +388,6 @@ public byte[] decrypt(Map<String, Object> encryptedNode) {
390388
return result;
391389
}
392390

393-
private String toBytes(byte[] plaintext) {
394-
StringBuffer sb = new StringBuffer();
395-
for (byte b : plaintext) {
396-
sb.append(b);
397-
sb.append(" ");
398-
}
399-
return sb.toString();
400-
}
401-
402-
private boolean cmp(byte[] a, byte[] b) {
403-
if (a.length != b.length)
404-
return false;
405-
for (int i = 0; i < a.length; i++) {
406-
if (a[i] != b[i])
407-
return false;
408-
}
409-
return true;
410-
}
411-
412-
byte[] canned_sdk_encbytes = { 34, 65, 81, 73, 68, 66, 65, 61, 61, 34 };
413-
byte[] canned_spring_encbytes = { 91, 49, 44, 50, 44, 51, 44, 52, 93 };
414391
}
415392

416393
}

0 commit comments

Comments
 (0)