From b1680a8bb1235da4689a7e7af4049fb58a856d92 Mon Sep 17 00:00:00 2001 From: Julien Dubois Date: Fri, 21 Oct 2016 14:15:26 +0200 Subject: [PATCH] Correct MongoDB + Cloud Foundry setup Fix #4363 --- generators/cleanup.js | 4 +- generators/server/files.js | 3 +- .../config/_CloudDatabaseConfiguration.java | 84 +++++++++++++++++-- .../config/_CloudMongoDbConfiguration.java | 78 ----------------- .../config/_DatabaseConfiguration.java | 17 ++-- 5 files changed, 91 insertions(+), 95 deletions(-) delete mode 100644 generators/server/templates/src/main/java/package/config/_CloudMongoDbConfiguration.java diff --git a/generators/cleanup.js b/generators/cleanup.js index c59bb2583134..9a4188c5be89 100644 --- a/generators/cleanup.js +++ b/generators/cleanup.js @@ -32,5 +32,7 @@ function cleanupOldServerFiles(generator, javaDir, testDir) { if (generator.isJhipsterVersionLessThan('3.8.1')) { generator.removeFile(javaDir + 'config/JacksonConfiguration.java'); } - + if (generator.isJhipsterVersionLessThan('3.10.0')) { + generator.removeFile(javaDir + 'config/CloudMongoDbConfiguration.java'); + } } diff --git a/generators/server/files.js b/generators/server/files.js index db2e4447bdb0..1be10e04f9b1 100644 --- a/generators/server/files.js +++ b/generators/server/files.js @@ -337,10 +337,9 @@ function writeFiles() { this.template(SERVER_MAIN_SRC_DIR + 'package/config/_LoggingConfiguration.java', javaDir + 'config/LoggingConfiguration.java', this, {}); if (this.databaseType === 'mongodb') { - this.template(SERVER_MAIN_SRC_DIR + 'package/config/_CloudMongoDbConfiguration.java', javaDir + 'config/CloudMongoDbConfiguration.java', this, {}); this.template(SERVER_MAIN_SRC_DIR + 'package/domain/util/_JSR310DateConverters.java', javaDir + 'domain/util/JSR310DateConverters.java', this, {}); } - if (this.databaseType === 'sql' || this.databaseType === 'mongodb') { + if (this.databaseType === 'sql'|| this.databaseType === 'mongodb') { this.template(SERVER_MAIN_SRC_DIR + 'package/config/_CloudDatabaseConfiguration.java', javaDir + 'config/CloudDatabaseConfiguration.java', this, {}); this.template(SERVER_MAIN_SRC_DIR + 'package/config/_DatabaseConfiguration.java', javaDir + 'config/DatabaseConfiguration.java', this, {}); this.template(SERVER_MAIN_SRC_DIR + 'package/config/audit/_package-info.java', javaDir + 'config/audit/package-info.java', this, {}); diff --git a/generators/server/templates/src/main/java/package/config/_CloudDatabaseConfiguration.java b/generators/server/templates/src/main/java/package/config/_CloudDatabaseConfiguration.java index 50eb79f7f6ae..c5343406cd25 100644 --- a/generators/server/templates/src/main/java/package/config/_CloudDatabaseConfiguration.java +++ b/generators/server/templates/src/main/java/package/config/_CloudDatabaseConfiguration.java @@ -1,29 +1,95 @@ package <%=packageName%>.config; +<%_ if (databaseType == 'mongodb') { _%> + +import <%=packageName%>.domain.util.JSR310DateConverters.*; + +import com.github.mongobee.Mongobee; +<%_ } _%> +<%_ if (authenticationType == 'oauth2') { _%> + +import <%=packageName%>.config.oauth2.OAuth2AuthenticationReadConverter; +<%_ } _%> import org.slf4j.Logger; import org.slf4j.LoggerFactory;<% if (hibernateCache == 'hazelcast') { %> import org.springframework.cache.CacheManager;<% } %> import org.springframework.cloud.config.java.AbstractCloudConfig; -import org.springframework.context.annotation.*;<% if (databaseType == 'mongodb') { %> -import org.springframework.data.mongodb.MongoDbFactory;<% } %> -<% if (databaseType == 'sql') { %> -import javax.sql.DataSource;<% } %> +import org.springframework.context.annotation.*; +<%_ if (databaseType == 'mongodb') { _%> +import org.springframework.core.convert.converter.Converter; +import org.springframework.data.mongodb.MongoDbFactory; +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; +<%_ } _%> +<%_ if (databaseType == 'sql') { _%> + +import javax.sql.DataSource; +<%_ } _%> +<%_ if (databaseType == 'mongodb') { _%> + +import java.util.ArrayList; +import java.util.List; +<%_ } _%> @Configuration +<%_ if (databaseType == 'mongodb') { _%> +@EnableMongoRepositories("<%=packageName%>.repository") +<%_ } _%> @Profile(Constants.SPRING_PROFILE_CLOUD) public class CloudDatabaseConfiguration extends AbstractCloudConfig { - private final Logger log = LoggerFactory.getLogger(CloudDatabaseConfiguration.class);<% if (databaseType == 'sql') { %> + private final Logger log = LoggerFactory.getLogger(CloudDatabaseConfiguration.class); + <%_ if (databaseType == 'sql') { _%> @Bean public DataSource dataSource(<% if (hibernateCache == 'hazelcast') { %>CacheManager cacheManager<% } %>) { log.info("Configuring JDBC datasource from a cloud provider"); return connectionFactory().dataSource(); - }<% } %><% if (databaseType == 'mongodb') { %> + } + <%_ } _%> + <%_ if (databaseType == 'mongodb') { _%> @Bean - public MongoDbFactory mongoDbFactory() { - log.info("Configuring MongoDB datasource from a cloud provider"); + public MongoDbFactory mongoFactory() { return connectionFactory().mongoDbFactory(); - }<% } %> + } + + @Bean + public LocalValidatorFactoryBean validator() { + return new LocalValidatorFactoryBean(); + } + + @Bean + public ValidatingMongoEventListener validatingMongoEventListener() { + return new ValidatingMongoEventListener(validator()); + } + + @Bean + public CustomConversions customConversions() { + List> converterList = new ArrayList<>(); + <%_ if (authenticationType == 'oauth2') { _%> + converterList.add(new OAuth2AuthenticationReadConverter()); + <%_ } _%> + converterList.add(DateToZonedDateTimeConverter.INSTANCE); + converterList.add(ZonedDateTimeToDateConverter.INSTANCE); + converterList.add(DateToLocalDateConverter.INSTANCE); + converterList.add(LocalDateToDateConverter.INSTANCE); + converterList.add(DateToLocalDateTimeConverter.INSTANCE); + converterList.add(LocalDateTimeToDateConverter.INSTANCE); + return new CustomConversions(converterList); + } + + @Bean + public Mongobee mongobee(MongoDbFactory mongoDbFactory) throws Exception { + log.debug("Configuring Mongobee"); + Mongobee mongobee = new Mongobee(mongoDbFactory.getDb().getMongo()); + mongobee.setDbName(mongoDbFactory.getDb().getName()); + // package to scan for migrations + mongobee.setChangeLogsScanPackage("<%=packageName%>.config.dbmigrations"); + mongobee.setEnabled(true); + return mongobee; + } + <%_ } _%> } diff --git a/generators/server/templates/src/main/java/package/config/_CloudMongoDbConfiguration.java b/generators/server/templates/src/main/java/package/config/_CloudMongoDbConfiguration.java deleted file mode 100644 index b7647cc83aaa..000000000000 --- a/generators/server/templates/src/main/java/package/config/_CloudMongoDbConfiguration.java +++ /dev/null @@ -1,78 +0,0 @@ -package <%=packageName%>.config; - -import com.github.mongobee.Mongobee; -import com.mongodb.Mongo;<% if (authenticationType == 'oauth2') { %> -import <%=packageName%>.config.oauth2.OAuth2AuthenticationReadConverter;<% } %> -import <%=packageName%>.domain.util.JSR310DateConverters.*; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import org.springframework.core.convert.converter.Converter; -import org.springframework.data.mongodb.MongoDbFactory; -import org.springframework.data.mongodb.config.AbstractMongoConfiguration; -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 javax.inject.Inject; -import java.util.ArrayList; -import java.util.List; - -@Configuration -@EnableMongoRepositories("<%=packageName%>.repository") -@Profile(Constants.SPRING_PROFILE_CLOUD) -public class CloudMongoDbConfiguration extends AbstractMongoConfiguration { - - private final Logger log = LoggerFactory.getLogger(CloudDatabaseConfiguration.class); - - @Inject - private MongoDbFactory mongoDbFactory; - - @Bean - public ValidatingMongoEventListener validatingMongoEventListener() { - return new ValidatingMongoEventListener(validator()); - } - - @Bean - public LocalValidatorFactoryBean validator() { - return new LocalValidatorFactoryBean(); - } - - @Bean - public CustomConversions customConversions() { - List> converterList = new ArrayList<>();<% if (authenticationType == 'oauth2') { %> - converterList.add(new OAuth2AuthenticationReadConverter());<% } %> - converterList.add(DateToZonedDateTimeConverter.INSTANCE); - converterList.add(ZonedDateTimeToDateConverter.INSTANCE); - converterList.add(DateToLocalDateConverter.INSTANCE); - converterList.add(LocalDateToDateConverter.INSTANCE); - converterList.add(DateToLocalDateTimeConverter.INSTANCE); - converterList.add(LocalDateTimeToDateConverter.INSTANCE); - return new CustomConversions(converterList); - } - - @Bean - public Mongobee mongobee() throws Exception { - log.debug("Configuring Mongobee"); - Mongobee mongobee = new Mongobee(mongo()); - mongobee.setDbName(getDatabaseName()); - // package to scan for migrations - mongobee.setChangeLogsScanPackage("<%=packageName%>.config.dbmigrations"); - mongobee.setEnabled(true); - return mongobee; - } - - @Override - protected String getDatabaseName() { - return mongoDbFactory.getDb().getName(); - } - - @Override - public Mongo mongo() throws Exception { - return mongoDbFactory().getDb().getMongo(); - } -} diff --git a/generators/server/templates/src/main/java/package/config/_DatabaseConfiguration.java b/generators/server/templates/src/main/java/package/config/_DatabaseConfiguration.java index 85ca7c6c9611..31f148f5d031 100644 --- a/generators/server/templates/src/main/java/package/config/_DatabaseConfiguration.java +++ b/generators/server/templates/src/main/java/package/config/_DatabaseConfiguration.java @@ -1,13 +1,21 @@ package <%=packageName%>.config; -<% if (databaseType == 'sql') { %> +<%_ if (databaseType == 'sql') { _%> + import <%=packageName%>.config.liquibase.AsyncSpringLiquibase; import com.fasterxml.jackson.datatype.hibernate4.Hibernate4Module; -import liquibase.integration.spring.SpringLiquibase;<% } %><% if (databaseType == 'mongodb' && authenticationType == 'oauth2') { %> -import <%=packageName%>.config.oauth2.OAuth2AuthenticationReadConverter;<% } %><% if (databaseType == 'mongodb') { %> +import liquibase.integration.spring.SpringLiquibase; +<%_ } _%> +<%_ if (databaseType == 'mongodb' && authenticationType == 'oauth2') { _%> + +import <%=packageName%>.config.oauth2.OAuth2AuthenticationReadConverter; +<%_ } _%> +<%_ if (databaseType == 'mongodb') { _%> + import <%=packageName%>.domain.util.JSR310DateConverters.*; import com.mongodb.Mongo; -import com.github.mongobee.Mongobee;<% } %> +import com.github.mongobee.Mongobee; +<%_ } _%> <%_ if (devDatabaseType == 'h2Disk' || devDatabaseType == 'h2Memory') { _%> import org.h2.tools.Server; <%_ } _%> @@ -21,7 +29,6 @@ import org.springframework.context.annotation.Profile;<% if (databaseType == 'mongodb') { %> import org.springframework.context.annotation.Import;<% } %><% if (databaseType == 'sql') { %> import org.springframework.core.env.Environment;<% } %><% if (databaseType == 'mongodb') { %> -import org.springframework.core.io.ClassPathResource; import org.springframework.core.convert.converter.Converter;<% } %><% if (searchEngine == 'elasticsearch') { %> import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;<% } %><% if (databaseType == 'mongodb') { %> import org.springframework.data.mongodb.config.AbstractMongoConfiguration;