From ccf2b4ccb3ea216fe3db4a06319c7a9ed8dafdf8 Mon Sep 17 00:00:00 2001 From: Alexey Panashchenko Date: Tue, 19 Feb 2019 17:03:19 +0200 Subject: [PATCH 1/4] Add Post service create/update/delete --- .../gateway/config/SecurityConfig.java | 1 + .../gateway/controller/PostController.java | 38 +++++++++++++++++++ .../gateway/proxy/TimecoderServiceProxy.java | 15 ++++++++ 3 files changed, 54 insertions(+) create mode 100644 src/main/java/com/example/timecoder/gateway/controller/PostController.java diff --git a/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java b/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java index c59b85c..a82b619 100644 --- a/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java +++ b/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java @@ -90,6 +90,7 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers("/gateway/auth/**", "/stream") .permitAll() .antMatchers("/free-theme").permitAll() + .antMatchers(HttpMethod.GET, "/posts", "/patrons", "/posts/**", "/episodes/**").permitAll() .antMatchers("/api/user/checkUsernameAvailability", "/api/user/checkEmailAvailability") .permitAll() .antMatchers(HttpMethod.GET, "/api/users/**") diff --git a/src/main/java/com/example/timecoder/gateway/controller/PostController.java b/src/main/java/com/example/timecoder/gateway/controller/PostController.java new file mode 100644 index 0000000..0ba1b37 --- /dev/null +++ b/src/main/java/com/example/timecoder/gateway/controller/PostController.java @@ -0,0 +1,38 @@ +package com.example.timecoder.gateway.controller; + +import com.example.timecoder.gateway.proxy.TimecoderServiceProxy; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +@RestController +public class PostController { + + @Autowired + private TimecoderServiceProxy timecoderServiceProxy; + + @RequestMapping(value = "/posts", method = RequestMethod.GET) + public Object getAllPosts() { + return timecoderServiceProxy.getAllPosts(); + } + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) + public Object getPostById(@PathVariable("id") Long id) { + return timecoderServiceProxy.getPostById(id); + } + + @RequestMapping(value = "/posts", method = RequestMethod.POST) + public Object createPost(@RequestBody Object post) { + return timecoderServiceProxy.createPost(post); + } + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.PUT) + public Object updatePost(@PathVariable("id") Long id, @RequestBody Object post) { + return timecoderServiceProxy.updatePost(id, post); + } + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.DELETE) + public Object deletePost(@PathVariable("id") Long id) { + return timecoderServiceProxy.deletePost(id); + } +} diff --git a/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java b/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java index 32316e6..82fc6a8 100644 --- a/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java +++ b/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java @@ -47,4 +47,19 @@ public interface TimecoderServiceProxy { @RequestMapping(value = "/theme/{id}/delete", method = RequestMethod.DELETE) Object deleteTheme(@RequestParam Long id); + + @RequestMapping(value = "/posts", method = RequestMethod.GET) + Object getAllPosts(); + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) + Object getPostById(@RequestParam Long id); + + @RequestMapping(value = "/posts", method = RequestMethod.POST) + Object createPost(Object post); + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.DELETE) + Object deletePost(@RequestParam Long id); + + @RequestMapping(value = "/posts/{id}", method = RequestMethod.PUT) + Object updatePost(@RequestParam Long id, Object post); } From c8b1ce61c4f064dcab878421f9a952a736a678e5 Mon Sep 17 00:00:00 2001 From: Alexey Panashchenko Date: Tue, 19 Feb 2019 18:59:09 +0200 Subject: [PATCH 2/4] Fix SecurityConfig and create PostDTO --- .../gateway/config/SecurityConfig.java | 2 +- .../gateway/controller/PostController.java | 6 +- .../example/timecoder/gateway/model/Post.java | 81 +++++++++++++++++++ .../timecoder/gateway/model/PostDto.java | 42 ++++++++++ .../gateway/service/PostService.java | 30 +++++++ 5 files changed, 159 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/example/timecoder/gateway/model/Post.java create mode 100644 src/main/java/com/example/timecoder/gateway/model/PostDto.java create mode 100644 src/main/java/com/example/timecoder/gateway/service/PostService.java diff --git a/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java b/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java index a82b619..c2384a0 100644 --- a/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java +++ b/src/main/java/com/example/timecoder/gateway/config/SecurityConfig.java @@ -90,7 +90,7 @@ protected void configure(HttpSecurity http) throws Exception { .antMatchers("/gateway/auth/**", "/stream") .permitAll() .antMatchers("/free-theme").permitAll() - .antMatchers(HttpMethod.GET, "/posts", "/patrons", "/posts/**", "/episodes/**").permitAll() + .antMatchers(HttpMethod.GET, "/posts/**").permitAll() .antMatchers("/api/user/checkUsernameAvailability", "/api/user/checkEmailAvailability") .permitAll() .antMatchers(HttpMethod.GET, "/api/users/**") diff --git a/src/main/java/com/example/timecoder/gateway/controller/PostController.java b/src/main/java/com/example/timecoder/gateway/controller/PostController.java index 0ba1b37..942939f 100644 --- a/src/main/java/com/example/timecoder/gateway/controller/PostController.java +++ b/src/main/java/com/example/timecoder/gateway/controller/PostController.java @@ -1,6 +1,7 @@ package com.example.timecoder.gateway.controller; import com.example.timecoder.gateway.proxy.TimecoderServiceProxy; +import com.example.timecoder.gateway.service.PostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -11,6 +12,9 @@ public class PostController { @Autowired private TimecoderServiceProxy timecoderServiceProxy; + @Autowired + private PostService postService; + @RequestMapping(value = "/posts", method = RequestMethod.GET) public Object getAllPosts() { return timecoderServiceProxy.getAllPosts(); @@ -18,7 +22,7 @@ public Object getAllPosts() { @RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) public Object getPostById(@PathVariable("id") Long id) { - return timecoderServiceProxy.getPostById(id); + return postService.getPostById(id); } @RequestMapping(value = "/posts", method = RequestMethod.POST) diff --git a/src/main/java/com/example/timecoder/gateway/model/Post.java b/src/main/java/com/example/timecoder/gateway/model/Post.java new file mode 100644 index 0000000..8db9dde --- /dev/null +++ b/src/main/java/com/example/timecoder/gateway/model/Post.java @@ -0,0 +1,81 @@ +package com.example.timecoder.gateway.model; + +import java.util.Date; +import java.util.List; + +public class Post { + + private long id; + private long episodeId; + private Date createdAt = new Date(); + private String name; + private String shortDescription; + private String description; + private String link; + private Object guests; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public long getEpisodeId() { + return episodeId; + } + + public void setEpisodeId(long episodeId) { + this.episodeId = episodeId; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getShortDescription() { + return shortDescription; + } + + public void setShortDescription(String shortDescription) { + this.shortDescription = shortDescription; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public Object getGuests() { + return guests; + } + + public void setGuests(List guests) { + this.guests = guests; + } + +} diff --git a/src/main/java/com/example/timecoder/gateway/model/PostDto.java b/src/main/java/com/example/timecoder/gateway/model/PostDto.java new file mode 100644 index 0000000..bcb4237 --- /dev/null +++ b/src/main/java/com/example/timecoder/gateway/model/PostDto.java @@ -0,0 +1,42 @@ +package com.example.timecoder.gateway.model; + + +public class PostDto { + + private Object post; + private Object episode; + private Object patrons; + + public PostDto() { + } + + public PostDto(Object post, Object episode, Object patrons) { + this.post = post; + this.episode = episode; + this.patrons = patrons; + } + + public Object getPost() { + return post; + } + + public void setPost(Object post) { + this.post = post; + } + + public Object getEpisode() { + return episode; + } + + public void setEpisode(Object episode) { + this.episode = episode; + } + + public Object getPatrons() { + return patrons; + } + + public void setPatrons(Object patrons) { + this.patrons = patrons; + } +} diff --git a/src/main/java/com/example/timecoder/gateway/service/PostService.java b/src/main/java/com/example/timecoder/gateway/service/PostService.java new file mode 100644 index 0000000..732029c --- /dev/null +++ b/src/main/java/com/example/timecoder/gateway/service/PostService.java @@ -0,0 +1,30 @@ +package com.example.timecoder.gateway.service; + +import com.example.timecoder.gateway.model.Post; +import com.example.timecoder.gateway.model.PostDto; +import com.example.timecoder.gateway.proxy.PatronsServiceProxy; +import com.example.timecoder.gateway.proxy.TimecoderServiceProxy; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +@Service +public class PostService { + + @Autowired + private TimecoderServiceProxy timecoderServiceProxy; + + @Autowired + private PatronsServiceProxy patronsServiceProxy; + + + public PostDto getPostById(Long id) { + ObjectMapper mapper = new ObjectMapper(); + Post post = mapper.convertValue(timecoderServiceProxy.getPostById(id), Post.class); + Object episode = timecoderServiceProxy.getEpisodeById(post.getEpisodeId()); + Object patronsList = patronsServiceProxy.getAllActivePatrons(); + + return new PostDto(post, episode, patronsList); + } +} From 0658414b7a2cdeeb5594793b0d024e050db8b85f Mon Sep 17 00:00:00 2001 From: Alexey Panashchenko Date: Tue, 19 Feb 2019 22:07:42 +0200 Subject: [PATCH 3/4] Fix PostService exeption --- .../timecoder/gateway/service/PostService.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/timecoder/gateway/service/PostService.java b/src/main/java/com/example/timecoder/gateway/service/PostService.java index 732029c..83eace2 100644 --- a/src/main/java/com/example/timecoder/gateway/service/PostService.java +++ b/src/main/java/com/example/timecoder/gateway/service/PostService.java @@ -21,9 +21,16 @@ public class PostService { public PostDto getPostById(Long id) { ObjectMapper mapper = new ObjectMapper(); - Post post = mapper.convertValue(timecoderServiceProxy.getPostById(id), Post.class); - Object episode = timecoderServiceProxy.getEpisodeById(post.getEpisodeId()); - Object patronsList = patronsServiceProxy.getAllActivePatrons(); + Post post = null; + Object episode = null; + Object patronsList = null; + try { + post = mapper.convertValue(timecoderServiceProxy.getPostById(id), Post.class); + episode = timecoderServiceProxy.getEpisodeById(post.getEpisodeId()); + patronsList = patronsServiceProxy.getAllActivePatrons(); + } catch (Exception e) { + e.printStackTrace(); + } return new PostDto(post, episode, patronsList); } From 95e3b72c52308d57b9b64d2ebf45ecd60f9bf01f Mon Sep 17 00:00:00 2001 From: Alexey Panashchenko Date: Thu, 21 Feb 2019 12:52:17 +0200 Subject: [PATCH 4/4] Fix revie comments --- .../timecoder/gateway/controller/PostController.java | 12 ++++++++---- .../gateway/proxy/TimecoderServiceProxy.java | 9 +++++---- .../timecoder/gateway/service/PostService.java | 4 +--- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/example/timecoder/gateway/controller/PostController.java b/src/main/java/com/example/timecoder/gateway/controller/PostController.java index 942939f..83f7f57 100644 --- a/src/main/java/com/example/timecoder/gateway/controller/PostController.java +++ b/src/main/java/com/example/timecoder/gateway/controller/PostController.java @@ -1,10 +1,14 @@ package com.example.timecoder.gateway.controller; +import com.example.timecoder.gateway.model.Post; +import com.example.timecoder.gateway.model.PostDto; import com.example.timecoder.gateway.proxy.TimecoderServiceProxy; import com.example.timecoder.gateway.service.PostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController public class PostController { @@ -16,22 +20,22 @@ public class PostController { private PostService postService; @RequestMapping(value = "/posts", method = RequestMethod.GET) - public Object getAllPosts() { + public List getAllPosts() { return timecoderServiceProxy.getAllPosts(); } @RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) - public Object getPostById(@PathVariable("id") Long id) { + public PostDto getPostById(@PathVariable("id") Long id) { return postService.getPostById(id); } @RequestMapping(value = "/posts", method = RequestMethod.POST) - public Object createPost(@RequestBody Object post) { + public Object createPost(@RequestBody Post post) { return timecoderServiceProxy.createPost(post); } @RequestMapping(value = "/posts/{id}", method = RequestMethod.PUT) - public Object updatePost(@PathVariable("id") Long id, @RequestBody Object post) { + public Object updatePost(@PathVariable("id") Long id, @RequestBody Post post) { return timecoderServiceProxy.updatePost(id, post); } diff --git a/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java b/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java index 82fc6a8..5febf37 100644 --- a/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java +++ b/src/main/java/com/example/timecoder/gateway/proxy/TimecoderServiceProxy.java @@ -1,5 +1,6 @@ package com.example.timecoder.gateway.proxy; +import com.example.timecoder.gateway.model.Post; import com.example.timecoder.gateway.payload.timecoder.EpisodePayload; import com.example.timecoder.gateway.payload.timecoder.ThemePayload; import org.springframework.cloud.openfeign.FeignClient; @@ -49,17 +50,17 @@ public interface TimecoderServiceProxy { Object deleteTheme(@RequestParam Long id); @RequestMapping(value = "/posts", method = RequestMethod.GET) - Object getAllPosts(); + List getAllPosts(); @RequestMapping(value = "/posts/{id}", method = RequestMethod.GET) - Object getPostById(@RequestParam Long id); + Post getPostById(@RequestParam Long id); @RequestMapping(value = "/posts", method = RequestMethod.POST) - Object createPost(Object post); + Object createPost(Post post); @RequestMapping(value = "/posts/{id}", method = RequestMethod.DELETE) Object deletePost(@RequestParam Long id); @RequestMapping(value = "/posts/{id}", method = RequestMethod.PUT) - Object updatePost(@RequestParam Long id, Object post); + Object updatePost(@RequestParam Long id, Post post); } diff --git a/src/main/java/com/example/timecoder/gateway/service/PostService.java b/src/main/java/com/example/timecoder/gateway/service/PostService.java index 83eace2..2a69f65 100644 --- a/src/main/java/com/example/timecoder/gateway/service/PostService.java +++ b/src/main/java/com/example/timecoder/gateway/service/PostService.java @@ -4,7 +4,6 @@ import com.example.timecoder.gateway.model.PostDto; import com.example.timecoder.gateway.proxy.PatronsServiceProxy; import com.example.timecoder.gateway.proxy.TimecoderServiceProxy; -import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,12 +19,11 @@ public class PostService { public PostDto getPostById(Long id) { - ObjectMapper mapper = new ObjectMapper(); Post post = null; Object episode = null; Object patronsList = null; try { - post = mapper.convertValue(timecoderServiceProxy.getPostById(id), Post.class); + post = timecoderServiceProxy.getPostById(id); episode = timecoderServiceProxy.getEpisodeById(post.getEpisodeId()); patronsList = patronsServiceProxy.getAllActivePatrons(); } catch (Exception e) {