Skip to content

Commit 4d29d93

Browse files
baumgartnerodrotbohm
authored andcommitted
DATAMONGO-823 - Add bucket attribute to <mongo:gridFsTemplate />.
Original pull request: spring-projects#114.
1 parent 86c11bc commit 4d29d93

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/GridFsTemplateParser.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2013 the original author or authors.
2+
* Copyright 2013-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -57,6 +57,7 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
5757

5858
String converterRef = element.getAttribute("converter-ref");
5959
String dbFactoryRef = element.getAttribute("db-factory-ref");
60+
String bucket = element.getAttribute("bucket");
6061

6162
BeanDefinitionBuilder gridFsTemplateBuilder = BeanDefinitionBuilder.genericBeanDefinition(GridFsTemplate.class);
6263

@@ -72,6 +73,10 @@ protected AbstractBeanDefinition parseInternal(Element element, ParserContext pa
7273
gridFsTemplateBuilder.addConstructorArgReference(BeanNames.DEFAULT_CONVERTER_BEAN_NAME);
7374
}
7475

76+
if (StringUtils.hasText(bucket)) {
77+
gridFsTemplateBuilder.addConstructorArgValue(bucket);
78+
}
79+
7580
return (AbstractBeanDefinition) helper.getComponentIdButFallback(gridFsTemplateBuilder, BeanNames.GRID_FS_TEMPLATE)
7681
.getBeanDefinition();
7782
}

spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -628,6 +628,12 @@ The reference to a Mongoconverter instance.
628628
</xsd:appinfo>
629629
</xsd:annotation>
630630
</xsd:attribute>
631+
<xsd:attribute name="bucket" type="xsd:string" use="optional">
632+
<xsd:annotation>
633+
<xsd:documentation><![CDATA[
634+
The GridFs bucket string.]]></xsd:documentation>
635+
</xsd:annotation>
636+
</xsd:attribute>
631637
</xsd:complexType>
632638
</xsd:element>
633639
</xsd:schema>

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoNamespaceTests.java

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2010-2013 the original author or authors.
2+
* Copyright 2010-2014 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -53,8 +53,10 @@ public class MongoNamespaceTests {
5353

5454
@Test
5555
public void testMongoSingleton() throws Exception {
56+
5657
assertTrue(ctx.containsBean("noAttrMongo"));
5758
MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&noAttrMongo");
59+
5860
assertNull(getField(mfb, "host"));
5961
assertNull(getField(mfb, "port"));
6062
}
@@ -64,8 +66,10 @@ public void testMongoSingletonWithAttributes() throws Exception {
6466

6567
assertTrue(ctx.containsBean("defaultMongo"));
6668
MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&defaultMongo");
69+
6770
String host = (String) getField(mfb, "host");
6871
Integer port = (Integer) getField(mfb, "port");
72+
6973
assertEquals("localhost", host);
7074
assertEquals(new Integer(27017), port);
7175

@@ -105,8 +109,10 @@ public void testMongoSingletonWithSslEnabledAndCustomSslSocketFactory() throws E
105109

106110
@Test
107111
public void testSecondMongoDbFactory() {
112+
108113
assertTrue(ctx.containsBean("secondMongoDbFactory"));
109114
MongoDbFactory dbf = (MongoDbFactory) ctx.getBean("secondMongoDbFactory");
115+
110116
Mongo mongo = (Mongo) getField(dbf, "mongo");
111117
assertEquals("localhost", mongo.getAddress().getHost());
112118
assertEquals(27017, mongo.getAddress().getPort());
@@ -137,10 +143,13 @@ public void testThirdMongoDbFactory() {
137143
*/
138144
@Test
139145
public void testMongoTemplateFactory() {
146+
140147
assertTrue(ctx.containsBean("mongoTemplate"));
141148
MongoOperations operations = (MongoOperations) ctx.getBean("mongoTemplate");
149+
142150
MongoDbFactory dbf = (MongoDbFactory) getField(operations, "mongoDbFactory");
143151
assertEquals("database", getField(dbf, "databaseName"));
152+
144153
MongoConverter converter = (MongoConverter) getField(operations, "mongoConverter");
145154
assertNotNull(converter);
146155
}
@@ -150,10 +159,13 @@ public void testMongoTemplateFactory() {
150159
*/
151160
@Test
152161
public void testSecondMongoTemplateFactory() {
162+
153163
assertTrue(ctx.containsBean("anotherMongoTemplate"));
154164
MongoOperations operations = (MongoOperations) ctx.getBean("anotherMongoTemplate");
165+
155166
MongoDbFactory dbf = (MongoDbFactory) getField(operations, "mongoDbFactory");
156167
assertEquals("database", getField(dbf, "databaseName"));
168+
157169
WriteConcern writeConcern = (WriteConcern) getField(operations, "writeConcern");
158170
assertEquals(WriteConcern.SAFE, writeConcern);
159171
}
@@ -163,10 +175,13 @@ public void testSecondMongoTemplateFactory() {
163175
*/
164176
@Test
165177
public void testGridFsTemplateFactory() {
178+
166179
assertTrue(ctx.containsBean("gridFsTemplate"));
167180
GridFsOperations operations = (GridFsOperations) ctx.getBean("gridFsTemplate");
181+
168182
MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory");
169183
assertEquals("database", getField(dbf, "databaseName"));
184+
170185
MongoConverter converter = (MongoConverter) getField(operations, "converter");
171186
assertNotNull(converter);
172187
}
@@ -176,25 +191,51 @@ public void testGridFsTemplateFactory() {
176191
*/
177192
@Test
178193
public void testSecondGridFsTemplateFactory() {
179-
assertTrue(ctx.containsBean("antoherGridFsTemplate"));
180-
GridFsOperations operations = (GridFsOperations) ctx.getBean("antoherGridFsTemplate");
194+
195+
assertTrue(ctx.containsBean("secondGridFsTemplate"));
196+
GridFsOperations operations = (GridFsOperations) ctx.getBean("secondGridFsTemplate");
197+
181198
MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory");
182199
assertEquals("database", getField(dbf, "databaseName"));
200+
assertEquals(null, getField(operations, "bucket"));
201+
202+
MongoConverter converter = (MongoConverter) getField(operations, "converter");
203+
assertNotNull(converter);
204+
}
205+
206+
/**
207+
* @see DATAMONGO-823
208+
*/
209+
@Test
210+
public void testThirdGridFsTemplateFactory() {
211+
212+
assertTrue(ctx.containsBean("thirdGridFsTemplate"));
213+
GridFsOperations operations = (GridFsOperations) ctx.getBean("thirdGridFsTemplate");
214+
215+
MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory");
216+
assertEquals("database", getField(dbf, "databaseName"));
217+
assertEquals("bucketString", getField(operations, "bucket"));
218+
183219
MongoConverter converter = (MongoConverter) getField(operations, "converter");
184220
assertNotNull(converter);
185221
}
186222

187223
@Test
188224
@SuppressWarnings("deprecation")
189225
public void testMongoSingletonWithPropertyPlaceHolders() throws Exception {
226+
190227
assertTrue(ctx.containsBean("mongo"));
191228
MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&mongo");
229+
192230
String host = (String) getField(mfb, "host");
193231
Integer port = (Integer) getField(mfb, "port");
232+
194233
assertEquals("127.0.0.1", host);
195234
assertEquals(new Integer(27017), port);
235+
196236
Mongo mongo = mfb.getObject();
197237
MongoOptions mongoOpts = mongo.getMongoOptions();
238+
198239
assertEquals(8, mongoOpts.connectionsPerHost);
199240
assertEquals(1000, mongoOpts.connectTimeout);
200241
assertEquals(1500, mongoOpts.maxWaitTime);

spring-data-mongodb/src/test/resources/org/springframework/data/mongodb/config/MongoNamespaceTests-context.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
<mongo:template id="anotherMongoTemplate" db-factory-ref="mongoDbFactory" write-concern="SAFE" />
7777

7878
<mongo:gridFsTemplate/>
79-
<mongo:gridFsTemplate id="antoherGridFsTemplate" db-factory-ref="mongoDbFactory" converter-ref="mappingConverter"/>
79+
<mongo:gridFsTemplate id="secondGridFsTemplate" db-factory-ref="mongoDbFactory" converter-ref="mappingConverter"/>
80+
<mongo:gridFsTemplate id="thirdGridFsTemplate" db-factory-ref="mongoDbFactory" converter-ref="mappingConverter" bucket="bucketString"/>
8081

8182
</beans>

0 commit comments

Comments
 (0)