From 4d29d937eb4b43bcd86a6d1651c4fc7c84dd2025 Mon Sep 17 00:00:00 2001 From: Martin Baumgartner Date: Sat, 25 Jan 2014 18:44:28 +0100 Subject: [PATCH] DATAMONGO-823 - Add bucket attribute to . Original pull request: #114. --- .../mongodb/config/GridFsTemplateParser.java | 7 ++- .../data/mongodb/config/spring-mongo-1.4.xsd | 6 +++ .../mongodb/config/MongoNamespaceTests.java | 47 +++++++++++++++++-- .../config/MongoNamespaceTests-context.xml | 3 +- 4 files changed, 58 insertions(+), 5 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/GridFsTemplateParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/GridFsTemplateParser.java index 9f1351e74..04b99dd9c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/GridFsTemplateParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/GridFsTemplateParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2013 the original author or authors. + * Copyright 2013-2014 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. @@ -57,6 +57,7 @@ class GridFsTemplateParser extends AbstractBeanDefinitionParser { String converterRef = element.getAttribute("converter-ref"); String dbFactoryRef = element.getAttribute("db-factory-ref"); + String bucket = element.getAttribute("bucket"); BeanDefinitionBuilder gridFsTemplateBuilder = BeanDefinitionBuilder.genericBeanDefinition(GridFsTemplate.class); @@ -72,6 +73,10 @@ class GridFsTemplateParser extends AbstractBeanDefinitionParser { gridFsTemplateBuilder.addConstructorArgReference(BeanNames.DEFAULT_CONVERTER_BEAN_NAME); } + if (StringUtils.hasText(bucket)) { + gridFsTemplateBuilder.addConstructorArgValue(bucket); + } + return (AbstractBeanDefinition) helper.getComponentIdButFallback(gridFsTemplateBuilder, BeanNames.GRID_FS_TEMPLATE) .getBeanDefinition(); } diff --git a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd index 749e3c374..c036f6b50 100644 --- a/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd +++ b/spring-data-mongodb/src/main/resources/org/springframework/data/mongodb/config/spring-mongo-1.4.xsd @@ -628,6 +628,12 @@ The reference to a Mongoconverter instance. + + + + + \ No newline at end of file diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoNamespaceTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoNamespaceTests.java index 1dacf982e..2df29615d 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoNamespaceTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoNamespaceTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 the original author or authors. + * Copyright 2010-2014 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. @@ -53,8 +53,10 @@ public class MongoNamespaceTests { @Test public void testMongoSingleton() throws Exception { + assertTrue(ctx.containsBean("noAttrMongo")); MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&noAttrMongo"); + assertNull(getField(mfb, "host")); assertNull(getField(mfb, "port")); } @@ -64,8 +66,10 @@ public class MongoNamespaceTests { assertTrue(ctx.containsBean("defaultMongo")); MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&defaultMongo"); + String host = (String) getField(mfb, "host"); Integer port = (Integer) getField(mfb, "port"); + assertEquals("localhost", host); assertEquals(new Integer(27017), port); @@ -105,8 +109,10 @@ public class MongoNamespaceTests { @Test public void testSecondMongoDbFactory() { + assertTrue(ctx.containsBean("secondMongoDbFactory")); MongoDbFactory dbf = (MongoDbFactory) ctx.getBean("secondMongoDbFactory"); + Mongo mongo = (Mongo) getField(dbf, "mongo"); assertEquals("localhost", mongo.getAddress().getHost()); assertEquals(27017, mongo.getAddress().getPort()); @@ -137,10 +143,13 @@ public class MongoNamespaceTests { */ @Test public void testMongoTemplateFactory() { + assertTrue(ctx.containsBean("mongoTemplate")); MongoOperations operations = (MongoOperations) ctx.getBean("mongoTemplate"); + MongoDbFactory dbf = (MongoDbFactory) getField(operations, "mongoDbFactory"); assertEquals("database", getField(dbf, "databaseName")); + MongoConverter converter = (MongoConverter) getField(operations, "mongoConverter"); assertNotNull(converter); } @@ -150,10 +159,13 @@ public class MongoNamespaceTests { */ @Test public void testSecondMongoTemplateFactory() { + assertTrue(ctx.containsBean("anotherMongoTemplate")); MongoOperations operations = (MongoOperations) ctx.getBean("anotherMongoTemplate"); + MongoDbFactory dbf = (MongoDbFactory) getField(operations, "mongoDbFactory"); assertEquals("database", getField(dbf, "databaseName")); + WriteConcern writeConcern = (WriteConcern) getField(operations, "writeConcern"); assertEquals(WriteConcern.SAFE, writeConcern); } @@ -163,10 +175,13 @@ public class MongoNamespaceTests { */ @Test public void testGridFsTemplateFactory() { + assertTrue(ctx.containsBean("gridFsTemplate")); GridFsOperations operations = (GridFsOperations) ctx.getBean("gridFsTemplate"); + MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory"); assertEquals("database", getField(dbf, "databaseName")); + MongoConverter converter = (MongoConverter) getField(operations, "converter"); assertNotNull(converter); } @@ -176,10 +191,31 @@ public class MongoNamespaceTests { */ @Test public void testSecondGridFsTemplateFactory() { - assertTrue(ctx.containsBean("antoherGridFsTemplate")); - GridFsOperations operations = (GridFsOperations) ctx.getBean("antoherGridFsTemplate"); + + assertTrue(ctx.containsBean("secondGridFsTemplate")); + GridFsOperations operations = (GridFsOperations) ctx.getBean("secondGridFsTemplate"); + MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory"); assertEquals("database", getField(dbf, "databaseName")); + assertEquals(null, getField(operations, "bucket")); + + MongoConverter converter = (MongoConverter) getField(operations, "converter"); + assertNotNull(converter); + } + + /** + * @see DATAMONGO-823 + */ + @Test + public void testThirdGridFsTemplateFactory() { + + assertTrue(ctx.containsBean("thirdGridFsTemplate")); + GridFsOperations operations = (GridFsOperations) ctx.getBean("thirdGridFsTemplate"); + + MongoDbFactory dbf = (MongoDbFactory) getField(operations, "dbFactory"); + assertEquals("database", getField(dbf, "databaseName")); + assertEquals("bucketString", getField(operations, "bucket")); + MongoConverter converter = (MongoConverter) getField(operations, "converter"); assertNotNull(converter); } @@ -187,14 +223,19 @@ public class MongoNamespaceTests { @Test @SuppressWarnings("deprecation") public void testMongoSingletonWithPropertyPlaceHolders() throws Exception { + assertTrue(ctx.containsBean("mongo")); MongoFactoryBean mfb = (MongoFactoryBean) ctx.getBean("&mongo"); + String host = (String) getField(mfb, "host"); Integer port = (Integer) getField(mfb, "port"); + assertEquals("127.0.0.1", host); assertEquals(new Integer(27017), port); + Mongo mongo = mfb.getObject(); MongoOptions mongoOpts = mongo.getMongoOptions(); + assertEquals(8, mongoOpts.connectionsPerHost); assertEquals(1000, mongoOpts.connectTimeout); assertEquals(1500, mongoOpts.maxWaitTime); diff --git a/spring-data-mongodb/src/test/resources/org/springframework/data/mongodb/config/MongoNamespaceTests-context.xml b/spring-data-mongodb/src/test/resources/org/springframework/data/mongodb/config/MongoNamespaceTests-context.xml index 056c63812..cfb76c954 100644 --- a/spring-data-mongodb/src/test/resources/org/springframework/data/mongodb/config/MongoNamespaceTests-context.xml +++ b/spring-data-mongodb/src/test/resources/org/springframework/data/mongodb/config/MongoNamespaceTests-context.xml @@ -76,6 +76,7 @@ - + +