From 8818485370bad488c3818c1c44fe9a935a79d28c Mon Sep 17 00:00:00 2001 From: Eddie Jaoude Date: Fri, 1 Jan 2016 09:41:38 +0000 Subject: [PATCH 1/5] [#31] Incremented API version & put comment in that this is temporary --- src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 14dc467..e14b2f6 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,4 +1,4 @@ -version: v0.2.19 +version: v0.2.20 # This will be updated via CI in the future --- spring: From 94954a22ce43761c0429531aeb2864176e0751f3 Mon Sep 17 00:00:00 2001 From: Eddie Jaoude Date: Fri, 1 Jan 2016 09:46:48 +0000 Subject: [PATCH 2/5] [#31] Expose Repository audit via Service --- .../memberservice/service/MemberService.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/com/empowerhack/family/memberservice/service/MemberService.java diff --git a/src/main/java/com/empowerhack/family/memberservice/service/MemberService.java b/src/main/java/com/empowerhack/family/memberservice/service/MemberService.java new file mode 100644 index 0000000..9dbbebe --- /dev/null +++ b/src/main/java/com/empowerhack/family/memberservice/service/MemberService.java @@ -0,0 +1,23 @@ +package com.empowerhack.family.memberservice.service; + +import com.empowerhack.family.memberservice.domain.Member; +import com.empowerhack.family.memberservice.repository.MemberRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.history.Revision; +import org.springframework.data.history.Revisions; +import org.springframework.stereotype.Service; + +@Service +public final class MemberService { + + @Autowired + private MemberRepository memberRepository; + + public Revisions findRevisions(Long id) { + return this.memberRepository.findRevisions(id); + } + + public Revision findLastChangeRevision(Long id) { + return this.memberRepository.findLastChangeRevision(id); + } +} From b26951b5e4f8f888c61d6f9681936f3b0f4458bc Mon Sep 17 00:00:00 2001 From: Eddie Jaoude Date: Fri, 1 Jan 2016 09:47:13 +0000 Subject: [PATCH 3/5] [#31] Expose Service audit via Controller and end-point --- .../controller/MemberController.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java diff --git a/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java b/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java new file mode 100644 index 0000000..ef5fc87 --- /dev/null +++ b/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java @@ -0,0 +1,53 @@ +package com.empowerhack.family.memberservice.controller; + +import com.empowerhack.family.memberservice.domain.Member; +import com.empowerhack.family.memberservice.service.MemberService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.history.Revision; +import org.springframework.data.history.Revisions; +import org.springframework.hateoas.*; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class MemberController { + + @Autowired + EntityLinks entityLinks; + + @Autowired + private MemberService memberService; + + @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/changes/latest") + public + @ResponseBody + ResponseEntity> findLastChangeRevision(@PathVariable Long id) { + Revision revision = this.memberService.findLastChangeRevision(id); + + Resource resource = new Resource<>(revision); + + final LinkBuilder lb = this.entityLinks.linkForSingleResource(Member.class, id); + resource.add(lb.withRel("member")); + + return new ResponseEntity<>(resource, HttpStatus.OK); + } + + @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/changes") + public + @ResponseBody + ResponseEntity> findRevisions(@PathVariable Long id) { + Revisions revisions = this.memberService.findRevisions(id); + + Resource resource = new Resource<>(revisions); + + final LinkBuilder lb = this.entityLinks.linkForSingleResource(Member.class, id); + resource.add(lb.withRel("member")); + + return new ResponseEntity<>(resource, HttpStatus.OK); + } +} From 1ec3783353f9092bb86279c88c951d8798cd0920 Mon Sep 17 00:00:00 2001 From: Eddie Jaoude Date: Fri, 1 Jan 2016 09:47:34 +0000 Subject: [PATCH 4/5] [#31] Add HAL url to Member resource --- .../processor/MemberProcessor.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java diff --git a/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java b/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java new file mode 100644 index 0000000..1020f4a --- /dev/null +++ b/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java @@ -0,0 +1,38 @@ +package com.empowerhack.family.memberservice.processor; + +import com.empowerhack.family.memberservice.controller.MemberController; +import com.empowerhack.family.memberservice.domain.Member; +import org.springframework.hateoas.Resource; +import org.springframework.hateoas.ResourceProcessor; +import org.springframework.stereotype.Component; + +import static org.springframework.hateoas.mvc.ControllerLinkBuilder.*; + +@Component +public class MemberProcessor implements ResourceProcessor> { + + @Override + public Resource process(Resource resource) { + resource.add( + linkTo( + methodOn( + MemberController.class + ).findRevisions( + resource.getContent().getId() + ) + ).withRel("changes") + ); + + resource.add( + linkTo( + methodOn( + MemberController.class + ).findLastChangeRevision( + resource.getContent().getId() + ) + ).withRel("changes") + ); + + return resource; + } +} From fa9e2b6806bc8965be17ad60545a4ccc2ed62177 Mon Sep 17 00:00:00 2001 From: Eddie Jaoude Date: Fri, 1 Jan 2016 09:50:09 +0000 Subject: [PATCH 5/5] [#31] Change reference from `changes` to `audit` --- .../family/memberservice/controller/MemberController.java | 4 ++-- .../family/memberservice/processor/MemberProcessor.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java b/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java index ef5fc87..b4fbb69 100644 --- a/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java +++ b/src/main/java/com/empowerhack/family/memberservice/controller/MemberController.java @@ -23,7 +23,7 @@ public class MemberController { @Autowired private MemberService memberService; - @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/changes/latest") + @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/audit/latest") public @ResponseBody ResponseEntity> findLastChangeRevision(@PathVariable Long id) { @@ -37,7 +37,7 @@ ResponseEntity> findLastChangeRevision(@PathVariable Long id) return new ResponseEntity<>(resource, HttpStatus.OK); } - @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/changes") + @RequestMapping(method = RequestMethod.GET, value = "/members/{id:[\\d]+}/audit") public @ResponseBody ResponseEntity> findRevisions(@PathVariable Long id) { diff --git a/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java b/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java index 1020f4a..2fb4dfa 100644 --- a/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java +++ b/src/main/java/com/empowerhack/family/memberservice/processor/MemberProcessor.java @@ -20,7 +20,7 @@ public Resource process(Resource resource) { ).findRevisions( resource.getContent().getId() ) - ).withRel("changes") + ).withRel("audit") ); resource.add( @@ -30,7 +30,7 @@ public Resource process(Resource resource) { ).findLastChangeRevision( resource.getContent().getId() ) - ).withRel("changes") + ).withRel("audit") ); return resource;