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
+}