From 7f9522250acab9c9f07150fa96d397b406e3f0c6 Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Thu, 1 Mar 2018 15:57:39 +0300 Subject: [PATCH 1/7] Spring boot 2 support. --- .gitignore | 1 + multi-module/build.gradle | 8 ++- multi-module/common-hateoas/build.gradle | 2 +- multi-module/common/build.gradle | 1 + ...ocker-compose-eventuate-local-postgres.yml | 4 +- .../docker-compose-eventuate-local.yml | 2 +- .../todolist/e2etests/EndToEndTest.java | 6 +- multi-module/gradle.properties | 8 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- multi-module/mysql/Dockerfile | 2 +- multi-module/postgres/Dockerfile | 2 +- .../rest-api-integration-tests/build.gradle | 4 +- .../integrationtests/RestAPITest.java | 6 +- multi-module/settings.gradle | 2 + .../todolist/AbstractTodoRestAPITest.java | 4 -- .../testutil/BasicWebTestConfiguration.java | 5 +- multi-module/todo-service-common/build.gradle | 15 ++++ .../backend/TodoBackendConfiguration.java | 59 ++++++++++++++++ .../backend/TodoViewServiceImpl.java | 37 ++++++++++ .../backend/command/CreateTodoCommand.java | 17 +++++ .../backend/command/DeleteAllTodoCommand.java | 5 ++ .../backend/command/DeleteTodoCommand.java | 5 ++ .../backend/command/DeleteTodosCommand.java | 19 +++++ .../backend/command/TodoCommand.java | 7 ++ .../backend/command/UpdateTodoCommand.java | 23 ++++++ .../backend/domain/TodoAggregate.java | 64 +++++++++++++++++ .../domain/TodoBulkDeleteAggregate.java | 26 +++++++ .../backend/domain/TodoEventSubscriber.java | 23 ++++++ .../backend/domain/TodoService.java | 38 ++++++++++ .../todoservice/web/TodoController.java | 70 +++++++++++++++++++ .../todoservice/web/TodoWebConfiguration.java | 24 +++++++ .../src/main/resources/schema-mysql.sql | 0 multi-module/todo-service/build.gradle | 18 +---- .../backend/TodoBackendConfiguration.java | 5 +- .../backend/TodoViewServiceImpl.java | 10 +-- .../todoservice/web/TodoWebConfiguration.java | 2 +- .../todo-view-service-common/build.gradle | 15 ++++ .../backend/TodoUpdateServiceImpl.java | 11 ++- .../backend/TodoViewBackendConfiguration.java | 6 +- .../backend/TodoViewEventSubscriber.java | 0 .../queryside/web/TodoViewController.java | 0 .../web/TodoViewWebConfiguration.java | 2 +- multi-module/todo-view-service/build.gradle | 17 +---- single-module/build.gradle | 14 ++-- ...ocker-compose-eventuate-local-postgres.yml | 4 +- .../docker-compose-eventuate-local.yml | 2 +- single-module/gradle.properties | 7 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- single-module/mysql/Dockerfile | 2 +- single-module/postgres/Dockerfile | 2 +- .../backend/TodoBackendConfiguration.java | 2 +- .../todolist/backend/TodoQueryService.java | 13 ++-- .../todolist/web/TodoWebConfiguration.java | 9 +-- .../todolist/AbstractTodoRestAPITest.java | 3 +- .../todolist/e2etests/EndToEndTest.java | 7 +- .../todolist/integration/RestAPITest.java | 6 +- .../testutil/BasicWebTestConfiguration.java | 6 +- 57 files changed, 534 insertions(+), 122 deletions(-) create mode 100644 multi-module/todo-service-common/build.gradle create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java create mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java create mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java rename multi-module/{todo-service => todo-service-common}/src/main/resources/schema-mysql.sql (100%) create mode 100644 multi-module/todo-view-service-common/build.gradle rename multi-module/{todo-view-service => todo-view-service-common}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java (78%) rename multi-module/{todo-view-service => todo-view-service-common}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java (83%) rename multi-module/{todo-view-service => todo-view-service-common}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java (100%) rename multi-module/{todo-view-service => todo-view-service-common}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java (100%) rename multi-module/{todo-view-service => todo-view-service-common}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java (93%) diff --git a/.gitignore b/.gitignore index afe247a..184bbc1 100755 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build/ *.idea/ *.iml *.log +out/ diff --git a/multi-module/build.gradle b/multi-module/build.gradle index 8143d31..64a9dfc 100755 --- a/multi-module/build.gradle +++ b/multi-module/build.gradle @@ -1,5 +1,8 @@ buildscript { repositories { + maven { + url "http://repo.spring.io/milestone/" + } mavenCentral() } dependencies { @@ -8,7 +11,7 @@ buildscript { } task wrapper(type: Wrapper) { - gradleVersion = '2.0' + gradleVersion = '4.4' } subprojects { @@ -17,6 +20,9 @@ subprojects { targetCompatibility = 1.8 repositories { + maven { + url "http://repo.spring.io/milestone/" + } mavenCentral() jcenter() eventuateMavenRepoUrl.split(',').each { repoUrl -> maven { url repoUrl } } diff --git a/multi-module/common-hateoas/build.gradle b/multi-module/common-hateoas/build.gradle index 9589853..4ed8c34 100644 --- a/multi-module/common-hateoas/build.gradle +++ b/multi-module/common-hateoas/build.gradle @@ -8,7 +8,7 @@ dependencies { compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" testCompile 'junit:junit:4.11' } \ No newline at end of file diff --git a/multi-module/common/build.gradle b/multi-module/common/build.gradle index c8d85b4..198f0b2 100755 --- a/multi-module/common/build.gradle +++ b/multi-module/common/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'java' dependencies { + compile 'org.apache.commons:commons-io:1.3.2' compile "io.eventuate.client.java:eventuate-client-java-spring:$eventuateClientVersion" compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion" compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") diff --git a/multi-module/docker-compose-eventuate-local-postgres.yml b/multi-module/docker-compose-eventuate-local-postgres.yml index 233ee7c..e5bffbb 100644 --- a/multi-module/docker-compose-eventuate-local-postgres.yml +++ b/multi-module/docker-compose-eventuate-local-postgres.yml @@ -25,7 +25,9 @@ postgres: POSTGRES_PASSWORD: eventuate cdcservice: - image: eventuateio/eventuateio-local-cdc-service:0.15.0 + image: eventuateio/eventuateio-local-cdc-service:0.17.0.RELEASE + ports: + - "8099:8080" links: - postgres - kafka diff --git a/multi-module/docker-compose-eventuate-local.yml b/multi-module/docker-compose-eventuate-local.yml index 90e7e99..45af0bb 100644 --- a/multi-module/docker-compose-eventuate-local.yml +++ b/multi-module/docker-compose-eventuate-local.yml @@ -18,7 +18,7 @@ kafka: - ZOOKEEPER_SERVERS=zookeeper:2181 cdcservice: - image: eventuateio/eventuateio-local-cdc-service:0.15.0 + image: eventuateio/eventuateio-local-cdc-service:0.17.0.RELEASE ports: - "8099:8080" links: diff --git a/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java b/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java index 90e8868..02e1078 100755 --- a/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java +++ b/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java @@ -2,12 +2,10 @@ import net.chrisrichardson.eventstore.examples.todolist.AbstractTodoRestAPITest; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.IntegrationTest; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; -@SpringApplicationConfiguration(classes = {E2ETestConfiguration.class}) -@IntegrationTest +@SpringBootTest(classes = {E2ETestConfiguration.class}) public class EndToEndTest extends AbstractTodoRestAPITest { @Value("#{systemEnvironment['DOCKER_HOST_IP']}") diff --git a/multi-module/gradle.properties b/multi-module/gradle.properties index e5dc0c6..f428d61 100755 --- a/multi-module/gradle.properties +++ b/multi-module/gradle.properties @@ -3,9 +3,7 @@ org.gradle.jvmargs=-XX:MaxPermSize=512m eventuateMavenRepoUrl= -springHateoasVersion=0.17.0.RELEASE +springBootVersion=2.0.0.RC2 -springBootVersion=1.3.5.RELEASE - -eventuateClientVersion=0.19.0.RELEASE -eventuateLocalVersion=0.15.0.RELEASE +eventuateClientVersion=0.20.1.RELEASE +eventuateLocalVersion=0.17.0.RELEASE diff --git a/multi-module/gradle/wrapper/gradle-wrapper.properties b/multi-module/gradle/wrapper/gradle-wrapper.properties index 1164e0d..f2d5cdb 100755 --- a/multi-module/gradle/wrapper/gradle-wrapper.properties +++ b/multi-module/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/multi-module/mysql/Dockerfile b/multi-module/mysql/Dockerfile index e1198c9..53a3523 100644 --- a/multi-module/mysql/Dockerfile +++ b/multi-module/mysql/Dockerfile @@ -1,2 +1,2 @@ -FROM eventuateio/eventuateio-local-mysql:0.15.0 +FROM eventuateio/eventuateio-local-mysql:0.17.0.RELEASE COPY schema-mysql.sql /docker-entrypoint-initdb.d diff --git a/multi-module/postgres/Dockerfile b/multi-module/postgres/Dockerfile index 1f0e707..5a72ad4 100644 --- a/multi-module/postgres/Dockerfile +++ b/multi-module/postgres/Dockerfile @@ -1,2 +1,2 @@ -FROM eventuateio/eventuateio-local-postgres:0.14.0 +FROM eventuateio/eventuateio-local-postgres:0.17.0.RELEASE COPY schema-postgres.sql /docker-entrypoint-initdb.d diff --git a/multi-module/rest-api-integration-tests/build.gradle b/multi-module/rest-api-integration-tests/build.gradle index 8284bb5..938914f 100755 --- a/multi-module/rest-api-integration-tests/build.gradle +++ b/multi-module/rest-api-integration-tests/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'java' dependencies { - testCompile project(":todo-service") - testCompile project(":todo-view-service") + testCompile project(":todo-service-common") + testCompile project(":todo-view-service-common") testCompile project(":test-utils") testCompile "junit:junit:4.11" diff --git a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java b/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java index 24bfe74..ba68168 100755 --- a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java +++ b/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java @@ -2,12 +2,10 @@ import net.chrisrichardson.eventstore.examples.todolist.AbstractTodoRestAPITest; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.boot.test.context.SpringBootTest; -@SpringApplicationConfiguration(classes = {RestAPITestConfiguration.class}) -@WebAppConfiguration +@SpringBootTest(classes = {RestAPITestConfiguration.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class RestAPITest extends AbstractTodoRestAPITest { @Value("${local.server.port}") private int port; diff --git a/multi-module/settings.gradle b/multi-module/settings.gradle index 5bc6bfb..530c14c 100755 --- a/multi-module/settings.gradle +++ b/multi-module/settings.gradle @@ -2,7 +2,9 @@ include 'common' include 'common-hateoas' include 'common-swagger' include 'todo-service' +include 'todo-service-common' include 'todo-view-service' +include 'todo-view-service-common' include 'test-utils' include 'rest-api-integration-tests' include 'e2etest' diff --git a/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java b/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java index 0657c62..d18bebe 100755 --- a/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java +++ b/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java @@ -6,7 +6,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.IntegrationTest; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -15,16 +14,13 @@ import org.springframework.web.client.RestTemplate; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import static net.chrisrichardson.eventstore.examples.todolist.testutil.TestUtil.awaitSuccessfulRequest; import static net.chrisrichardson.eventstore.examples.todolist.testutil.TestUtil.awaitNotFoundResponse; -import static net.chrisrichardson.eventstore.examples.todolist.testutil.TestUtil.awaitSuccessfulRequest; @RunWith(SpringJUnit4ClassRunner.class) -@IntegrationTest({"server.port=0"}) public abstract class AbstractTodoRestAPITest { protected int port; diff --git a/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java b/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java index d999fa5..ce9cd10 100755 --- a/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java +++ b/multi-module/test-utils/src/main/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java @@ -5,7 +5,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.impl.client.HttpClients; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.web.HttpMessageConverters; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; @@ -14,6 +14,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; +import java.util.Arrays; import java.util.Collections; @@ -26,7 +27,7 @@ public RestTemplate restTemplate(HttpMessageConverters converters) { // we have to define Apache HTTP client to use the PATCH verb MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); - converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/json")); + converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM)); converter.setObjectMapper(new ObjectMapper()); HttpClient httpClient = HttpClients.createDefault(); diff --git a/multi-module/todo-service-common/build.gradle b/multi-module/todo-service-common/build.gradle new file mode 100644 index 0000000..0de3693 --- /dev/null +++ b/multi-module/todo-service-common/build.gradle @@ -0,0 +1,15 @@ +apply plugin: VerifyEventStoreEnvironmentPlugin +apply plugin: EventuateDependencyPlugin + +dependencies { + compile project(":common") + compile project(":common-hateoas") + compile project(":common-swagger") + + compile 'mysql:mysql-connector-java:5.1.36' + + compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") + compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") + compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" +} \ No newline at end of file diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java new file mode 100644 index 0000000..ade3253 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java @@ -0,0 +1,59 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend; + +import io.eventuate.AggregateRepository; +import io.eventuate.EventuateAggregateStore; +import io.eventuate.javaclient.spring.EnableEventHandlers; +import net.chrisrichardson.eventstore.examples.todolist.TodoRepository; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoAggregate; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoBulkDeleteAggregate; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoEventSubscriber; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoService; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + + +@Configuration +@EntityScan("net.chrisrichardson.eventstore.examples.todolist") +@EnableJpaRepositories("net.chrisrichardson.eventstore.examples.todolist") +@EnableEventHandlers +public class TodoBackendConfiguration { + + @Bean + public TodoEventSubscriber todoEventSubscriber() { + return new TodoEventSubscriber(); + } + + @Bean + public AggregateRepository aggregateRepository(EventuateAggregateStore eventStore) { + return new AggregateRepository<>(TodoAggregate.class, eventStore); + } + + @Bean + public AggregateRepository bulkDeleteAggregateRepository(EventuateAggregateStore eventStore) { + return new AggregateRepository<>(TodoBulkDeleteAggregate.class, eventStore); + } + + @Bean + public TodoService updateService(AggregateRepository aggregateRepository, AggregateRepository bulkDeleteAggregateRepository) { + return new TodoService(aggregateRepository, bulkDeleteAggregateRepository); + } + + @Bean + public TodoViewServiceImpl commandService(TodoRepository repository) { + return new TodoViewServiceImpl(repository); + } + + @Bean + public HttpMessageConverters customConverters() { + HttpMessageConverter additional = new MappingJackson2HttpMessageConverter(); + return new HttpMessageConverters(additional); + } +} + + diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java new file mode 100755 index 0000000..cb8555d --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java @@ -0,0 +1,37 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend; + + + +import io.eventuate.CompletableFutureUtil; +import net.chrisrichardson.eventstore.examples.todolist.hateoas.TodoUpdateService; +import net.chrisrichardson.eventstore.examples.todolist.TodoRepository; +import net.chrisrichardson.eventstore.examples.todolist.model.Todo; + +import javax.persistence.EntityNotFoundException; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.concurrent.CompletableFuture; + + +public class TodoViewServiceImpl implements TodoUpdateService { + + private TodoRepository repository; + + public TodoViewServiceImpl(TodoRepository repository) { + this.repository = repository; + } + + @Override + public List getAll() { + return repository.findAll(); + } + + @Override + public CompletableFuture findById(String todoId) { + return repository + .findById(todoId) + .map(CompletableFuture::completedFuture) + .orElse(CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found"))); + } + +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java new file mode 100644 index 0000000..68d5dbb --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java @@ -0,0 +1,17 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + + +import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; + +public class CreateTodoCommand implements TodoCommand { + + private TodoInfo todo; + + public CreateTodoCommand(TodoInfo todo) { + this.todo = todo; + } + + public TodoInfo getTodo() { + return todo; + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java new file mode 100755 index 0000000..7decfec --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java @@ -0,0 +1,5 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + + +public class DeleteAllTodoCommand implements TodoCommand { +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java new file mode 100755 index 0000000..d1e2fb2 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java @@ -0,0 +1,5 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + + +public class DeleteTodoCommand implements TodoCommand { +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java new file mode 100755 index 0000000..1948e1f --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java @@ -0,0 +1,19 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + +import java.util.List; + + +public class DeleteTodosCommand implements TodoCommand { + private List ids; + + public DeleteTodosCommand() { + } + + public DeleteTodosCommand(List ids) { + this.ids = ids; + } + + public List getIds() { + return ids; + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java new file mode 100755 index 0000000..2e96d0a --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java @@ -0,0 +1,7 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + + +import io.eventuate.Command; + +public interface TodoCommand extends Command { +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java new file mode 100755 index 0000000..78a4f6a --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java @@ -0,0 +1,23 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; + + +import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; + + +public class UpdateTodoCommand implements TodoCommand { + private String id; + private TodoInfo todo; + + public UpdateTodoCommand(String id, TodoInfo todo) { + this.id = id; + this.todo = todo; + } + + public String getId() { + return id; + } + + public TodoInfo getTodo() { + return todo; + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java new file mode 100644 index 0000000..761b868 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java @@ -0,0 +1,64 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; + + +import io.eventuate.Event; +import io.eventuate.EventUtil; +import io.eventuate.ReflectiveMutableCommandProcessingAggregate; +import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoCreatedEvent; +import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletedEvent; +import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoUpdatedEvent; +import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.CreateTodoCommand; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodoCommand; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.UpdateTodoCommand; + +import java.util.Collections; +import java.util.List; + +public class TodoAggregate extends ReflectiveMutableCommandProcessingAggregate { + + private TodoInfo todo; + private boolean deleted; + + public List process(CreateTodoCommand cmd) { + if (this.deleted) { + return Collections.emptyList(); + } + return EventUtil.events(new TodoCreatedEvent(cmd.getTodo())); + } + + public List process(UpdateTodoCommand cmd) { + if (this.deleted) { + return Collections.emptyList(); + } + return EventUtil.events(new TodoUpdatedEvent(cmd.getTodo())); + } + + public List process(DeleteTodoCommand cmd) { + if (this.deleted) { + return Collections.emptyList(); + } + return EventUtil.events(new TodoDeletedEvent()); + } + + + public void apply(TodoCreatedEvent event) { + this.todo = event.getTodo(); + } + + public void apply(TodoUpdatedEvent event) { + this.todo = event.getTodo(); + } + + public void apply(TodoDeletedEvent event) { + this.deleted = true; + } + + public TodoInfo getTodo() { + return todo; + } + +} + + diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java new file mode 100644 index 0000000..949d323 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java @@ -0,0 +1,26 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; + + +import io.eventuate.Event; +import io.eventuate.ReflectiveMutableCommandProcessingAggregate; +import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletionRequestedEvent; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodosCommand; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; + +import java.util.List; +import java.util.stream.Collectors; + + +public class TodoBulkDeleteAggregate extends ReflectiveMutableCommandProcessingAggregate { + + public List process(DeleteTodosCommand cmd) { + return cmd.getIds() + .stream() + .map(TodoDeletionRequestedEvent::new) + .collect(Collectors.toList()); + } + + public void apply(TodoDeletionRequestedEvent event) { + + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java new file mode 100644 index 0000000..62e4525 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java @@ -0,0 +1,23 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; + +import io.eventuate.EntityWithIdAndVersion; +import io.eventuate.EventHandlerContext; +import io.eventuate.EventHandlerMethod; +import io.eventuate.EventSubscriber; +import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletionRequestedEvent; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodoCommand; + +import java.util.concurrent.CompletableFuture; + + +@EventSubscriber(id = "todoCommandSideEventHandlers") +public class TodoEventSubscriber { + + @EventHandlerMethod + public CompletableFuture> deleteTodo(EventHandlerContext ctx) { + String todoId = ctx.getEvent().getTodoId(); + + return ctx.update(TodoAggregate.class, todoId, new DeleteTodoCommand()); + } + +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java new file mode 100644 index 0000000..a061e73 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java @@ -0,0 +1,38 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; + +import io.eventuate.AggregateRepository; +import io.eventuate.EntityWithIdAndVersion; +import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.*; + +import java.util.List; +import java.util.concurrent.CompletableFuture; + + +public class TodoService { + + private final AggregateRepository aggregateRepository; + private final AggregateRepository bulkDeleteAggregateRepository; + + + public TodoService(AggregateRepository todoRepository, AggregateRepository bulkDeleteAggregateRepository) { + this.aggregateRepository = todoRepository; + this.bulkDeleteAggregateRepository = bulkDeleteAggregateRepository; + } + + public CompletableFuture> save(TodoInfo todo) { + return aggregateRepository.save(new CreateTodoCommand(todo)); + } + + public CompletableFuture> remove(String id) { + return aggregateRepository.update(id, new DeleteTodoCommand()); + } + + public CompletableFuture> update(String id, TodoInfo newTodo) { + return aggregateRepository.update(id, new UpdateTodoCommand(id, newTodo)); + } + + public CompletableFuture> deleteAll(List ids) { + return bulkDeleteAggregateRepository.save(new DeleteTodosCommand(ids)); + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java new file mode 100644 index 0000000..0908b91 --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java @@ -0,0 +1,70 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; + +import net.chrisrichardson.eventstore.examples.todolist.hateoas.TodoHateoasController; +import net.chrisrichardson.eventstore.examples.todolist.common.controller.BaseController; +import net.chrisrichardson.eventstore.examples.todolist.common.model.ResourceWithUrl; +import net.chrisrichardson.eventstore.examples.todolist.model.Todo; +import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoViewServiceImpl; +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.hateoas.mvc.ControllerLinkBuilder; +import org.springframework.util.Assert; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn; +import static org.springframework.web.bind.annotation.RequestMethod.*; + + +@RestController +@RequestMapping(value = "/todos") +public class TodoController extends BaseController { + @Autowired + private TodoService todoService; + @Autowired + private TodoViewServiceImpl todoViewService; + + @RequestMapping(method = POST) + public CompletableFuture saveTodo(@RequestBody TodoInfo todo, HttpServletRequest request) { + Assert.notNull(todo.getTitle()); + return todoService.save(todo).thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId()))); + } + + @RequestMapping(value = "/{todo-id}", method = DELETE) + public CompletableFuture deleteOneTodo(@PathVariable("todo-id") String id, HttpServletRequest request) { + return todoService.remove(id) + .thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId()))); + } + + @RequestMapping(method = DELETE) + public void deleteAllTodos() throws Exception { + List todosToDelete = todoViewService.getAll(); + if (todosToDelete.size() > 0) { + todoService.deleteAll(todoViewService.getAll() + .stream() + .map(Todo::getId) + .collect(Collectors.toList())); + } + } + + @RequestMapping(value = "/{todo-id}", method = PATCH, headers = {"Content-type=application/json"}) + public CompletableFuture updateTodo(@PathVariable("todo-id") String id, @RequestBody TodoInfo newTodo, HttpServletRequest request) { + return todoService.update(id, newTodo).thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId())) + ); + } + + protected ResourceWithUrl toResource(TodoInfo todo, String id) { + ResourceWithUrl result = new ResourceWithUrl<>(todo); + result.setId(id); + result.setUrl(ControllerLinkBuilder.linkTo(methodOn(TodoHateoasController.class).getTodo(id)).withSelfRel().getHref()); + return result; + } +} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java new file mode 100644 index 0000000..1f9440d --- /dev/null +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java @@ -0,0 +1,24 @@ +package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; + +import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoBackendConfiguration; +import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; +import org.springframework.web.context.request.RequestContextListener; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; + +@Configuration +@Import({TodoBackendConfiguration.class}) +@ComponentScan({ "net.chrisrichardson.eventstore.examples.todolist.common", + "net.chrisrichardson.eventstore.examples.todolist.todoservice.web", + "net.chrisrichardson.eventstore.examples.todolist.hateoas"}) +public class TodoWebConfiguration extends WebMvcConfigurerAdapter { + + @Bean + public ServletListenerRegistrationBean httpRequestContextListener() { + return new ServletListenerRegistrationBean(new RequestContextListener()); + } + +} diff --git a/multi-module/todo-service/src/main/resources/schema-mysql.sql b/multi-module/todo-service-common/src/main/resources/schema-mysql.sql similarity index 100% rename from multi-module/todo-service/src/main/resources/schema-mysql.sql rename to multi-module/todo-service-common/src/main/resources/schema-mysql.sql diff --git a/multi-module/todo-service/build.gradle b/multi-module/todo-service/build.gradle index 0341918..bf52dd4 100644 --- a/multi-module/todo-service/build.gradle +++ b/multi-module/todo-service/build.gradle @@ -1,19 +1,5 @@ -apply plugin: VerifyEventStoreEnvironmentPlugin -apply plugin: EventuateDependencyPlugin - -apply plugin: 'spring-boot' +apply plugin: 'org.springframework.boot' dependencies { - compile project(":common") - compile project(":common-hateoas") - compile project(":common-swagger") - - compile 'mysql:mysql-connector-java:5.1.36' - - compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") - compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") - compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") - - testCompile project(":test-utils") + compile project(":todo-service-common") } \ No newline at end of file diff --git a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java index c217df7..ade3253 100644 --- a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java +++ b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java @@ -9,9 +9,8 @@ import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoBulkDeleteAggregate; import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoEventSubscriber; import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoService; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.web.HttpMessageConverters; -import org.springframework.boot.orm.jpa.EntityScan; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; diff --git a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java index ec860e0..cb8555d 100755 --- a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java +++ b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java @@ -9,6 +9,7 @@ import javax.persistence.EntityNotFoundException; import java.util.List; +import java.util.NoSuchElementException; import java.util.concurrent.CompletableFuture; @@ -27,11 +28,10 @@ public List getAll() { @Override public CompletableFuture findById(String todoId) { - Todo res = repository.findOne(todoId); - if (res != null) { - return CompletableFuture.completedFuture(res); - } - return CompletableFutureUtil.failedFuture(new EntityNotFoundException("No todo found for given id")); + return repository + .findById(todoId) + .map(CompletableFuture::completedFuture) + .orElse(CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found"))); } } diff --git a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java index b65d650..1f9440d 100644 --- a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java +++ b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java @@ -1,7 +1,7 @@ package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoBackendConfiguration; -import org.springframework.boot.context.embedded.ServletListenerRegistrationBean; +import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/multi-module/todo-view-service-common/build.gradle b/multi-module/todo-view-service-common/build.gradle new file mode 100644 index 0000000..0de3693 --- /dev/null +++ b/multi-module/todo-view-service-common/build.gradle @@ -0,0 +1,15 @@ +apply plugin: VerifyEventStoreEnvironmentPlugin +apply plugin: EventuateDependencyPlugin + +dependencies { + compile project(":common") + compile project(":common-hateoas") + compile project(":common-swagger") + + compile 'mysql:mysql-connector-java:5.1.36' + + compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") + compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") + compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" +} \ No newline at end of file diff --git a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java similarity index 78% rename from multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java rename to multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java index 2c88531..042a221 100755 --- a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java +++ b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java @@ -28,7 +28,7 @@ public List getAll() { } public void remove(String id) { - repository.delete(id); + repository.deleteById(id); } public void removeAll() { @@ -36,11 +36,10 @@ public void removeAll() { } public CompletableFuture findById(String todoId) { - Todo res = repository.findOne(todoId); - if (res != null) { - return CompletableFuture.completedFuture(res); - } - return CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found")); + return repository + .findById(todoId) + .map(CompletableFuture::completedFuture) + .orElse(CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found"))); } } diff --git a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java similarity index 83% rename from multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java rename to multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java index fd8e6ef..69fb9cd 100755 --- a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java +++ b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java @@ -2,11 +2,9 @@ import io.eventuate.javaclient.spring.EnableEventHandlers; import net.chrisrichardson.eventstore.examples.todolist.TodoRepository; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.web.HttpMessageConverters; -import org.springframework.boot.orm.jpa.EntityScan; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import org.springframework.http.converter.HttpMessageConverter; diff --git a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java similarity index 100% rename from multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java rename to multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java diff --git a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java similarity index 100% rename from multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java rename to multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java diff --git a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java similarity index 93% rename from multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java rename to multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java index 6820236..d09de4a 100644 --- a/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java +++ b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java @@ -1,7 +1,7 @@ package net.chrisrichardson.eventstore.examples.todolist.queryside.web; import net.chrisrichardson.eventstore.examples.todolist.queryside.backend.TodoViewBackendConfiguration; -import org.springframework.boot.context.embedded.ServletListenerRegistrationBean; +import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/multi-module/todo-view-service/build.gradle b/multi-module/todo-view-service/build.gradle index da09522..8c5dd35 100644 --- a/multi-module/todo-view-service/build.gradle +++ b/multi-module/todo-view-service/build.gradle @@ -1,18 +1,5 @@ -apply plugin: VerifyEventStoreEnvironmentPlugin -apply plugin: EventuateDependencyPlugin -apply plugin: 'spring-boot' +apply plugin: 'org.springframework.boot' dependencies { - compile project(":common") - compile project(":common-hateoas") - compile project(":common-swagger") - - compile 'mysql:mysql-connector-java:5.1.36' - - compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") - compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") - compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile("org.springframework.hateoas:spring-hateoas:$springHateoasVersion") - - testCompile project(":test-utils") + compile project(":todo-view-service-common") } \ No newline at end of file diff --git a/single-module/build.gradle b/single-module/build.gradle index bf132b6..bd0e87f 100755 --- a/single-module/build.gradle +++ b/single-module/build.gradle @@ -1,6 +1,9 @@ buildscript { repositories { mavenCentral() + maven { + url "http://repo.spring.io/milestone/" + } } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion") @@ -8,11 +11,11 @@ buildscript { } task wrapper(type: Wrapper) { - gradleVersion = '2.0' + gradleVersion = '4.4' } apply plugin: 'java' -apply plugin: 'spring-boot' +apply plugin: 'org.springframework.boot' apply plugin: VerifyEventStoreEnvironmentPlugin apply plugin: EventuateDependencyPlugin @@ -22,6 +25,9 @@ targetCompatibility = 1.8 repositories { mavenCentral() + maven { + url "http://repo.spring.io/milestone/" + } jcenter() eventuateMavenRepoUrl.split(',').each { repoUrl -> maven { url repoUrl } } } @@ -33,11 +39,11 @@ dependencies { compile('org.postgresql:postgresql:9.4-1200-jdbc41') { exclude group: 'org.slf4j', module: 'slf4j-simple' } - + compile 'org.apache.commons:commons-io:1.3.2' compile "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion" compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion" compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile "org.springframework.hateoas:spring-hateoas:$springHateoasVersion" + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" compile "io.reactivex:rxjava:1.1.5" compile "org.apache.httpcomponents:httpclient:4.5" diff --git a/single-module/docker-compose-eventuate-local-postgres.yml b/single-module/docker-compose-eventuate-local-postgres.yml index 27549ff..2ddcdf3 100644 --- a/single-module/docker-compose-eventuate-local-postgres.yml +++ b/single-module/docker-compose-eventuate-local-postgres.yml @@ -25,7 +25,9 @@ postgres: POSTGRES_PASSWORD: eventuate cdcservice: - image: eventuateio/eventuateio-local-cdc-service:0.15.0 + image: eventuateio/eventuateio-local-cdc-service:0.17.0.RELEASE + ports: + - "8099:8080" links: - postgres - kafka diff --git a/single-module/docker-compose-eventuate-local.yml b/single-module/docker-compose-eventuate-local.yml index 49169b5..77557c8 100644 --- a/single-module/docker-compose-eventuate-local.yml +++ b/single-module/docker-compose-eventuate-local.yml @@ -18,7 +18,7 @@ kafka: - ZOOKEEPER_SERVERS=zookeeper:2181 cdcservice: - image: eventuateio/eventuateio-local-cdc-service:0.15.0 + image: eventuateio/eventuateio-local-cdc-service:0.17.0.RELEASE ports: - "8099:8080" links: diff --git a/single-module/gradle.properties b/single-module/gradle.properties index 169f3c8..f428d61 100755 --- a/single-module/gradle.properties +++ b/single-module/gradle.properties @@ -3,8 +3,7 @@ org.gradle.jvmargs=-XX:MaxPermSize=512m eventuateMavenRepoUrl= -springHateoasVersion=0.17.0.RELEASE -springBootVersion=1.3.5.RELEASE +springBootVersion=2.0.0.RC2 -eventuateClientVersion=0.19.0.RELEASE -eventuateLocalVersion=0.15.0.RELEASE +eventuateClientVersion=0.20.1.RELEASE +eventuateLocalVersion=0.17.0.RELEASE diff --git a/single-module/gradle/wrapper/gradle-wrapper.properties b/single-module/gradle/wrapper/gradle-wrapper.properties index 94fe3a3..f2d5cdb 100755 --- a/single-module/gradle/wrapper/gradle-wrapper.properties +++ b/single-module/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.12-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip diff --git a/single-module/mysql/Dockerfile b/single-module/mysql/Dockerfile index e1198c9..53a3523 100644 --- a/single-module/mysql/Dockerfile +++ b/single-module/mysql/Dockerfile @@ -1,2 +1,2 @@ -FROM eventuateio/eventuateio-local-mysql:0.15.0 +FROM eventuateio/eventuateio-local-mysql:0.17.0.RELEASE COPY schema-mysql.sql /docker-entrypoint-initdb.d diff --git a/single-module/postgres/Dockerfile b/single-module/postgres/Dockerfile index 1f0e707..5a72ad4 100644 --- a/single-module/postgres/Dockerfile +++ b/single-module/postgres/Dockerfile @@ -1,2 +1,2 @@ -FROM eventuateio/eventuateio-local-postgres:0.14.0 +FROM eventuateio/eventuateio-local-postgres:0.17.0.RELEASE COPY schema-postgres.sql /docker-entrypoint-initdb.d diff --git a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoBackendConfiguration.java b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoBackendConfiguration.java index c66fc53..272636b 100644 --- a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoBackendConfiguration.java +++ b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoBackendConfiguration.java @@ -10,7 +10,7 @@ import net.chrisrichardson.eventstore.examples.todolist.backend.domain.TodoService; import net.chrisrichardson.eventstore.examples.todolist.web.TodoWebConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.orm.jpa.EntityScan; +import org.springframework.boot.autoconfigure.domain.EntityScan; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoQueryService.java b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoQueryService.java index 5d38216..b040857 100755 --- a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoQueryService.java +++ b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/backend/TodoQueryService.java @@ -25,7 +25,7 @@ public List getAll() { } public void remove(String id) { - repository.delete(id); + repository.deleteById(id); } public void removeAll() { @@ -33,12 +33,9 @@ public void removeAll() { } public CompletableFuture findById(String todoId) { - Todo res = repository.findOne(todoId); - if (res != null) { - return CompletableFuture.completedFuture(res); - } - return CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found")); + return repository + .findById(todoId) + .map(CompletableFuture::completedFuture) + .orElse(CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found"))); } - - } diff --git a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java index d489a17..a875160 100644 --- a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java +++ b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java @@ -1,19 +1,14 @@ package net.chrisrichardson.eventstore.examples.todolist.web; -import org.springframework.boot.autoconfigure.web.HttpMessageConverters; -import org.springframework.boot.context.embedded.ServletListenerRegistrationBean; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.method.support.HandlerMethodReturnValueHandler; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; -import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter; - -import java.util.ArrayList; -import java.util.List; @Configuration @ComponentScan("net.chrisrichardson.eventstore.examples.todolist.web") diff --git a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java index bccde1c..b2260a4 100755 --- a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java +++ b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/AbstractTodoRestAPITest.java @@ -6,7 +6,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.IntegrationTest; +import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpEntity; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; @@ -22,7 +22,6 @@ @RunWith(SpringJUnit4ClassRunner.class) -@IntegrationTest({"server.port=0"}) public abstract class AbstractTodoRestAPITest { protected int port; diff --git a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java index 44bdfbe..025cd2d 100755 --- a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java +++ b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java @@ -1,14 +1,11 @@ package net.chrisrichardson.eventstore.examples.todolist.e2etests; import net.chrisrichardson.eventstore.examples.todolist.AbstractTodoRestAPITest; -import net.chrisrichardson.eventstore.examples.todolist.testutil.BasicWebTestConfiguration; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.IntegrationTest; -import org.springframework.boot.test.SpringApplicationConfiguration; +import org.springframework.boot.test.context.SpringBootTest; -@SpringApplicationConfiguration(classes = {E2ETestConfiguration.class}) -@IntegrationTest +@SpringBootTest(classes = {E2ETestConfiguration.class}) public class EndToEndTest extends AbstractTodoRestAPITest { @Value("#{systemEnvironment['DOCKER_HOST_IP']}") diff --git a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integration/RestAPITest.java b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integration/RestAPITest.java index 208f4c8..d80f5af 100755 --- a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integration/RestAPITest.java +++ b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integration/RestAPITest.java @@ -2,12 +2,10 @@ import net.chrisrichardson.eventstore.examples.todolist.AbstractTodoRestAPITest; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.SpringApplicationConfiguration; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.boot.test.context.SpringBootTest; -@SpringApplicationConfiguration(classes = {RestAPITestConfiguration.class}) -@WebAppConfiguration +@SpringBootTest(classes = {RestAPITestConfiguration.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class RestAPITest extends AbstractTodoRestAPITest { @Value("${local.server.port}") private int port; diff --git a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java index d999fa5..a125d75 100755 --- a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java +++ b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/testutil/BasicWebTestConfiguration.java @@ -5,7 +5,7 @@ import org.apache.http.client.HttpClient; import org.apache.http.impl.client.HttpClients; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.web.HttpMessageConverters; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; @@ -14,6 +14,7 @@ import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.client.RestTemplate; +import java.util.Arrays; import java.util.Collections; @@ -23,10 +24,9 @@ public class BasicWebTestConfiguration { @Bean public RestTemplate restTemplate(HttpMessageConverters converters) { - // we have to define Apache HTTP client to use the PATCH verb MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); - converter.setSupportedMediaTypes(MediaType.parseMediaTypes("application/json")); + converter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM)); converter.setObjectMapper(new ObjectMapper()); HttpClient httpClient = HttpClients.createDefault(); From 7e73b1bbb36b6f6d389d8f7177f9eaee16354968 Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Fri, 2 Mar 2018 10:47:32 +0300 Subject: [PATCH 2/7] Refactoring. --- .../eventstore/examples/todolist/e2etests/EndToEndTest.java | 2 +- .../eventstore/examples/todolist/e2etests/EndToEndTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java b/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java index 02e1078..9ab8896 100755 --- a/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java +++ b/multi-module/e2etest/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java @@ -5,7 +5,7 @@ import org.springframework.boot.test.context.SpringBootTest; -@SpringBootTest(classes = {E2ETestConfiguration.class}) +@SpringBootTest(classes = E2ETestConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.NONE) public class EndToEndTest extends AbstractTodoRestAPITest { @Value("#{systemEnvironment['DOCKER_HOST_IP']}") diff --git a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java index 025cd2d..c438112 100755 --- a/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java +++ b/single-module/src/test/java/net/chrisrichardson/eventstore/examples/todolist/e2etests/EndToEndTest.java @@ -5,7 +5,7 @@ import org.springframework.boot.test.context.SpringBootTest; -@SpringBootTest(classes = {E2ETestConfiguration.class}) +@SpringBootTest(classes = E2ETestConfiguration.class, webEnvironment = SpringBootTest.WebEnvironment.NONE) public class EndToEndTest extends AbstractTodoRestAPITest { @Value("#{systemEnvironment['DOCKER_HOST_IP']}") From b626b7d42b27e305dcfb597e2dc12c3c83d109e1 Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Fri, 2 Mar 2018 11:00:54 +0300 Subject: [PATCH 3/7] Updating spring boot 2 version --- multi-module/gradle.properties | 2 +- single-module/gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/multi-module/gradle.properties b/multi-module/gradle.properties index f428d61..0f1ef4b 100755 --- a/multi-module/gradle.properties +++ b/multi-module/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-XX:MaxPermSize=512m eventuateMavenRepoUrl= -springBootVersion=2.0.0.RC2 +springBootVersion=2.0.0.RELEASE eventuateClientVersion=0.20.1.RELEASE eventuateLocalVersion=0.17.0.RELEASE diff --git a/single-module/gradle.properties b/single-module/gradle.properties index f428d61..0f1ef4b 100755 --- a/single-module/gradle.properties +++ b/single-module/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-XX:MaxPermSize=512m eventuateMavenRepoUrl= -springBootVersion=2.0.0.RC2 +springBootVersion=2.0.0.RELEASE eventuateClientVersion=0.20.1.RELEASE eventuateLocalVersion=0.17.0.RELEASE From 8b76377d5b47c4e1356c3db2d809663eec0d200c Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Fri, 2 Mar 2018 13:50:19 +0300 Subject: [PATCH 4/7] Removing deprecated inheritance. --- .../todolist/queryside/web/TodoViewWebConfiguration.java | 2 +- .../eventstore/examples/todolist/web/TodoWebConfiguration.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java index d09de4a..34403a3 100644 --- a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java +++ b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java @@ -14,7 +14,7 @@ @ComponentScan({"net.chrisrichardson.eventstore.examples.todolist.common", "net.chrisrichardson.eventstore.examples.todolist.hateoas", "net.chrisrichardson.eventstore.examples.todolist.queryside.web"}) -public class TodoViewWebConfiguration extends WebMvcConfigurerAdapter { +public class TodoViewWebConfiguration { @Bean public ServletListenerRegistrationBean httpRequestContextListener() { diff --git a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java index a875160..d3ca9a3 100644 --- a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java +++ b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java @@ -12,7 +12,7 @@ @Configuration @ComponentScan("net.chrisrichardson.eventstore.examples.todolist.web") -public class TodoWebConfiguration extends WebMvcConfigurerAdapter { +public class TodoWebConfiguration { @Bean public ServletListenerRegistrationBean httpRequestContextListener() { From a78a90f49aa5aded3a7e9349b3dd55e0a0e68db5 Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Fri, 2 Mar 2018 18:17:35 +0300 Subject: [PATCH 5/7] Removing redundant configuration. --- .../todoservice/web/TodoWebConfiguration.java | 12 +----------- .../todoservice/web/TodoWebConfiguration.java | 12 +----------- .../queryside/web/TodoViewWebConfiguration.java | 10 ---------- .../examples/todolist/web/TodoWebConfiguration.java | 9 --------- 4 files changed, 2 insertions(+), 41 deletions(-) diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java index 1f9440d..b78ec70 100644 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java +++ b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java @@ -1,24 +1,14 @@ package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoBackendConfiguration; -import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @Import({TodoBackendConfiguration.class}) @ComponentScan({ "net.chrisrichardson.eventstore.examples.todolist.common", "net.chrisrichardson.eventstore.examples.todolist.todoservice.web", "net.chrisrichardson.eventstore.examples.todolist.hateoas"}) -public class TodoWebConfiguration extends WebMvcConfigurerAdapter { - - @Bean - public ServletListenerRegistrationBean httpRequestContextListener() { - return new ServletListenerRegistrationBean(new RequestContextListener()); - } - +public class TodoWebConfiguration{ } diff --git a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java index 1f9440d..6418bd9 100644 --- a/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java +++ b/multi-module/todo-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java @@ -1,24 +1,14 @@ package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoBackendConfiguration; -import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @Import({TodoBackendConfiguration.class}) @ComponentScan({ "net.chrisrichardson.eventstore.examples.todolist.common", "net.chrisrichardson.eventstore.examples.todolist.todoservice.web", "net.chrisrichardson.eventstore.examples.todolist.hateoas"}) -public class TodoWebConfiguration extends WebMvcConfigurerAdapter { - - @Bean - public ServletListenerRegistrationBean httpRequestContextListener() { - return new ServletListenerRegistrationBean(new RequestContextListener()); - } - +public class TodoWebConfiguration { } diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java index 34403a3..1c42686 100644 --- a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java +++ b/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java @@ -1,13 +1,9 @@ package net.chrisrichardson.eventstore.examples.todolist.queryside.web; import net.chrisrichardson.eventstore.examples.todolist.queryside.backend.TodoViewBackendConfiguration; -import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @Import({TodoViewBackendConfiguration.class}) @@ -15,10 +11,4 @@ "net.chrisrichardson.eventstore.examples.todolist.hateoas", "net.chrisrichardson.eventstore.examples.todolist.queryside.web"}) public class TodoViewWebConfiguration { - - @Bean - public ServletListenerRegistrationBean httpRequestContextListener() { - return new ServletListenerRegistrationBean(new RequestContextListener()); - } - } diff --git a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java index d3ca9a3..85fa413 100644 --- a/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java +++ b/single-module/src/main/java/net/chrisrichardson/eventstore/examples/todolist/web/TodoWebConfiguration.java @@ -1,24 +1,15 @@ package net.chrisrichardson.eventstore.examples.todolist.web; import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -import org.springframework.boot.web.servlet.ServletListenerRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.web.context.request.RequestContextListener; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration @ComponentScan("net.chrisrichardson.eventstore.examples.todolist.web") public class TodoWebConfiguration { - - @Bean - public ServletListenerRegistrationBean httpRequestContextListener() { - return new ServletListenerRegistrationBean<>(new RequestContextListener()); - } - @Bean public HttpMessageConverters customConverters() { HttpMessageConverter additional = new MappingJackson2HttpMessageConverter(); From 726e312b6d72a56ee35b52076c24e7b83a346870 Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Mon, 5 Mar 2018 14:42:59 +0300 Subject: [PATCH 6/7] Removing integration tests from multi-module --- .../rest-api-integration-tests/build.gradle | 13 ---- .../integrationtests/RestAPITest.java | 32 --------- .../RestAPITestConfiguration.java | 17 ----- .../src/test/resources/logback.xml | 22 ------ multi-module/settings.gradle | 3 - multi-module/todo-service-common/build.gradle | 15 ---- .../backend/TodoBackendConfiguration.java | 59 ---------------- .../backend/TodoViewServiceImpl.java | 37 ---------- .../backend/command/CreateTodoCommand.java | 17 ----- .../backend/command/DeleteAllTodoCommand.java | 5 -- .../backend/command/DeleteTodoCommand.java | 5 -- .../backend/command/DeleteTodosCommand.java | 19 ----- .../backend/command/TodoCommand.java | 7 -- .../backend/command/UpdateTodoCommand.java | 23 ------ .../backend/domain/TodoAggregate.java | 64 ----------------- .../domain/TodoBulkDeleteAggregate.java | 26 ------- .../backend/domain/TodoEventSubscriber.java | 23 ------ .../backend/domain/TodoService.java | 38 ---------- .../todoservice/web/TodoController.java | 70 ------------------- .../todoservice/web/TodoWebConfiguration.java | 14 ---- multi-module/todo-service/build.gradle | 13 +++- .../src/main/resources/schema-mysql.sql | 0 .../todo-view-service-common/build.gradle | 15 ---- multi-module/todo-view-service/build.gradle | 13 +++- .../backend/TodoUpdateServiceImpl.java | 0 .../backend/TodoViewBackendConfiguration.java | 0 .../backend/TodoViewEventSubscriber.java | 0 .../queryside/web/TodoViewController.java | 0 .../web/TodoViewWebConfiguration.java | 0 29 files changed, 24 insertions(+), 526 deletions(-) delete mode 100755 multi-module/rest-api-integration-tests/build.gradle delete mode 100755 multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java delete mode 100755 multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITestConfiguration.java delete mode 100755 multi-module/rest-api-integration-tests/src/test/resources/logback.xml delete mode 100644 multi-module/todo-service-common/build.gradle delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java delete mode 100755 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java delete mode 100644 multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java rename multi-module/{todo-service-common => todo-service}/src/main/resources/schema-mysql.sql (100%) delete mode 100644 multi-module/todo-view-service-common/build.gradle rename multi-module/{todo-view-service-common => todo-view-service}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java (100%) rename multi-module/{todo-view-service-common => todo-view-service}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java (100%) rename multi-module/{todo-view-service-common => todo-view-service}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java (100%) rename multi-module/{todo-view-service-common => todo-view-service}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java (100%) rename multi-module/{todo-view-service-common => todo-view-service}/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java (100%) diff --git a/multi-module/rest-api-integration-tests/build.gradle b/multi-module/rest-api-integration-tests/build.gradle deleted file mode 100755 index 938914f..0000000 --- a/multi-module/rest-api-integration-tests/build.gradle +++ /dev/null @@ -1,13 +0,0 @@ -apply plugin: 'java' - -dependencies { - testCompile project(":todo-service-common") - testCompile project(":todo-view-service-common") - - testCompile project(":test-utils") - testCompile "junit:junit:4.11" - testCompile "org.mockito:mockito-all:1.9.5" - testCompile "org.apache.httpcomponents:httpclient:4.5" - testCompile "org.springframework.boot:spring-boot-starter-test:$springBootVersion" - testCompile "io.eventuate.client.java:eventuate-client-java-jdbc:$eventuateClientVersion" -} \ No newline at end of file diff --git a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java b/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java deleted file mode 100755 index ba68168..0000000 --- a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITest.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.integrationtests; - -import net.chrisrichardson.eventstore.examples.todolist.AbstractTodoRestAPITest; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.context.SpringBootTest; - - -@SpringBootTest(classes = {RestAPITestConfiguration.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class RestAPITest extends AbstractTodoRestAPITest { - @Value("${local.server.port}") - private int port; - - @Override - protected int getCommandsidePort() { - return port; - } - - @Override - protected String getCommandsideHost() { - return "localhost"; - } - - @Override - protected int getQuerysidePort() { - return port; - } - - @Override - protected String getQuerysideHost() { - return "localhost"; - } -} diff --git a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITestConfiguration.java b/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITestConfiguration.java deleted file mode 100755 index 1f92b64..0000000 --- a/multi-module/rest-api-integration-tests/src/test/java/net/chrisrichardson/eventstore/examples/todolist/integrationtests/RestAPITestConfiguration.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.integrationtests; - -import io.eventuate.javaclient.spring.jdbc.EmbeddedTestAggregateStoreConfiguration; -import net.chrisrichardson.eventstore.examples.todolist.queryside.web.TodoViewWebConfiguration; -import net.chrisrichardson.eventstore.examples.todolist.testutil.BasicWebTestConfiguration; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.web.TodoWebConfiguration; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - - -@Configuration -@Import({BasicWebTestConfiguration.class, - EmbeddedTestAggregateStoreConfiguration.class, - TodoWebConfiguration.class, - TodoViewWebConfiguration.class}) -public class RestAPITestConfiguration { -} diff --git a/multi-module/rest-api-integration-tests/src/test/resources/logback.xml b/multi-module/rest-api-integration-tests/src/test/resources/logback.xml deleted file mode 100755 index 770049f..0000000 --- a/multi-module/rest-api-integration-tests/src/test/resources/logback.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - %d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/multi-module/settings.gradle b/multi-module/settings.gradle index 530c14c..9515903 100755 --- a/multi-module/settings.gradle +++ b/multi-module/settings.gradle @@ -2,11 +2,8 @@ include 'common' include 'common-hateoas' include 'common-swagger' include 'todo-service' -include 'todo-service-common' include 'todo-view-service' -include 'todo-view-service-common' include 'test-utils' -include 'rest-api-integration-tests' include 'e2etest' rootProject.name = 'eventuate-examples-java-spring-todo-list-multi-module' diff --git a/multi-module/todo-service-common/build.gradle b/multi-module/todo-service-common/build.gradle deleted file mode 100644 index 0de3693..0000000 --- a/multi-module/todo-service-common/build.gradle +++ /dev/null @@ -1,15 +0,0 @@ -apply plugin: VerifyEventStoreEnvironmentPlugin -apply plugin: EventuateDependencyPlugin - -dependencies { - compile project(":common") - compile project(":common-hateoas") - compile project(":common-swagger") - - compile 'mysql:mysql-connector-java:5.1.36' - - compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") - compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") - compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" -} \ No newline at end of file diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java deleted file mode 100644 index ade3253..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoBackendConfiguration.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend; - -import io.eventuate.AggregateRepository; -import io.eventuate.EventuateAggregateStore; -import io.eventuate.javaclient.spring.EnableEventHandlers; -import net.chrisrichardson.eventstore.examples.todolist.TodoRepository; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoAggregate; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoBulkDeleteAggregate; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoEventSubscriber; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoService; -import org.springframework.boot.autoconfigure.domain.EntityScan; -import org.springframework.boot.autoconfigure.http.HttpMessageConverters; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; - - -@Configuration -@EntityScan("net.chrisrichardson.eventstore.examples.todolist") -@EnableJpaRepositories("net.chrisrichardson.eventstore.examples.todolist") -@EnableEventHandlers -public class TodoBackendConfiguration { - - @Bean - public TodoEventSubscriber todoEventSubscriber() { - return new TodoEventSubscriber(); - } - - @Bean - public AggregateRepository aggregateRepository(EventuateAggregateStore eventStore) { - return new AggregateRepository<>(TodoAggregate.class, eventStore); - } - - @Bean - public AggregateRepository bulkDeleteAggregateRepository(EventuateAggregateStore eventStore) { - return new AggregateRepository<>(TodoBulkDeleteAggregate.class, eventStore); - } - - @Bean - public TodoService updateService(AggregateRepository aggregateRepository, AggregateRepository bulkDeleteAggregateRepository) { - return new TodoService(aggregateRepository, bulkDeleteAggregateRepository); - } - - @Bean - public TodoViewServiceImpl commandService(TodoRepository repository) { - return new TodoViewServiceImpl(repository); - } - - @Bean - public HttpMessageConverters customConverters() { - HttpMessageConverter additional = new MappingJackson2HttpMessageConverter(); - return new HttpMessageConverters(additional); - } -} - - diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java deleted file mode 100755 index cb8555d..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/TodoViewServiceImpl.java +++ /dev/null @@ -1,37 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend; - - - -import io.eventuate.CompletableFutureUtil; -import net.chrisrichardson.eventstore.examples.todolist.hateoas.TodoUpdateService; -import net.chrisrichardson.eventstore.examples.todolist.TodoRepository; -import net.chrisrichardson.eventstore.examples.todolist.model.Todo; - -import javax.persistence.EntityNotFoundException; -import java.util.List; -import java.util.NoSuchElementException; -import java.util.concurrent.CompletableFuture; - - -public class TodoViewServiceImpl implements TodoUpdateService { - - private TodoRepository repository; - - public TodoViewServiceImpl(TodoRepository repository) { - this.repository = repository; - } - - @Override - public List getAll() { - return repository.findAll(); - } - - @Override - public CompletableFuture findById(String todoId) { - return repository - .findById(todoId) - .map(CompletableFuture::completedFuture) - .orElse(CompletableFutureUtil.failedFuture(new NoSuchElementException("No todo with given id found"))); - } - -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java deleted file mode 100644 index 68d5dbb..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/CreateTodoCommand.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - - -import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; - -public class CreateTodoCommand implements TodoCommand { - - private TodoInfo todo; - - public CreateTodoCommand(TodoInfo todo) { - this.todo = todo; - } - - public TodoInfo getTodo() { - return todo; - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java deleted file mode 100755 index 7decfec..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteAllTodoCommand.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - - -public class DeleteAllTodoCommand implements TodoCommand { -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java deleted file mode 100755 index d1e2fb2..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodoCommand.java +++ /dev/null @@ -1,5 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - - -public class DeleteTodoCommand implements TodoCommand { -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java deleted file mode 100755 index 1948e1f..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/DeleteTodosCommand.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - -import java.util.List; - - -public class DeleteTodosCommand implements TodoCommand { - private List ids; - - public DeleteTodosCommand() { - } - - public DeleteTodosCommand(List ids) { - this.ids = ids; - } - - public List getIds() { - return ids; - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java deleted file mode 100755 index 2e96d0a..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/TodoCommand.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - - -import io.eventuate.Command; - -public interface TodoCommand extends Command { -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java deleted file mode 100755 index 78a4f6a..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/command/UpdateTodoCommand.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command; - - -import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; - - -public class UpdateTodoCommand implements TodoCommand { - private String id; - private TodoInfo todo; - - public UpdateTodoCommand(String id, TodoInfo todo) { - this.id = id; - this.todo = todo; - } - - public String getId() { - return id; - } - - public TodoInfo getTodo() { - return todo; - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java deleted file mode 100644 index 761b868..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoAggregate.java +++ /dev/null @@ -1,64 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; - - -import io.eventuate.Event; -import io.eventuate.EventUtil; -import io.eventuate.ReflectiveMutableCommandProcessingAggregate; -import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoCreatedEvent; -import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletedEvent; -import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoUpdatedEvent; -import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.CreateTodoCommand; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodoCommand; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.UpdateTodoCommand; - -import java.util.Collections; -import java.util.List; - -public class TodoAggregate extends ReflectiveMutableCommandProcessingAggregate { - - private TodoInfo todo; - private boolean deleted; - - public List process(CreateTodoCommand cmd) { - if (this.deleted) { - return Collections.emptyList(); - } - return EventUtil.events(new TodoCreatedEvent(cmd.getTodo())); - } - - public List process(UpdateTodoCommand cmd) { - if (this.deleted) { - return Collections.emptyList(); - } - return EventUtil.events(new TodoUpdatedEvent(cmd.getTodo())); - } - - public List process(DeleteTodoCommand cmd) { - if (this.deleted) { - return Collections.emptyList(); - } - return EventUtil.events(new TodoDeletedEvent()); - } - - - public void apply(TodoCreatedEvent event) { - this.todo = event.getTodo(); - } - - public void apply(TodoUpdatedEvent event) { - this.todo = event.getTodo(); - } - - public void apply(TodoDeletedEvent event) { - this.deleted = true; - } - - public TodoInfo getTodo() { - return todo; - } - -} - - diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java deleted file mode 100644 index 949d323..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoBulkDeleteAggregate.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; - - -import io.eventuate.Event; -import io.eventuate.ReflectiveMutableCommandProcessingAggregate; -import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletionRequestedEvent; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodosCommand; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.TodoCommand; - -import java.util.List; -import java.util.stream.Collectors; - - -public class TodoBulkDeleteAggregate extends ReflectiveMutableCommandProcessingAggregate { - - public List process(DeleteTodosCommand cmd) { - return cmd.getIds() - .stream() - .map(TodoDeletionRequestedEvent::new) - .collect(Collectors.toList()); - } - - public void apply(TodoDeletionRequestedEvent event) { - - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java deleted file mode 100644 index 62e4525..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoEventSubscriber.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; - -import io.eventuate.EntityWithIdAndVersion; -import io.eventuate.EventHandlerContext; -import io.eventuate.EventHandlerMethod; -import io.eventuate.EventSubscriber; -import net.chrisrichardson.eventstore.examples.todolist.common.event.TodoDeletionRequestedEvent; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.DeleteTodoCommand; - -import java.util.concurrent.CompletableFuture; - - -@EventSubscriber(id = "todoCommandSideEventHandlers") -public class TodoEventSubscriber { - - @EventHandlerMethod - public CompletableFuture> deleteTodo(EventHandlerContext ctx) { - String todoId = ctx.getEvent().getTodoId(); - - return ctx.update(TodoAggregate.class, todoId, new DeleteTodoCommand()); - } - -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java deleted file mode 100644 index a061e73..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/backend/domain/TodoService.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain; - -import io.eventuate.AggregateRepository; -import io.eventuate.EntityWithIdAndVersion; -import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.command.*; - -import java.util.List; -import java.util.concurrent.CompletableFuture; - - -public class TodoService { - - private final AggregateRepository aggregateRepository; - private final AggregateRepository bulkDeleteAggregateRepository; - - - public TodoService(AggregateRepository todoRepository, AggregateRepository bulkDeleteAggregateRepository) { - this.aggregateRepository = todoRepository; - this.bulkDeleteAggregateRepository = bulkDeleteAggregateRepository; - } - - public CompletableFuture> save(TodoInfo todo) { - return aggregateRepository.save(new CreateTodoCommand(todo)); - } - - public CompletableFuture> remove(String id) { - return aggregateRepository.update(id, new DeleteTodoCommand()); - } - - public CompletableFuture> update(String id, TodoInfo newTodo) { - return aggregateRepository.update(id, new UpdateTodoCommand(id, newTodo)); - } - - public CompletableFuture> deleteAll(List ids) { - return bulkDeleteAggregateRepository.save(new DeleteTodosCommand(ids)); - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java deleted file mode 100644 index 0908b91..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoController.java +++ /dev/null @@ -1,70 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; - -import net.chrisrichardson.eventstore.examples.todolist.hateoas.TodoHateoasController; -import net.chrisrichardson.eventstore.examples.todolist.common.controller.BaseController; -import net.chrisrichardson.eventstore.examples.todolist.common.model.ResourceWithUrl; -import net.chrisrichardson.eventstore.examples.todolist.model.Todo; -import net.chrisrichardson.eventstore.examples.todolist.model.TodoInfo; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoViewServiceImpl; -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.domain.TodoService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.hateoas.mvc.ControllerLinkBuilder; -import org.springframework.util.Assert; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; - -import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn; -import static org.springframework.web.bind.annotation.RequestMethod.*; - - -@RestController -@RequestMapping(value = "/todos") -public class TodoController extends BaseController { - @Autowired - private TodoService todoService; - @Autowired - private TodoViewServiceImpl todoViewService; - - @RequestMapping(method = POST) - public CompletableFuture saveTodo(@RequestBody TodoInfo todo, HttpServletRequest request) { - Assert.notNull(todo.getTitle()); - return todoService.save(todo).thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId()))); - } - - @RequestMapping(value = "/{todo-id}", method = DELETE) - public CompletableFuture deleteOneTodo(@PathVariable("todo-id") String id, HttpServletRequest request) { - return todoService.remove(id) - .thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId()))); - } - - @RequestMapping(method = DELETE) - public void deleteAllTodos() throws Exception { - List todosToDelete = todoViewService.getAll(); - if (todosToDelete.size() > 0) { - todoService.deleteAll(todoViewService.getAll() - .stream() - .map(Todo::getId) - .collect(Collectors.toList())); - } - } - - @RequestMapping(value = "/{todo-id}", method = PATCH, headers = {"Content-type=application/json"}) - public CompletableFuture updateTodo(@PathVariable("todo-id") String id, @RequestBody TodoInfo newTodo, HttpServletRequest request) { - return todoService.update(id, newTodo).thenApply(e -> withRequestAttributeContext(request, () -> toResource(e.getAggregate().getTodo(), e.getEntityId())) - ); - } - - protected ResourceWithUrl toResource(TodoInfo todo, String id) { - ResourceWithUrl result = new ResourceWithUrl<>(todo); - result.setId(id); - result.setUrl(ControllerLinkBuilder.linkTo(methodOn(TodoHateoasController.class).getTodo(id)).withSelfRel().getHref()); - return result; - } -} diff --git a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java b/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java deleted file mode 100644 index b78ec70..0000000 --- a/multi-module/todo-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/todoservice/web/TodoWebConfiguration.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.chrisrichardson.eventstore.examples.todolist.todoservice.web; - -import net.chrisrichardson.eventstore.examples.todolist.todoservice.backend.TodoBackendConfiguration; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -@Configuration -@Import({TodoBackendConfiguration.class}) -@ComponentScan({ "net.chrisrichardson.eventstore.examples.todolist.common", - "net.chrisrichardson.eventstore.examples.todolist.todoservice.web", - "net.chrisrichardson.eventstore.examples.todolist.hateoas"}) -public class TodoWebConfiguration{ -} diff --git a/multi-module/todo-service/build.gradle b/multi-module/todo-service/build.gradle index bf52dd4..f601a58 100644 --- a/multi-module/todo-service/build.gradle +++ b/multi-module/todo-service/build.gradle @@ -1,5 +1,16 @@ apply plugin: 'org.springframework.boot' +apply plugin: VerifyEventStoreEnvironmentPlugin +apply plugin: EventuateDependencyPlugin dependencies { - compile project(":todo-service-common") + compile project(":common") + compile project(":common-hateoas") + compile project(":common-swagger") + + compile 'mysql:mysql-connector-java:5.1.36' + + compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") + compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") + compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" } \ No newline at end of file diff --git a/multi-module/todo-service-common/src/main/resources/schema-mysql.sql b/multi-module/todo-service/src/main/resources/schema-mysql.sql similarity index 100% rename from multi-module/todo-service-common/src/main/resources/schema-mysql.sql rename to multi-module/todo-service/src/main/resources/schema-mysql.sql diff --git a/multi-module/todo-view-service-common/build.gradle b/multi-module/todo-view-service-common/build.gradle deleted file mode 100644 index 0de3693..0000000 --- a/multi-module/todo-view-service-common/build.gradle +++ /dev/null @@ -1,15 +0,0 @@ -apply plugin: VerifyEventStoreEnvironmentPlugin -apply plugin: EventuateDependencyPlugin - -dependencies { - compile project(":common") - compile project(":common-hateoas") - compile project(":common-swagger") - - compile 'mysql:mysql-connector-java:5.1.36' - - compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") - compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") - compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" - compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" -} \ No newline at end of file diff --git a/multi-module/todo-view-service/build.gradle b/multi-module/todo-view-service/build.gradle index 8c5dd35..f601a58 100644 --- a/multi-module/todo-view-service/build.gradle +++ b/multi-module/todo-view-service/build.gradle @@ -1,5 +1,16 @@ apply plugin: 'org.springframework.boot' +apply plugin: VerifyEventStoreEnvironmentPlugin +apply plugin: EventuateDependencyPlugin dependencies { - compile project(":todo-view-service-common") + compile project(":common") + compile project(":common-hateoas") + compile project(":common-swagger") + + compile 'mysql:mysql-connector-java:5.1.36' + + compile("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion") + compile("org.springframework.boot:spring-boot-starter-web:$springBootVersion") + compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion" + compile "org.springframework.boot:spring-boot-starter-hateoas:$springBootVersion" } \ No newline at end of file diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java b/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java similarity index 100% rename from multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java rename to multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoUpdateServiceImpl.java diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java b/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java similarity index 100% rename from multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java rename to multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewBackendConfiguration.java diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java b/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java similarity index 100% rename from multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java rename to multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/backend/TodoViewEventSubscriber.java diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java b/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java similarity index 100% rename from multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java rename to multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewController.java diff --git a/multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java b/multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java similarity index 100% rename from multi-module/todo-view-service-common/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java rename to multi-module/todo-view-service/src/main/java/net/chrisrichardson/eventstore/examples/todolist/queryside/web/TodoViewWebConfiguration.java From 7136aa7709b3f65d6f39e7b918abc13ee2569ddc Mon Sep 17 00:00:00 2001 From: Artem Sidorkin Date: Tue, 6 Mar 2018 16:21:09 +0300 Subject: [PATCH 7/7] Updating docker images. --- multi-module/docker-compose-eventuate-local-postgres.yml | 4 ++-- multi-module/docker-compose-eventuate-local.yml | 4 ++-- single-module/docker-compose-eventuate-local-postgres.yml | 4 ++-- single-module/docker-compose-eventuate-local.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/multi-module/docker-compose-eventuate-local-postgres.yml b/multi-module/docker-compose-eventuate-local-postgres.yml index e5bffbb..2666983 100644 --- a/multi-module/docker-compose-eventuate-local-postgres.yml +++ b/multi-module/docker-compose-eventuate-local-postgres.yml @@ -1,12 +1,12 @@ zookeeper: - image: eventuateio/eventuateio-local-zookeeper:0.15.0 + image: eventuateio/eventuateio-local-zookeeper:0.17.0.RELEASE ports: - 2181:2181 - 2888:2888 - 3888:3888 kafka: - image: eventuateio/eventuateio-local-kafka:0.15.0 + image: eventuateio/eventuateio-local-kafka:0.17.0.RELEASE ports: - 9092:9092 links: diff --git a/multi-module/docker-compose-eventuate-local.yml b/multi-module/docker-compose-eventuate-local.yml index 45af0bb..d6b5ca8 100644 --- a/multi-module/docker-compose-eventuate-local.yml +++ b/multi-module/docker-compose-eventuate-local.yml @@ -1,5 +1,5 @@ zookeeper: - image: eventuateio/eventuateio-local-zookeeper:0.15.0 + image: eventuateio/eventuateio-local-zookeeper:0.17.0.RELEASE ports: - 2181:2181 - 2888:2888 @@ -7,7 +7,7 @@ zookeeper: kafka: - image: eventuateio/eventuateio-local-kafka:0.15.0 + image: eventuateio/eventuateio-local-kafka:0.17.0.RELEASE ports: - 9092:9092 links: diff --git a/single-module/docker-compose-eventuate-local-postgres.yml b/single-module/docker-compose-eventuate-local-postgres.yml index 2ddcdf3..7562e4b 100644 --- a/single-module/docker-compose-eventuate-local-postgres.yml +++ b/single-module/docker-compose-eventuate-local-postgres.yml @@ -1,12 +1,12 @@ zookeeper: - image: eventuateio/eventuateio-local-zookeeper:0.15.0 + image: eventuateio/eventuateio-local-zookeeper:0.17.0.RELEASE ports: - 2181:2181 - 2888:2888 - 3888:3888 kafka: - image: eventuateio/eventuateio-local-kafka:0.15.0 + image: eventuateio/eventuateio-local-kafka:0.17.0.RELEASE ports: - 9092:9092 links: diff --git a/single-module/docker-compose-eventuate-local.yml b/single-module/docker-compose-eventuate-local.yml index 77557c8..fe9ed5e 100644 --- a/single-module/docker-compose-eventuate-local.yml +++ b/single-module/docker-compose-eventuate-local.yml @@ -1,5 +1,5 @@ zookeeper: - image: eventuateio/eventuateio-local-zookeeper:0.15.0 + image: eventuateio/eventuateio-local-zookeeper:0.17.0.RELEASE ports: - 2181:2181 - 2888:2888 @@ -7,7 +7,7 @@ zookeeper: kafka: - image: eventuateio/eventuateio-local-kafka:0.15.0 + image: eventuateio/eventuateio-local-kafka:0.17.0.RELEASE ports: - 9092:9092 links: