Skip to content

Commit 4b632b2

Browse files
authored
Merge pull request #5 from kapetacom/feature/CORE-1676-mongodb-srv-sdk
feat: mongodb+srv sdk support
2 parents b44a52e + b497e30 commit 4b632b2

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.kapeta</groupId>
88
<artifactId>nosql-mongodb</artifactId>
9-
<version>0.1.0</version>
9+
<version>0.1.1</version>
1010

1111
<name>${project.groupId}:${project.artifactId}</name>
1212
<description>MongoDB support for Kapeta Spring Boot SDK</description>

src/main/java/com/kapeta/spring/mongo/AbstractMongoDBConfig.java

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,11 @@
99
import com.fasterxml.jackson.databind.ObjectMapper;
1010
import com.fasterxml.jackson.databind.node.ObjectNode;
1111
import com.kapeta.spring.config.providers.KapetaConfigurationProvider;
12-
import com.mongodb.ConnectionString;
13-
import com.mongodb.MongoClientSettings;
14-
import com.mongodb.MongoCredential;
1512
import lombok.extern.slf4j.Slf4j;
1613
import org.bson.Document;
1714
import org.springframework.beans.factory.annotation.Autowired;
1815
import org.springframework.beans.factory.annotation.Value;
19-
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2016
import org.springframework.boot.autoconfigure.mongo.MongoClientSettingsBuilderCustomizer;
21-
import org.springframework.boot.autoconfigure.mongo.MongoConnectionDetails;
2217
import org.springframework.boot.autoconfigure.mongo.MongoProperties;
2318
import org.springframework.boot.autoconfigure.mongo.PropertiesMongoConnectionDetails;
2419
import org.springframework.context.annotation.Bean;
@@ -28,9 +23,9 @@
2823
import org.springframework.data.mongodb.MongoDatabaseFactory;
2924
import org.springframework.data.mongodb.MongoTransactionManager;
3025
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
26+
import org.springframework.lang.NonNull;
3127

3228
import java.util.Arrays;
33-
import java.util.Optional;
3429

3530
/**
3631
* Mongo configuration class.
@@ -61,10 +56,23 @@ protected AbstractMongoDBConfig(String resourceName) {
6156
public KapetaConfigurationProvider.ResourceInfo mongoInfo() {
6257
return configurationProvider.getResourceInfo(RESOURCE_TYPE, PORT_TYPE, resourceName);
6358
}
59+
6460
@Bean
6561
public PropertiesMongoConnectionDetails mongoConnectionDetails(KapetaConfigurationProvider.ResourceInfo mongoInfo) {
6662
String databaseName = String.valueOf(mongoInfo.getOptions().getOrDefault("dbName", resourceName));
6763
String dbAuthDB = String.valueOf(mongoInfo.getOptions().getOrDefault("authdb", "admin"));
64+
65+
MongoProperties properties;
66+
if ("mongodb+srv".equals(mongoInfo.getProtocol())) {
67+
properties = createMongoUriProperties(databaseName, dbAuthDB, mongoInfo);
68+
} else {
69+
properties = createMongoProperties(databaseName, dbAuthDB, mongoInfo);
70+
}
71+
return new PropertiesMongoConnectionDetails(properties);
72+
}
73+
74+
@NonNull
75+
private MongoProperties createMongoProperties(String databaseName, String dbAuthDB, KapetaConfigurationProvider.ResourceInfo mongoInfo) {
6876
MongoProperties properties = new MongoProperties();
6977
properties.setDatabase(databaseName);
7078
properties.setHost(mongoInfo.getHost());
@@ -73,7 +81,18 @@ public PropertiesMongoConnectionDetails mongoConnectionDetails(KapetaConfigurati
7381
properties.setPassword(mongoInfo.getCredentials().getOrDefault("password","").toCharArray());
7482
properties.setAuthenticationDatabase(dbAuthDB);
7583
properties.setAutoIndexCreation(true);
76-
return new PropertiesMongoConnectionDetails(properties);
84+
return properties;
85+
}
86+
87+
private MongoProperties createMongoUriProperties(String databaseName, String dbAuthDB, KapetaConfigurationProvider.ResourceInfo mongoInfo) {
88+
String username = mongoInfo.getCredentials().get("username");
89+
String password = mongoInfo.getCredentials().getOrDefault("password","");
90+
91+
String uri = String.format("mongodb+srv://%s:%s@%s/%s?ssl=false&authSource=%s", username, password, mongoInfo.getHost(), databaseName, dbAuthDB);
92+
93+
MongoProperties properties = new MongoProperties();
94+
properties.setUri(uri);
95+
return properties;
7796
}
7897

7998
@Bean

0 commit comments

Comments
 (0)