diff --git a/poulpe-model/src/main/resources/org/jtalks/poulpe/model/entity/applicationContext-dao.xml b/poulpe-model/src/main/resources/org/jtalks/poulpe/model/entity/applicationContext-dao.xml
index 67922ff81..fdb11cc9a 100644
--- a/poulpe-model/src/main/resources/org/jtalks/poulpe/model/entity/applicationContext-dao.xml
+++ b/poulpe-model/src/main/resources/org/jtalks/poulpe/model/entity/applicationContext-dao.xml
@@ -31,6 +31,8 @@
pointcut="execution(* org.jtalks.common.model.dao.Crud+.* (*))"/>
+
+
diff --git a/poulpe-service/src/main/java/org/jtalks/poulpe/service/transactional/TransactionalUserService.java b/poulpe-service/src/main/java/org/jtalks/poulpe/service/transactional/TransactionalUserService.java
index 3e939be98..33d87d1e7 100644
--- a/poulpe-service/src/main/java/org/jtalks/poulpe/service/transactional/TransactionalUserService.java
+++ b/poulpe-service/src/main/java/org/jtalks/poulpe/service/transactional/TransactionalUserService.java
@@ -32,14 +32,14 @@
import org.jtalks.poulpe.service.UserService;
import org.jtalks.poulpe.service.exceptions.ValidationException;
import org.springframework.transaction.interceptor.TransactionInterceptor;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+import org.springframework.validation.Validator;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
/**
* User service class, contains methods needed to manipulate with {@code User} persistent entity.
@@ -56,6 +56,7 @@ public class TransactionalUserService implements UserService {
private final UserBanner userBanner;
private final AclManager aclManager;
private final ComponentDao componentDao;
+ private Validator validator;
/**
@@ -65,11 +66,12 @@ public class TransactionalUserService implements UserService {
* entities
*/
public TransactionalUserService(UserDao userDao, UserBanner userBanner,
- AclManager aclManager, ComponentDao componentDao) {
+ AclManager aclManager, ComponentDao componentDao, Validator validator) {
this.userDao = userDao;
this.userBanner = userBanner;
this.aclManager = aclManager;
this.componentDao = componentDao;
+ this.validator = validator;
}
/**
@@ -298,6 +300,17 @@ private PoulpeUser getPoulpeUser(String username) throws NotFoundException {
@Override
public void registration(PoulpeUser user) throws ValidationException {
List errors = new ArrayList();
+
+ BindingResult validateErrors = new BeanPropertyBindingResult(user, "user");
+ validator.validate(user, validateErrors);
+ for (FieldError error : validateErrors.getFieldErrors()) {
+ if (error.getCodes() != null && error.getCodes().length > 0) {
+ errors.add(error.getCodes()[0]);
+ } else {
+ errors.add(error.getDefaultMessage());
+ }
+ }
+
if (userDao.getByUsername(user.getUsername()) != null) {
errors.add(User.USER_ALREADY_EXISTS);
}
diff --git a/poulpe-service/src/main/resources/org/jtalks/poulpe/service/applicationContext-service.xml b/poulpe-service/src/main/resources/org/jtalks/poulpe/service/applicationContext-service.xml
index 509f1d17f..147dccff4 100644
--- a/poulpe-service/src/main/resources/org/jtalks/poulpe/service/applicationContext-service.xml
+++ b/poulpe-service/src/main/resources/org/jtalks/poulpe/service/applicationContext-service.xml
@@ -90,6 +90,7 @@
+
diff --git a/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/BeginTransactionTest.java b/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/BeginTransactionTest.java
index 774987a8a..b1910dd4d 100644
--- a/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/BeginTransactionTest.java
+++ b/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/BeginTransactionTest.java
@@ -25,13 +25,12 @@
import org.springframework.test.context.testng.AbstractTransactionalTestNGSpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.validation.Validator;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
@ContextConfiguration(locations = {"classpath:/org/jtalks/poulpe/model/entity/applicationContext-dao.xml"})
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@@ -44,6 +43,7 @@ public class BeginTransactionTest extends AbstractTransactionalTestNGSpringConte
private UserDao userDao;
private ComponentDao componentDaoMock;
private AclManager aclManagerMock;
+ private Validator validator;
@BeforeMethod
public void setUp() {
@@ -51,7 +51,8 @@ public void setUp() {
userDao = mock(UserDao.class);
componentDaoMock = mock(ComponentDao.class);
aclManagerMock = mock(AclManager.class);
- userService = new TransactionalUserService(userDao, mock(UserBanner.class), aclManagerMock, componentDaoMock);
+ validator = mock(Validator.class);
+ userService = new TransactionalUserService(userDao, mock(UserBanner.class), aclManagerMock, componentDaoMock, validator);
}
@Test(enabled = false)
diff --git a/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/TransactionalUserServiceTest.java b/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/TransactionalUserServiceTest.java
index 13184ef4e..871447d76 100644
--- a/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/TransactionalUserServiceTest.java
+++ b/poulpe-service/src/test/java/org/jtalks/poulpe/service/transactional/TransactionalUserServiceTest.java
@@ -32,6 +32,7 @@
import org.jtalks.poulpe.model.sorting.UserSearchRequest;
import org.jtalks.poulpe.service.exceptions.ValidationException;
import org.mockito.MockitoAnnotations;
+import org.springframework.validation.Validator;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -54,7 +55,7 @@
* @author maxim reshetov
*/
-public class TransactionalUserServiceTest{
+public class TransactionalUserServiceTest {
private static final String USERNAME = "username";
private static final String HASED_PASSWORD = "password";
private static final PoulpeUser POULPE_USER = new PoulpeUser(USERNAME, "email", HASED_PASSWORD, "salt");
@@ -71,6 +72,7 @@ public class TransactionalUserServiceTest{
final String searchString = "searchString";
private ComponentDao componentDaoMock;
private AclManager aclManagerMock;
+ private Validator validator;
@BeforeMethod
public void setUp() {
@@ -78,7 +80,8 @@ public void setUp() {
userDao = mock(UserDao.class);
componentDaoMock = mock(ComponentDao.class);
aclManagerMock = mock(AclManager.class);
- userService = new TransactionalUserService(userDao, mock(UserBanner.class), aclManagerMock, componentDaoMock);
+ validator = mock(Validator.class);
+ userService = new TransactionalUserService(userDao, mock(UserBanner.class), aclManagerMock, componentDaoMock, validator);
}
@Test
@@ -126,8 +129,8 @@ public void testUpdateUser() {
public void TestFindUsersNotInList(){
List users = new ArrayList();
users.add(user());
- userService.findUsersNotInList(searchString,users);
- verify(userDao).findUsersNotInList(searchString,users, Pages.NONE);
+ userService.findUsersNotInList(searchString, users);
+ verify(userDao).findUsersNotInList(searchString, users, Pages.NONE);
}
@Test