From 0a95bba1968c4563a83d46f36bc59185ca7236c0 Mon Sep 17 00:00:00 2001 From: TheOMUU Date: Fri, 28 Aug 2026 12:06:39 +0530 Subject: [PATCH] Added Proper API structure and added Files and Code in the Test23-REST --- .idea/.gitignore | 3 ++ .idea/JavaEETest.iml | 9 ++++ .idea/compiler.xml | 49 ++++++++++++++++++ .idea/encodings.xml | 16 ++++++ .idea/jarRepositories.xml | 20 ++++++++ .idea/misc.xml | 50 +++++++++++++++++++ .idea/modules.xml | 8 +++ .idea/vcs.xml | 6 +++ .../org/sang/controller/PersonController.java | 48 ++++++++++++++++++ .../java/org/sang/{ => entity}/Person.java | 7 ++- .../sang/exception/GlobalClassException.java | 17 +++++++ .../exception/PersonNotFoundException.java | 7 +++ .../{ => repository}/PersonRepository.java | 10 ++-- .../java/org/sang/service/PersonService.java | 46 +++++++++++++++++ .../main/java/org/sang/{ => test}/Test.java | 2 +- .../{ => test}/Test23RestApplication.java | 2 +- 16 files changed, 292 insertions(+), 8 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/JavaEETest.iml create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 Test23-REST/src/main/java/org/sang/controller/PersonController.java rename Test23-REST/src/main/java/org/sang/{ => entity}/Person.java (87%) create mode 100644 Test23-REST/src/main/java/org/sang/exception/GlobalClassException.java create mode 100644 Test23-REST/src/main/java/org/sang/exception/PersonNotFoundException.java rename Test23-REST/src/main/java/org/sang/{ => repository}/PersonRepository.java (55%) create mode 100644 Test23-REST/src/main/java/org/sang/service/PersonService.java rename Test23-REST/src/main/java/org/sang/{ => test}/Test.java (97%) rename Test23-REST/src/main/java/org/sang/{ => test}/Test23RestApplication.java (92%) 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;