Skip to content
This repository has been archived by the owner on Feb 7, 2024. It is now read-only.

Commit

Permalink
feat: disable automatic db migration from Mongobee
Browse files Browse the repository at this point in the history
This is due to Mongobee having a bug that prevents it from working with Mongo Atlas correctly; jhipster/generator-jhipster#8665
  • Loading branch information
SudharakaP committed Sep 29, 2020
1 parent 46b436d commit 9b2a43c
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 4 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/github-ci.yml
Expand Up @@ -53,6 +53,10 @@ jobs:
spring.data.mongodb.database: ${{ secrets.DATABASE_NAME }}
spring.data.mongodb.password: ${{ secrets.DATABASE_PASSWORD }}

# Replace DatabaseConfiguration without migration (Mongo-Atlas hack due to bug in Mongobee)
- name: Replace DatabaseConfiguration.java
run: cd src/main/resources/config && mv DatabaseConfiguration.txt DatabaseConfiguration.java

- name: Package application
run: ./gradlew bootJar -PnodeInstall -Pprod -x test -x integrationTest
- name: Deploy to Heroku
Expand Down
Expand Up @@ -51,10 +51,7 @@ public MongoCustomConversions customConversions() {
return new MongoCustomConversions(converters);
}

/* As per issue https://github.com/jhipster/generator-jhipster/issues/8665, Mongo Atlas has problems with Mongobee; so we
* replace this file at deployment time with the following annotation commented out.
*/
// @Bean
@Bean
public Mongobee mongobee(MongoClient mongoClient, MongoTemplate mongoTemplate, MongoProperties mongoProperties) {
log.debug("Configuring Mongobee");
Mongobee mongobee = new Mongobee(mongoClient);
Expand Down
@@ -0,0 +1,67 @@
package com.openarchitex.accotech.config;

import io.github.jhipster.config.JHipsterConstants;
import com.github.mongobee.Mongobee;
import com.mongodb.MongoClient;
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.MongoCustomConversions;
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
@EnableMongoRepositories("com.openarchitex.accotech.repository")
@Profile("!" + JHipsterConstants.SPRING_PROFILE_CLOUD)
@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 MongoCustomConversions customConversions() {
List<Converter<?, ?>> converters = new ArrayList<>();
converters.add(DateToZonedDateTimeConverter.INSTANCE);
converters.add(ZonedDateTimeToDateConverter.INSTANCE);
return new MongoCustomConversions(converters);
}

/* As per issue https://github.com/jhipster/generator-jhipster/issues/8665, Mongo Atlas has problems with Mongobee; so we
* replace this file at deployment time with the following annotation commented out.
*/
// @Bean
public Mongobee mongobee(MongoClient mongoClient, MongoTemplate mongoTemplate, MongoProperties mongoProperties) {
log.debug("Configuring Mongobee");
Mongobee mongobee = new Mongobee(mongoClient);
mongobee.setDbName(mongoProperties.getMongoClientDatabase());
mongobee.setMongoTemplate(mongoTemplate);
// package to scan for migrations
mongobee.setChangeLogsScanPackage("com.openarchitex.accotech.config.dbmigrations");
mongobee.setEnabled(true);
return mongobee;
}}

0 comments on commit 9b2a43c

Please sign in to comment.