From 9a5c270ec24e282684ea032553377b75970a87f4 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 29 Oct 2015 17:14:38 +0100 Subject: [PATCH] #139 - Switched to embedded MongoDB for integration tests. Removed MongoDB dependency by adding Flapdoodle embedded MongoDB. That allows us to get rid of the utility module we had in place for the MongoDB samples guarding the tests to only run when a MongoDB instance is running. Tweaked Travis setup to not require the MongoDB service anymore. --- .travis.yml | 1 - mongodb/aggregation/pom.xml | 9 -- .../OrderRepositoryIntegrationTests.java | 10 -- .../src/test/resources/logback.xml | 16 --- mongodb/example/pom.xml | 9 -- .../advanced/AdvancedIntegrationTests.java | 13 +-- .../advanced/ServersideScriptTests.java | 5 - .../CustomerRepositoryIntegrationTest.java | 5 - .../src/test/resources/application.properties | 2 + mongodb/geo-json/pom.xml | 11 --- ...ion.java => ApplicationConfiguration.java} | 7 +- .../mongodb/geojson/StoreRepositoryTests.java | 20 +--- .../src/test/resources/application.properties | 2 + mongodb/java8/pom.xml | 15 --- .../PersonRepositoryIntegrationTest.java | 5 - .../src/test/resources/application.properties | 2 + mongodb/pom.xml | 7 +- mongodb/security/pom.xml | 7 -- ...ion.java => ApplicationConfiguration.java} | 2 +- .../PersonRepositoryIntegrationTest.java | 12 +-- .../src/test/resources/application.properties | 2 + mongodb/text-search/pom.xml | 8 +- .../textsearch/TextSearchRepositoryTests.java | 8 +- .../textsearch/TextSearchTemplateTests.java | 82 +++++---------- mongodb/util/pom.xml | 21 ---- .../mongodb/util/RequiresMongoDB.java | 99 ------------------- rest/multi-store/pom.xml | 8 ++ rest/starbucks/pom.xml | 13 ++- .../springdata/rest/stores/StoreApp.java | 9 ++ .../src/main/resources/application.properties | 4 + 30 files changed, 84 insertions(+), 330 deletions(-) delete mode 100644 mongodb/aggregation/src/test/resources/logback.xml create mode 100644 mongodb/example/src/test/resources/application.properties rename mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/{Application.java => ApplicationConfiguration.java} (92%) create mode 100644 mongodb/geo-json/src/test/resources/application.properties create mode 100644 mongodb/java8/src/test/resources/application.properties rename mongodb/security/src/main/java/example/springdata/mongodb/security/{Application.java => ApplicationConfiguration.java} (97%) create mode 100644 mongodb/security/src/test/resources/application.properties delete mode 100644 mongodb/util/pom.xml delete mode 100644 mongodb/util/src/main/java/example/springdata/mongodb/util/RequiresMongoDB.java diff --git a/.travis.yml b/.travis.yml index ec13902e..9f82cf44 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,6 @@ jdk: - oraclejdk8 services: - - mongodb - redis-server cache: diff --git a/mongodb/aggregation/pom.xml b/mongodb/aggregation/pom.xml index bc3fc634..58980a3a 100644 --- a/mongodb/aggregation/pom.xml +++ b/mongodb/aggregation/pom.xml @@ -11,14 +11,5 @@ spring-data-mongodb-examples 1.0.0.BUILD-SNAPSHOT - - - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - - \ No newline at end of file diff --git a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java index dfccbfa3..ad2182b1 100644 --- a/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java +++ b/mongodb/aggregation/src/test/java/example/springdata/mongodb/aggregation/OrderRepositoryIntegrationTests.java @@ -22,20 +22,12 @@ import static org.junit.Assert.*; import java.util.Date; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import example.springdata.mongodb.aggregation.ApplicationConfiguration; -import example.springdata.mongodb.aggregation.Invoice; -import example.springdata.mongodb.aggregation.LineItem; -import example.springdata.mongodb.aggregation.Order; -import example.springdata.mongodb.aggregation.OrderRepository; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * Integration tests for {@link OrderRepository}. * @@ -46,8 +38,6 @@ import example.springdata.mongodb.util.RequiresMongoDB; @SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class OrderRepositoryIntegrationTests { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.anyVersion(); - @Autowired OrderRepository repository; private final static LineItem product1 = new LineItem("p1", 1.23); diff --git a/mongodb/aggregation/src/test/resources/logback.xml b/mongodb/aggregation/src/test/resources/logback.xml deleted file mode 100644 index 39985cc4..00000000 --- a/mongodb/aggregation/src/test/resources/logback.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - %d %5p %40.40c:%4L - %m%n - - - - - - - - - - \ No newline at end of file diff --git a/mongodb/example/pom.xml b/mongodb/example/pom.xml index c4ee34b3..5c3bebda 100644 --- a/mongodb/example/pom.xml +++ b/mongodb/example/pom.xml @@ -12,15 +12,6 @@ 1.0.0.BUILD-SNAPSHOT - - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - - - diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java index d832e536..ade14f56 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/AdvancedIntegrationTests.java @@ -18,8 +18,9 @@ package example.springdata.mongodb.advanced; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; +import example.springdata.mongodb.customer.Customer; + import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,16 +28,12 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.query.Meta; -import org.springframework.data.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.mongodb.BasicDBObject; import com.mongodb.DBCursor; import com.mongodb.DBObject; -import example.springdata.mongodb.customer.Customer; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * @author Christoph Strobl */ @@ -44,8 +41,6 @@ import example.springdata.mongodb.util.RequiresMongoDB; @SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class AdvancedIntegrationTests { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.atLeast(new Version(2, 6)); - @Autowired AdvancedRepository repository; @Autowired MongoOperations operations; @@ -76,8 +71,8 @@ public class AdvancedIntegrationTests { // execute another finder without meta attributes that should not be picked up repository.findByLastname(dave.getLastname(), new Sort("firstname")); - DBCursor cursor = operations.getCollection(ApplicationConfiguration.SYSTEM_PROFILE_DB).find( - new BasicDBObject("query.$comment", AdvancedRepository.META_COMMENT)); + DBCursor cursor = operations.getCollection(ApplicationConfiguration.SYSTEM_PROFILE_DB) + .find(new BasicDBObject("query.$comment", AdvancedRepository.META_COMMENT)); while (cursor.hasNext()) { diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java index 7e4192c0..352a2eba 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/advanced/ServersideScriptTests.java @@ -20,12 +20,10 @@ import static org.hamcrest.core.IsNull.*; import static org.junit.Assert.*; import example.springdata.mongodb.customer.Customer; -import example.springdata.mongodb.util.RequiresMongoDB; import java.util.Map; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +31,6 @@ import org.springframework.boot.test.SpringApplicationConfiguration; import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.script.ExecutableMongoScript; import org.springframework.data.mongodb.core.script.NamedMongoScript; -import org.springframework.data.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.mongodb.BasicDBObject; @@ -46,8 +43,6 @@ import com.mongodb.DBObject; @SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class ServersideScriptTests { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.atLeast(new Version(2, 6)); - @Autowired AdvancedRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java index df435feb..4419cb95 100644 --- a/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java +++ b/mongodb/example/src/test/java/example/springdata/mongodb/customer/CustomerRepositoryIntegrationTest.java @@ -21,7 +21,6 @@ import static org.junit.Assert.*; import java.util.List; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -35,8 +34,6 @@ import org.springframework.data.mongodb.core.index.GeospatialIndex; import org.springframework.data.querydsl.QSort; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * Integration test for {@link CustomerRepository}. * @@ -46,8 +43,6 @@ import example.springdata.mongodb.util.RequiresMongoDB; @SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class CustomerRepositoryIntegrationTest { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.anyVersion(); - @Autowired CustomerRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/example/src/test/resources/application.properties b/mongodb/example/src/test/resources/application.properties new file mode 100644 index 00000000..c59a689b --- /dev/null +++ b/mongodb/example/src/test/resources/application.properties @@ -0,0 +1,2 @@ +# Random port for embedded MongoDB +spring.data.mongodb.port=0 diff --git a/mongodb/geo-json/pom.xml b/mongodb/geo-json/pom.xml index 2b7f0fd9..ce64e543 100644 --- a/mongodb/geo-json/pom.xml +++ b/mongodb/geo-json/pom.xml @@ -12,23 +12,12 @@ Spring Data MongoDB - GeoJson support - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - com.fasterxml.jackson.core jackson-databind - - org.springframework.data - spring-data-mongodb - - diff --git a/mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/Application.java b/mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/ApplicationConfiguration.java similarity index 92% rename from mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/Application.java rename to mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/ApplicationConfiguration.java index 936f577f..610a05e1 100644 --- a/mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/Application.java +++ b/mongodb/geo-json/src/main/java/example/springdata/mongodb/geojson/ApplicationConfiguration.java @@ -17,7 +17,6 @@ package example.springdata.mongodb.geojson; import static com.fasterxml.jackson.databind.DeserializationFeature.*; -import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.core.io.ClassPathResource; @@ -37,11 +36,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * @author Oliver Gierke */ @SpringBootApplication -public class Application { - - public static void main(String[] args) { - SpringApplication.run(Application.class, args); - } +public class ApplicationConfiguration { /** * Read JSON data from disk and insert those stores. diff --git a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java index 1ad41cac..3f6314de 100644 --- a/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java +++ b/mongodb/geo-json/src/test/java/example/springdata/mongodb/geojson/StoreRepositoryTests.java @@ -15,7 +15,6 @@ */ package example.springdata.mongodb.geojson; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -28,17 +27,11 @@ import org.springframework.data.mongodb.core.geo.GeoJson; import org.springframework.data.mongodb.core.geo.GeoJsonPolygon; import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.Criteria; -import org.springframework.data.util.Version; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; -import example.springdata.mongodb.geojson.Application; -import example.springdata.mongodb.geojson.Store; -import example.springdata.mongodb.geojson.StoreRepository; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * Integration tests for {@link StoreRepository}. * @@ -46,14 +39,12 @@ import example.springdata.mongodb.util.RequiresMongoDB; * @author Oliver Gierke */ @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = { Application.class }) +@SpringApplicationConfiguration(classes = { ApplicationConfiguration.class }) public class StoreRepositoryTests { private static final GeoJsonPolygon GEO_JSON_POLYGON = new GeoJsonPolygon(new Point(-73.992514, 40.758934), new Point(-73.961138, 40.760348), new Point(-73.991658, 40.730006), new Point(-73.992514, 40.758934)); - public static @ClassRule RequiresMongoDB requiresMongoDB_2_6 = RequiresMongoDB.atLeast(new Version(2, 6, 0)); - @Autowired StoreRepository repository; @Autowired MongoOperations operations; @@ -114,9 +105,8 @@ public class StoreRepositoryTests { */ @Test public void findWithinLegacyPolygon() { - repository.findByLocationWithin( - new Polygon(new Point(-73.992514, 40.758934), new Point(-73.961138, 40.760348), - new Point(-73.991658, 40.730006))).forEach(System.out::println); + repository.findByLocationWithin(new Polygon(new Point(-73.992514, 40.758934), new Point(-73.961138, 40.760348), + new Point(-73.991658, 40.730006))).forEach(System.out::println); } /** @@ -130,8 +120,8 @@ public class StoreRepositoryTests { operations.getConverter().write(GEO_JSON_POLYGON, geoJsonDbo); - BasicQuery bq = new BasicQuery(new BasicDBObject("location", new BasicDBObject("$geoIntersects", new BasicDBObject( - "$geometry", geoJsonDbo)))); + BasicQuery bq = new BasicQuery( + new BasicDBObject("location", new BasicDBObject("$geoIntersects", new BasicDBObject("$geometry", geoJsonDbo)))); operations.find(bq, Store.class).forEach(System.out::println); } diff --git a/mongodb/geo-json/src/test/resources/application.properties b/mongodb/geo-json/src/test/resources/application.properties new file mode 100644 index 00000000..c59a689b --- /dev/null +++ b/mongodb/geo-json/src/test/resources/application.properties @@ -0,0 +1,2 @@ +# Random port for embedded MongoDB +spring.data.mongodb.port=0 diff --git a/mongodb/java8/pom.xml b/mongodb/java8/pom.xml index b54a1638..9a059360 100644 --- a/mongodb/java8/pom.xml +++ b/mongodb/java8/pom.xml @@ -11,19 +11,4 @@ spring-data-mongodb-java8 Spring Data MongoDB - Java 8 specific features - - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - - - - org.springframework.data - spring-data-mongodb - - - - diff --git a/mongodb/java8/src/test/java/example/springdata/mongodb/people/PersonRepositoryIntegrationTest.java b/mongodb/java8/src/test/java/example/springdata/mongodb/people/PersonRepositoryIntegrationTest.java index b0e77417..a236b053 100644 --- a/mongodb/java8/src/test/java/example/springdata/mongodb/people/PersonRepositoryIntegrationTest.java +++ b/mongodb/java8/src/test/java/example/springdata/mongodb/people/PersonRepositoryIntegrationTest.java @@ -18,7 +18,6 @@ package example.springdata.mongodb.people; import java.util.stream.Stream; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,8 +26,6 @@ import org.springframework.data.mongodb.core.MongoOperations; import org.springframework.data.mongodb.core.mapping.event.LoggingEventListener; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * Integration test for {@link PersonRepository}. * @@ -39,8 +36,6 @@ import example.springdata.mongodb.util.RequiresMongoDB; @SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class PersonRepositoryIntegrationTest { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.anyVersion(); - @Autowired PersonRepository repository; @Autowired MongoOperations operations; diff --git a/mongodb/java8/src/test/resources/application.properties b/mongodb/java8/src/test/resources/application.properties new file mode 100644 index 00000000..c59a689b --- /dev/null +++ b/mongodb/java8/src/test/resources/application.properties @@ -0,0 +1,2 @@ +# Random port for embedded MongoDB +spring.data.mongodb.port=0 diff --git a/mongodb/pom.xml b/mongodb/pom.xml index 6f4523a8..eee53492 100644 --- a/mongodb/pom.xml +++ b/mongodb/pom.xml @@ -22,7 +22,6 @@ text-search java8 security - util geo-json @@ -44,6 +43,12 @@ spring-boot-starter + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + runtime + + \ No newline at end of file diff --git a/mongodb/security/pom.xml b/mongodb/security/pom.xml index c3d04dc7..34633d63 100644 --- a/mongodb/security/pom.xml +++ b/mongodb/security/pom.xml @@ -13,13 +13,6 @@ - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - - org.springframework.boot spring-boot-starter-security diff --git a/mongodb/security/src/main/java/example/springdata/mongodb/security/Application.java b/mongodb/security/src/main/java/example/springdata/mongodb/security/ApplicationConfiguration.java similarity index 97% rename from mongodb/security/src/main/java/example/springdata/mongodb/security/Application.java rename to mongodb/security/src/main/java/example/springdata/mongodb/security/ApplicationConfiguration.java index f6dda983..7bc23845 100644 --- a/mongodb/security/src/main/java/example/springdata/mongodb/security/Application.java +++ b/mongodb/security/src/main/java/example/springdata/mongodb/security/ApplicationConfiguration.java @@ -28,7 +28,7 @@ import org.springframework.security.data.repository.query.SecurityEvaluationCont * @author Thomas Darimont */ @SpringBootApplication -class Application { +class ApplicationConfiguration { @Bean public EvaluationContextExtension securityExtension() { diff --git a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java index d8928163..a0616833 100644 --- a/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java +++ b/mongodb/security/src/test/java/example/springdata/mongodb/security/PersonRepositoryIntegrationTest.java @@ -18,16 +18,10 @@ package example.springdata.mongodb.security; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; -import example.springdata.mongodb.security.Application; -import example.springdata.mongodb.security.Person; -import example.springdata.mongodb.security.PersonRepository; -import example.springdata.mongodb.util.RequiresMongoDB; - import java.util.Collections; import java.util.List; import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -41,14 +35,12 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; * Integration test for {@link PersonRepository}. * * @author Thomas Darimont - * @authot Oliver Gierke + * @author Oliver Gierke */ @RunWith(SpringJUnit4ClassRunner.class) -@SpringApplicationConfiguration(classes = Application.class) +@SpringApplicationConfiguration(classes = ApplicationConfiguration.class) public class PersonRepositoryIntegrationTest { - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.anyVersion(); - @Autowired PersonRepository repository; Person dave, oliver, carter, admin; diff --git a/mongodb/security/src/test/resources/application.properties b/mongodb/security/src/test/resources/application.properties new file mode 100644 index 00000000..c59a689b --- /dev/null +++ b/mongodb/security/src/test/resources/application.properties @@ -0,0 +1,2 @@ +# Random port for embedded MongoDB +spring.data.mongodb.port=0 diff --git a/mongodb/text-search/pom.xml b/mongodb/text-search/pom.xml index 0b04942e..3e50d2c8 100644 --- a/mongodb/text-search/pom.xml +++ b/mongodb/text-search/pom.xml @@ -13,15 +13,11 @@ + com.fasterxml.jackson.core jackson-databind - - ${project.groupId} - spring-data-mongodb-utils - ${project.version} - test - + diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java index f1cba0e3..f6d94fd9 100644 --- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java +++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchRepositoryTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014 the original author or authors. + * Copyright 2014-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,18 +19,14 @@ import static example.springdata.mongodb.util.ConsoleResultPrinter.*; import java.util.List; -import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.mapping.TextScore; import org.springframework.data.mongodb.core.query.TextCriteria; -import org.springframework.data.util.Version; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import example.springdata.mongodb.util.RequiresMongoDB; - /** * Integration tests showing the text search functionality using repositories. * @@ -44,8 +40,6 @@ public class TextSearchRepositoryTests { @Autowired BlogPostRepository repo; - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.atLeast(new Version(2, 6)); - /** * Show how to do simple matching.
* Note that text search is case insensitive and will also find entries like {@literal releases}. diff --git a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java index f67a3c03..4cd520f1 100644 --- a/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java +++ b/mongodb/text-search/src/test/java/example/springdata/mongodb/textsearch/TextSearchTemplateTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014 the original author or authors. + * Copyright 2014-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,47 +20,41 @@ import static org.springframework.data.mongodb.core.query.Query.*; import java.util.List; -import org.junit.Before; -import org.junit.ClassRule; import org.junit.Test; -import org.springframework.boot.autoconfigure.mongo.MongoProperties; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoOperations; -import org.springframework.data.mongodb.core.MongoTemplate; -import org.springframework.data.mongodb.core.index.TextIndexDefinition; -import org.springframework.data.mongodb.core.index.TextIndexDefinition.TextIndexDefinitionBuilder; import org.springframework.data.mongodb.core.query.TextCriteria; import org.springframework.data.mongodb.core.query.TextQuery; -import org.springframework.data.util.Version; - -import example.springdata.mongodb.util.BlogPostInitializer; -import example.springdata.mongodb.util.RequiresMongoDB; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * @author Christoph Strobl * @author Thomas Darimont */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { MongoTestConfiguration.class }) public class TextSearchTemplateTests { - MongoOperations operations; + @Autowired MongoOperations operations; - @ClassRule public static RequiresMongoDB mongodbAvailable = RequiresMongoDB.atLeast(new Version(2, 6)); - - @Before - public void setUp() throws Exception { - - MongoProperties properties = new MongoProperties(); - - operations = new MongoTemplate(properties.createMongoClient(null), properties.getMongoClientDatabase()); - operations.dropCollection(BlogPost.class); - - createIndex(); - - BlogPostInitializer.INSTANCE.initialize(this.operations); - } + // @Before + // public void setUp() throws Exception { + // + // MongoProperties properties = new MongoProperties(); + // + // operations = new MongoTemplate(properties.createMongoClient(null), properties.getMongoClientDatabase()); + // operations.dropCollection(BlogPost.class); + // + // createIndex(); + // + // BlogPostInitializer.INSTANCE.initialize(this.operations); + // } /** - * Show how to do simple matching.
- * Note that text search is case insensitive and will also find entries like {@literal releases}. + * Show how to do simple matching. Note that text search is case insensitive and will also find entries like + * {@literal releases}. */ @Test public void findAllBlogPostsWithRelease() { @@ -87,36 +81,4 @@ public class TextSearchTemplateTests { printResult(blogPosts, criteria); } - - /** - * Creates the mongodb text index for {@link BlogPost}.
- * - *
-	 * 
-	 * db.collection.ensureIndex(
-	 * {
-	 *     "title" : "text" 
-	 *     "content" : "text"
-	 *     "categories" : "text",
-	 * },
-	 * {
-	 *     weights : {
-	 *         "title" : 3,
-	 *         "content" : 2
-	 *     }
-	 * }
-	 * )
-	 * 
-	 * 
- */ - private void createIndex() { - - TextIndexDefinition textIndex = new TextIndexDefinitionBuilder()// - .onField("title", 3F) // - .onField("content", 2F) // - .onField("categories") // - .build(); - - operations.indexOps(BlogPost.class).ensureIndex(textIndex); - } } diff --git a/mongodb/util/pom.xml b/mongodb/util/pom.xml deleted file mode 100644 index 6333f4b0..00000000 --- a/mongodb/util/pom.xml +++ /dev/null @@ -1,21 +0,0 @@ - - 4.0.0 - - spring-data-mongodb-utils - - Spring Data MongoDB - Example utilities - - - org.springframework.data.examples - spring-data-mongodb-examples - 1.0.0.BUILD-SNAPSHOT - - - - - org.springframework.boot - spring-boot-starter-test - - - diff --git a/mongodb/util/src/main/java/example/springdata/mongodb/util/RequiresMongoDB.java b/mongodb/util/src/main/java/example/springdata/mongodb/util/RequiresMongoDB.java deleted file mode 100644 index 753c9525..00000000 --- a/mongodb/util/src/main/java/example/springdata/mongodb/util/RequiresMongoDB.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2014-2015 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package example.springdata.mongodb.util; - -import java.net.UnknownHostException; - -import org.junit.AssumptionViolatedException; -import org.junit.ClassRule; -import org.junit.Rule; -import org.junit.rules.ExternalResource; -import org.junit.rules.TestRule; -import org.springframework.data.util.Version; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import com.mongodb.BasicDBObjectBuilder; -import com.mongodb.CommandResult; -import com.mongodb.DB; -import com.mongodb.MongoClient; - -/** - * {@link TestRule} verifying server tests are executed against match a given version. This one can be used as - * {@link ClassRule} e.g. in context depending tests run with {@link SpringJUnit4ClassRunner} when the context would - * fail to start in case of invalid version, or as simple {@link Rule} on specific tests. - * - * @author Christoph Strobl - * @author Alexander Golonzovsky - * @since 1.6 - */ -public class RequiresMongoDB extends ExternalResource { - - private String host = "localhost"; - private int port = 27017; - - private final Version minVersion; - private final Version maxVersion; - - private Version currentVersion; - - public RequiresMongoDB(Version min, Version max) { - this.minVersion = min; - this.maxVersion = max; - } - - public static RequiresMongoDB anyVersion() { - return new RequiresMongoDB(new Version(0, 0, 0), new Version(9999, 9999, 9999)); - } - - public static RequiresMongoDB atLeast(Version minVersion) { - return new RequiresMongoDB(minVersion, new Version(9999, 9999, 9999)); - } - - public static RequiresMongoDB atMost(Version maxVersion) { - return new RequiresMongoDB(new Version(0, 0, 0), maxVersion); - } - - public RequiresMongoDB serverRunningAt(String host, int port) { - this.host = host; - this.port = port; - - return this; - } - - @Override - protected void before() throws Throwable { - - initCurrentVersion(); - - if (currentVersion.isLessThan(minVersion) || currentVersion.isGreaterThan(maxVersion)) { - throw new AssumptionViolatedException(String.format( - "Expected mongodb server to be in range %s to %s but found %s", minVersion, maxVersion, currentVersion)); - } - } - - private void initCurrentVersion() { - - if (currentVersion == null) { - try { - DB db = new MongoClient(host, port).getDB("test"); - CommandResult result = db.command(new BasicDBObjectBuilder().add("buildInfo", 1).get()); - this.currentVersion = Version.parse(result.get("version").toString()); - } catch (com.mongodb.MongoTimeoutException | UnknownHostException e) { - throw new AssumptionViolatedException("Seems as mongodb server is not running.", e); - } - } - } -} diff --git a/rest/multi-store/pom.xml b/rest/multi-store/pom.xml index adeb324a..2c5deb0f 100644 --- a/rest/multi-store/pom.xml +++ b/rest/multi-store/pom.xml @@ -21,6 +21,7 @@ org.springframework.boot spring-boot-starter-data-jpa
+ com.h2database h2 @@ -31,6 +32,13 @@ org.springframework.boot spring-boot-starter-data-mongodb + + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + runtime + +
diff --git a/rest/starbucks/pom.xml b/rest/starbucks/pom.xml index 35f037ac..dd0d129f 100644 --- a/rest/starbucks/pom.xml +++ b/rest/starbucks/pom.xml @@ -19,6 +19,12 @@ spring-boot-starter-data-mongodb + + de.flapdoodle.embed + de.flapdoodle.embed.mongo + runtime + + com.mysema.querydsl querydsl-mongodb @@ -28,9 +34,13 @@ org.springframework.data spring-data-rest-hal-browser - 2.4.0.DATAREST-627-SNAPSHOT runtime + + + com.fasterxml.jackson.module + jackson-module-parameter-names + org.springframework.batch @@ -75,7 +85,6 @@ org.webjars webjars-locator - 0.22 runtime diff --git a/rest/starbucks/src/main/java/example/springdata/rest/stores/StoreApp.java b/rest/starbucks/src/main/java/example/springdata/rest/stores/StoreApp.java index 28c9e8f4..eebb66da 100644 --- a/rest/starbucks/src/main/java/example/springdata/rest/stores/StoreApp.java +++ b/rest/starbucks/src/main/java/example/springdata/rest/stores/StoreApp.java @@ -17,6 +17,10 @@ package example.springdata.rest.stores; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import com.fasterxml.jackson.databind.Module; +import com.fasterxml.jackson.module.paramnames.ParameterNamesModule; /** * Spring configuration class main application bootstrap point. @@ -29,4 +33,9 @@ public class StoreApp { public static void main(String[] args) { SpringApplication.run(StoreApp.class, args); } + + // Workaround for https://github.com/spring-projects/spring-boot/issues/4336 + public @Bean Module namesModule() { + return new ParameterNamesModule(); + } } diff --git a/rest/starbucks/src/main/resources/application.properties b/rest/starbucks/src/main/resources/application.properties index 6846da4e..fc79c73a 100644 --- a/rest/starbucks/src/main/resources/application.properties +++ b/rest/starbucks/src/main/resources/application.properties @@ -1 +1,5 @@ +# Random port for embedded MongoDB +spring.data.mongodb.port=0 + +# Spring Data REST spring.data.rest.base-path=/api