Error in mongo db repository

I use MongoDB extension

package org.isc.axon.framworkcore.config;

import com.mongodb.MongoClientSettings;

import com.mongodb.ServerAddress;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import org.axonframework.common.transaction.TransactionManager;
import org.axonframework.eventsourcing.eventstore.EmbeddedEventStore;
import org.axonframework.eventsourcing.eventstore.EventStorageEngine;
import org.axonframework.eventsourcing.eventstore.EventStore;

import org.axonframework.extensions.mongo.MongoTemplate;
import org.axonframework.extensions.mongo.eventsourcing.eventstore.MongoEventStorageEngine;
import org.axonframework.extensions.mongo.spring.SpringMongoTemplate;
import org.axonframework.extensions.mongo.springboot.AxonMongoProperties;
import org.axonframework.extensions.mongo.springboot.autoconfig.MongoAutoConfiguration;
import org.axonframework.extensions.mongo.springboot.autoconfig.MongoDeadLetterProviderAutoConfiguration;
import org.axonframework.serialization.xml.XStreamSerializer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
import org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.mongodb.MongoDatabaseFactory;
import org.springframework.data.mongodb.core.SimpleMongoClientDatabaseFactory;

import static java.util.Collections.singletonList;
import static java.util.Objects.isNull;

;

/**

  • @Author: Z_Rashidi
  • Date : 10/9/2023
    */

@ConditionalOnProperty(prefix = “isc.axon.mongodb”,havingValue =“true” ,name = “enable”,matchIfMissing = false)
@Configuration
@EnableConfigurationProperties(PropertiesISC.class)
@AutoConfigureAfter( { KafkaAutoConfiguration.class,
MongoAutoConfiguration.class,
MongoDataAutoConfiguration.class,
MongoDeadLetterProviderAutoConfiguration.class})
public class ConfigMongo {

/**

  • @param storageEngine
  • */
@Bean
public EventStore eventStore(EventStorageEngine storageEngine
							 ) {
	return EmbeddedEventStore.builder()
			.storageEngine(storageEngine)
		//	.messageMonitor(metricRegistry.registerEventBus("eventStore"))
			//.spanFactory(spanFactory)
			.build();
}

/**

  • The MongoEventStorageEngine stores each event in a separate MongoDB document.

  • @param factory

  • @param transactionManager

  • */
    @Bean
    public EventStorageEngine storageEngine(MongoDatabaseFactory factory,
    TransactionManager transactionManager) {
    return MongoEventStorageEngine.builder()
    .mongoTemplate(mongoTemplate(factory).builder()
    .factory(factory)
    .build())
    .eventSerializer(
    XStreamSerializer.builder()
    .xStream(SecureXStreamSerializer.get().getXStream())
    .build()

     		)
     		.snapshotSerializer(
     				XStreamSerializer.builder()
     						.xStream(SecureXStreamSerializer.get().getXStream())
     						.build()
     		)
     		.transactionManager(transactionManager)
     		.build();
    

    }

// @Autowired
// MongoTemplate template;
//
// @Bean
// @ConditionalOnMissingBean
// public MongoTemplate mongoTemplate() throws Exception {
// return new MongoTemplate(mongoClient(secondaryProperties()), “axonframework”);
// }
@Bean
@ConditionalOnMissingBean
public SpringMongoTemplate mongoTemplate(MongoDatabaseFactory factory) {
AxonMongoProperties axonMongoProperties= new AxonMongoProperties();
String databaseName = axonMongoProperties.getDatabaseName();
databaseName=“axonframework”;
System.out.println("**************** "+databaseName);
if (isNull(databaseName)) {
return SpringMongoTemplate.builder()
.factory(factory)
.build();
} else {
return SpringMongoTemplate.builder()
.factory(factory)
.databaseName(databaseName)
.build();
}
}

@Value("${spring.data.mongodb.uri}")
String databaseUrl;
@Autowired
MongoClient mongoClients;
@Bean
@ConditionalOnMissingBean
public MongoDatabaseFactory mongoDatabaseFactory(){

	return new SimpleMongoClientDatabaseFactory(mongoClients,"axonframework");
}

//
//
@ConfigurationProperties(prefix = “spring.data.mongodb”)
@ConditionalOnMissingBean
@Bean
public MongoProperties secondaryProperties() {
return new MongoProperties();
}
@ConditionalOnMissingBean
@Bean
public MongoClient mongoClient(MongoProperties mongoProperties) {

// MongoCredential credential = MongoCredential
// .createCredential(mongoProperties.getUsername(), mongoProperties.getAuthenticationDatabase(), mongoProperties.getPassword());

	return MongoClients.create(MongoClientSettings.builder()
			.applyToClusterSettings(builder -> builder
					.hosts(singletonList(new ServerAddress(mongoProperties.getHost(), mongoProperties.getPort()))))
			//.credential(credential)
			.build());
}

}

get this error when we use public interface AccountRepository extends MongoRepository<Account, String>

Caused by: java.lang.IllegalStateException: Cannot convert value of type ‘org.axonframework.extensions.mongo.spring.SpringMongoTemplate’ to required type ‘org.springframework.data.mongodb.core.MongoOperations’ for property ‘mongoOperations’: no matching editors or conversion strategy found

I’m not sure it’s related to the Mongo extension. Maybe this demo project can help? I’ve never seen that error before.

I fine out error

thank you