Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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]+}/audit/latest")
public
@ResponseBody
ResponseEntity<Resource<Revision>> findLastChangeRevision(@PathVariable Long id) {
Revision<Integer, Member> revision = this.memberService.findLastChangeRevision(id);

Resource<Revision> 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]+}/audit")
public
@ResponseBody
ResponseEntity<Resource<Revisions>> findRevisions(@PathVariable Long id) {
Revisions<Integer, Member> revisions = this.memberService.findRevisions(id);

Resource<Revisions> resource = new Resource<>(revisions);

final LinkBuilder lb = this.entityLinks.linkForSingleResource(Member.class, id);
resource.add(lb.withRel("member"));

return new ResponseEntity<>(resource, HttpStatus.OK);
}
}
Original file line number Diff line number Diff line change
@@ -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<Resource<Member>> {

@Override
public Resource<Member> process(Resource<Member> resource) {
resource.add(
linkTo(
methodOn(
MemberController.class
).findRevisions(
resource.getContent().getId()
)
).withRel("audit")
);

resource.add(
linkTo(
methodOn(
MemberController.class
).findLastChangeRevision(
resource.getContent().getId()
)
).withRel("audit")
);

return resource;
}
}
Original file line number Diff line number Diff line change
@@ -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<Integer, Member> findRevisions(Long id) {
return this.memberRepository.findRevisions(id);
}

public Revision<Integer, Member> findLastChangeRevision(Long id) {
return this.memberRepository.findLastChangeRevision(id);
}
}
2 changes: 1 addition & 1 deletion src/main/resources/application.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
version: v0.2.19
version: v0.2.20 # This will be updated via CI in the future

---
spring:
Expand Down