From 704c130d945ddfdc9e8cecddeeb7b1eb7e82f5da Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 17 Nov 2015 11:11:59 +0100 Subject: [PATCH] DATAMONGO-1317 - Assert compatibility with mongo-java-driver 3.2. We now do a defensive check against the actual WObject of WriteConcern to avoid the IllegalStateException raised by the new java-driver in case _w is null or not an Integer. This allows us to run against recent 2.13, 2.14, 3.0, 3.1 and the latest 3.2.0. Original pull request: #337. --- .../data/mongodb/core/MongoTemplate.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 9f66d20d7..cb04a5f38 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -774,11 +774,17 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { protected WriteConcern prepareWriteConcern(MongoAction mongoAction) { WriteConcern wc = writeConcernResolver.resolve(mongoAction); + return potentiallyForceAcknowledgedWrite(wc); + } + + private WriteConcern potentiallyForceAcknowledgedWrite(WriteConcern wc) { - if (MongoClientVersion.isMongo3Driver() - && ObjectUtils.nullSafeEquals(WriteResultChecking.EXCEPTION, writeResultChecking) - && (wc == null || wc.getW() < 1)) { - return WriteConcern.ACKNOWLEDGED; + if (ObjectUtils.nullSafeEquals(WriteResultChecking.EXCEPTION, writeResultChecking) + && MongoClientVersion.isMongo3Driver()) { + if (wc == null || wc.getWObject() == null + || (wc.getWObject() instanceof Number && ((Number) wc.getWObject()).intValue() < 1)) { + return WriteConcern.ACKNOWLEDGED; + } } return wc; }