diff --git a/build.gradle b/build.gradle index 00847aebf..2a4ebf14e 100644 --- a/build.gradle +++ b/build.gradle @@ -3,10 +3,12 @@ plugins { id 'org.springframework.boot' version '3.2.0' id 'io.spring.dependency-management' version '1.1.4' id 'org.graalvm.buildtools.native' version '0.9.28' - id 'io.spring.javaformat' version '0.0.40' + id 'io.spring.javaformat' version '0.0.41' + id "io.spring.nohttp" version "0.0.11" } apply plugin: 'java' +apply plugin: 'checkstyle' apply plugin: 'io.spring.javaformat' gradle.startParameter.excludedTaskNames += [ "checkFormatAot", "checkFormatAotTest" ] @@ -43,8 +45,35 @@ dependencies { testImplementation 'org.springframework.boot:spring-boot-docker-compose' testImplementation 'org.testcontainers:junit-jupiter' testImplementation 'org.testcontainers:mysql' + checkstyle 'io.spring.javaformat:spring-javaformat-checkstyle:0.0.41' + checkstyle 'com.puppycrawl.tools:checkstyle:10.12.5' } tasks.named('test') { useJUnitPlatform() } + +checkstyle { + configDirectory = project.file('src/checkstyle') + configFile = file('src/checkstyle/nohttp-checkstyle.xml') +} + +checkstyleNohttp { + configDirectory = project.file('src/checkstyle') + configFile = file('src/checkstyle/nohttp-checkstyle.xml') +} + +tasks.named("formatMain").configure { dependsOn("checkstyleMain") } +tasks.named("formatMain").configure { dependsOn("checkstyleNohttp") } + +tasks.named("formatTest").configure { dependsOn("checkstyleTest") } +tasks.named("formatTest").configure { dependsOn("checkstyleNohttp") } + +checkstyleAot.enabled = false +checkstyleAotTest.enabled = false + +checkFormatAot.enabled = false +checkFormatAotTest.enabled = false + +formatAot.enabled = false +formatAotTest.enabled = false diff --git a/pom.xml b/pom.xml index 3fa5453a4..a4c6f1e9c 100644 --- a/pom.xml +++ b/pom.xml @@ -237,10 +237,12 @@ validate src/checkstyle/nohttp-checkstyle.xml - src/checkstyle/nohttp-checkstyle-suppressions.xml ${basedir} **/* **/.git/**/*,**/.idea/**/*,**/target/**/,**/.flattened-pom.xml,**/*.class + + config_loc=${basedir}/src/checkstyle/ + check diff --git a/src/checkstyle/nohttp-checkstyle-suppressions.xml b/src/checkstyle/nohttp-checkstyle-suppressions.xml index 7c118a74f..f00599bb2 100644 --- a/src/checkstyle/nohttp-checkstyle-suppressions.xml +++ b/src/checkstyle/nohttp-checkstyle-suppressions.xml @@ -3,8 +3,9 @@ "-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN" "https://checkstyle.org/dtds/suppressions_1_2.dtd"> - - - + + + + diff --git a/src/checkstyle/nohttp-checkstyle.xml b/src/checkstyle/nohttp-checkstyle.xml index e6205127b..f886411e6 100644 --- a/src/checkstyle/nohttp-checkstyle.xml +++ b/src/checkstyle/nohttp-checkstyle.xml @@ -4,4 +4,7 @@ "https://checkstyle.org/dtds/configuration_1_2.dtd"> + + + diff --git a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java index ac6e15030..6299a76f7 100644 --- a/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java +++ b/src/main/java/org/springframework/samples/petclinic/PetClinicApplication.java @@ -18,7 +18,11 @@ package org.springframework.samples.petclinic; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ImportRuntimeHints; +import org.springframework.web.servlet.i18n.SessionLocaleResolver; + +import java.util.Locale; /** * PetClinic Spring Boot Application. diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index 329c82395..848d4f08e 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -17,7 +17,7 @@ package org.springframework.samples.petclinic.owner; import java.util.List; import java.util.Map; - +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -34,6 +34,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import jakarta.validation.Valid; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * @author Juergen Hoeller @@ -70,12 +71,14 @@ class OwnerController { } @PostMapping("/owners/new") - public String processCreationForm(@Valid Owner owner, BindingResult result) { + public String processCreationForm(@Valid Owner owner, BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { + redirectAttributes.addFlashAttribute("error", "There was an error in creating the owner."); return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; } this.owners.save(owner); + redirectAttributes.addFlashAttribute("message", "New Owner Created"); return "redirect:/owners/" + owner.getId(); } @@ -133,14 +136,16 @@ class OwnerController { } @PostMapping("/owners/{ownerId}/edit") - public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result, - @PathVariable("ownerId") int ownerId) { + public String processUpdateOwnerForm(@Valid Owner owner, BindingResult result, @PathVariable("ownerId") int ownerId, + RedirectAttributes redirectAttributes) { if (result.hasErrors()) { + redirectAttributes.addFlashAttribute("error", "There was an error in updating the owner."); return VIEWS_OWNER_CREATE_OR_UPDATE_FORM; } owner.setId(ownerId); this.owners.save(owner); + redirectAttributes.addFlashAttribute("message", "Owner Values Updated"); return "redirect:/owners/{ownerId}"; } diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index 057456643..781fb5805 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -31,6 +31,7 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import jakarta.validation.Valid; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * @author Juergen Hoeller @@ -98,7 +99,8 @@ class PetController { } @PostMapping("/pets/new") - public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult result, ModelMap model) { + public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult result, ModelMap model, + RedirectAttributes redirectAttributes) { if (StringUtils.hasText(pet.getName()) && pet.isNew() && owner.getPet(pet.getName(), true) != null) { result.rejectValue("name", "duplicate", "already exists"); } @@ -115,18 +117,21 @@ class PetController { } this.owners.save(owner); + redirectAttributes.addFlashAttribute("message", "New Pet has been Added"); return "redirect:/owners/{ownerId}"; } @GetMapping("/pets/{petId}/edit") - public String initUpdateForm(Owner owner, @PathVariable("petId") int petId, ModelMap model) { + public String initUpdateForm(Owner owner, @PathVariable("petId") int petId, ModelMap model, + RedirectAttributes redirectAttributes) { Pet pet = owner.getPet(petId); model.put("pet", pet); return VIEWS_PETS_CREATE_OR_UPDATE_FORM; } @PostMapping("/pets/{petId}/edit") - public String processUpdateForm(@Valid Pet pet, BindingResult result, Owner owner, ModelMap model) { + public String processUpdateForm(@Valid Pet pet, BindingResult result, Owner owner, ModelMap model, + RedirectAttributes redirectAttributes) { String petName = pet.getName(); @@ -150,6 +155,7 @@ class PetController { owner.addPet(pet); this.owners.save(owner); + redirectAttributes.addFlashAttribute("message", "Pet details has been edited"); return "redirect:/owners/{ownerId}"; } diff --git a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java b/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java index c823d91f2..fde7493a0 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/VisitController.java @@ -27,6 +27,7 @@ import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import jakarta.validation.Valid; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; /** * @author Juergen Hoeller @@ -81,13 +82,14 @@ class VisitController { // called @PostMapping("/owners/{ownerId}/pets/{petId}/visits/new") public String processNewVisitForm(@ModelAttribute Owner owner, @PathVariable int petId, @Valid Visit visit, - BindingResult result) { + BindingResult result, RedirectAttributes redirectAttributes) { if (result.hasErrors()) { return "pets/createOrUpdateVisitForm"; } owner.addVisit(petId, visit); this.owners.save(owner); + redirectAttributes.addFlashAttribute("message", "Your vist has been boked"); return "redirect:/owners/{ownerId}"; } diff --git a/src/main/resources/templates/owners/ownerDetails.html b/src/main/resources/templates/owners/ownerDetails.html index 41f7d1680..15bca4ad2 100644 --- a/src/main/resources/templates/owners/ownerDetails.html +++ b/src/main/resources/templates/owners/ownerDetails.html @@ -7,8 +7,18 @@

Owner Information

- - + +
+ +
+ +
+ +
+ + + + @@ -73,7 +83,20 @@
Name
- + + +