From 4deafda2084102f5f32fc8fc3385b2fa492a5db7 Mon Sep 17 00:00:00 2001 From: Graeme Rocher Date: Thu, 11 Nov 2010 16:07:08 +0100 Subject: [PATCH] Support for defining replica sets or pairs --- .../bean/factory/MongoFactoryBean.java | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/bean/factory/MongoFactoryBean.java b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/bean/factory/MongoFactoryBean.java index 1053a2276..49e4acdef 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/bean/factory/MongoFactoryBean.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/document/mongodb/bean/factory/MongoFactoryBean.java @@ -24,6 +24,7 @@ import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.dao.DataAccessException; import org.springframework.dao.support.PersistenceExceptionTranslator; +import org.springframework.data.document.mongodb.CannotGetMongoDbConnectionException; import org.springframework.data.document.mongodb.MongoDbUtils; import org.springframework.util.Assert; @@ -53,6 +54,7 @@ public class MongoFactoryBean implements FactoryBean, InitializingBean, private String host; private Integer port; private List replicaSetSeeds; + private List replicaPair; public void setMongoOptions(MongoOptions mongoOptions) { this.mongoOptions = mongoOptions; @@ -61,6 +63,10 @@ public class MongoFactoryBean implements FactoryBean, InitializingBean, public void setReplicaSetSeeds(List replicaSetSeeds) { this.replicaSetSeeds = replicaSetSeeds; } + + public void setReplicaPair(List replicaPair) { + this.replicaPair = replicaPair; + } public void setHost(String host) { this.host = host; @@ -93,31 +99,26 @@ public class MongoFactoryBean implements FactoryBean, InitializingBean, mongo = new Mongo(); } else { - if(mongoOptions != null) { - if(replicaSetSeeds != null) { - mongo = new Mongo(replicaSetSeeds, mongoOptions); + ServerAddress defaultOptions = new ServerAddress(); + if(mongoOptions == null) mongoOptions = new MongoOptions(); + if(replicaPair != null) { + if(replicaPair.size() < 2) { + throw new CannotGetMongoDbConnectionException("A replica pair must have two server entries"); } - else { - String mongoHost = host != null ? host : "localhost"; - if(port != null) { - mongo = new Mongo(new ServerAddress(mongoHost, port), mongoOptions); - } - else { - mongo = new Mongo(mongoHost, mongoOptions); - } - } + mongo = new Mongo(replicaPair.get(0), replicaPair.get(1), mongoOptions); + } + else if(replicaSetSeeds != null) { + mongo = new Mongo(replicaSetSeeds, mongoOptions); } else { - if(replicaSetSeeds != null) { - mongo = new Mongo(replicaSetSeeds, new MongoOptions()); - } - else if (port == null) { - mongo = new Mongo(host); + String mongoHost = host != null ? host : defaultOptions.getHost(); + if(port != null) { + mongo = new Mongo(new ServerAddress(mongoHost, port), mongoOptions); } else { - mongo = new Mongo(host, port); - } - } + mongo = new Mongo(mongoHost, mongoOptions); + } + } } } }