diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index 23e4f14..3b9bab3 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -1,8 +1,11 @@
-
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..d83aa6e
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..2b63946
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 4aecfdd..9b232dd 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -1,11 +1,10 @@
+
+
+
-
-
-
-
@@ -24,20 +23,23 @@
-
-
\ No newline at end of file
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/MovieCatalogServiceApplication.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/MovieCatalogServiceApplication.java
index 77a2858..5fc0162 100644
--- a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/MovieCatalogServiceApplication.java
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/MovieCatalogServiceApplication.java
@@ -2,6 +2,10 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.reactive.function.client.WebClient;
@SpringBootApplication
public class MovieCatalogServiceApplication {
@@ -10,5 +14,16 @@ public static void main(String[] args) {
SpringApplication.run(MovieCatalogServiceApplication.class, args);
}
+ @LoadBalanced
+ @Bean
+ public RestTemplate getRestTemplate(){
+ return new RestTemplate();
+ }
+
+ @Bean
+ public WebClient.Builder getWebClientBuilder(){
+ return WebClient.builder();
+ }
+
}
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/CatalogItem.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/CatalogItem.java
new file mode 100644
index 0000000..6ced518
--- /dev/null
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/CatalogItem.java
@@ -0,0 +1,42 @@
+package io.javabrains.moviecatalogservice.models;
+
+public class CatalogItem {
+
+ private String name;
+ private String desc;
+ private int rating;
+
+
+ public CatalogItem() {
+ }
+
+ public CatalogItem(String name, String desc, int rating) {
+ this.name = name;
+ this.desc = desc;
+ this.rating = rating;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+
+ public void setDesc(String desc) {
+ this.desc = desc;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+}
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Movie.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Movie.java
new file mode 100644
index 0000000..a1f4a20
--- /dev/null
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Movie.java
@@ -0,0 +1,31 @@
+package io.javabrains.moviecatalogservice.models;
+
+public class Movie {
+
+ private String movieId;
+ private String name;
+
+ public Movie() {
+ }
+
+ public Movie(String movieId, String name) {
+ this.movieId = movieId;
+ this.name = name;
+ }
+
+ public String getMovieId() {
+ return movieId;
+ }
+
+ public void setMovieId(String movieId) {
+ this.movieId = movieId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Rating.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Rating.java
new file mode 100644
index 0000000..22c9a70
--- /dev/null
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/Rating.java
@@ -0,0 +1,31 @@
+package io.javabrains.moviecatalogservice.models;
+
+public class Rating {
+
+ private String movieId;
+ private int rating;
+
+ public Rating() {
+ }
+
+ public Rating(String movieId, int rating) {
+ this.movieId = movieId;
+ this.rating = rating;
+ }
+
+ public String getMovieId() {
+ return movieId;
+ }
+
+ public void setMovieId(String movieId) {
+ this.movieId = movieId;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+}
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/UserRating.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/UserRating.java
new file mode 100644
index 0000000..95dbfae
--- /dev/null
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/models/UserRating.java
@@ -0,0 +1,23 @@
+package io.javabrains.moviecatalogservice.models;
+
+import java.util.List;
+
+public class UserRating {
+
+ private List ratings;
+
+ public UserRating() {
+ }
+
+ public UserRating(List ratings) {
+ this.ratings = ratings;
+ }
+
+ public List getRatings() {
+ return ratings;
+ }
+
+ public void setRatings(List ratings) {
+ this.ratings = ratings;
+ }
+}
diff --git a/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/resources/MovieCatalogResource.java b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/resources/MovieCatalogResource.java
new file mode 100644
index 0000000..a165b20
--- /dev/null
+++ b/movie-catalog-service/src/main/java/io/javabrains/moviecatalogservice/resources/MovieCatalogResource.java
@@ -0,0 +1,52 @@
+package io.javabrains.moviecatalogservice.resources;
+
+import io.javabrains.moviecatalogservice.models.CatalogItem;
+import io.javabrains.moviecatalogservice.models.Movie;
+import io.javabrains.moviecatalogservice.models.Rating;
+import io.javabrains.moviecatalogservice.models.UserRating;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.reactive.function.client.WebClient;
+
+import java.lang.reflect.ParameterizedType;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/catalog")
+public class MovieCatalogResource {
+
+ @Autowired
+ private RestTemplate restTemplate;
+
+ @Autowired
+ private WebClient.Builder webClientBuilder;
+
+ @GetMapping("/{userId}")
+ public List getCatalog(@PathVariable("userId") String userId){
+ UserRating ratings = restTemplate.getForObject("http://ratings-data-service/ratingsdata/users/" + userId, UserRating.class);
+
+ return ratings.getRatings().stream()
+ .map(rating -> {
+ Movie movie = restTemplate.getForObject("http://movie-info-service/movies/" + rating.getMovieId(), Movie.class);
+ return new CatalogItem(movie.getName(), "Test", rating.getRating());
+ })
+ .collect(Collectors.toList());
+ }
+
+}
+
+
+
+// movie = webClientBuilder.build()
+// .get()
+// .uri("http://localhost:9091/movies/" + rating.getMovieId())
+// .retrieve()
+// .bodyToMono(Movie.class)
+// .block();
diff --git a/movie-catalog-service/src/main/resources/application.properties b/movie-catalog-service/src/main/resources/application.properties
index e69de29..097feb5 100644
--- a/movie-catalog-service/src/main/resources/application.properties
+++ b/movie-catalog-service/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+spring.application.name=movie-catalog-service
+server.port=9090
diff --git a/movie-info-service/pom.xml b/movie-info-service/pom.xml
index 0ee70dd..f7e2149 100644
--- a/movie-info-service/pom.xml
+++ b/movie-info-service/pom.xml
@@ -1,6 +1,6 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
@@ -16,6 +16,7 @@
1.8
+ Greenwich.RELEASE
@@ -23,6 +24,11 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
+
org.springframework.boot
@@ -31,6 +37,18 @@
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
@@ -40,4 +58,12 @@
-
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
+
\ No newline at end of file
diff --git a/movie-info-service/src/main/java/io/javabrains/movieinfoservice/models/Movie.java b/movie-info-service/src/main/java/io/javabrains/movieinfoservice/models/Movie.java
new file mode 100644
index 0000000..af0f1f6
--- /dev/null
+++ b/movie-info-service/src/main/java/io/javabrains/movieinfoservice/models/Movie.java
@@ -0,0 +1,31 @@
+package io.javabrains.movieinfoservice.models;
+
+public class Movie {
+
+ private String movieId;
+ private String name;
+
+ public Movie() {
+ }
+
+ public Movie(String movieId, String name) {
+ this.movieId = movieId;
+ this.name = name;
+ }
+
+ public String getMovieId() {
+ return movieId;
+ }
+
+ public void setMovieId(String movieId) {
+ this.movieId = movieId;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
diff --git a/movie-info-service/src/main/java/io/javabrains/movieinfoservice/resources/MovieResource.java b/movie-info-service/src/main/java/io/javabrains/movieinfoservice/resources/MovieResource.java
new file mode 100644
index 0000000..e808201
--- /dev/null
+++ b/movie-info-service/src/main/java/io/javabrains/movieinfoservice/resources/MovieResource.java
@@ -0,0 +1,22 @@
+package io.javabrains.movieinfoservice.resources;
+
+
+import io.javabrains.movieinfoservice.models.Movie;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/movies")
+public class MovieResource {
+
+ @GetMapping("/{movieId}")
+ public Movie getMovieInfo(@PathVariable("movieId") String movieId){
+
+
+
+ return new Movie(movieId, "Test name");
+ }
+
+}
diff --git a/movie-info-service/src/main/resources/application.properties b/movie-info-service/src/main/resources/application.properties
index e69de29..ca5650a 100644
--- a/movie-info-service/src/main/resources/application.properties
+++ b/movie-info-service/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+spring.application.name=movie-info-service
+server.port=9091
\ No newline at end of file
diff --git a/ratings-data-service/pom.xml b/ratings-data-service/pom.xml
index 699c8b3..e92c18e 100644
--- a/ratings-data-service/pom.xml
+++ b/ratings-data-service/pom.xml
@@ -1,6 +1,6 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
org.springframework.boot
@@ -16,6 +16,7 @@
1.8
+ Greenwich.RELEASE
@@ -23,6 +24,10 @@
org.springframework.boot
spring-boot-starter-web
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+
org.springframework.boot
@@ -31,6 +36,19 @@
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
@@ -40,4 +58,4 @@
-
+
\ No newline at end of file
diff --git a/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/Rating.java b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/Rating.java
new file mode 100644
index 0000000..697d947
--- /dev/null
+++ b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/Rating.java
@@ -0,0 +1,31 @@
+package io.javabrains.ratingsdataservice.models;
+
+public class Rating {
+
+ private String movieId;
+ private int rating;
+
+ public Rating() {
+ }
+
+ public Rating(String movieId, int rating) {
+ this.movieId = movieId;
+ this.rating = rating;
+ }
+
+ public String getMovieId() {
+ return movieId;
+ }
+
+ public void setMovieId(String movieId) {
+ this.movieId = movieId;
+ }
+
+ public int getRating() {
+ return rating;
+ }
+
+ public void setRating(int rating) {
+ this.rating = rating;
+ }
+}
diff --git a/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/UserRating.java b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/UserRating.java
new file mode 100644
index 0000000..60e9b40
--- /dev/null
+++ b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/models/UserRating.java
@@ -0,0 +1,23 @@
+package io.javabrains.ratingsdataservice.models;
+
+import java.util.List;
+
+public class UserRating {
+
+ private List ratings;
+
+ public UserRating() {
+ }
+
+ public UserRating(List ratings) {
+ this.ratings = ratings;
+ }
+
+ public List getRatings() {
+ return ratings;
+ }
+
+ public void setRatings(List ratings) {
+ this.ratings = ratings;
+ }
+}
diff --git a/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/resources/RatingsDataResource.java b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/resources/RatingsDataResource.java
new file mode 100644
index 0000000..95b7bc4
--- /dev/null
+++ b/ratings-data-service/src/main/java/io/javabrains/ratingsdataservice/resources/RatingsDataResource.java
@@ -0,0 +1,33 @@
+package io.javabrains.ratingsdataservice.resources;
+
+import io.javabrains.ratingsdataservice.models.Rating;
+import io.javabrains.ratingsdataservice.models.UserRating;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RestController
+@RequestMapping("/ratingsdata")
+public class RatingsDataResource {
+
+ @GetMapping("/{movieId}")
+ public Rating getRating(@PathVariable("movieId") String movieId){
+ return new Rating(movieId, 4);
+ }
+
+ @GetMapping("/users/{userId}")
+ public UserRating getRatings(@PathVariable("userId") String userId){
+ UserRating userRating = new UserRating();
+ userRating.setRatings(Arrays.asList(
+ new Rating("1234", 4),
+ new Rating("5678", 5)
+ ));
+
+ return userRating;
+ }
+
+}
diff --git a/ratings-data-service/src/main/resources/application.properties b/ratings-data-service/src/main/resources/application.properties
index e69de29..d0b0e65 100644
--- a/ratings-data-service/src/main/resources/application.properties
+++ b/ratings-data-service/src/main/resources/application.properties
@@ -0,0 +1,2 @@
+spring.application.name=ratings-data-service
+server.port=9092
\ No newline at end of file