From 94dd510b52dcdc7779d1e55d03b45be903bd7145 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Fri, 25 Apr 2014 13:41:09 +0100 Subject: [PATCH] Merge GridFs with MongoTemplate configuration --- .../GridFsTemplateAutoConfiguration.java | 72 ------------------- .../mongo/MongoTemplateAutoConfiguration.java | 25 ++++++- .../GridFsTemplateAutoConfigurationTests.java | 40 +++++------ 3 files changed, 42 insertions(+), 95 deletions(-) delete mode 100644 spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfiguration.java diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfiguration.java deleted file mode 100644 index 1519c34fe91..00000000000 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfiguration.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2012-2013 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.autoconfigure.mongo; - -import com.mongodb.Mongo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.mongodb.MongoDbFactory; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.SimpleMongoDbFactory; -import org.springframework.data.mongodb.gridfs.GridFsTemplate; -import org.springframework.util.StringUtils; - -/** - *

- * {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration Auto-configuration} for - * Mongo's {@link com.mongodb.gridfs.GridFS Grid FS} Spring Data's - * {@link org.springframework.data.mongodb.gridfs.GridFsTemplate GridFsTemplate}. - * - *

- * You can override which GridFS database is used by specifying {@code spring.data.mongodb.gridFsDatabase}, - * otherwise it defaults to the general {@code spring.data.mongodb.database} parameter. - * - * @author Josh Long - */ -@Configuration -@ConditionalOnClass({Mongo.class, GridFsTemplate.class}) -@EnableConfigurationProperties(MongoProperties.class) -@AutoConfigureAfter(MongoTemplateAutoConfiguration.class) -public class GridFsTemplateAutoConfiguration { - - @Autowired - private MongoProperties mongoProperties; - - @Bean - @ConditionalOnMissingBean - public MongoDbFactory mongoDbFactory(Mongo mongo) throws Exception { - - String db = StringUtils.hasText(this.mongoProperties.getGridFsDatabase()) ? - this.mongoProperties.getGridFsDatabase() : this.mongoProperties.getMongoClientDatabase() ; - - return new SimpleMongoDbFactory(mongo, db ); - } - - @Bean - @ConditionalOnMissingBean - public GridFsTemplate gridFsTemplate(MongoDbFactory mongoDbFactory, - MongoTemplate mongoTemplate) { - return new GridFsTemplate(mongoDbFactory, mongoTemplate.getConverter()); - } - - -} diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoTemplateAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoTemplateAutoConfiguration.java index 839f9d1cc18..d5e340dce56 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoTemplateAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoTemplateAutoConfiguration.java @@ -24,7 +24,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.mongodb.MongoDbFactory; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.SimpleMongoDbFactory; +import org.springframework.data.mongodb.gridfs.GridFsTemplate; +import org.springframework.util.StringUtils; import com.mongodb.Mongo; @@ -51,8 +55,25 @@ public class MongoTemplateAutoConfiguration { @Bean @ConditionalOnMissingBean - public MongoTemplate mongoTemplate(Mongo mongo) throws UnknownHostException { - return new MongoTemplate(mongo, this.properties.getMongoClientDatabase()); + public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory) + throws UnknownHostException { + return new MongoTemplate(mongoDbFactory); + } + + @Bean + @ConditionalOnMissingBean + public MongoDbFactory mongoDbFactory(Mongo mongo) throws Exception { + String db = StringUtils.hasText(this.properties.getGridFsDatabase()) ? this.properties + .getGridFsDatabase() : this.properties.getMongoClientDatabase(); + + return new SimpleMongoDbFactory(mongo, db); + } + + @Bean + @ConditionalOnMissingBean + public GridFsTemplate gridFsTemplate(MongoDbFactory mongoDbFactory, + MongoTemplate mongoTemplate) { + return new GridFsTemplate(mongoDbFactory, mongoTemplate.getConverter()); } } diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfigurationTests.java index 27a4c98a704..da9e9571164 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/mongo/GridFsTemplateAutoConfigurationTests.java @@ -13,41 +13,39 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -package org.springframework.boot.autoconfigure.mongo; +package org.springframework.boot.autoconfigure.mongo; import org.junit.After; import org.junit.Test; import org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.gridfs.GridFsTemplate; import static org.junit.Assert.assertEquals; - /** - * Tests for {@link org.springframework.boot.autoconfigure.mongo.GridFsTemplateAutoConfiguration}. + * Tests for + * {@link org.springframework.boot.autoconfigure.mongo.MongoTemplateAutoConfiguration}. * * @author Josh Long */ public class GridFsTemplateAutoConfigurationTests { - private AnnotationConfigApplicationContext context; - - @After - public void close() { - if (this.context != null) { - this.context.close(); - } - } - - @Test - public void templateExists() { - this.context = new AnnotationConfigApplicationContext( - PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class, - MongoTemplateAutoConfiguration.class , GridFsTemplateAutoConfiguration.class); - assertEquals(1, this.context.getBeanNamesForType(GridFsTemplate.class).length); - } + private AnnotationConfigApplicationContext context; + + @After + public void close() { + if (this.context != null) { + this.context.close(); + } + } + + @Test + public void templateExists() { + this.context = new AnnotationConfigApplicationContext( + PropertyPlaceholderAutoConfiguration.class, MongoAutoConfiguration.class, + MongoTemplateAutoConfiguration.class); + assertEquals(1, this.context.getBeanNamesForType(GridFsTemplate.class).length); + } }