Skip to content

Commit 3c10b94

Browse files
authored
Merge pull request #18456 from panos-kakos/JAVA-42144-F
[JAVA-42144]
2 parents 3e87a5d + c3fbbf8 commit 3c10b94

File tree

12 files changed

+63
-96
lines changed

12 files changed

+63
-96
lines changed

persistence-modules/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
<module>spring-boot-persistence</module>
7878
<module>spring-boot-persistence-h2</module>
7979
<module>spring-boot-persistence-h2-2</module>
80-
<!-- <module>spring-boot-persistence-mongodb</module> --> <!-- JAVA-42144 -->
80+
<module>spring-boot-persistence-mongodb</module>
8181
<!-- <module>spring-boot-persistence-mongodb-2</module> --> <!-- JAVA-42371 -->
8282
<module>spring-boot-persistence-mongodb-3</module>
8383
<!-- <module>spring-boot-persistence-mongodb-4</module> --> <!-- JAVA-42372 -->

persistence-modules/spring-boot-persistence-mongodb/pom.xml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99

1010
<parent>
1111
<groupId>com.baeldung</groupId>
12-
<artifactId>parent-boot-2</artifactId>
12+
<artifactId>parent-boot-3</artifactId>
1313
<version>0.0.1-SNAPSHOT</version>
14-
<relativePath>../../parent-boot-2</relativePath>
14+
<relativePath>../../parent-boot-3</relativePath>
1515
</parent>
1616

1717
<dependencies>
@@ -30,9 +30,26 @@
3030
</dependency>
3131
<dependency>
3232
<groupId>de.flapdoodle.embed</groupId>
33-
<artifactId>de.flapdoodle.embed.mongo</artifactId>
34-
<scope>test</scope>
33+
<artifactId>de.flapdoodle.embed.mongo.spring3x</artifactId>
34+
<version>${de.flapdoodle.embed.mongo.version}</version>
3535
</dependency>
3636
</dependencies>
3737

38+
<build>
39+
<plugins>
40+
<plugin>
41+
<groupId>org.apache.maven.plugins</groupId>
42+
<artifactId>maven-compiler-plugin</artifactId>
43+
<configuration>
44+
<parameters>true</parameters>
45+
</configuration>
46+
</plugin>
47+
</plugins>
48+
</build>
49+
50+
<properties>
51+
<de.flapdoodle.embed.mongo.version>4.20.0</de.flapdoodle.embed.mongo.version>
52+
<spring-boot.repackage.skip>true</spring-boot.repackage.skip>
53+
</properties>
54+
3855
</project>

persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/boot/connection/via/client/SpringMongoConnectionViaClientApp.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
import org.springframework.beans.factory.annotation.Value;
88
import org.springframework.boot.WebApplicationType;
99
import org.springframework.boot.autoconfigure.SpringBootApplication;
10-
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
1110
import org.springframework.boot.builder.SpringApplicationBuilder;
1211
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
1312

14-
@SpringBootApplication(exclude={EmbeddedMongoAutoConfiguration.class})
13+
@SpringBootApplication
1514
public class SpringMongoConnectionViaClientApp extends AbstractMongoClientConfiguration {
1615

1716
public static void main(String... args) {

persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/boot/connection/via/properties/SpringMongoConnectionViaPropertiesApp.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5-
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
65
import org.springframework.context.annotation.PropertySource;
76

87
@PropertySource("classpath:connection.via.properties/application.properties")
9-
@SpringBootApplication(exclude={EmbeddedMongoAutoConfiguration.class})
8+
@SpringBootApplication
109
public class SpringMongoConnectionViaPropertiesApp {
1110

1211
public static void main(String... args) {

persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/logging/model/Book.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@
55
import org.bson.types.ObjectId;
66
import org.springframework.data.mongodb.core.mapping.Document;
77
import org.springframework.data.mongodb.core.mapping.MongoId;
8+
import org.springframework.data.mongodb.core.mapping.Field;
9+
810

911
@Document(collection = "book")
1012
public class Book {
1113

1214
@MongoId
1315
private ObjectId id;
1416

17+
@Field("bookName")
1518
private String bookName;
1619

20+
@Field("authorName")
1721
private String authorName;
1822

1923
public ObjectId getId() {

persistence-modules/spring-boot-persistence-mongodb/src/main/java/com/baeldung/multipledb/SpringBootMultipleDbApplication.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5-
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
65

7-
@SpringBootApplication(exclude = EmbeddedMongoAutoConfiguration.class)
6+
@SpringBootApplication
87
public class SpringBootMultipleDbApplication {
98

109
public static void main(String... args) {

persistence-modules/spring-boot-persistence-mongodb/src/main/resources/application.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,6 @@ spring.thymeleaf.cache=false
1111
spring.servlet.multipart.max-file-size=256MB
1212
spring.servlet.multipart.max-request-size=256MB
1313
spring.servlet.multipart.enabled=true
14-
spring.data.mongodb.uri=mongodb://localhost
14+
spring.data.mongodb.uri=mongodb://localhost
15+
16+
de.flapdoodle.mongodb.embedded.version=8.0.5

persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/logging/GroupByAuthor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.baeldung.logging;
22

3-
import org.springframework.data.annotation.Id;
3+
import org.springframework.data.mongodb.core.mapping.Field;
44

55
public class GroupByAuthor {
66

7-
@Id
7+
@Field("_id")
88
private String authorName;
99
private int authCount;
1010

11+
public GroupByAuthor() {}
12+
1113
public GroupByAuthor(String authorName, int authCount) {
1214
this.authorName = authorName;
1315
this.authCount = authCount;

persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/logging/LoggingUnitTest.java

Lines changed: 14 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
import java.util.stream.Collectors;
1313
import java.util.stream.StreamSupport;
1414

15-
import org.junit.jupiter.api.AfterEach;
1615
import org.junit.jupiter.api.BeforeEach;
1716
import org.junit.jupiter.api.Test;
17+
import org.springframework.beans.factory.annotation.Autowired;
1818
import org.springframework.boot.test.context.SpringBootTest;
1919
import org.springframework.data.mongodb.core.MongoTemplate;
2020
import org.springframework.data.mongodb.core.aggregation.Aggregation;
@@ -23,44 +23,16 @@
2323
import org.springframework.test.context.TestPropertySource;
2424

2525
import com.baeldung.logging.model.Book;
26-
import com.mongodb.client.MongoClients;
27-
28-
import de.flapdoodle.embed.mongo.MongodExecutable;
29-
import de.flapdoodle.embed.mongo.MongodStarter;
30-
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
31-
import de.flapdoodle.embed.mongo.config.MongodConfig;
32-
import de.flapdoodle.embed.mongo.config.Net;
33-
import de.flapdoodle.embed.mongo.distribution.Version;
34-
import de.flapdoodle.embed.process.runtime.Network;
3526

3627
@SpringBootTest(classes = SpringBootLoggingApplication.class)
37-
@TestPropertySource(properties = {"logging.level.org.springframework.data.mongodb.core.MongoTemplate=WARN"}, value = "/embedded.properties")
28+
@TestPropertySource(properties = { "logging.level.org.springframework.data.mongodb.core.MongoTemplate=WARN" }, value = "/embedded.properties")
3829
public class LoggingUnitTest {
3930

40-
private static final String CONNECTION_STRING = "mongodb://%s:%d";
41-
42-
private MongodExecutable mongodExecutable;
43-
private MongoTemplate mongoTemplate;
44-
45-
@AfterEach
46-
void clean() {
47-
mongodExecutable.stop();
48-
}
31+
private @Autowired MongoTemplate mongoTemplate;
4932

5033
@BeforeEach
5134
void setup() throws Exception {
52-
String ip = "localhost";
53-
int port = Network.freeServerPort(Network.getLocalHost());
54-
55-
ImmutableMongodConfig mongodConfig = MongodConfig.builder()
56-
.version(Version.Main.PRODUCTION)
57-
.net(new Net(ip, port, Network.localhostIsIPv6()))
58-
.build();
59-
60-
MongodStarter starter = MongodStarter.getDefaultInstance();
61-
mongodExecutable = starter.prepare(mongodConfig);
62-
mongodExecutable.start();
63-
mongoTemplate = new MongoTemplate(MongoClients.create(String.format(CONNECTION_STRING, ip, port)), "test");
35+
mongoTemplate.dropCollection("book");
6436
}
6537

6638
@Test
@@ -88,7 +60,7 @@ void givenExistingDocument_whenUpdateDocument_thenFieldIsUpdatedOk() {
8860
mongoTemplate.updateFirst(query(where("bookName").is("Book")), update("authorName", authorNameUpdate), Book.class);
8961

9062
assertThat(mongoTemplate.findById(book.getId(), Book.class)).extracting(Book::getAuthorName)
91-
.isEqualTo(authorNameUpdate);
63+
.isEqualTo(authorNameUpdate);
9264
}
9365

9466
@Test
@@ -104,7 +76,7 @@ void whenInsertMultipleDocuments_thenFindAllOk() {
10476
mongoTemplate.insert(Arrays.asList(book, book1), Book.class);
10577

10678
assertThat(mongoTemplate.findAll(Book.class)
107-
.size()).isEqualTo(2);
79+
.size()).isEqualTo(2);
10880
}
10981

11082
@Test
@@ -118,7 +90,7 @@ void givenExistingDocument_whenRemoveDocument_thenDocumentIsDeleted() {
11890
mongoTemplate.remove(book);
11991

12092
assertThat(mongoTemplate.findAll(Book.class)
121-
.size()).isEqualTo(0);
93+
.size()).isEqualTo(0);
12294
}
12395

12496
@Test
@@ -138,21 +110,21 @@ void whenAggregateByField_thenGroupByCountIsOk() {
138110
mongoTemplate.insert(Arrays.asList(book, book1, book2), Book.class);
139111

140112
GroupOperation groupByAuthor = group("authorName").count()
141-
.as("authCount");
113+
.as("authCount");
142114

143115
Aggregation aggregation = newAggregation(groupByAuthor);
144116

145117
AggregationResults<GroupByAuthor> aggregationResults = mongoTemplate.aggregate(aggregation, "book", GroupByAuthor.class);
146118

147119
List<GroupByAuthor> groupByAuthorList = StreamSupport.stream(aggregationResults.spliterator(), false)
148-
.collect(Collectors.toList());
120+
.collect(Collectors.toList());
149121

150122
assertThat(groupByAuthorList.stream()
151-
.filter(l -> l.getAuthorName()
152-
.equals("Author"))
153-
.findFirst()
154-
.orElse(null)).extracting(GroupByAuthor::getAuthCount)
155-
.isEqualTo(3);
123+
.filter(l -> l.getAuthorName()
124+
.equals("Author"))
125+
.findFirst()
126+
.orElse(null)).extracting(GroupByAuthor::getAuthCount)
127+
.isEqualTo(3);
156128
}
157129

158130
}

persistence-modules/spring-boot-persistence-mongodb/src/test/java/com/baeldung/mongodb/ManualEmbeddedMongoDbIntegrationTest.java

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,26 @@
22

33
import com.mongodb.BasicDBObjectBuilder;
44
import com.mongodb.DBObject;
5-
import com.mongodb.client.MongoClients;
6-
import de.flapdoodle.embed.mongo.MongodExecutable;
7-
import de.flapdoodle.embed.mongo.MongodStarter;
8-
import de.flapdoodle.embed.mongo.config.ImmutableMongodConfig;
9-
import de.flapdoodle.embed.mongo.config.MongodConfig;
10-
import de.flapdoodle.embed.mongo.config.Net;
11-
import de.flapdoodle.embed.mongo.distribution.Version;
12-
import de.flapdoodle.embed.process.runtime.Network;
13-
import org.junit.jupiter.api.AfterEach;
14-
import org.junit.jupiter.api.BeforeEach;
155
import org.junit.jupiter.api.DisplayName;
166
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.ExtendWith;
8+
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
1710
import org.springframework.data.mongodb.core.MongoTemplate;
18-
import org.springframework.util.SocketUtils;
11+
import org.springframework.test.annotation.DirtiesContext;
12+
import org.springframework.test.context.junit.jupiter.SpringExtension;
1913

2014
import static org.assertj.core.api.Assertions.assertThat;
2115

16+
@DataMongoTest
17+
@ExtendWith(SpringExtension.class)
18+
@DirtiesContext
2219
class ManualEmbeddedMongoDbIntegrationTest {
2320

24-
private static final String CONNECTION_STRING = "mongodb://%s:%d";
25-
26-
private MongodExecutable mongodExecutable;
27-
private MongoTemplate mongoTemplate;
28-
29-
@AfterEach
30-
void clean() {
31-
mongodExecutable.stop();
32-
}
33-
34-
@BeforeEach
35-
void setup() throws Exception {
36-
String ip = "localhost";
37-
int randomPort = SocketUtils.findAvailableTcpPort();
38-
39-
ImmutableMongodConfig mongodConfig = MongodConfig
40-
.builder()
41-
.version(Version.Main.PRODUCTION)
42-
.net(new Net(ip, randomPort, Network.localhostIsIPv6()))
43-
.build();
44-
45-
MongodStarter starter = MongodStarter.getDefaultInstance();
46-
mongodExecutable = starter.prepare(mongodConfig);
47-
mongodExecutable.start();
48-
mongoTemplate = new MongoTemplate(MongoClients.create(String.format(CONNECTION_STRING, ip, randomPort)),"test");
49-
}
5021

5122
@DisplayName("Given object When save object using MongoDB template Then object can be found")
5223
@Test
53-
void test() throws Exception {
24+
void test(@Autowired MongoTemplate mongoTemplate) throws Exception {
5425
// given
5526
DBObject objectToSave = BasicDBObjectBuilder.start()
5627
.add("key", "value")

0 commit comments

Comments
 (0)