diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 00000000..26d33521
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/JavaEETest.iml b/.idea/JavaEETest.iml
new file mode 100644
index 00000000..d6ebd480
--- /dev/null
+++ b/.idea/JavaEETest.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 00000000..fdd9f91e
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 00000000..a0dee211
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 00000000..712ab9d9
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..bf0f215d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..7ca15eff
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Test23-REST/src/main/java/org/sang/controller/PersonController.java b/Test23-REST/src/main/java/org/sang/controller/PersonController.java
new file mode 100644
index 00000000..f1306c60
--- /dev/null
+++ b/Test23-REST/src/main/java/org/sang/controller/PersonController.java
@@ -0,0 +1,48 @@
+package org.sang.controller;
+
+import org.sang.entity.Person;
+import org.sang.service.PersonService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@RestController
+public class PersonController {
+ private final PersonService personService;
+
+ public PersonController(PersonService personService){
+ this.personService = personService;
+ }
+ @RequestMapping("/person")
+ //Http request for displaying all the person on the list
+ @GetMapping
+ public List getAll(){
+ return personService.displayAll();
+ }
+
+ //Http request for displaying single person by id
+ @GetMapping
+ public Person displayId(Long id){
+ return personService.displayById(id);
+ }
+
+ //Http request for Creating New Person
+ @PostMapping
+ public Person createPerson(@Valid @RequestBody Person person){
+ return personService.createPerson(person);
+
+ }
+
+ //Http request for Updating the Person
+ @PutMapping
+ public Person updatePerson(@Valid @RequestBody Person person , @PathVariable Long id){
+ return personService.updatePerson(person, id);
+ }
+
+ //Http Request for Deleting the Person
+ @DeleteMapping
+ public void deletePerson(@PathVariable Long id){
+ personService.deletePerson(id);
+ }
+}
diff --git a/Test23-REST/src/main/java/org/sang/Person.java b/Test23-REST/src/main/java/org/sang/entity/Person.java
similarity index 87%
rename from Test23-REST/src/main/java/org/sang/Person.java
rename to Test23-REST/src/main/java/org/sang/entity/Person.java
index 741bc3e8..e3aec7f9 100644
--- a/Test23-REST/src/main/java/org/sang/Person.java
+++ b/Test23-REST/src/main/java/org/sang/entity/Person.java
@@ -1,8 +1,11 @@
-package org.sang;
+package org.sang.entity;
+
+import org.hibernate.validator.constraints.NotBlank;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
+import javax.validation.constraints.Max;
/**
* Created by sang on 2017/1/4.
@@ -11,8 +14,10 @@
public class Person {
@Id
@GeneratedValue
+ @NotBlank
private Long id;
private String name;
+ @Max(18)
private Integer age;
private String address;
diff --git a/Test23-REST/src/main/java/org/sang/exception/GlobalClassException.java b/Test23-REST/src/main/java/org/sang/exception/GlobalClassException.java
new file mode 100644
index 00000000..0f018579
--- /dev/null
+++ b/Test23-REST/src/main/java/org/sang/exception/GlobalClassException.java
@@ -0,0 +1,17 @@
+package org.sang.exception;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+@RestControllerAdvice
+public class GlobalClassException {
+ @ExceptionHandler(PersonNotFoundException.class)
+ ResponseEntity handlePersonNotFoundException(PersonNotFoundException ex){
+ return ResponseEntity
+ .status(HttpStatus.NOT_FOUND)
+ .body(ex.getMessage());
+ }
+
+}
diff --git a/Test23-REST/src/main/java/org/sang/exception/PersonNotFoundException.java b/Test23-REST/src/main/java/org/sang/exception/PersonNotFoundException.java
new file mode 100644
index 00000000..0920d731
--- /dev/null
+++ b/Test23-REST/src/main/java/org/sang/exception/PersonNotFoundException.java
@@ -0,0 +1,7 @@
+package org.sang.exception;
+
+public class PersonNotFoundException extends RuntimeException{
+ public PersonNotFoundException(String message){
+ super(message);
+ }
+}
diff --git a/Test23-REST/src/main/java/org/sang/PersonRepository.java b/Test23-REST/src/main/java/org/sang/repository/PersonRepository.java
similarity index 55%
rename from Test23-REST/src/main/java/org/sang/PersonRepository.java
rename to Test23-REST/src/main/java/org/sang/repository/PersonRepository.java
index 46dc0bae..73dee1f4 100644
--- a/Test23-REST/src/main/java/org/sang/PersonRepository.java
+++ b/Test23-REST/src/main/java/org/sang/repository/PersonRepository.java
@@ -1,17 +1,17 @@
-package org.sang;
+package org.sang.repository;
+import org.sang.entity.Person;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import org.springframework.data.rest.core.annotation.RestResource;
+import org.springframework.stereotype.Repository;
import java.util.List;
/**
* Created by sang on 2017/1/4.
*/
-@RepositoryRestResource(path = "people")
-public interface PersonRepository extends JpaRepository {
- @RestResource(path = "nameStartsWith",rel = "nameStartsWith")
- List findByNameStartsWith(@Param("name") String name);
+@Repository
+public interface PersonRepository extends JpaRepository{
}
diff --git a/Test23-REST/src/main/java/org/sang/service/PersonService.java b/Test23-REST/src/main/java/org/sang/service/PersonService.java
new file mode 100644
index 00000000..545331d0
--- /dev/null
+++ b/Test23-REST/src/main/java/org/sang/service/PersonService.java
@@ -0,0 +1,46 @@
+package org.sang.service;
+
+import org.sang.entity.Person;
+import org.sang.repository.PersonRepository;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class PersonService {
+ private final PersonRepository personRepository;
+
+ public PersonService (PersonRepository personRepository){
+ this.personRepository = personRepository;
+ }
+
+ //Display All the Person
+ public List displayAll(){
+ return personRepository.findAll();
+ }
+
+ //Display Person by ID
+ public Person displayById(Long id){
+ return personRepository.findOne(id);
+ }
+
+ //Create New Person
+ public Person createPerson(Person person){
+ return personRepository.save(person);
+ }
+
+ //Update the Existing Person
+ public Person updatePerson(Person updatedPerson, Long id){
+ Person existingPerson = personRepository.findOne(id);
+ existingPerson.setName(updatedPerson.getName());
+ existingPerson.setAddress(updatedPerson.getAddress());
+ existingPerson.setAge(updatedPerson.getAge());
+ return personRepository.save(updatedPerson);
+ }
+
+ //Delete the Existing Person
+ public void deletePerson(Long id){
+ personRepository.delete(id);
+ }
+
+}
diff --git a/Test23-REST/src/main/java/org/sang/Test.java b/Test23-REST/src/main/java/org/sang/test/Test.java
similarity index 97%
rename from Test23-REST/src/main/java/org/sang/Test.java
rename to Test23-REST/src/main/java/org/sang/test/Test.java
index 09559b1d..c0baca83 100644
--- a/Test23-REST/src/main/java/org/sang/Test.java
+++ b/Test23-REST/src/main/java/org/sang/test/Test.java
@@ -1,4 +1,4 @@
-package org.sang;
+package org.sang.test;
import java.util.Random;
diff --git a/Test23-REST/src/main/java/org/sang/Test23RestApplication.java b/Test23-REST/src/main/java/org/sang/test/Test23RestApplication.java
similarity index 92%
rename from Test23-REST/src/main/java/org/sang/Test23RestApplication.java
rename to Test23-REST/src/main/java/org/sang/test/Test23RestApplication.java
index 648fa52a..934d3b30 100644
--- a/Test23-REST/src/main/java/org/sang/Test23RestApplication.java
+++ b/Test23-REST/src/main/java/org/sang/test/Test23RestApplication.java
@@ -1,4 +1,4 @@
-package org.sang;
+package org.sang.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;