From 7352ccf5b2e15d7dbdf9bac1dbd2d420f43b081d Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Wed, 26 May 2021 23:39:55 +0530 Subject: [PATCH 01/10] Adding code for BAEL-4957 - Spring validation in the service layer --- spring-service-layer-validation/.gitignore | 63 +++++++++++++++ spring-service-layer-validation/README.md | 12 +++ spring-service-layer-validation/pom.xml | 46 +++++++++++ .../SpringServiceLayerValidationApp.java | 13 ++++ .../controller/UserAccountController.java | 22 ++++++ .../servicevalidation/dao/UserAccountDao.java | 32 ++++++++ .../servicevalidation/domain/UserAccount.java | 77 +++++++++++++++++++ .../servicevalidation/domain/UserAddress.java | 17 ++++ .../service/UserAccountService.java | 44 +++++++++++ 9 files changed, 326 insertions(+) create mode 100644 spring-service-layer-validation/.gitignore create mode 100644 spring-service-layer-validation/README.md create mode 100644 spring-service-layer-validation/pom.xml create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/.gitignore b/spring-service-layer-validation/.gitignore new file mode 100644 index 0000000000..8f5ee06047 --- /dev/null +++ b/spring-service-layer-validation/.gitignore @@ -0,0 +1,63 @@ +# Created by https://www.gitignore.io/api/eclipse + +### Eclipse ### + +.metadata +target/ +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# End of https://www.gitignore.io/api/eclipse \ No newline at end of file diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md new file mode 100644 index 0000000000..674831d6a5 --- /dev/null +++ b/spring-service-layer-validation/README.md @@ -0,0 +1,12 @@ +## Spring Boot MVC + +This module contains articles about validation in Service layer of Spring Boot project. + +### Relevant Articles: + +- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) +- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) +- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) +- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) +- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) +- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) diff --git a/spring-service-layer-validation/pom.xml b/spring-service-layer-validation/pom.xml new file mode 100644 index 0000000000..31ec757699 --- /dev/null +++ b/spring-service-layer-validation/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + com.baeldung.spring-service-layer-validation + spring-service-layer-validation + 0.0.1-SNAPSHOT + + + UTF-8 + 12 + 12 + + + + org.springframework.boot + spring-boot-starter-parent + 2.4.5 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.hibernate.validator + hibernate-validator + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java new file mode 100644 index 0000000000..ea80a5da33 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.servicevalidation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringServiceLayerValidationApp { + + public static void main(String[] args) { + SpringApplication.run(SpringServiceLayerValidationApp.class, args); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java new file mode 100644 index 0000000000..b558ed89c2 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.servicevalidation.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; +import com.baeldung.spring.servicevalidation.service.UserAccountService; + +@RestController +public class UserAccountController { + + @Autowired + private UserAccountService service; + + @PostMapping("/addUserAccount") + public Object addUserAccount(@RequestBody UserAccount userAccount) { + return service.addUserAccount(userAccount); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java new file mode 100644 index 0000000000..d170ceef58 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.servicevalidation.dao; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountDao { + + private Map DB = new HashMap(); + + public String addUserAccount(UserAccount useraccount) { + DB.put(useraccount.getName(), useraccount); + return "success"; + } + + public Collection getAllUserAccounts() { + + Collection list = DB.values(); + if(list.isEmpty()) { + list.addAll(DB.values()); + } + return list; + + } + + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java new file mode 100644 index 0000000000..5b0e795a8a --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java @@ -0,0 +1,77 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class UserAccount { + + @NotNull(message = "Password must be between 4 to 15 characters") + @Size(min = 4, max = 15) + private String password; + + @NotBlank(message = "Name must not be blank") + private String name; + + @Min(value = 18, message = "Age should not be less than 18") + private int age; + + @NotBlank(message = "Phone must not be blank") + private String phone; + + @Valid + @NotNull(message = "UserAddress must not be blank") + private UserAddress useraddress; + + public UserAddress getUseraddress() { + return useraddress; + } + + public void setUseraddress(UserAddress useraddress) { + this.useraddress = useraddress; + } + + public UserAccount() { + + } + + public UserAccount(String email, String password, String name, int age) { + this.password = password; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java new file mode 100644 index 0000000000..85e7dfc05c --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.constraints.NotBlank; +public class UserAddress { + + @NotBlank + private String countryCode; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java new file mode 100644 index 0000000000..9a376fda6b --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -0,0 +1,44 @@ +package com.baeldung.spring.servicevalidation.service; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.dao.UserAccountDao; +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountService { + + @Autowired + private Validator validator; + + @Autowired + private UserAccountDao dao; + + public String addUserAccount(UserAccount useraccount) { + + Set> violations = validator.validate(useraccount); + + if (!violations.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (ConstraintViolation constraintViolation : violations) { + sb.append(constraintViolation.getMessage()); + } + + dao.addUserAccount(useraccount); + + throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); + } + + + + return "Account for " + useraccount.getName() + " Added!"; + } + +} From 9b4d965e3467a3f1c1f1969e24815b088191dc4b Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Mon, 7 Jun 2021 15:52:34 +0530 Subject: [PATCH 02/10] moving spring service layer validation code --- .../spring-boot-servicelayer-validation}/.gitignore | 0 .../spring-boot-servicelayer-validation/README.md | 4 ++++ .../spring-boot-servicelayer-validation}/pom.xml | 0 .../SpringServiceLayerValidationApp.java | 0 .../controller/UserAccountController.java | 0 .../spring/servicevalidation/dao/UserAccountDao.java | 0 .../spring/servicevalidation/domain/UserAccount.java | 0 .../spring/servicevalidation/domain/UserAddress.java | 0 .../service/UserAccountService.java | 0 spring-service-layer-validation/README.md | 12 ------------ 10 files changed, 4 insertions(+), 12 deletions(-) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/.gitignore (100%) create mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/README.md rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/pom.xml (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java (100%) delete mode 100644 spring-service-layer-validation/README.md diff --git a/spring-service-layer-validation/.gitignore b/spring-boot-modules/spring-boot-servicelayer-validation/.gitignore similarity index 100% rename from spring-service-layer-validation/.gitignore rename to spring-boot-modules/spring-boot-servicelayer-validation/.gitignore diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/README.md b/spring-boot-modules/spring-boot-servicelayer-validation/README.md new file mode 100644 index 0000000000..7c39135db6 --- /dev/null +++ b/spring-boot-modules/spring-boot-servicelayer-validation/README.md @@ -0,0 +1,4 @@ +## Spring Service Layer Validation + +This module contains articles about validation in Service layer of Spring Boot project. + diff --git a/spring-service-layer-validation/pom.xml b/spring-boot-modules/spring-boot-servicelayer-validation/pom.xml similarity index 100% rename from spring-service-layer-validation/pom.xml rename to spring-boot-modules/spring-boot-servicelayer-validation/pom.xml diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md deleted file mode 100644 index 674831d6a5..0000000000 --- a/spring-service-layer-validation/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## Spring Boot MVC - -This module contains articles about validation in Service layer of Spring Boot project. - -### Relevant Articles: - -- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) -- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) -- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) -- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) -- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) -- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) From 5a37927a90adb1fc079bfb14cd5b7f35e60154e3 Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Wed, 26 May 2021 23:39:55 +0530 Subject: [PATCH 03/10] Adding code for BAEL-4957 - Spring validation in the service layer --- spring-service-layer-validation/.gitignore | 63 +++++++++++++++ spring-service-layer-validation/README.md | 12 +++ spring-service-layer-validation/pom.xml | 46 +++++++++++ .../SpringServiceLayerValidationApp.java | 13 ++++ .../controller/UserAccountController.java | 22 ++++++ .../servicevalidation/dao/UserAccountDao.java | 32 ++++++++ .../servicevalidation/domain/UserAccount.java | 77 +++++++++++++++++++ .../servicevalidation/domain/UserAddress.java | 17 ++++ .../service/UserAccountService.java | 44 +++++++++++ 9 files changed, 326 insertions(+) create mode 100644 spring-service-layer-validation/.gitignore create mode 100644 spring-service-layer-validation/README.md create mode 100644 spring-service-layer-validation/pom.xml create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/.gitignore b/spring-service-layer-validation/.gitignore new file mode 100644 index 0000000000..8f5ee06047 --- /dev/null +++ b/spring-service-layer-validation/.gitignore @@ -0,0 +1,63 @@ +# Created by https://www.gitignore.io/api/eclipse + +### Eclipse ### + +.metadata +target/ +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# End of https://www.gitignore.io/api/eclipse \ No newline at end of file diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md new file mode 100644 index 0000000000..674831d6a5 --- /dev/null +++ b/spring-service-layer-validation/README.md @@ -0,0 +1,12 @@ +## Spring Boot MVC + +This module contains articles about validation in Service layer of Spring Boot project. + +### Relevant Articles: + +- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) +- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) +- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) +- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) +- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) +- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) diff --git a/spring-service-layer-validation/pom.xml b/spring-service-layer-validation/pom.xml new file mode 100644 index 0000000000..31ec757699 --- /dev/null +++ b/spring-service-layer-validation/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + com.baeldung.spring-service-layer-validation + spring-service-layer-validation + 0.0.1-SNAPSHOT + + + UTF-8 + 12 + 12 + + + + org.springframework.boot + spring-boot-starter-parent + 2.4.5 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.hibernate.validator + hibernate-validator + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java new file mode 100644 index 0000000000..ea80a5da33 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.servicevalidation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringServiceLayerValidationApp { + + public static void main(String[] args) { + SpringApplication.run(SpringServiceLayerValidationApp.class, args); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java new file mode 100644 index 0000000000..b558ed89c2 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.servicevalidation.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; +import com.baeldung.spring.servicevalidation.service.UserAccountService; + +@RestController +public class UserAccountController { + + @Autowired + private UserAccountService service; + + @PostMapping("/addUserAccount") + public Object addUserAccount(@RequestBody UserAccount userAccount) { + return service.addUserAccount(userAccount); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java new file mode 100644 index 0000000000..d170ceef58 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.servicevalidation.dao; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountDao { + + private Map DB = new HashMap(); + + public String addUserAccount(UserAccount useraccount) { + DB.put(useraccount.getName(), useraccount); + return "success"; + } + + public Collection getAllUserAccounts() { + + Collection list = DB.values(); + if(list.isEmpty()) { + list.addAll(DB.values()); + } + return list; + + } + + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java new file mode 100644 index 0000000000..5b0e795a8a --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java @@ -0,0 +1,77 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class UserAccount { + + @NotNull(message = "Password must be between 4 to 15 characters") + @Size(min = 4, max = 15) + private String password; + + @NotBlank(message = "Name must not be blank") + private String name; + + @Min(value = 18, message = "Age should not be less than 18") + private int age; + + @NotBlank(message = "Phone must not be blank") + private String phone; + + @Valid + @NotNull(message = "UserAddress must not be blank") + private UserAddress useraddress; + + public UserAddress getUseraddress() { + return useraddress; + } + + public void setUseraddress(UserAddress useraddress) { + this.useraddress = useraddress; + } + + public UserAccount() { + + } + + public UserAccount(String email, String password, String name, int age) { + this.password = password; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java new file mode 100644 index 0000000000..85e7dfc05c --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.constraints.NotBlank; +public class UserAddress { + + @NotBlank + private String countryCode; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java new file mode 100644 index 0000000000..9a376fda6b --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -0,0 +1,44 @@ +package com.baeldung.spring.servicevalidation.service; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.dao.UserAccountDao; +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountService { + + @Autowired + private Validator validator; + + @Autowired + private UserAccountDao dao; + + public String addUserAccount(UserAccount useraccount) { + + Set> violations = validator.validate(useraccount); + + if (!violations.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (ConstraintViolation constraintViolation : violations) { + sb.append(constraintViolation.getMessage()); + } + + dao.addUserAccount(useraccount); + + throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); + } + + + + return "Account for " + useraccount.getName() + " Added!"; + } + +} From d1b2f3af21ba9b8d9ab7fba3adb60c91b4f6b4cb Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Mon, 7 Jun 2021 15:52:34 +0530 Subject: [PATCH 04/10] moving spring service layer validation code --- .../spring-boot-servicelayer-validation}/.gitignore | 0 .../spring-boot-servicelayer-validation/README.md | 4 ++++ .../spring-boot-servicelayer-validation}/pom.xml | 0 .../SpringServiceLayerValidationApp.java | 0 .../controller/UserAccountController.java | 0 .../spring/servicevalidation/dao/UserAccountDao.java | 0 .../spring/servicevalidation/domain/UserAccount.java | 0 .../spring/servicevalidation/domain/UserAddress.java | 0 .../service/UserAccountService.java | 0 spring-service-layer-validation/README.md | 12 ------------ 10 files changed, 4 insertions(+), 12 deletions(-) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/.gitignore (100%) create mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/README.md rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/pom.xml (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java (100%) rename {spring-service-layer-validation => spring-boot-modules/spring-boot-servicelayer-validation}/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java (100%) delete mode 100644 spring-service-layer-validation/README.md diff --git a/spring-service-layer-validation/.gitignore b/spring-boot-modules/spring-boot-servicelayer-validation/.gitignore similarity index 100% rename from spring-service-layer-validation/.gitignore rename to spring-boot-modules/spring-boot-servicelayer-validation/.gitignore diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/README.md b/spring-boot-modules/spring-boot-servicelayer-validation/README.md new file mode 100644 index 0000000000..7c39135db6 --- /dev/null +++ b/spring-boot-modules/spring-boot-servicelayer-validation/README.md @@ -0,0 +1,4 @@ +## Spring Service Layer Validation + +This module contains articles about validation in Service layer of Spring Boot project. + diff --git a/spring-service-layer-validation/pom.xml b/spring-boot-modules/spring-boot-servicelayer-validation/pom.xml similarity index 100% rename from spring-service-layer-validation/pom.xml rename to spring-boot-modules/spring-boot-servicelayer-validation/pom.xml diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java similarity index 100% rename from spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java rename to spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md deleted file mode 100644 index 674831d6a5..0000000000 --- a/spring-service-layer-validation/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## Spring Boot MVC - -This module contains articles about validation in Service layer of Spring Boot project. - -### Relevant Articles: - -- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) -- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) -- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) -- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) -- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) -- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) From d5399a7677d9612418cdcdd7e95f0179f7afb4c2 Mon Sep 17 00:00:00 2001 From: raviavhad Date: Sat, 24 Jul 2021 13:45:21 +0530 Subject: [PATCH 05/10] Update UserAccountService.java Moving the call to addUserAccount method out of condition to check if violations exist. --- .../servicevalidation/service/UserAccountService.java | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java index 9a376fda6b..c438719d3a 100644 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java +++ b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -29,15 +29,10 @@ public class UserAccountService { StringBuilder sb = new StringBuilder(); for (ConstraintViolation constraintViolation : violations) { sb.append(constraintViolation.getMessage()); - } - - dao.addUserAccount(useraccount); - + } throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); - } - - - + } + dao.addUserAccount(useraccount); return "Account for " + useraccount.getName() + " Added!"; } From ed01815cafeab2eaec9f4f11c721b5d37c24d9ab Mon Sep 17 00:00:00 2001 From: raviavhad Date: Sat, 24 Jul 2021 14:15:50 +0530 Subject: [PATCH 06/10] Update UserAccountService.java Reverting changes --- .../service/UserAccountService.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java index c438719d3a..417e9a32b7 100644 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java +++ b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -15,25 +15,28 @@ import com.baeldung.spring.servicevalidation.domain.UserAccount; @Service public class UserAccountService { - @Autowired - private Validator validator; - - @Autowired - private UserAccountDao dao; - - public String addUserAccount(UserAccount useraccount) { - - Set> violations = validator.validate(useraccount); + @Autowired + private Validator validator; - if (!violations.isEmpty()) { - StringBuilder sb = new StringBuilder(); - for (ConstraintViolation constraintViolation : violations) { - sb.append(constraintViolation.getMessage()); - } - throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); - } - dao.addUserAccount(useraccount); - return "Account for " + useraccount.getName() + " Added!"; - } + @Autowired + private UserAccountDao dao; + + public String addUserAccount(UserAccount useraccount) { + + Set> violations = validator.validate(useraccount); + + if (!violations.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (ConstraintViolation constraintViolation : violations) { + sb.append(constraintViolation.getMessage()); + } + + dao.addUserAccount(useraccount); + + throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); + } + + return "Account for " + useraccount.getName() + " Added!"; + } } From a9f9b29ef5d2bacbdf43e10064bbea29974dd643 Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Wed, 26 May 2021 23:39:55 +0530 Subject: [PATCH 07/10] Adding code for BAEL-4957 - Spring validation in the service layer --- spring-service-layer-validation/.gitignore | 63 +++++++++++++++ spring-service-layer-validation/README.md | 12 +++ spring-service-layer-validation/pom.xml | 46 +++++++++++ .../SpringServiceLayerValidationApp.java | 13 ++++ .../controller/UserAccountController.java | 22 ++++++ .../servicevalidation/dao/UserAccountDao.java | 32 ++++++++ .../servicevalidation/domain/UserAccount.java | 77 +++++++++++++++++++ .../servicevalidation/domain/UserAddress.java | 17 ++++ .../service/UserAccountService.java | 44 +++++++++++ 9 files changed, 326 insertions(+) create mode 100644 spring-service-layer-validation/.gitignore create mode 100644 spring-service-layer-validation/README.md create mode 100644 spring-service-layer-validation/pom.xml create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java create mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/.gitignore b/spring-service-layer-validation/.gitignore new file mode 100644 index 0000000000..8f5ee06047 --- /dev/null +++ b/spring-service-layer-validation/.gitignore @@ -0,0 +1,63 @@ +# Created by https://www.gitignore.io/api/eclipse + +### Eclipse ### + +.metadata +target/ +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# End of https://www.gitignore.io/api/eclipse \ No newline at end of file diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md new file mode 100644 index 0000000000..674831d6a5 --- /dev/null +++ b/spring-service-layer-validation/README.md @@ -0,0 +1,12 @@ +## Spring Boot MVC + +This module contains articles about validation in Service layer of Spring Boot project. + +### Relevant Articles: + +- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) +- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) +- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) +- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) +- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) +- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) diff --git a/spring-service-layer-validation/pom.xml b/spring-service-layer-validation/pom.xml new file mode 100644 index 0000000000..31ec757699 --- /dev/null +++ b/spring-service-layer-validation/pom.xml @@ -0,0 +1,46 @@ + + + + 4.0.0 + + com.baeldung.spring-service-layer-validation + spring-service-layer-validation + 0.0.1-SNAPSHOT + + + UTF-8 + 12 + 12 + + + + org.springframework.boot + spring-boot-starter-parent + 2.4.5 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.hibernate.validator + hibernate-validator + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java new file mode 100644 index 0000000000..ea80a5da33 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java @@ -0,0 +1,13 @@ +package com.baeldung.spring.servicevalidation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringServiceLayerValidationApp { + + public static void main(String[] args) { + SpringApplication.run(SpringServiceLayerValidationApp.class, args); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java new file mode 100644 index 0000000000..b558ed89c2 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java @@ -0,0 +1,22 @@ +package com.baeldung.spring.servicevalidation.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; +import com.baeldung.spring.servicevalidation.service.UserAccountService; + +@RestController +public class UserAccountController { + + @Autowired + private UserAccountService service; + + @PostMapping("/addUserAccount") + public Object addUserAccount(@RequestBody UserAccount userAccount) { + return service.addUserAccount(userAccount); + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java new file mode 100644 index 0000000000..d170ceef58 --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.servicevalidation.dao; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountDao { + + private Map DB = new HashMap(); + + public String addUserAccount(UserAccount useraccount) { + DB.put(useraccount.getName(), useraccount); + return "success"; + } + + public Collection getAllUserAccounts() { + + Collection list = DB.values(); + if(list.isEmpty()) { + list.addAll(DB.values()); + } + return list; + + } + + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java new file mode 100644 index 0000000000..5b0e795a8a --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java @@ -0,0 +1,77 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class UserAccount { + + @NotNull(message = "Password must be between 4 to 15 characters") + @Size(min = 4, max = 15) + private String password; + + @NotBlank(message = "Name must not be blank") + private String name; + + @Min(value = 18, message = "Age should not be less than 18") + private int age; + + @NotBlank(message = "Phone must not be blank") + private String phone; + + @Valid + @NotNull(message = "UserAddress must not be blank") + private UserAddress useraddress; + + public UserAddress getUseraddress() { + return useraddress; + } + + public void setUseraddress(UserAddress useraddress) { + this.useraddress = useraddress; + } + + public UserAccount() { + + } + + public UserAccount(String email, String password, String name, int age) { + this.password = password; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java new file mode 100644 index 0000000000..85e7dfc05c --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java @@ -0,0 +1,17 @@ +package com.baeldung.spring.servicevalidation.domain; + +import javax.validation.constraints.NotBlank; +public class UserAddress { + + @NotBlank + private String countryCode; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + +} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java new file mode 100644 index 0000000000..9a376fda6b --- /dev/null +++ b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -0,0 +1,44 @@ +package com.baeldung.spring.servicevalidation.service; + +import java.util.Set; + +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Validator; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.spring.servicevalidation.dao.UserAccountDao; +import com.baeldung.spring.servicevalidation.domain.UserAccount; + +@Service +public class UserAccountService { + + @Autowired + private Validator validator; + + @Autowired + private UserAccountDao dao; + + public String addUserAccount(UserAccount useraccount) { + + Set> violations = validator.validate(useraccount); + + if (!violations.isEmpty()) { + StringBuilder sb = new StringBuilder(); + for (ConstraintViolation constraintViolation : violations) { + sb.append(constraintViolation.getMessage()); + } + + dao.addUserAccount(useraccount); + + throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); + } + + + + return "Account for " + useraccount.getName() + " Added!"; + } + +} From 5955e7bb411482c7f51eb75e74e1fe834cc89da2 Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Mon, 7 Jun 2021 15:52:34 +0530 Subject: [PATCH 08/10] moving spring service layer validation code --- spring-service-layer-validation/.gitignore | 63 --------------- spring-service-layer-validation/README.md | 12 --- spring-service-layer-validation/pom.xml | 46 ----------- .../SpringServiceLayerValidationApp.java | 13 ---- .../controller/UserAccountController.java | 22 ------ .../servicevalidation/dao/UserAccountDao.java | 32 -------- .../servicevalidation/domain/UserAccount.java | 77 ------------------- .../servicevalidation/domain/UserAddress.java | 17 ---- .../service/UserAccountService.java | 44 ----------- 9 files changed, 326 deletions(-) delete mode 100644 spring-service-layer-validation/.gitignore delete mode 100644 spring-service-layer-validation/README.md delete mode 100644 spring-service-layer-validation/pom.xml delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java delete mode 100644 spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-service-layer-validation/.gitignore b/spring-service-layer-validation/.gitignore deleted file mode 100644 index 8f5ee06047..0000000000 --- a/spring-service-layer-validation/.gitignore +++ /dev/null @@ -1,63 +0,0 @@ -# Created by https://www.gitignore.io/api/eclipse - -### Eclipse ### - -.metadata -target/ -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -### Eclipse Patch ### -# Eclipse Core -.project - -# JDT-specific (Eclipse Java Development Tools) -.classpath - -# End of https://www.gitignore.io/api/eclipse \ No newline at end of file diff --git a/spring-service-layer-validation/README.md b/spring-service-layer-validation/README.md deleted file mode 100644 index 674831d6a5..0000000000 --- a/spring-service-layer-validation/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## Spring Boot MVC - -This module contains articles about validation in Service layer of Spring Boot project. - -### Relevant Articles: - -- [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) -- [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) -- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) -- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) -- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) -- More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) diff --git a/spring-service-layer-validation/pom.xml b/spring-service-layer-validation/pom.xml deleted file mode 100644 index 31ec757699..0000000000 --- a/spring-service-layer-validation/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - 4.0.0 - - com.baeldung.spring-service-layer-validation - spring-service-layer-validation - 0.0.1-SNAPSHOT - - - UTF-8 - 12 - 12 - - - - org.springframework.boot - spring-boot-starter-parent - 2.4.5 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.hibernate.validator - hibernate-validator - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java deleted file mode 100644 index ea80a5da33..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.spring.servicevalidation; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SpringServiceLayerValidationApp { - - public static void main(String[] args) { - SpringApplication.run(SpringServiceLayerValidationApp.class, args); - } - -} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java deleted file mode 100644 index b558ed89c2..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.spring.servicevalidation.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import com.baeldung.spring.servicevalidation.domain.UserAccount; -import com.baeldung.spring.servicevalidation.service.UserAccountService; - -@RestController -public class UserAccountController { - - @Autowired - private UserAccountService service; - - @PostMapping("/addUserAccount") - public Object addUserAccount(@RequestBody UserAccount userAccount) { - return service.addUserAccount(userAccount); - } - -} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java deleted file mode 100644 index d170ceef58..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.spring.servicevalidation.dao; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import org.springframework.stereotype.Service; - -import com.baeldung.spring.servicevalidation.domain.UserAccount; - -@Service -public class UserAccountDao { - - private Map DB = new HashMap(); - - public String addUserAccount(UserAccount useraccount) { - DB.put(useraccount.getName(), useraccount); - return "success"; - } - - public Collection getAllUserAccounts() { - - Collection list = DB.values(); - if(list.isEmpty()) { - list.addAll(DB.values()); - } - return list; - - } - - -} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java deleted file mode 100644 index 5b0e795a8a..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.baeldung.spring.servicevalidation.domain; - -import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; - -public class UserAccount { - - @NotNull(message = "Password must be between 4 to 15 characters") - @Size(min = 4, max = 15) - private String password; - - @NotBlank(message = "Name must not be blank") - private String name; - - @Min(value = 18, message = "Age should not be less than 18") - private int age; - - @NotBlank(message = "Phone must not be blank") - private String phone; - - @Valid - @NotNull(message = "UserAddress must not be blank") - private UserAddress useraddress; - - public UserAddress getUseraddress() { - return useraddress; - } - - public void setUseraddress(UserAddress useraddress) { - this.useraddress = useraddress; - } - - public UserAccount() { - - } - - public UserAccount(String email, String password, String name, int age) { - this.password = password; - this.name = name; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - -} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java deleted file mode 100644 index 85e7dfc05c..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring.servicevalidation.domain; - -import javax.validation.constraints.NotBlank; -public class UserAddress { - - @NotBlank - private String countryCode; - - public String getCountryCode() { - return countryCode; - } - - public void setCountryCode(String countryCode) { - this.countryCode = countryCode; - } - -} diff --git a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java deleted file mode 100644 index 9a376fda6b..0000000000 --- a/spring-service-layer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.spring.servicevalidation.service; - -import java.util.Set; - -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; -import javax.validation.Validator; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.baeldung.spring.servicevalidation.dao.UserAccountDao; -import com.baeldung.spring.servicevalidation.domain.UserAccount; - -@Service -public class UserAccountService { - - @Autowired - private Validator validator; - - @Autowired - private UserAccountDao dao; - - public String addUserAccount(UserAccount useraccount) { - - Set> violations = validator.validate(useraccount); - - if (!violations.isEmpty()) { - StringBuilder sb = new StringBuilder(); - for (ConstraintViolation constraintViolation : violations) { - sb.append(constraintViolation.getMessage()); - } - - dao.addUserAccount(useraccount); - - throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); - } - - - - return "Account for " + useraccount.getName() + " Added!"; - } - -} From d63ff1db3291a6d2843e3e5dcfed8909329d8e6f Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Sat, 24 Jul 2021 14:21:40 +0530 Subject: [PATCH 09/10] syncing with master --- .../.gitignore | 63 --------------- .../README.md | 4 - .../pom.xml | 46 ----------- .../SpringServiceLayerValidationApp.java | 13 ---- .../controller/UserAccountController.java | 22 ------ .../servicevalidation/dao/UserAccountDao.java | 32 -------- .../servicevalidation/domain/UserAccount.java | 77 ------------------- .../servicevalidation/domain/UserAddress.java | 17 ---- .../service/UserAccountService.java | 42 ---------- 9 files changed, 316 deletions(-) delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/.gitignore delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/README.md delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/pom.xml delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java delete mode 100644 spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/.gitignore b/spring-boot-modules/spring-boot-servicelayer-validation/.gitignore deleted file mode 100644 index 8f5ee06047..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/.gitignore +++ /dev/null @@ -1,63 +0,0 @@ -# Created by https://www.gitignore.io/api/eclipse - -### Eclipse ### - -.metadata -target/ -bin/ -tmp/ -*.tmp -*.bak -*.swp -*~.nib -local.properties -.settings/ -.loadpath -.recommenders - -# External tool builders -.externalToolBuilders/ - -# Locally stored "Eclipse launch configurations" -*.launch - -# PyDev specific (Python IDE for Eclipse) -*.pydevproject - -# CDT-specific (C/C++ Development Tooling) -.cproject - -# Java annotation processor (APT) -.factorypath - -# PDT-specific (PHP Development Tools) -.buildpath - -# sbteclipse plugin -.target - -# Tern plugin -.tern-project - -# TeXlipse plugin -.texlipse - -# STS (Spring Tool Suite) -.springBeans - -# Code Recommenders -.recommenders/ - -# Scala IDE specific (Scala & Java development for Eclipse) -.cache-main -.scala_dependencies -.worksheet - -### Eclipse Patch ### -# Eclipse Core -.project - -# JDT-specific (Eclipse Java Development Tools) -.classpath - -# End of https://www.gitignore.io/api/eclipse \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/README.md b/spring-boot-modules/spring-boot-servicelayer-validation/README.md deleted file mode 100644 index 7c39135db6..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/README.md +++ /dev/null @@ -1,4 +0,0 @@ -## Spring Service Layer Validation - -This module contains articles about validation in Service layer of Spring Boot project. - diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/pom.xml b/spring-boot-modules/spring-boot-servicelayer-validation/pom.xml deleted file mode 100644 index 31ec757699..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/pom.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - 4.0.0 - - com.baeldung.spring-service-layer-validation - spring-service-layer-validation - 0.0.1-SNAPSHOT - - - UTF-8 - 12 - 12 - - - - org.springframework.boot - spring-boot-starter-parent - 2.4.5 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.hibernate.validator - hibernate-validator - - - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java deleted file mode 100644 index ea80a5da33..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/SpringServiceLayerValidationApp.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.spring.servicevalidation; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class SpringServiceLayerValidationApp { - - public static void main(String[] args) { - SpringApplication.run(SpringServiceLayerValidationApp.class, args); - } - -} diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java deleted file mode 100644 index b558ed89c2..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/controller/UserAccountController.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.baeldung.spring.servicevalidation.controller; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import com.baeldung.spring.servicevalidation.domain.UserAccount; -import com.baeldung.spring.servicevalidation.service.UserAccountService; - -@RestController -public class UserAccountController { - - @Autowired - private UserAccountService service; - - @PostMapping("/addUserAccount") - public Object addUserAccount(@RequestBody UserAccount userAccount) { - return service.addUserAccount(userAccount); - } - -} diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java deleted file mode 100644 index d170ceef58..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/dao/UserAccountDao.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.spring.servicevalidation.dao; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - -import org.springframework.stereotype.Service; - -import com.baeldung.spring.servicevalidation.domain.UserAccount; - -@Service -public class UserAccountDao { - - private Map DB = new HashMap(); - - public String addUserAccount(UserAccount useraccount) { - DB.put(useraccount.getName(), useraccount); - return "success"; - } - - public Collection getAllUserAccounts() { - - Collection list = DB.values(); - if(list.isEmpty()) { - list.addAll(DB.values()); - } - return list; - - } - - -} diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java deleted file mode 100644 index 5b0e795a8a..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAccount.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.baeldung.spring.servicevalidation.domain; - -import javax.validation.Valid; -import javax.validation.constraints.Min; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; - -public class UserAccount { - - @NotNull(message = "Password must be between 4 to 15 characters") - @Size(min = 4, max = 15) - private String password; - - @NotBlank(message = "Name must not be blank") - private String name; - - @Min(value = 18, message = "Age should not be less than 18") - private int age; - - @NotBlank(message = "Phone must not be blank") - private String phone; - - @Valid - @NotNull(message = "UserAddress must not be blank") - private UserAddress useraddress; - - public UserAddress getUseraddress() { - return useraddress; - } - - public void setUseraddress(UserAddress useraddress) { - this.useraddress = useraddress; - } - - public UserAccount() { - - } - - public UserAccount(String email, String password, String name, int age) { - this.password = password; - this.name = name; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getPassword() { - return password; - } - - public void setPassword(String password) { - this.password = password; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public String getPhone() { - return phone; - } - - public void setPhone(String phone) { - this.phone = phone; - } - -} diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java deleted file mode 100644 index 85e7dfc05c..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/domain/UserAddress.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.spring.servicevalidation.domain; - -import javax.validation.constraints.NotBlank; -public class UserAddress { - - @NotBlank - private String countryCode; - - public String getCountryCode() { - return countryCode; - } - - public void setCountryCode(String countryCode) { - this.countryCode = countryCode; - } - -} diff --git a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java deleted file mode 100644 index 417e9a32b7..0000000000 --- a/spring-boot-modules/spring-boot-servicelayer-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.spring.servicevalidation.service; - -import java.util.Set; - -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; -import javax.validation.Validator; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.baeldung.spring.servicevalidation.dao.UserAccountDao; -import com.baeldung.spring.servicevalidation.domain.UserAccount; - -@Service -public class UserAccountService { - - @Autowired - private Validator validator; - - @Autowired - private UserAccountDao dao; - - public String addUserAccount(UserAccount useraccount) { - - Set> violations = validator.validate(useraccount); - - if (!violations.isEmpty()) { - StringBuilder sb = new StringBuilder(); - for (ConstraintViolation constraintViolation : violations) { - sb.append(constraintViolation.getMessage()); - } - - dao.addUserAccount(useraccount); - - throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); - } - - return "Account for " + useraccount.getName() + " Added!"; - } - -} From 6b3e8de50fdce89a4525b515c9c8eeb48effd692 Mon Sep 17 00:00:00 2001 From: Ravi Avhad Date: Sat, 24 Jul 2021 14:25:40 +0530 Subject: [PATCH 10/10] Moving method addUserAccount out of conditional block which checks for contraint violations --- .../spring/servicevalidation/service/UserAccountService.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java b/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java index 417e9a32b7..9d79e4e226 100644 --- a/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java +++ b/spring-boot-modules/spring-boot-validation/src/main/java/com/baeldung/spring/servicevalidation/service/UserAccountService.java @@ -31,11 +31,10 @@ public class UserAccountService { sb.append(constraintViolation.getMessage()); } - dao.addUserAccount(useraccount); - throw new ConstraintViolationException("Error occurred: " + sb.toString(), violations); } + dao.addUserAccount(useraccount); return "Account for " + useraccount.getName() + " Added!"; }