From 2b3e5461c2b4e8c4760c9d74a9605819007c21df Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 8 Jul 2014 17:31:16 +0200 Subject: [PATCH] DATAMONGO-982 - Added build profiles to build against next MongoDB driver versions. Added build profile for MongoDB Java driver versions 2.12.3-SNAPSHOT and 3.0.0-SNAPSHOT. Added another property to be able to build manifests correctly as the snapshot versions aren't valid OSGi versions. Adapted MongoExceptionTranslator to convert the new Exceptions being thrown for server timeouts and the deprecated values we currently handle. --- pom.xml | 36 ++++++++++++++++--- spring-data-mongodb-cross-store/template.mf | 2 +- spring-data-mongodb-log4j/template.mf | 2 +- .../core/MongoExceptionTranslator.java | 19 ++++++---- spring-data-mongodb/template.mf | 2 +- 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/pom.xml b/pom.xml index 4d71a2c9c..b9adbecc8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - + org.springframework.data spring-data-mongodb-parent 1.5.2.BUILD-SNAPSHOT @@ -31,8 +31,9 @@ spring-data-mongodb 1.8.2.BUILD-SNAPSHOT 2.12.1 + 2.12.1 - + ogierke @@ -104,10 +105,35 @@ + mongo-next - 2.12.0 + 2.12.3-SNAPSHOT + + + + mongo-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + + + + + + + mongo-3-next + + 3.0.0-SNAPSHOT + + + + + mongo-snapshots + https://oss.sonatype.org/content/repositories/snapshots + + + @@ -119,14 +145,14 @@ ${mongo} - + spring-libs-snapshot http://repo.spring.io/libs-snapshot - + spring-plugins-release diff --git a/spring-data-mongodb-cross-store/template.mf b/spring-data-mongodb-cross-store/template.mf index 046a11a09..8561ad900 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="${mongo:[=.=.=,+1.0.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 cca0bedf7..e7d182b11 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/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 9b591b56e..b8eeb427d 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 @@ -23,11 +23,15 @@ import org.springframework.dao.InvalidDataAccessResourceUsageException; import org.springframework.dao.support.PersistenceExceptionTranslator; import org.springframework.data.mongodb.UncategorizedMongoDbException; +import com.mongodb.MongoCursorNotFoundException; import com.mongodb.MongoException; import com.mongodb.MongoException.CursorNotFound; import com.mongodb.MongoException.DuplicateKey; import com.mongodb.MongoException.Network; import com.mongodb.MongoInternalException; +import com.mongodb.MongoServerSelectionException; +import com.mongodb.MongoSocketException; +import com.mongodb.MongoTimeoutException; /** * Simple {@link PersistenceExceptionTranslator} for Mongo. Convert the given runtime exception to an appropriate @@ -47,21 +51,23 @@ public class MongoExceptionTranslator implements PersistenceExceptionTranslator // Check for well-known MongoException subclasses. - // All other MongoExceptions - if (ex instanceof DuplicateKey) { + if (ex instanceof DuplicateKey || ex instanceof DuplicateKeyException) { return new DuplicateKeyException(ex.getMessage(), ex); } - if (ex instanceof Network) { + if (ex instanceof Network || ex instanceof MongoSocketException) { return new DataAccessResourceFailureException(ex.getMessage(), ex); } - if (ex instanceof CursorNotFound) { + if (ex instanceof CursorNotFound || ex instanceof MongoCursorNotFoundException) { 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")) { + if (ex instanceof MongoServerSelectionException) { + return new DataAccessResourceFailureException(ex.getMessage(), ex); + } + + if (ex instanceof MongoTimeoutException) { return new DataAccessResourceFailureException(ex.getMessage(), ex); } @@ -69,6 +75,7 @@ public class MongoExceptionTranslator implements PersistenceExceptionTranslator return new InvalidDataAccessResourceUsageException(ex.getMessage(), ex); } + // All other MongoExceptions if (ex instanceof MongoException) { int code = ((MongoException) ex).getCode(); diff --git a/spring-data-mongodb/template.mf b/spring-data-mongodb/template.mf index 2fcf7671d..8071550e3 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="${mongo:[=.=.=,+1.0.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,