From 56336ee0957b3046c444adbb75c5026d6bb513a8 Mon Sep 17 00:00:00 2001 From: Ihor Banadiga Date: Thu, 20 Apr 2017 12:13:53 +0300 Subject: [PATCH] mongo repository added --- README.md | 12 +++-- service/pom.xml | 9 ++++ .../configuration/ServiceConfiguration.java | 5 +- .../java9modules/service/domain/Movie.java | 8 +++- .../service/repository/MovieRepository.java | 17 ++----- .../repository/MovieRepositoryImpl.java | 48 ------------------- .../service/service/MovieService.java | 6 ++- service/src/main/java/module-info.java | 7 ++- 8 files changed, 41 insertions(+), 71 deletions(-) delete mode 100644 service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepositoryImpl.java diff --git a/README.md b/README.md index 203e945..9ebb57b 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,12 @@ There are 2 modules: Where api is dependent on some packages from service. The main idea was to create valid module-info.java classes to define valid exports, but, which is more important even, to open valid packages to Spring to be used via reflection. -The application cannot be started via Intellij IDEA. +In order to run via Intellij IDEA: +Set VM options: `--add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED` -In order to run: -* mvn clean install -* java -jar api/target/api-1.0-SNAPSHOT-exec.jar +In order to run through command line: +```bash +mvn clean install + +java --add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED -jar api/target/api-1.0-SNAPSHOT-exec.jar +``` diff --git a/service/pom.xml b/service/pom.xml index 8a2ab00..cdd5f11 100644 --- a/service/pom.xml +++ b/service/pom.xml @@ -21,5 +21,14 @@ org.springframework spring-context + + + org.springframework.data + spring-data-mongodb + + + org.springframework.boot + spring-boot-autoconfigure + diff --git a/service/src/main/java/com/lohika/morning/java9modules/service/configuration/ServiceConfiguration.java b/service/src/main/java/com/lohika/morning/java9modules/service/configuration/ServiceConfiguration.java index f060bca..5da7698 100644 --- a/service/src/main/java/com/lohika/morning/java9modules/service/configuration/ServiceConfiguration.java +++ b/service/src/main/java/com/lohika/morning/java9modules/service/configuration/ServiceConfiguration.java @@ -2,9 +2,12 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; @Configuration @ComponentScan("com.lohika.morning.java9modules.service.*") -//@EnableMongoRepositories("com.lohika.morning.java9modules.service.repository") +@EnableMongoRepositories(basePackages = "com.lohika.morning.java9modules.service.repository") +@PropertySource("service.properties") public class ServiceConfiguration { } diff --git a/service/src/main/java/com/lohika/morning/java9modules/service/domain/Movie.java b/service/src/main/java/com/lohika/morning/java9modules/service/domain/Movie.java index a04f62b..5ebbb6b 100644 --- a/service/src/main/java/com/lohika/morning/java9modules/service/domain/Movie.java +++ b/service/src/main/java/com/lohika/morning/java9modules/service/domain/Movie.java @@ -1,9 +1,13 @@ package com.lohika.morning.java9modules.service.domain; -//@Document(collection = "movies") + +import org.springframework.data.annotation.Id; +import org.springframework.data.mongodb.core.mapping.Document; + +@Document(collection = "movies") public class Movie { -// @Id + @Id private String id; private String title; diff --git a/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepository.java b/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepository.java index 0f7f903..9feafb2 100644 --- a/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepository.java +++ b/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepository.java @@ -2,21 +2,14 @@ import com.lohika.morning.java9modules.service.domain.Movie; +import org.springframework.data.mongodb.repository.MongoRepository; + import java.util.List; import java.util.Optional; -public interface MovieRepository { - - List findAll(); - - Optional findOne(String id); - - Optional findByTitle(String title); - - List findByGenre(String genre); - - void deleteAll(); +public interface MovieRepository extends MongoRepository { + Optional findByTitle(String title); - void save(Movie movie); + List findByGenre(String genre); } diff --git a/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepositoryImpl.java b/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepositoryImpl.java deleted file mode 100644 index 6459e4d..0000000 --- a/service/src/main/java/com/lohika/morning/java9modules/service/repository/MovieRepositoryImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.lohika.morning.java9modules.service.repository; - -import com.lohika.morning.java9modules.service.domain.Movie; -import org.springframework.stereotype.Component; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -@Component -public class MovieRepositoryImpl implements MovieRepository { - - List movies = fillMovies(); - - private List fillMovies() { - return new ArrayList<>(); - } - - @Override - public List findAll() { - return movies; - } - - @Override - public Optional findOne(String id) { - return Optional.of(movies.get(0)); - } - - @Override - public Optional findByTitle(String title) { - return Optional.of(movies.get(0)); - } - - @Override - public List findByGenre(String genre) { - return movies; - } - - @Override - public void deleteAll() { - - } - - @Override - public void save(Movie movie) { - movies.add(movie); - } -} diff --git a/service/src/main/java/com/lohika/morning/java9modules/service/service/MovieService.java b/service/src/main/java/com/lohika/morning/java9modules/service/service/MovieService.java index b955a5b..d1477ce 100644 --- a/service/src/main/java/com/lohika/morning/java9modules/service/service/MovieService.java +++ b/service/src/main/java/com/lohika/morning/java9modules/service/service/MovieService.java @@ -2,10 +2,12 @@ import com.lohika.morning.java9modules.service.domain.Movie; import com.lohika.morning.java9modules.service.repository.MovieRepository; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; -import javax.annotation.Resource; + import java.util.List; import java.util.Optional; import java.util.Random; @@ -14,7 +16,7 @@ @Service public class MovieService { - @Resource + @Autowired private MovieRepository movieRepository; public List allMovies() { diff --git a/service/src/main/java/module-info.java b/service/src/main/java/module-info.java index bf685ff..4abe2c7 100644 --- a/service/src/main/java/module-info.java +++ b/service/src/main/java/module-info.java @@ -3,6 +3,10 @@ requires java.xml.ws.annotation; requires spring.beans; requires spring.context; + requires spring.data.mongodb; + requires spring.data.commons; + requires spring.boot.autoconfigure; + requires mongo.java.driver; exports com.lohika.morning.java9modules.service.service to com.lohika.morning.java9modules.api; exports com.lohika.morning.java9modules.service.domain to com.lohika.morning.java9modules.api; @@ -10,5 +14,4 @@ opens com.lohika.morning.java9modules.service.service; opens com.lohika.morning.java9modules.service.configuration; - opens com.lohika.morning.java9modules.service.repository; -} \ No newline at end of file +}