diff --git a/pom.xml b/pom.xml
index 88f3dade9..442fe9148 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,6 +31,7 @@
spring-data-mongodb
1.7.0.RC1
2.11.4
+ ${mongo}
@@ -102,6 +103,16 @@
+
+
+ mongo-next
+
+ 2.12.0-rc0
+ 2.12.0
+
+
+
+
diff --git a/spring-data-mongodb-cross-store/template.mf b/spring-data-mongodb-cross-store/template.mf
index 25a004b3a..b60ecf1fb 100644
--- a/spring-data-mongodb-cross-store/template.mf
+++ b/spring-data-mongodb-cross-store/template.mf
@@ -7,7 +7,7 @@ Import-Package:
Export-Template:
org.springframework.data.mongodb.crossstore.*;version="${project.version}"
Import-Template:
- com.mongodb.*;version="0",
+ com.mongodb.*;version="${mongo-osgi:[=.=.=,+1.0.0)}",
javax.persistence.*;version="${jpa:[=.=.=,+1.0.0)}",
org.aspectj.*;version="${aspectj:[1.0.0, 2.0.0)}",
org.bson.*;version="0",
diff --git a/spring-data-mongodb-log4j/template.mf b/spring-data-mongodb-log4j/template.mf
index 00c0d3339..bee95d777 100644
--- a/spring-data-mongodb-log4j/template.mf
+++ b/spring-data-mongodb-log4j/template.mf
@@ -5,5 +5,5 @@ Bundle-ManifestVersion: 2
Import-Package:
sun.reflect;version="0";resolution:=optional
Import-Template:
- com.mongodb.*;version="${mongo:[=.=,+1.0.0)}",
+ com.mongodb.*;version="${mongo-osgi:[=.=.=,+1.0.0)}",
org.apache.log4j.*;version="${log4j:[=.=.=,+1.0.0)}"
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index 8a93f7297..e7a4cb769 100644
--- a/spring-data-mongodb/pom.xml
+++ b/spring-data-mongodb/pom.xml
@@ -145,7 +145,7 @@
com.mysema.maven
apt-maven-plugin
- 1.0.8
+ ${apt}
com.mysema.querydsl
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java
index 674a2e1a9..9b591b56e 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoExceptionTranslator.java
@@ -60,6 +60,11 @@ public class MongoExceptionTranslator implements PersistenceExceptionTranslator
return new DataAccessResourceFailureException(ex.getMessage(), ex);
}
+ // Driver 2.12 throws this to indicate connection problems. String comparison to avoid hard dependency
+ if (ex.getClass().getName().equals("com.mongodb.MongoServerSelectionException")) {
+ return new DataAccessResourceFailureException(ex.getMessage(), ex);
+ }
+
if (ex instanceof MongoInternalException) {
return new InvalidDataAccessResourceUsageException(ex.getMessage(), ex);
}
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java
index dee25a529..89a931ed7 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/gridfs/GridFsTemplate.java
@@ -232,7 +232,7 @@ public class GridFsTemplate implements GridFsOperations, ResourcePatternResolver
}
private DBObject getMappedQuery(Query query) {
- return query == null ? null : getMappedQuery(query.getQueryObject());
+ return query == null ? new Query().getQueryObject() : getMappedQuery(query.getQueryObject());
}
private DBObject getMappedQuery(DBObject query) {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryNoDatabaseRunningTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryNoDatabaseRunningTests.java
index 4e53cc0af..6e0972c5d 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryNoDatabaseRunningTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MongoDbFactoryNoDatabaseRunningTests.java
@@ -1,11 +1,11 @@
/*
- * Copyright (c) 2011 by the original author(s).
+ * Copyright 2011-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.
* You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * 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,
@@ -15,33 +15,32 @@
*/
package org.springframework.data.mongodb.config;
-import static org.hamcrest.Matchers.is;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.Matchers.*;
+import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
-
-import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessResourceFailureException;
+import org.springframework.data.mongodb.MongoDbFactory;
+import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* Integration tests for {@link MongoDbFactory}.
*
- * @author Thomas Risbergf
+ * @author Thomas Risberg
+ * @author Oliver Gierke
*/
-
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MongoDbFactoryNoDatabaseRunningTests {
- @Autowired
- MongoTemplate mongoTemplate;
+ @Autowired MongoTemplate mongoTemplate;
/**
- * @see DATADOC-139
+ * @see DATAMONGO-139
*/
@Test
public void startsUpWithoutADatabaseRunning() {
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
index be3672c25..6361985b7 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java
@@ -189,7 +189,7 @@ public class AggregationTests {
AggregationResults results = mongoTemplate.aggregate(agg, INPUT_COLLECTION, TagCount.class);
assertThat(results, is(notNullValue()));
- assertThat(results.getServerUsed(), is("/127.0.0.1:27017"));
+ assertThat(results.getServerUsed(), endsWith("127.0.0.1:27017"));
List tagCount = results.getMappedResults();
@@ -217,7 +217,7 @@ public class AggregationTests {
AggregationResults results = mongoTemplate.aggregate(aggregation, INPUT_COLLECTION, TagCount.class);
assertThat(results, is(notNullValue()));
- assertThat(results.getServerUsed(), is("/127.0.0.1:27017"));
+ assertThat(results.getServerUsed(), endsWith("127.0.0.1:27017"));
List tagCount = results.getMappedResults();
@@ -241,7 +241,7 @@ public class AggregationTests {
AggregationResults results = mongoTemplate.aggregate(aggregation, INPUT_COLLECTION, TagCount.class);
assertThat(results, is(notNullValue()));
- assertThat(results.getServerUsed(), is("/127.0.0.1:27017"));
+ assertThat(results.getServerUsed(), endsWith("127.0.0.1:27017"));
List tagCount = results.getMappedResults();
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapreduce/GroupByTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapreduce/GroupByTests.java
index 5c4ece731..2ffa472b0 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapreduce/GroupByTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapreduce/GroupByTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2011-2012 the original author or authors.
+ * Copyright 2011-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.
@@ -15,6 +15,8 @@
*/
package org.springframework.data.mongodb.core.mapreduce;
+import static org.hamcrest.CoreMatchers.*;
+import static org.junit.Assert.*;
import static org.springframework.data.mongodb.core.mapreduce.GroupBy.*;
import static org.springframework.data.mongodb.core.query.Criteria.*;
@@ -42,6 +44,12 @@ import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
+/**
+ * Integration tests for group-by operations.
+ *
+ * @author Mark Pollack
+ * @author Oliver Gierke
+ */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:infrastructure.xml")
public class GroupByTests {
@@ -84,49 +92,46 @@ public class GroupByTests {
@Test
public void singleKeyCreation() {
+
DBObject gc = new GroupBy("a").getGroupByObject();
- // String expected =
- // "{ \"group\" : { \"ns\" : \"test\" , \"key\" : { \"a\" : 1} , \"cond\" : null , \"$reduce\" : null , \"initial\" : null }}";
- String expected = "{ \"key\" : { \"a\" : 1} , \"$reduce\" : null , \"initial\" : null }";
- Assert.assertEquals(expected, gc.toString());
+
+ assertThat(gc.toString(), is("{ \"key\" : { \"a\" : 1} , \"$reduce\" : null , \"initial\" : null }"));
}
@Test
public void multipleKeyCreation() {
+
DBObject gc = GroupBy.key("a", "b").getGroupByObject();
- // String expected =
- // "{ \"group\" : { \"ns\" : \"test\" , \"key\" : { \"a\" : 1 , \"b\" : 1} , \"cond\" : null , \"$reduce\" : null , \"initial\" : null }}";
- String expected = "{ \"key\" : { \"a\" : 1 , \"b\" : 1} , \"$reduce\" : null , \"initial\" : null }";
- Assert.assertEquals(expected, gc.toString());
+
+ assertThat(gc.toString(), is("{ \"key\" : { \"a\" : 1 , \"b\" : 1} , \"$reduce\" : null , \"initial\" : null }"));
}
@Test
public void keyFunctionCreation() {
+
DBObject gc = GroupBy.keyFunction("classpath:keyFunction.js").getGroupByObject();
- String expected = "{ \"$keyf\" : \"classpath:keyFunction.js\" , \"$reduce\" : null , \"initial\" : null }";
- Assert.assertEquals(expected, gc.toString());
+
+ assertThat(gc.toString(),
+ is("{ \"$keyf\" : \"classpath:keyFunction.js\" , \"$reduce\" : null , \"initial\" : null }"));
}
@Test
public void SimpleGroup() {
- createGroupByData();
- GroupByResults results;
- results = mongoTemplate.group(
+ createGroupByData();
+ GroupByResults results = mongoTemplate.group(
"group_test_collection",
GroupBy.key("x").initialDocument(new BasicDBObject("count", 0))
.reduceFunction("function(doc, prev) { prev.count += 1 }"), XObject.class);
assertMapReduceResults(results);
-
}
@Test
public void SimpleGroupWithKeyFunction() {
- createGroupByData();
- GroupByResults results;
- results = mongoTemplate.group(
+ createGroupByData();
+ GroupByResults results = mongoTemplate.group(
"group_test_collection",
GroupBy.keyFunction("function(doc) { return { x : doc.x }; }").initialDocument("{ count: 0 }")
.reduceFunction("function(doc, prev) { prev.count += 1 }"), XObject.class);
@@ -136,30 +141,35 @@ public class GroupByTests {
@Test
public void SimpleGroupWithFunctionsAsResources() {
- createGroupByData();
- GroupByResults results;
- results = mongoTemplate.group("group_test_collection", GroupBy.keyFunction("classpath:keyFunction.js")
- .initialDocument("{ count: 0 }").reduceFunction("classpath:groupReduce.js"), XObject.class);
+ createGroupByData();
+ GroupByResults results = mongoTemplate.group(
+ "group_test_collection",
+ GroupBy.keyFunction("classpath:keyFunction.js").initialDocument("{ count: 0 }")
+ .reduceFunction("classpath:groupReduce.js"), XObject.class);
assertMapReduceResults(results);
}
@Test
public void SimpleGroupWithQueryAndFunctionsAsResources() {
- createGroupByData();
- GroupByResults results;
- results = mongoTemplate.group(where("x").gt(0), "group_test_collection", keyFunction("classpath:keyFunction.js")
- .initialDocument("{ count: 0 }").reduceFunction("classpath:groupReduce.js"), XObject.class);
+ createGroupByData();
+ GroupByResults results = mongoTemplate.group(
+ where("x").gt(0),
+ "group_test_collection",
+ keyFunction("classpath:keyFunction.js").initialDocument("{ count: 0 }").reduceFunction(
+ "classpath:groupReduce.js"), XObject.class);
assertMapReduceResults(results);
}
private void assertMapReduceResults(GroupByResults results) {
+
DBObject dboRawResults = results.getRawResults();
- String expected = "{ \"serverUsed\" : \"/127.0.0.1:27017\" , \"retval\" : [ { \"x\" : 1.0 , \"count\" : 2.0} , { \"x\" : 2.0 , \"count\" : 1.0} , { \"x\" : 3.0 , \"count\" : 3.0}] , \"count\" : 6.0 , \"keys\" : 3 , \"ok\" : 1.0}";
- Assert.assertEquals(expected, dboRawResults.toString());
+
+ assertThat(dboRawResults.containsField("serverUsed"), is(true));
+ assertThat(dboRawResults.get("serverUsed").toString(), endsWith("127.0.0.1:27017"));
int numResults = 0;
for (XObject xObject : results) {
@@ -174,13 +184,15 @@ public class GroupByTests {
}
numResults++;
}
- Assert.assertEquals(3, numResults);
- Assert.assertEquals(6, results.getCount(), 0.001);
- Assert.assertEquals(3, results.getKeys());
+ assertThat(numResults, is(3));
+ assertThat(results.getKeys(), is(3));
+ assertEquals(6, results.getCount(), 0.001);
}
private void createGroupByData() {
+
DBCollection c = mongoTemplate.getDb().getCollection("group_test_collection");
+
c.save(new BasicDBObject("x", 1));
c.save(new BasicDBObject("x", 1));
c.save(new BasicDBObject("x", 2));
@@ -188,5 +200,4 @@ public class GroupByTests {
c.save(new BasicDBObject("x", 3));
c.save(new BasicDBObject("x", 3));
}
-
}
diff --git a/spring-data-mongodb/template.mf b/spring-data-mongodb/template.mf
index 5893f2718..ace44eab8 100644
--- a/spring-data-mongodb/template.mf
+++ b/spring-data-mongodb/template.mf
@@ -8,7 +8,7 @@ Export-Template:
org.springframework.data.mongodb.*;version="${project.version}"
Import-Template:
com.google.common.base.*;version="[11.0.0,14.0.0)";resolution:=optional,
- com.mongodb.*;version="0",
+ com.mongodb.*;version="${mongo-osgi:[=.=.=,+1.0.0)}",
com.mysema.query.*;version="[2.1.1, 3.0.0)";resolution:=optional,
javax.annotation.processing.*;version="0",
javax.enterprise.*;version="${cdi:[=.=.=,+1.0.0)}";resolution:=optional,