Repository: openmeetings
Updated Branches:
  refs/heads/master f2a22dcd7 -> e81d12eaf


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
index ed02171..baef490 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/ActivatePage.java
@@ -20,30 +20,28 @@ package org.apache.openmeetings.web.pages;
 
 import static org.apache.openmeetings.web.app.Application.getBean;
 
-import java.util.Date;
-
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
 import org.apache.openmeetings.web.app.Application;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.util.string.StringValue;
 
 public class ActivatePage extends BaseNotInitedPage {
        private static final long serialVersionUID = 1L;
        public static final String ACTIVATION_PARAM = "u";
-       
+
        public ActivatePage(PageParameters pp) {
-               String userHash = pp.get(ACTIVATION_PARAM).toString();
-               if (userHash != null) {
-                       User user = 
getBean(UserDao.class).getUserByActivationHash(userHash);
+               StringValue userHash = pp.get(ACTIVATION_PARAM);
+               if (!userHash.isEmpty()) {
+                       User user = 
getBean(UserDao.class).getByActivationHash(userHash.toString());
 
                        if (user != null && 
!AuthLevelUtil.hasLoginLevel(user.getRights())) {
                                // activate
                                user.getRights().add(Right.Login);
-                               user.setUpdated(new Date());
-
-                               getBean(UserDao.class).update(user, null);
+                               user.setActivatehash(null);
+                               getBean(UserDao.class).update(user, 
user.getId());
                        }
                }
                setResponsePage(Application.get().getSignInPageClass());

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
index 402853b..888f798 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ForgetPasswordDialog.java
@@ -22,6 +22,7 @@ import static 
org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.apache.openmeetings.web.app.Application.getBean;
 
 import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
 import java.util.UUID;
 
@@ -238,7 +239,8 @@ public class ForgetPasswordDialog extends 
AbstractFormDialog<String> {
        private static void sendHashByUser(User us, String appLink, UserDao 
userDao) {
                log.debug("User: " + us.getLogin());
                us.setResethash(UUID.randomUUID().toString());
-               userDao.update(us, -1L);
+               us.setResetDate(new Date());
+               userDao.update(us, null);
                String reset_link = appLink + "?hash=" + us.getResethash();
 
                String email = us.getAddress().getEmail();

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
index bb19049..05efde5 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/ResetPasswordDialog.java
@@ -20,11 +20,11 @@ package org.apache.openmeetings.web.pages.auth;
 
 import static org.apache.openmeetings.db.util.UserHelper.getMinPasswdLength;
 import static org.apache.openmeetings.web.app.Application.getBean;
-import static 
org.apache.wicket.validation.validator.StringValidator.minimumLength;
 
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.user.User;
@@ -52,11 +52,16 @@ public class ResetPasswordDialog extends 
NonClosableDialog<String> {
        private final KendoFeedbackPanel feedback = new 
KendoFeedbackPanel("feedback", new Options("button", true));
        private PasswordTextField password;
        private final User user;
-       final MessageDialog confirmReset;
+       MessageDialog confirmReset;
 
        public ResetPasswordDialog(String id, final User user) {
                super(id, Application.getString(325));
                this.user = user;
+       }
+
+       @Override
+       protected void onInitialize() {
+               super.onInitialize();
                add(form = new Form<String>("form") {
                        private static final long serialVersionUID = 1L;
                        private TextField<String> login;
@@ -66,14 +71,11 @@ public class ResetPasswordDialog extends 
NonClosableDialog<String> {
                                add(login = new TextField<>("login", 
Model.of(user.getLogin())));
                                login.setOutputMarkupId(true);
                                add(password = new 
PasswordTextField("password", new Model<String>()));
-                               password.setOutputMarkupId(true);
-                               
password.setLabel(Model.of(Application.getString(328)));
+                               
password.setLabel(Model.of(getString("328"))).setOutputMarkupId(true);
                                ConfigurationDao cfgDao = 
getBean(ConfigurationDao.class);
-                               
password.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
+                               password.setRequired(false).add(new 
StrongPasswordValidator(getMinPasswdLength(cfgDao), user));
                                add(confirmPassword = new 
PasswordTextField("confirmPassword", new Model<String>()));
-                               confirmPassword.setOutputMarkupId(true);
-                               
confirmPassword.setLabel(Model.of(Application.getString(329)));
-                               
confirmPassword.setRequired(true).add(minimumLength(getMinPasswdLength(cfgDao)));
+                               
confirmPassword.setLabel(Model.of(getString("329"))).setOutputMarkupId(true);
 
                                add(new AjaxButton("submit") { // FAKE button 
so "submit-on-enter" works as expected
                                        private static final long 
serialVersionUID = 1L;
@@ -94,13 +96,13 @@ public class ResetPasswordDialog extends 
NonClosableDialog<String> {
                        protected void onValidate() {
                                String pass = password.getConvertedInput();
                                if (pass != null && !pass.isEmpty() && 
!pass.equals(confirmPassword.getConvertedInput())) {
-                                       error(Application.getString(232));
+                                       error(getString("232"));
                                }
                                super.onValidate();
                        }
 
                });
-               confirmReset = new NonClosableMessageDialog("confirmReset", 
Application.getString(325), Application.getString(332)) {
+               confirmReset = new NonClosableMessageDialog("confirmReset", 
getString("325"), getString("332")) {
                        private static final long serialVersionUID = 1L;
 
                        @Override

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
index b19e99f..1aa4bb3 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
@@ -41,7 +41,9 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
+import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.label.LabelDao;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.installation.ImportInitvalues;
 import org.apache.openmeetings.installation.InstallationConfig;
 import org.apache.openmeetings.util.ConnectionProperties;
@@ -424,7 +426,8 @@ public class InstallWizard extends 
AbstractWizard<InstallationConfig> {
                        super.onInitialize();
                        add(new 
RequiredTextField<String>("username").setLabel(Model.of(getString("install.wizard.params.step1.username"))).add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
                        add(new PasswordTextField("password")
-                                       
.setResetPassword(false).setLabel(Model.of(getString("install.wizard.params.step1.password"))).add(minimumLength(USER_PASSWORD_MINIMUM_LENGTH)));
+                                       
.setResetPassword(false).setLabel(Model.of(getString("install.wizard.params.step1.password")))
+                                       .add(new 
StrongPasswordValidator(USER_PASSWORD_MINIMUM_LENGTH, new User())));
                        add(new 
RequiredTextField<String>("email").setLabel(Model.of(getString("install.wizard.params.step1.email"))).add(RfcCompliantEmailAddressValidator.getInstance()));
                        add(new 
RequiredTextField<String>("group").setLabel(Model.of(getString("install.wizard.params.step1.group"))));
                }

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
index 111dc66..bc0744d 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
@@ -127,12 +127,11 @@ public class StartSharingButton extends OmButton {
        private static String getLabels(int ... ids) {
                StringBuilder result = new StringBuilder(CDATA_BEGIN);
                boolean delim = false;
-               LabelDao labelDao = getBean(LabelDao.class);
                for (int id : ids) {
                        if (delim) {
                                result.append(';');
                        }
-                       result.append(labelDao.getString(id, getLanguage()));
+                       result.append(LabelDao.getString(id, getLanguage()));
                        delim = true;
                }
                result.append(CDATA_END);

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
index dce1914..99674d6 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/applicationContext.xml
@@ -87,30 +87,41 @@
        <bean id="openmeetings.RecordingConverter" 
class="org.apache.openmeetings.core.converter.RecordingConverter" />
        <bean id="openmeetings.SlaveHTTPConnectionManager" 
class="org.apache.openmeetings.webservice.cluster.SlaveHTTPConnectionManager" />
 
-        <!--   1800000 == 30 min
-                       3600000 == 1 hour
-                       5000    == 5 sec
-                       300000  == 5 min
-                       900000  == 15 min
+       <!--
+                       5000            == 5 sec
+                       300000          == 5 min
+                       900000          == 15 min
+                       1800000         == 30 min
+                       3600000         == 1 hour
+                       86400000        == 1 day
         -->
        <bean id="cleanupJob" 
class="org.apache.openmeetings.service.quartz.scheduler.CleanupJob"
-                       p:sessionTimeout="1800000" p:testSetupTimeout="3600000" 
p:roomFilesTtl="3600000" />
+                       p:sessionTimeout="1800000" p:testSetupTimeout="3600000" 
p:roomFilesTtl="3600000" p:resetHashTtl="86400000" />
+       <!-- sessions clean-up -->
        <bean id="cleanSessionsJobDetails" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="cleanupJob" 
p:targetMethod="cleanSessions" p:concurrent="false" />
        <bean id="triggerCleanSessions" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
                        p:jobDetail-ref="cleanSessionsJobDetails" 
p:startDelay="5000" p:repeatInterval="300000" />
+       <!-- test setup clean-up -->
        <bean id="cleanTestSetupJobDetail" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="cleanupJob" 
p:targetMethod="cleanTestSetup" p:concurrent="false" />
        <bean id="triggerCleanTestSetup" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
                        p:jobDetail-ref="cleanTestSetupJobDetail" 
p:startDelay="1800000" p:repeatInterval="1800000" />
+       <!-- room files clean-up -->
        <bean id="cleanRoomFilesJobDetail" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="cleanupJob" 
p:targetMethod="cleanRoomFiles" p:concurrent="false" />
        <bean id="triggerCleanRoomFiles" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
-                       p:jobDetail-ref="cleanRoomFilesJobDetail" 
p:startDelay="10000" p:repeatInterval="1800000" /> <!-- p:startDelay="1800000" 
-->
+                       p:jobDetail-ref="cleanRoomFilesJobDetail" 
p:startDelay="10000" p:repeatInterval="1800000" />
+       <!-- expired recordings clean-up -->
        <bean id="cleanExpiredRecJobDetails" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
                        p:targetObject-ref="cleanupJob" 
p:targetMethod="cleanExpiredRecordings" p:concurrent="false" />
        <bean id="triggerCleanExpiredRec" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
                        p:jobDetail-ref="cleanExpiredRecJobDetails" 
p:startDelay="5000" p:repeatInterval="3600000" />
+       <!-- expired reset hash -->
+       <bean id="cleanExpiredResetHashJobDetails" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
+                       p:targetObject-ref="cleanupJob" 
p:targetMethod="cleanExpiredResetHash" p:concurrent="false" />
+       <bean id="triggerCleanExpiredResetHash" 
class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean"
+                       p:jobDetail-ref="cleanExpiredResetHashJobDetails" 
p:startDelay="5000" p:repeatInterval="3600000" />
 
        <bean id="reminderJob" 
class="org.apache.openmeetings.service.quartz.scheduler.ReminderJob"/>
        <bean id="meetingReminderJobDetail" 
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
@@ -140,6 +151,7 @@
                                <ref bean="triggerCleanTestSetup" />
                                <ref bean="triggerCleanRoomFiles" />
                                <ref bean="triggerCleanExpiredRec" />
+                               <ref bean="triggerCleanExpiredResetHash" />
                                <ref bean="triggerMeetingReminder" />
                                <ref bean="triggerExpiringRecording" />
                                <ref bean="triggerResetSendingMailStatus" />

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/main/webapp/css/theme.css
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/webapp/css/theme.css 
b/openmeetings-web/src/main/webapp/css/theme.css
index aff4d76..1457d6c 100644
--- a/openmeetings-web/src/main/webapp/css/theme.css
+++ b/openmeetings-web/src/main/webapp/css/theme.css
@@ -445,7 +445,7 @@ html, body {
 .offline.om-icon {
        background-image: url(images/bullet_red.png);
 }
-.signin .error .k-notification-wrap {
+.signin .error .k-notification-wrap, .adminPanel .k-notification-wrap {
        white-space: normal;
 }
 .error {

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
 
b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
index 0869fad..7613c77 100644
--- 
a/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
+++ 
b/openmeetings-web/src/test/java/org/apache/openmeetings/test/selenium/AbstractTestDefaults.java
@@ -30,13 +30,9 @@ import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
 import org.openqa.selenium.firefox.FirefoxDriver;
 import org.openqa.selenium.firefox.FirefoxProfile;
-import org.springframework.beans.factory.annotation.Autowired;
 
 @Category(SeleniumTests.class)
 public abstract class AbstractTestDefaults extends AbstractSpringTest {
-       @Autowired
-       private LabelDao labelDao;
-
        public WebDriver driver = null;
 
        private String BASE_URL = "http://localhost:5080/openmeetings";;
@@ -81,7 +77,7 @@ public abstract class AbstractTestDefaults extends 
AbstractSpringTest {
        public boolean doTearDownAfterTest = false;
 
        public String getString(long id) {
-               return labelDao.getString(id, getLanguageId());
+               return LabelDao.getString(id, getLanguageId());
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
index 87599ea..f5a0a1a 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/ErrorWebService.java
@@ -44,11 +44,11 @@ import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 
 /**
- * 
+ *
  * The Service contains methods to get localized errors
- * 
+ *
  * @author solomax
- * 
+ *
  */
 @WebService(serviceName="org.apache.openmeetings.webservice.ErrorWebService", 
targetNamespace = TNS)
 @Features(features = "org.apache.cxf.feature.LoggingFeature")
@@ -60,8 +60,6 @@ public class ErrorWebService {
        @Autowired
        private ErrorDao errorDao;
        @Autowired
-       private LabelDao labelDao;
-       @Autowired
        private SessiondataDao sessionDao;
 
        /**
@@ -69,12 +67,12 @@ public class ErrorWebService {
         * Error-id, it needs a languageId to specify in which language you 
want to
         * display/read the error-message. English has the Language-ID one, for
         * different one see the list of languages
-        * 
+        *
         * @param id
         *            the error id (negative Value here!)
         * @param lang
         *            The id of the language
-        *            
+        *
         * @return - error with the code given
         */
        @WebMethod
@@ -87,8 +85,8 @@ public class ErrorWebService {
                                if (eValues != null) {
                                        log.debug("eValues.getLabelId() = " + 
eValues.getLabelId());
                                        log.debug("eValues.getErrorType() = " + 
eValues.getType());
-                                       String eValue = 
labelDao.getString(eValues.getLabelId(), lang);
-                                       String tValue = 
labelDao.getString("error.type." + eValues.getType().name(), lang);
+                                       String eValue = 
LabelDao.getString(eValues.getLabelId(), lang);
+                                       String tValue = 
LabelDao.getString("error.type." + eValues.getType().name(), lang);
                                        if (eValue != null) {
                                                return new ServiceResult(id, 
eValue, tValue);
                                        }
@@ -101,7 +99,7 @@ public class ErrorWebService {
                }
                return null;
        }
-       
+
        @WebMethod
        @POST
        @Path("/report/")

http://git-wip-us.apache.org/repos/asf/openmeetings/blob/e81d12ea/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
index 0ff9f7f..2297d57 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/UserWebService.java
@@ -43,6 +43,7 @@ import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.feature.Features;
 import org.apache.openmeetings.IApplication;
+import org.apache.openmeetings.core.util.StrongPasswordValidator;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.db.dao.server.SOAPLoginDao;
 import org.apache.openmeetings.db.dao.server.SessiondataDao;
@@ -59,12 +60,17 @@ import org.apache.openmeetings.db.entity.user.Address;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.entity.user.User.Right;
 import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.db.util.UserHelper;
 import org.apache.openmeetings.util.OmException;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
 import org.apache.openmeetings.webservice.cluster.UserService;
 import org.apache.openmeetings.webservice.error.ServiceException;
 import org.apache.wicket.Application;
 import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.validation.IValidationError;
+import org.apache.wicket.validation.IValidator;
+import org.apache.wicket.validation.Validatable;
+import org.apache.wicket.validation.ValidationError;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -171,6 +177,16 @@ public class UserWebService implements UserService {
                                if (user.getLanguageId() == null) {
                                        user.setLanguageId(1L);
                                }
+                               IValidator<String> passValidator = new 
StrongPasswordValidator(true, UserHelper.getMinPasswdLength(cfgDao), 
user.get(userDao));
+                               Validatable<String> passVal = new 
Validatable<>(user.getPassword());
+                               passValidator.validate(passVal);
+                               if (!passVal.isValid()) {
+                                       StringBuilder sb = new StringBuilder();
+                                       for (IValidationError err : 
passVal.getErrors()) {
+                                               
sb.append(((ValidationError)err).getMessage()).append(System.lineSeparator());
+                                       }
+                                       throw new 
ServiceException(sb.toString());
+                               }
                                Long userId = 
userManagement.registerUser(user.getLogin(), user.getPassword(),
                                                user.getLastname(), 
user.getFirstname(), user.getAddress().getEmail(), new Date(), 
user.getAddress().getStreet(),
                                                
user.getAddress().getAdditionalname(), user.getAddress().getFax(), 
user.getAddress().getZip(), user.getAddress().getCountry()

Reply via email to