1818
1919import java .lang .reflect .InvocationTargetException ;
2020
21+ import org .springframework .beans .factory .annotation .Autowired ;
22+ import org .springframework .context .ApplicationContext ;
2123import org .springframework .context .annotation .Bean ;
2224import org .springframework .context .annotation .Configuration ;
2325import org .springframework .data .auditing .DateTimeProvider ;
26+ import org .springframework .data .convert .CustomConversions ;
2427import org .springframework .data .couchbase .CouchbaseClientFactory ;
2528import org .springframework .data .couchbase .SimpleCouchbaseClientFactory ;
2629import org .springframework .data .couchbase .config .AbstractCouchbaseConfiguration ;
3336import org .springframework .data .couchbase .core .mapping .CouchbaseMappingContext ;
3437import org .springframework .data .couchbase .domain .time .AuditingDateTimeProvider ;
3538import org .springframework .data .couchbase .repository .auditing .EnableCouchbaseAuditing ;
39+ import org .springframework .data .couchbase .repository .auditing .EnableReactiveCouchbaseAuditing ;
3640import org .springframework .data .couchbase .repository .config .EnableCouchbaseRepositories ;
3741import org .springframework .data .couchbase .repository .config .ReactiveRepositoryOperationsMapping ;
3842import org .springframework .data .couchbase .repository .config .RepositoryOperationsMapping ;
4852 */
4953@ Configuration
5054@ EnableCouchbaseRepositories
51- @ EnableCouchbaseAuditing (auditorAwareRef = "auditorAwareRef" , dateTimeProviderRef = "dateTimeProviderRef" )
55+ @ EnableCouchbaseAuditing (auditorAwareRef = "auditorAwareRef" , dateTimeProviderRef = "dateTimeProviderRef" ) // this
56+ // activates
57+ // auditing
58+ @ EnableReactiveCouchbaseAuditing (auditorAwareRef = "reactiveAuditorAwareRef" ,
59+ dateTimeProviderRef = "dateTimeProviderRef" ) // this activates auditing
60+
5261public class Config extends AbstractCouchbaseConfiguration {
5362 String bucketname = "travel-sample" ;
5463 String username = "Administrator" ;
@@ -104,6 +113,11 @@ public NaiveAuditorAware testAuditorAware() {
104113 return new NaiveAuditorAware ();
105114 }
106115
116+ @ Bean (name = "reactiveAuditorAwareRef" )
117+ public ReactiveNaiveAuditorAware testReactiveAuditorAware () {
118+ return new ReactiveNaiveAuditorAware ();
119+ }
120+
107121 @ Bean (name = "dateTimeProviderRef" )
108122 public DateTimeProvider testDateTimeProvider () {
109123 return new AuditingDateTimeProvider ();
@@ -113,12 +127,12 @@ public DateTimeProvider testDateTimeProvider() {
113127 public void configureReactiveRepositoryOperationsMapping (ReactiveRepositoryOperationsMapping baseMapping ) {
114128 try {
115129 // comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work
116- // ReactiveCouchbaseTemplate personTemplate =
117- // myReactiveCouchbaseTemplate(myCouchbaseClientFactory("protected"),new MappingCouchbaseConverter( ));
130+ // ReactiveCouchbaseTemplate personTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("protected"),
131+ // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter() ));
118132 // baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket
119- // ReactiveCouchbaseTemplate userTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),new
120- // MappingCouchbaseConverter( ));
121- // baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
133+ // ReactiveCouchbaseTemplate userTemplate = myReactiveCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),
134+ // ( MappingCouchbaseConverter) (baseMapping.getDefault().getConverter() ));
135+ //baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
122136 // everything else goes in getBucketName() ( which is travel-sample )
123137 } catch (Exception e ) {
124138 throw e ;
@@ -129,11 +143,12 @@ public void configureReactiveRepositoryOperationsMapping(ReactiveRepositoryOpera
129143 public void configureRepositoryOperationsMapping (RepositoryOperationsMapping baseMapping ) {
130144 try {
131145 // comment out references to 'protected' and 'mybucket' - they are only to show how multi-bucket would work
132- // CouchbaseTemplate personTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("protected"),new
133- // MappingCouchbaseConverter( ));
146+ // CouchbaseTemplate personTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("protected"),
147+ // ( MappingCouchbaseConverter) (baseMapping.getDefault().getConverter() ));
134148 // baseMapping.mapEntity(Person.class, personTemplate); // Person goes in "protected" bucket
135- // CouchbaseTemplate userTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),new
136- // MappingCouchbaseConverter());
149+ // MappingCouchbaseConverter cvtr = (MappingCouchbaseConverter)baseMapping.getDefault().getConverter();
150+ // CouchbaseTemplate userTemplate = myCouchbaseTemplate(myCouchbaseClientFactory("mybucket"),
151+ // (MappingCouchbaseConverter) (baseMapping.getDefault().getConverter()));
137152 // baseMapping.mapEntity(User.class, userTemplate); // User goes in "mybucket"
138153 // everything else goes in getBucketName() ( which is travel-sample )
139154 } catch (Exception e ) {
@@ -176,10 +191,11 @@ public MappingCouchbaseConverter mappingCouchbaseConverter() {
176191 return converter ;
177192 }
178193
194+ /* This uses a CustomMappingCouchbaseConverter instead of MappingCouchbaseConverter */
179195 @ Override
180- @ Bean (name = "couchbaseMappingConverter " )
196+ @ Bean (name = "mappingCouchbaseConverter " )
181197 public MappingCouchbaseConverter mappingCouchbaseConverter (CouchbaseMappingContext couchbaseMappingContext ,
182- CouchbaseCustomConversions couchbaseCustomConversions ) {
198+ CouchbaseCustomConversions couchbaseCustomConversions /* there is a customConversions() method bean */ ) {
183199 // MappingCouchbaseConverter relies on a SimpleInformationMapper
184200 // that has an getAliasFor(info) that just returns getType().getName().
185201 // Our CustomMappingCouchbaseConverter uses a TypeBasedCouchbaseTypeMapper that will
0 commit comments