package io.github.jhipster.sample.config; import com.github.mongobee.Mongobee; import com.mongodb.MongoClient; import io.github.jhipster.config.JHipsterConstants; import io.github.jhipster.domain.util.JSR310DateConverters.DateToZonedDateTimeConverter; import io.github.jhipster.domain.util.JSR310DateConverters.ZonedDateTimeToDateConverter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; import org.springframework.boot.autoconfigure.mongo.MongoProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Profile; import org.springframework.core.convert.converter.Converter; import org.springframework.data.mongodb.config.EnableMongoAuditing; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.convert.CustomConversions; import org.springframework.data.mongodb.core.mapping.event.ValidatingMongoEventListener; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import java.util.ArrayList; import java.util.List; @Configuration @Profile("!" + JHipsterConstants.SPRING_PROFILE_CLOUD) @EnableMongoRepositories("io.github.jhipster.sample.repository") @Import(value = MongoAutoConfiguration.class) @EnableMongoAuditing(auditorAwareRef = "springSecurityAuditorAware") public class DatabaseConfiguration { private final Logger log = LoggerFactory.getLogger(DatabaseConfiguration.class); @Bean public ValidatingMongoEventListener validatingMongoEventListener() { return new ValidatingMongoEventListener(validator()); } @Bean public LocalValidatorFactoryBean validator() { return new LocalValidatorFactoryBean(); } @Bean public CustomConversions customConversions() { List<Converter<?, ?>> converters = new ArrayList<>(); converters.add(DateToZonedDateTimeConverter.INSTANCE); converters.add(ZonedDateTimeToDateConverter.INSTANCE); return new CustomConversions(converters); } @Bean public Mongobee mongobee(MongoClient mongoClient, MongoTemplate mongoTemplate, MongoProperties mongoProperties) { log.debug("Configuring Mongobee"); Mongobee mongobee = new Mongobee(mongoClient); mongobee.setDbName(mongoProperties.getDatabase()); mongobee.setMongoTemplate(mongoTemplate); // package to scan for migrations mongobee.setChangeLogsScanPackage("io.github.jhipster.sample.config.dbmigrations"); mongobee.setEnabled(true); return mongobee; } }