Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
aed49c06
Commit
aed49c06
authored
Aug 20, 2020
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add configuration option for GridFsTemplate's bucket
Closes gh-22854
parent
ee41d71e
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
92 additions
and
14 deletions
+92
-14
MongoDatabaseFactoryDependentConfiguration.java
...ata/mongo/MongoDatabaseFactoryDependentConfiguration.java
+5
-4
MongoReactiveDataAutoConfiguration.java
...figure/data/mongo/MongoReactiveDataAutoConfiguration.java
+5
-4
MongoProperties.java
...ngframework/boot/autoconfigure/mongo/MongoProperties.java
+46
-6
MongoDataAutoConfigurationTests.java
...configure/data/mongo/MongoDataAutoConfigurationTests.java
+20
-0
MongoReactiveDataAutoConfigurationTests.java
...e/data/mongo/MongoReactiveDataAutoConfigurationTests.java
+16
-0
No files found.
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoDatabaseFactoryDependentConfiguration.java
View file @
aed49c06
...
...
@@ -23,6 +23,7 @@ import com.mongodb.client.MongoDatabase;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties.Gridfs
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.dao.DataAccessException
;
...
...
@@ -76,12 +77,12 @@ class MongoDatabaseFactoryDependentConfiguration {
@ConditionalOnMissingBean
(
GridFsOperations
.
class
)
GridFsTemplate
gridFsTemplate
(
MongoDatabaseFactory
factory
,
MongoTemplate
mongoTemplate
)
{
return
new
GridFsTemplate
(
new
GridFsMongoDatabaseFactory
(
factory
,
this
.
properties
),
mongoTemplate
.
getConverter
());
mongoTemplate
.
getConverter
()
,
this
.
properties
.
getGridfs
().
getBucket
()
);
}
/**
* {@link MongoDatabaseFactory} decorator to respect
*
{@link MongoProperties#getGridFsDatabase()} if
set.
* {@link MongoDatabaseFactory} decorator to respect
{@link Gridfs#getDatabase()} if
* set.
*/
static
class
GridFsMongoDatabaseFactory
implements
MongoDatabaseFactory
{
...
...
@@ -98,7 +99,7 @@ class MongoDatabaseFactoryDependentConfiguration {
@Override
public
MongoDatabase
getMongoDatabase
()
throws
DataAccessException
{
String
gridFsDatabase
=
this
.
properties
.
getGrid
Fs
Database
();
String
gridFsDatabase
=
this
.
properties
.
getGrid
fs
().
get
Database
();
if
(
StringUtils
.
hasText
(
gridFsDatabase
))
{
return
this
.
mongoDatabaseFactory
.
getMongoDatabase
(
gridFsDatabase
);
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfiguration.java
View file @
aed49c06
...
...
@@ -32,6 +32,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties
;
import
org.springframework.boot.autoconfigure.mongo.MongoProperties.Gridfs
;
import
org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
...
...
@@ -113,12 +114,12 @@ public class MongoReactiveDataAutoConfiguration {
MongoProperties
properties
)
{
return
new
ReactiveGridFsTemplate
(
dataBufferFactory
,
new
GridFsReactiveMongoDatabaseFactory
(
reactiveMongoDatabaseFactory
,
properties
),
mappingMongoConverter
,
null
);
properties
.
getGridfs
().
getBucket
()
);
}
/**
* {@link ReactiveMongoDatabaseFactory} decorator to use
*
{@link MongoProperties#getGridFsDatabase()}
when set.
* {@link ReactiveMongoDatabaseFactory} decorator to use
{@link Gridfs#getDatabase()}
* when set.
*/
static
class
GridFsReactiveMongoDatabaseFactory
implements
ReactiveMongoDatabaseFactory
{
...
...
@@ -138,7 +139,7 @@ public class MongoReactiveDataAutoConfiguration {
@Override
public
Mono
<
MongoDatabase
>
getMongoDatabase
()
throws
DataAccessException
{
String
gridFsDatabase
=
this
.
properties
.
getGrid
Fs
Database
();
String
gridFsDatabase
=
this
.
properties
.
getGrid
fs
().
get
Database
();
if
(
StringUtils
.
hasText
(
gridFsDatabase
))
{
return
this
.
delegate
.
getMongoDatabase
(
gridFsDatabase
);
}
...
...
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/mongo/MongoProperties.java
View file @
aed49c06
...
...
@@ -20,6 +20,7 @@ import com.mongodb.ConnectionString;
import
org.bson.UuidRepresentation
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.DeprecatedConfigurationProperty
;
/**
* Configuration properties for Mongo.
...
...
@@ -74,10 +75,7 @@ public class MongoProperties {
*/
private
String
authenticationDatabase
;
/**
* GridFS database name.
*/
private
String
gridFsDatabase
;
private
final
Gridfs
gridfs
=
new
Gridfs
();
/**
* Login user of the mongo server. Cannot be set with URI.
...
...
@@ -193,12 +191,24 @@ public class MongoProperties {
this
.
port
=
port
;
}
public
Gridfs
getGridfs
()
{
return
this
.
gridfs
;
}
/**
* Return the GridFS database name.
* @return the GridFS database name
* @deprecated since 2.4.0 in favor of {@link Gridfs#getDatabase()}
*/
@DeprecatedConfigurationProperty
(
replacement
=
"spring.data.mongodb.gridfs.database"
)
@Deprecated
public
String
getGridFsDatabase
()
{
return
this
.
grid
FsDatabase
;
return
this
.
grid
fs
.
getDatabase
()
;
}
@Deprecated
public
void
setGridFsDatabase
(
String
gridFsDatabase
)
{
this
.
grid
FsDatabase
=
gridFsDatabase
;
this
.
grid
fs
.
setDatabase
(
gridFsDatabase
)
;
}
public
String
getMongoClientDatabase
()
{
...
...
@@ -216,4 +226,34 @@ public class MongoProperties {
this
.
autoIndexCreation
=
autoIndexCreation
;
}
public
static
class
Gridfs
{
/**
* GridFS database name.
*/
private
String
database
;
/**
* GridFS bucket name.
*/
private
String
bucket
;
public
String
getDatabase
()
{
return
this
.
database
;
}
public
void
setDatabase
(
String
database
)
{
this
.
database
=
database
;
}
public
String
getBucket
()
{
return
this
.
bucket
;
}
public
void
setBucket
(
String
bucket
)
{
this
.
bucket
=
bucket
;
}
}
}
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoDataAutoConfigurationTests.java
View file @
aed49c06
...
...
@@ -71,6 +71,17 @@ class MongoDataAutoConfigurationTests {
@Test
void
whenGridFsDatabaseIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridfs.database:grid"
).
run
((
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
GridFsTemplate
.
class
);
GridFsTemplate
template
=
context
.
getBean
(
GridFsTemplate
.
class
);
MongoDatabaseFactory
factory
=
(
MongoDatabaseFactory
)
ReflectionTestUtils
.
getField
(
template
,
"dbFactory"
);
assertThat
(
factory
.
getMongoDatabase
().
getName
()).
isEqualTo
(
"grid"
);
});
}
@Test
@Deprecated
void
whenGridFsDatabaseIsConfiguredWithDeprecatedPropertyThenGridFsTemplateIsAutoConfiguredAndUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridFsDatabase:grid"
).
run
((
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
GridFsTemplate
.
class
);
GridFsTemplate
template
=
context
.
getBean
(
GridFsTemplate
.
class
);
...
...
@@ -79,6 +90,15 @@ class MongoDataAutoConfigurationTests {
});
}
@Test
void
whenGridFsBucketIsConfiguredThenGridFsTemplateIsAutoConfiguredAndUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridfs.bucket:test-bucket"
).
run
((
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
GridFsTemplate
.
class
);
GridFsTemplate
template
=
context
.
getBean
(
GridFsTemplate
.
class
);
assertThat
(
template
).
hasFieldOrPropertyWithValue
(
"bucket"
,
"test-bucket"
);
});
}
@Test
void
customConversions
()
{
this
.
contextRunner
.
withUserConfiguration
(
CustomConversionsConfig
.
class
).
run
((
context
)
->
{
...
...
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/data/mongo/MongoReactiveDataAutoConfigurationTests.java
View file @
aed49c06
...
...
@@ -54,10 +54,26 @@ class MongoReactiveDataAutoConfigurationTests {
@Test
void
whenGridFsDatabaseIsConfiguredThenGridFsTemplateUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridfs.database:grid"
)
.
run
((
context
)
->
assertThat
(
grisFsTemplateDatabaseName
(
context
)).
isEqualTo
(
"grid"
));
}
@Test
@Deprecated
void
whenGridFsDatabaseIsConfiguredWithDeprecatedPropertyThenGridFsTemplateUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridFsDatabase:grid"
)
.
run
((
context
)
->
assertThat
(
grisFsTemplateDatabaseName
(
context
)).
isEqualTo
(
"grid"
));
}
@Test
void
whenGridFsBucketIsConfiguredThenGridFsTemplateUsesIt
()
{
this
.
contextRunner
.
withPropertyValues
(
"spring.data.mongodb.gridfs.bucket:test-bucket"
).
run
((
context
)
->
{
assertThat
(
context
).
hasSingleBean
(
ReactiveGridFsTemplate
.
class
);
ReactiveGridFsTemplate
template
=
context
.
getBean
(
ReactiveGridFsTemplate
.
class
);
assertThat
(
template
).
hasFieldOrPropertyWithValue
(
"bucket"
,
"test-bucket"
);
});
}
@Test
void
backsOffIfMongoClientBeanIsNotPresent
()
{
ApplicationContextRunner
runner
=
new
ApplicationContextRunner
().
withConfiguration
(
AutoConfigurations
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment