Author: vjrj_ Date: 2011-08-14 13:54:12 +0200 (Sun, 14 Aug 2011) New Revision: 1495 Added: trunk/src/main/java/cc/kune/core/client/errors/GroupLongNameInUseException.java trunk/src/main/java/cc/kune/core/client/errors/GroupShortNameInUseException.java Removed: trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java trunk/src/main/java/cc/kune/core/client/auth/SignInView.java trunk/src/main/java/cc/kune/core/client/errors/GroupNameInUseException.java Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java trunk/src/main/java/cc/kune/core/public/ws.css trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java trunk/src/main/java/cc/kune/domain/Group.java trunk/src/main/java/cc/kune/domain/User.java trunk/src/main/java/cc/kune/domain/finders/GroupFinder.java trunk/src/main/java/cc/kune/domain/finders/UserFinder.java trunk/src/test/java/cc/kune/core/server/finders/UserFinderTest.java trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java Log: CLOSED - # 85: When user registration fails (for any reason) sometimes we don't clean the welcome wave and similars http://kune.ourproject.org/issues/ticket/85 Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -34,11 +34,11 @@ import cc.kune.core.client.auth.Register; import cc.kune.core.client.auth.RegisterPanel; import cc.kune.core.client.auth.RegisterPresenter; -import cc.kune.core.client.auth.RegisterView; +import cc.kune.core.client.auth.RegisterPresenter.RegisterView; import cc.kune.core.client.auth.SignIn; import cc.kune.core.client.auth.SignInPanel; import cc.kune.core.client.auth.SignInPresenter; -import cc.kune.core.client.auth.SignInView; +import cc.kune.core.client.auth.SignInPresenter.SignInView; import cc.kune.core.client.auth.UserPassAutocompleteManager; import cc.kune.core.client.auth.UserPassAutocompleteManagerImpl; import cc.kune.core.client.cookies.CookiesManager; Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/RegisterForm.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -125,4 +125,16 @@ public Field<String> getShortNameField() { return shortNameRegField; } + + public void setEmailFailed(final String msg) { + emailRegField.markInvalid(msg); + } + + public void setLongNameFailed(final String msg) { + longNameRegField.markInvalid(msg); + } + + public void setShortNameFailed(final String msg) { + shortNameRegField.markInvalid(msg); + } } Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPanel.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -22,6 +22,7 @@ import cc.kune.common.client.notify.NotifyLevelImages; import cc.kune.common.client.ui.MaskWidgetView; import cc.kune.common.client.ui.dialogs.MessageToolbar; +import cc.kune.core.client.auth.RegisterPresenter.RegisterView; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.state.Session; import cc.kune.core.client.ui.KuneUiUtils; @@ -33,80 +34,95 @@ public class RegisterPanel extends SignInAbstractPanel implements RegisterView { - public static final String CANCEL_BUTTON_ID = "k-regp-cb"; + public static final String CANCEL_BUTTON_ID = "k-regp-cb"; - public static final String ERRMSG = "k-regp-errmsg"; + public static final String ERRMSG = "k-regp-errmsg"; - public static final String REGISTER_BUTTON_ID = "k-regp-rb"; - public static final String REGISTER_DIALOG = "k-regp-dialog"; - public static final String REGISTER_FORM = "k-regp-p"; - public static final String WELCOME_DIALOG = "k-regp-wdiag"; - public static final String WELCOME_OK_BUTTON = "k-regp-okbt"; - private final RegisterForm registerForm; + public static final String REGISTER_BUTTON_ID = "k-regp-rb"; + public static final String REGISTER_DIALOG = "k-regp-dialog"; + public static final String REGISTER_FORM = "k-regp-p"; + public static final String WELCOME_DIALOG = "k-regp-wdiag"; + public static final String WELCOME_OK_BUTTON = "k-regp-okbt"; + private final RegisterForm registerForm; - @Inject - public RegisterPanel(final I18nTranslationService i18n, final Session session, final MaskWidgetView mask, - final NotifyLevelImages images) { - super(REGISTER_DIALOG, mask, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, 400, 420, "", - i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"), - CANCEL_BUTTON_ID, images, ERRMSG, 5); - registerForm = new RegisterForm(i18n, session); - registerForm.setWidth(370); - registerForm.getFormPanel().setId(REGISTER_FORM); - messageErrorBar = new MessageToolbar(images, errorLabelId); - registerForm.add(messageErrorBar); - super.getInnerPanel().add(registerForm.getFormPanel()); - } + @Inject + public RegisterPanel(final I18nTranslationService i18n, final Session session, + final MaskWidgetView mask, final NotifyLevelImages images) { + super(REGISTER_DIALOG, mask, i18n, i18n.t(CoreMessages.REGISTER_TITLE), true, true, true, 400, 420, + "", i18n.t(CoreMessages.REGISTER_TITLE), REGISTER_BUTTON_ID, i18n.tWithNT("Cancel", + "used in button"), CANCEL_BUTTON_ID, images, ERRMSG, 5); + registerForm = new RegisterForm(i18n, session); + registerForm.setWidth(370); + registerForm.getFormPanel().setId(REGISTER_FORM); + messageErrorBar = new MessageToolbar(images, errorLabelId); + registerForm.add(messageErrorBar); + super.getInnerPanel().add(registerForm.getFormPanel()); + } - @Override - public String getEmail() { - return registerForm.getEmail(); - } + @Override + public String getEmail() { + return registerForm.getEmail(); + } - @Override - public String getLongName() { - return registerForm.getLongName(); - } + @Override + public String getLongName() { + return registerForm.getLongName(); + } - @Override - public String getRegisterPassword() { - return registerForm.getRegisterPassword(); - } + @Override + public String getRegisterPassword() { + return registerForm.getRegisterPassword(); + } - @Override - public String getShortName() { - return registerForm.getShortName(); - } + @Override + public String getShortName() { + return registerForm.getShortName(); + } - @Override - public boolean isRegisterFormValid() { - return registerForm.isValid(); - } + @Override + public boolean isRegisterFormValid() { + return registerForm.isValid(); + } - @Override - public boolean isValid() { - return registerForm.isValid(); - } + @Override + public boolean isValid() { + return registerForm.isValid(); + } - @Override - public void reset() { - Scheduler.get().scheduleDeferred(new ScheduledCommand() { - @Override - public void execute() { - registerForm.reset(); - } - }); - } + @Override + public void reset() { + Scheduler.get().scheduleDeferred(new ScheduledCommand() { + @Override + public void execute() { + registerForm.reset(); + } + }); + } - @Override - public void show() { - super.show(); - KuneUiUtils.focusOnField(registerForm.getShortNameField()); - } + @Override + public void setEmailFailed(final String msg) { + registerForm.setEmailFailed(msg); + } - @Override - public void validate() { - registerForm.validate(); - } + @Override + public void setLongNameFailed(final String msg) { + registerForm.setLongNameFailed(msg); + } + @Override + public void setShortNameFailed(final String msg) { + registerForm.setShortNameFailed(msg); + } + + @Override + public void show() { + super.show(); + KuneUiUtils.focusOnField(registerForm.getShortNameField()); + } + + @Override + public void validate() { + registerForm.validate(); + } + } Modified: trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/RegisterPresenter.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -23,9 +23,11 @@ import cc.kune.common.client.log.Log; import cc.kune.common.client.notify.NotifyLevel; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.core.client.auth.RegisterPresenter.RegisterView; import cc.kune.core.client.cookies.CookiesManager; import cc.kune.core.client.errors.EmailAddressInUseException; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.UserRegistrationException; import cc.kune.core.client.events.NewUserRegisteredEvent; import cc.kune.core.client.i18n.I18nUITranslationService; @@ -61,6 +63,30 @@ @ProxyCodeSplit public interface RegisterProxy extends Proxy<RegisterPresenter> { } + + public interface RegisterView extends SignInAbstractView { + + String getEmail(); + + String getLongName(); + + String getRegisterPassword(); + + String getShortName(); + + boolean isRegisterFormValid(); + + boolean isValid(); + + void setEmailFailed(final String msg); + + void setLongNameFailed(final String msg); + + void setShortNameFailed(final String msg); + + void validate(); + + } private final Provider<SignIn> signInProvider; private final Provider<UserServiceAsync> userServiceProvider; @@ -123,6 +149,7 @@ } public void onFormRegister() { + getView().hideMessages(); if (getView().isRegisterFormValid()) { getView().maskProcessing(); @@ -208,9 +235,14 @@ private void onRegistrationFailure(final Throwable caught) { getView().unMask(); if (caught instanceof EmailAddressInUseException) { + getView().setEmailFailed(i18n.t(CoreMessages.EMAIL_IN_USE)); getView().setErrorMessage(i18n.t(CoreMessages.EMAIL_IN_USE), NotifyLevel.error); - } else if (caught instanceof GroupNameInUseException) { + } else if (caught instanceof GroupShortNameInUseException) { + getView().setShortNameFailed(i18n.t(CoreMessages.NAME_IN_USE)); getView().setErrorMessage(i18n.t(CoreMessages.NAME_IN_USE), NotifyLevel.error); + } else if (caught instanceof GroupLongNameInUseException) { + getView().setLongNameFailed(i18n.t(CoreMessages.NAME_IN_USE)); + getView().setErrorMessage(i18n.t(CoreMessages.NAME_IN_USE), NotifyLevel.error); } else if (caught instanceof UserRegistrationException) { getView().setErrorMessage(i18n.t("Error during registration. " + caught.getMessage()), NotifyLevel.error); Deleted: trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/RegisterView.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -1,38 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.auth; - -public interface RegisterView extends SignInAbstractView { - - String getEmail(); - - String getLongName(); - - String getRegisterPassword(); - - String getShortName(); - - boolean isRegisterFormValid(); - - boolean isValid(); - - void validate(); - -} Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInPanel.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -23,6 +23,7 @@ import cc.kune.common.client.ui.MaskWidgetView; import cc.kune.common.client.ui.dialogs.MessageToolbar; import cc.kune.common.client.utils.OnAcceptCallback; +import cc.kune.core.client.auth.SignInPresenter.SignInView; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.ui.KuneUiUtils; import cc.kune.core.shared.i18n.I18nTranslationService; @@ -36,106 +37,107 @@ public class SignInPanel extends SignInAbstractPanel implements SignInView { - public static final String CANCEL_BUTTON_ID = "k-signinp-cb"; - public static final String CREATE_ONE = "k-signinp-create"; - public static final String ERROR_MSG = "k-sigp-errmsg"; - public static final String SIGN_IN_BUTTON_ID = "k-signinp-sib"; - public static final String SIGNIN_DIALOG = "k-signinp-dialog"; - private Label registerLabel; - private final SignInForm signInForm; + public static final String CANCEL_BUTTON_ID = "k-signinp-cb"; + public static final String CREATE_ONE = "k-signinp-create"; + public static final String ERROR_MSG = "k-sigp-errmsg"; + public static final String SIGN_IN_BUTTON_ID = "k-signinp-sib"; + public static final String SIGNIN_DIALOG = "k-signinp-dialog"; + private Label registerLabel; + private final SignInForm signInForm; - @Inject - public SignInPanel(final I18nTranslationService i18n, final MaskWidgetView mask, final NotifyLevelImages images) { - super(SIGNIN_DIALOG, mask, i18n, i18n.t(CoreMessages.SIGN_IN_TITLE), true, true, true, 360, 430, "", - i18n.t(CoreMessages.SIGN_IN_TITLE), SIGN_IN_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"), - CANCEL_BUTTON_ID, images, ERROR_MSG, 102); + @Inject + public SignInPanel(final I18nTranslationService i18n, final MaskWidgetView mask, + final NotifyLevelImages images) { + super(SIGNIN_DIALOG, mask, i18n, i18n.t(CoreMessages.SIGN_IN_TITLE), true, true, true, 360, 430, "", + i18n.t(CoreMessages.SIGN_IN_TITLE), SIGN_IN_BUTTON_ID, i18n.tWithNT("Cancel", "used in button"), + CANCEL_BUTTON_ID, images, ERROR_MSG, 102); - signInForm = new SignInForm(i18n); - signInForm.setWidth(370); - signInForm.add(createNoAccountRegister()); - messageErrorBar = new MessageToolbar(images, errorLabelId); - signInForm.add(messageErrorBar); - super.getInnerPanel().add(signInForm.getFormPanel()); - } + signInForm = new SignInForm(i18n); + signInForm.setWidth(370); + signInForm.add(createNoAccountRegister()); + messageErrorBar = new MessageToolbar(images, errorLabelId); + signInForm.add(messageErrorBar); + super.getInnerPanel().add(signInForm.getFormPanel()); + } - private VerticalPanel createNoAccountRegister() { - final VerticalPanel noAccRegisterPanel = new VerticalPanel(); - final HorizontalPanel hpanel = new HorizontalPanel(); - final Label dontHaveAccount = new Label(i18n.t("Don't have an account?")); - registerLabel = new Label(i18n.t("Create one.")); - registerLabel.ensureDebugId(CREATE_ONE); - registerLabel.addStyleName("kune-Margin-Medium-l"); - registerLabel.addStyleName("k-link"); - registerLabel.addStyleName("k-cursor"); - hpanel.add(dontHaveAccount); - hpanel.add(registerLabel); - noAccRegisterPanel.add(hpanel); - return noAccRegisterPanel; - } + private VerticalPanel createNoAccountRegister() { + final VerticalPanel noAccRegisterPanel = new VerticalPanel(); + final HorizontalPanel hpanel = new HorizontalPanel(); + final Label dontHaveAccount = new Label(i18n.t("Don't have an account?")); + registerLabel = new Label(i18n.t("Create one.")); + registerLabel.ensureDebugId(CREATE_ONE); + registerLabel.addStyleName("kune-Margin-Medium-l"); + registerLabel.addStyleName("k-link"); + registerLabel.addStyleName("k-cursor"); + hpanel.add(dontHaveAccount); + hpanel.add(registerLabel); + noAccRegisterPanel.add(hpanel); + return noAccRegisterPanel; + } - @Override - public void focusOnNickname() { - signInForm.focusLogin(); - } + @Override + public void focusOnNickname() { + signInForm.focusLogin(); + } - @Override - public void focusOnPassword() { - signInForm.focusOnPassword(); - } + @Override + public void focusOnPassword() { + signInForm.focusOnPassword(); + } - @Override - public HasClickHandlers getAccountRegister() { - return registerLabel; - } + @Override + public HasClickHandlers getAccountRegister() { + return registerLabel; + } - @Override - public String getLoginPassword() { - return signInForm.getLoginPassword(); - } + @Override + public String getLoginPassword() { + return signInForm.getLoginPassword(); + } - private Field<String> getNickname() { - return signInForm.getNickOrEmailField(); - } + private Field<String> getNickname() { + return signInForm.getNickOrEmailField(); + } - @Override - public String getNickOrEmail() { - return signInForm.getNickOrEmail(); - } + @Override + public String getNickOrEmail() { + return signInForm.getNickOrEmail(); + } - @Override - public boolean isSignInFormValid() { - return signInForm.isValid(); - } + @Override + public boolean isSignInFormValid() { + return signInForm.isValid(); + } - @Override - public void reset() { - signInForm.reset(); - } + @Override + public void reset() { + signInForm.reset(); + } - @Override - public void setLoginPassword(final String password) { - signInForm.setLoginPassword(password); - } + @Override + public void setLoginPassword(final String password) { + signInForm.setLoginPassword(password); + } - @Override - public void setNickOrEmail(final String nickOrEmail) { - signInForm.setNickOrEmail(nickOrEmail); - } + @Override + public void setNickOrEmail(final String nickOrEmail) { + signInForm.setNickOrEmail(nickOrEmail); + } - @Override - public void setOnPasswordReturn(final OnAcceptCallback onAcceptCallback) { - signInForm.setOnPasswordReturn(onAcceptCallback); - } + @Override + public void setOnPasswordReturn(final OnAcceptCallback onAcceptCallback) { + signInForm.setOnPasswordReturn(onAcceptCallback); + } - @Override - public void show() { - super.show(); - KuneUiUtils.focusOnField(getNickname()); - } + @Override + public void show() { + super.show(); + KuneUiUtils.focusOnField(getNickname()); + } - @Override - public void validate() { - signInForm.validate(); - } + @Override + public void validate() { + signInForm.validate(); + } } Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInPresenter.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -25,6 +25,7 @@ import cc.kune.common.client.utils.TextUtils; import cc.kune.common.client.utils.TimerWrapper; import cc.kune.common.client.utils.TimerWrapper.Executer; +import cc.kune.core.client.auth.SignInPresenter.SignInView; import cc.kune.core.client.cookies.CookiesManager; import cc.kune.core.client.errors.UserAuthException; import cc.kune.core.client.i18n.I18nUITranslationService; @@ -40,6 +41,7 @@ import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; +import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.event.logical.shared.CloseEvent; import com.google.gwt.event.logical.shared.CloseHandler; import com.google.gwt.event.shared.EventBus; @@ -51,186 +53,213 @@ import com.gwtplatform.mvp.client.proxy.Proxy; import com.gwtplatform.mvp.client.proxy.RevealRootContentEvent; -public class SignInPresenter extends SignInAbstractPresenter<SignInView, SignInPresenter.SignInProxy> implements SignIn { +public class SignInPresenter extends SignInAbstractPresenter<SignInView, SignInPresenter.SignInProxy> + implements SignIn { - @ProxyCodeSplit - public interface SignInProxy extends Proxy<SignInPresenter> { - } + @ProxyCodeSplit + public interface SignInProxy extends Proxy<SignInPresenter> { + } - private final EventBus eventBus; - private final Provider<Register> registerProvider; - private final TimerWrapper timer; - private final UserServiceAsync userService; - private final WaveClientSimpleAuthenticator waveClientAuthenticator; + public interface SignInView extends SignInAbstractView { - @Inject - public SignInPresenter(final EventBus eventBus, final SignInView view, final SignInProxy proxy, - final Session session, final StateManager stateManager, final I18nUITranslationService i18n, - final UserServiceAsync userService, final Provider<Register> registerProvider, - final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete, - final TimerWrapper timeWrapper, final WaveClientSimpleAuthenticator waveClientAuthenticator) { - super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager, autocomplete); - this.eventBus = eventBus; - this.userService = userService; - this.registerProvider = registerProvider; - this.timer = timeWrapper; - this.waveClientAuthenticator = waveClientAuthenticator; - } + void focusOnNickname(); - @Override - public void doSignIn(final String nickOrEmail, final String passwd, final AsyncCallback<Void> extCallback) { - final UserDTO user = new UserDTO(); - user.setShortName(nickOrEmail); - user.setPassword(passwd); - saveAutocompleteLoginData(nickOrEmail, passwd); - waveClientAuthenticator.doLogin(nickOrEmail, passwd, new AsyncCallback<Void>() { - @Override - public void onFailure(final Throwable caught) { - Log.error("SignInPresenter/doLogin fails in Wave auth"); - extCallback.onFailure(caught); - } + void focusOnPassword(); - @Override - public void onSuccess(final Void arg) { + HasClickHandlers getAccountRegister(); - final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { - @Override - public void onFailure(final Throwable caught) { - extCallback.onFailure(caught); - } + String getLoginPassword(); - @Override - public void onSuccess(final UserInfoDTO userInfoDTO) { - onSignIn(userInfoDTO); - extCallback.onSuccess(null); - } - }; - userService.login(user.getShortName(), user.getPassword(), - waveClientAuthenticator.getCookieTokenValue(), callback); - } - }); - } + String getNickOrEmail(); - @Override - public SignInView getView() { - return (SignInView) super.getView(); - } + boolean isSignInFormValid(); - public void onAccountRegister() { - getView().reset(); - getView().hideMessages(); - getView().hide(); - stateManager.gotoHistoryToken(SiteTokens.REGISTER); - } + void setLoginPassword(String password); - @Override - protected void onBind() { - super.onBind(); - getView().getFirstBtn().addClickHandler(new ClickHandler() { - @Override - public void onClick(final ClickEvent event) { - onFormSignIn(); - } - }); - getView().setOnPasswordReturn(new OnAcceptCallback() { - @Override - public void onSuccess() { - onFormSignIn(); - } - }); - getView().getSecondBtn().addClickHandler(new ClickHandler() { - @Override - public void onClick(final ClickEvent event) { - Log.debug("On cancel signin presenter"); - onCancel(); - } - }); - getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() { + void setNickOrEmail(String nickOrEmail); - @Override - public void onClose(final CloseEvent<PopupPanel> event) { - Log.debug("Closing signin presenter"); - SignInPresenter.this.onClose(); - } - }); - getView().getAccountRegister().addClickHandler(new ClickHandler() { + void setOnPasswordReturn(OnAcceptCallback onAcceptCallback); - @Override - public void onClick(final ClickEvent event) { - onAccountRegister(); - } - }); - } + void validate(); - public void onFormSignIn() { - getView().validate(); - if (getView().isSignInFormValid()) { - getView().maskProcessing(); + } - final String nickOrEmail = getView().getNickOrEmail(); - final String passwd = getView().getLoginPassword(); - doSignIn(nickOrEmail, passwd, new AsyncCallback<Void>() { + private final EventBus eventBus; + private final Provider<Register> registerProvider; + private final TimerWrapper timer; + private final UserServiceAsync userService; + private final WaveClientSimpleAuthenticator waveClientAuthenticator; - @Override - public void onFailure(final Throwable caught) { - onSingInFailed(caught); - } + @Inject + public SignInPresenter(final EventBus eventBus, final SignInView view, final SignInProxy proxy, + final Session session, final StateManager stateManager, final I18nUITranslationService i18n, + final UserServiceAsync userService, final Provider<Register> registerProvider, + final CookiesManager cookiesManager, final UserPassAutocompleteManager autocomplete, + final TimerWrapper timeWrapper, final WaveClientSimpleAuthenticator waveClientAuthenticator) { + super(eventBus, view, proxy, session, stateManager, i18n, cookiesManager, autocomplete); + this.eventBus = eventBus; + this.userService = userService; + this.registerProvider = registerProvider; + this.timer = timeWrapper; + this.waveClientAuthenticator = waveClientAuthenticator; + } - @Override - public void onSuccess(final Void result) { - getView().hide(); - getView().unMask(); - } - }); + @Override + public void doSignIn(final String nickOrEmail, final String passwd, + final AsyncCallback<Void> extCallback) { + final UserDTO user = new UserDTO(); + user.setShortName(nickOrEmail); + user.setPassword(passwd); + saveAutocompleteLoginData(nickOrEmail, passwd); + waveClientAuthenticator.doLogin(nickOrEmail, passwd, new AsyncCallback<Void>() { + @Override + public void onFailure(final Throwable caught) { + Log.error("SignInPresenter/doLogin fails in Wave auth"); + extCallback.onFailure(caught); + } + + @Override + public void onSuccess(final Void arg) { + + final AsyncCallback<UserInfoDTO> callback = new AsyncCallback<UserInfoDTO>() { + @Override + public void onFailure(final Throwable caught) { + extCallback.onFailure(caught); + } + + @Override + public void onSuccess(final UserInfoDTO userInfoDTO) { + onSignIn(userInfoDTO); + extCallback.onSuccess(null); + } + }; + userService.login(user.getShortName(), user.getPassword(), + waveClientAuthenticator.getCookieTokenValue(), callback); + } + }); + } + + @Override + public SignInView getView() { + return (SignInView) super.getView(); + } + + public void onAccountRegister() { + getView().reset(); + getView().hideMessages(); + getView().hide(); + stateManager.gotoHistoryToken(SiteTokens.REGISTER); + } + + @Override + protected void onBind() { + super.onBind(); + getView().getFirstBtn().addClickHandler(new ClickHandler() { + @Override + public void onClick(final ClickEvent event) { + onFormSignIn(); + } + }); + getView().setOnPasswordReturn(new OnAcceptCallback() { + @Override + public void onSuccess() { + onFormSignIn(); + } + }); + getView().getSecondBtn().addClickHandler(new ClickHandler() { + @Override + public void onClick(final ClickEvent event) { + Log.debug("On cancel signin presenter"); + onCancel(); + } + }); + getView().getClose().addCloseHandler(new CloseHandler<PopupPanel>() { + + @Override + public void onClose(final CloseEvent<PopupPanel> event) { + Log.debug("Closing signin presenter"); + SignInPresenter.this.onClose(); + } + }); + getView().getAccountRegister().addClickHandler(new ClickHandler() { + + @Override + public void onClick(final ClickEvent event) { + onAccountRegister(); + } + }); + } + + public void onFormSignIn() { + getView().validate(); + if (getView().isSignInFormValid()) { + getView().maskProcessing(); + + final String nickOrEmail = getView().getNickOrEmail(); + final String passwd = getView().getLoginPassword(); + doSignIn(nickOrEmail, passwd, new AsyncCallback<Void>() { + + @Override + public void onFailure(final Throwable caught) { + onSingInFailed(caught); } - } - private void onSingInFailed(final Throwable caught) { - getView().unMask(); - eventBus.fireEvent(new ProgressHideEvent()); - if (caught instanceof UserAuthException) { - getView().setErrorMessage(i18n.t(CoreMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD), NotifyLevel.error); - } else { - getView().setErrorMessage("Error in login", NotifyLevel.error); - Log.error("Other kind of exception in SignInPresenter/doLogin"); + @Override + public void onSuccess(final Void result) { + getView().hide(); + getView().unMask(); } + }); } + } - @Override - protected void revealInParent() { - RevealRootContentEvent.fire(this, this); + private void onSingInFailed(final Throwable caught) { + getView().unMask(); + eventBus.fireEvent(new ProgressHideEvent()); + if (caught instanceof UserAuthException) { + getView().setErrorMessage(i18n.t(CoreMessages.INCORRECT_NICKNAME_EMAIL_OR_PASSWORD), + NotifyLevel.error); + } else { + getView().setErrorMessage("Error in login", NotifyLevel.error); + Log.error("Other kind of exception in SignInPresenter/doLogin"); } + } - @Override - public void setErrorMessage(final String message, final NotifyLevel level) { - getView().setErrorMessage(message, level); - } + @Override + protected void revealInParent() { + RevealRootContentEvent.fire(this, this); + } - @Override - public void showSignInDialog() { - registerProvider.get().hide(); - if (session.isLogged()) { - stateManager.restorePreviousToken(); - } else { - eventBus.fireEvent(new ProgressShowEvent()); - getView().show(); - // getView().center(); - eventBus.fireEvent(new ProgressHideEvent()); - getView().focusOnNickname(); - timer.configure(new Executer() { - @Override - public void execute() { - final String savedLogin = autocomplete.getNickOrEmail(); - final String savedPasswd = autocomplete.getPassword(); - if (TextUtils.notEmpty(savedLogin)) { - getView().setNickOrEmail(savedLogin); - getView().setLoginPassword(savedPasswd); - getView().focusOnPassword(); - } - } - }); - timer.schedule(500); + @Override + public void setErrorMessage(final String message, final NotifyLevel level) { + getView().setErrorMessage(message, level); + } + + @Override + public void showSignInDialog() { + registerProvider.get().hide(); + if (session.isLogged()) { + stateManager.restorePreviousToken(); + } else { + eventBus.fireEvent(new ProgressShowEvent()); + getView().show(); + // getView().center(); + eventBus.fireEvent(new ProgressHideEvent()); + getView().focusOnNickname(); + timer.configure(new Executer() { + @Override + public void execute() { + final String savedLogin = autocomplete.getNickOrEmail(); + final String savedPasswd = autocomplete.getPassword(); + if (TextUtils.notEmpty(savedLogin)) { + getView().setNickOrEmail(savedLogin); + getView().setLoginPassword(savedPasswd); + getView().focusOnPassword(); + } } + }); + timer.schedule(500); } + } } Deleted: trunk/src/main/java/cc/kune/core/client/auth/SignInView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/auth/SignInView.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/auth/SignInView.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -1,48 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.auth; - -import cc.kune.common.client.utils.OnAcceptCallback; - -import com.google.gwt.event.dom.client.HasClickHandlers; - -public interface SignInView extends SignInAbstractView { - - void focusOnNickname(); - - void focusOnPassword(); - - HasClickHandlers getAccountRegister(); - - String getLoginPassword(); - - String getNickOrEmail(); - - boolean isSignInFormValid(); - - void setLoginPassword(String password); - - void setNickOrEmail(String nickOrEmail); - - void setOnPasswordReturn(OnAcceptCallback onAcceptCallback); - - void validate(); - -} Added: trunk/src/main/java/cc/kune/core/client/errors/GroupLongNameInUseException.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/GroupLongNameInUseException.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/errors/GroupLongNameInUseException.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -0,0 +1,24 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.errors; + +public class GroupLongNameInUseException extends DefaultException { + private static final long serialVersionUID = -1211473220006162132L; +} Deleted: trunk/src/main/java/cc/kune/core/client/errors/GroupNameInUseException.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/GroupNameInUseException.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/errors/GroupNameInUseException.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -1,24 +0,0 @@ -/* - * - * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) - * This file is part of kune. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ -package cc.kune.core.client.errors; - -public class GroupNameInUseException extends DefaultException { - private static final long serialVersionUID = -4746775725822225687L; -} Copied: trunk/src/main/java/cc/kune/core/client/errors/GroupShortNameInUseException.java (from rev 1489, trunk/src/main/java/cc/kune/core/client/errors/GroupNameInUseException.java) =================================================================== --- trunk/src/main/java/cc/kune/core/client/errors/GroupShortNameInUseException.java (rev 0) +++ trunk/src/main/java/cc/kune/core/client/errors/GroupShortNameInUseException.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -0,0 +1,24 @@ +/* + * + * Copyright (C) 2007-2011 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +package cc.kune.core.client.errors; + +public class GroupShortNameInUseException extends DefaultException { + private static final long serialVersionUID = -4746775725822225687L; +} Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -51,7 +51,6 @@ public static final String ERROR_MSG_BAR = "k-ngp-error-mb"; private static final int LABEL_WIDTH = 100; public static final String LONGNAME_FIELD = "k-ngp-long_name"; - private static final String MARGIN_LEFT_105PX = "margin-left: 105px"; public static final String NEWGROUP_WIZARD = "k-ngp-wiz"; public static final String ORG_GROUP_TYPE_ID = "k-ngp-type_of_group_org"; public static final String PROJ_GROUP_TYPE_ID = "k-ngp-type_of_group_proj"; @@ -83,7 +82,7 @@ public NewGroupPanel(final I18nTranslationService i18n, final NotifyLevelImages img, final MaskWidgetView mask) { final Builder builder = new BasicTopDialog.Builder(NEWGROUP_WIZARD, false, true).autoscroll(true).height( - "340px").title(i18n.t("Register a new group")); + 340).title(i18n.t("Register a new group")); builder.icon("k-newgroup-icon"); builder.firstButtonTitle(i18n.t("Register")).firstButtonId(REGISTER_BUTTON); builder.sndButtonTitle(i18n.t("Cancel")).sndButtonId(CANCEL_BUTTON); @@ -299,11 +298,21 @@ } @Override + public void setLongNameFailed(final String msg) { + longNameField.markInvalid(msg); + } + + @Override public void setMessage(final String message, final NotifyLevel level) { messageErrorBar.setErrorMessage(message, level); } @Override + public void setShortNameFailed(final String msg) { + shortNameField.markInvalid(msg); + } + + @Override public void show() { dialog.showCentered(); } Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPresenter.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -23,7 +23,8 @@ import cc.kune.common.client.notify.NotifyLevel; import cc.kune.common.client.notify.NotifyUser; import cc.kune.core.client.auth.SignIn; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.resources.CoreMessages; import cc.kune.core.client.rpcservices.AsyncCallbackSimple; import cc.kune.core.client.rpcservices.GroupServiceAsync; @@ -155,6 +156,7 @@ } public void onRegister() { + getView().hideMessage(); if (getView().isFormValid()) { getView().maskProcessing(); final String shortName = getView().getShortName(); @@ -167,9 +169,16 @@ final AsyncCallback<StateToken> callback = new AsyncCallback<StateToken>() { @Override public void onFailure(final Throwable caught) { - if (caught instanceof GroupNameInUseException) { + if (caught instanceof GroupShortNameInUseException) { getView().unMask(); - setMessage(i18n.t(CoreMessages.NAME_IN_ALREADY_IN_USE), NotifyLevel.error); + final String msg = i18n.t(CoreMessages.NAME_IN_ALREADY_IN_USE); + getView().setShortNameFailed(msg); + setMessage(msg, NotifyLevel.error); + } else if (caught instanceof GroupLongNameInUseException) { + getView().unMask(); + final String msg = i18n.t(CoreMessages.NAME_IN_ALREADY_IN_USE); + getView().setLongNameFailed(msg); + setMessage(msg, NotifyLevel.error); } else { getView().unMask(); setMessage(i18n.t("Error creating group"), NotifyLevel.error); Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupView.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -62,8 +62,12 @@ void maskProcessing(); + void setLongNameFailed(final String msg); + void setMessage(String message, NotifyLevel level); + void setShortNameFailed(final String msg); + void show(); void unMask(); Modified: trunk/src/main/java/cc/kune/core/public/ws.css =================================================================== --- trunk/src/main/java/cc/kune/core/public/ws.css 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-08-14 11:54:12 UTC (rev 1495) @@ -729,8 +729,8 @@ .k-error-tb { background: #FFB380 none repeat scroll 0% 50%; /* color: #250; */ - padding: 10px; - margin: 16px -20px -20px -20px; + padding: 7px 10px; + margin: 16px -20px -10px -20px; } .k-error-tb img { Modified: trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/server/content/ContentManagerDefault.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -96,7 +96,7 @@ public void addAuthor(final User user, final Long contentId, final String authorShortName) throws DefaultException { final Content content = finder.getContent(contentId); - final User author = userFinder.getByShortName(authorShortName); + final User author = userFinder.findByShortName(authorShortName); if (author == null) { throw new UserNotFoundException(); } @@ -221,7 +221,7 @@ public void removeAuthor(final User user, final Long contentId, final String authorShortName) throws DefaultException { final Content content = finder.getContent(contentId); - final User author = userFinder.getByShortName(authorShortName); + final User author = userFinder.findByShortName(authorShortName); if (author == null) { throw new UserNotFoundException(); } Modified: trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -24,7 +24,7 @@ import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.EmailAddressInUseException; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.UserMustBeLoggedException; import cc.kune.core.server.manager.impl.SearchResult; import cc.kune.domain.Content; @@ -37,14 +37,16 @@ void changeWsTheme(User user, Group group, String theme) throws AccessViolationException; + void checkIfNamesAreInUse(String shortName, String longName); + void clearGroupBackImage(Group group); - Group createGroup(Group group, User user, String publicDescrip) throws GroupNameInUseException, + Group createGroup(Group group, User user, String publicDescrip) throws GroupShortNameInUseException, UserMustBeLoggedException; - Group createUserGroup(User user) throws GroupNameInUseException, EmailAddressInUseException; + Group createUserGroup(User user) throws GroupShortNameInUseException, EmailAddressInUseException; - Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupNameInUseException, + Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupShortNameInUseException, EmailAddressInUseException; Set<Group> findAdminInGroups(Long groupId); Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -35,7 +35,8 @@ import cc.kune.core.client.errors.AccessViolationException; import cc.kune.core.client.errors.EmailAddressInUseException; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.UserMustBeLoggedException; import cc.kune.core.server.manager.FileManager; import cc.kune.core.server.manager.GroupManager; @@ -128,7 +129,8 @@ @Override public Group createGroup(final Group group, final User user, final String publicDescrip) - throws GroupNameInUseException, UserMustBeLoggedException { + throws GroupShortNameInUseException, GroupLongNameInUseException, UserMustBeLoggedException { + checkIfNamesAreInUse(group.getShortName(), group.getLongName()); final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); if (User.isKnownUser(user)) { GroupListMode publicVisibility = GroupListMode.EVERYONE; @@ -160,21 +162,21 @@ } @Override - public Group createUserGroup(final User user) throws GroupNameInUseException, + public Group createUserGroup(final User user) throws GroupShortNameInUseException, EmailAddressInUseException { return createUserGroup(user, true); } @Override public Group createUserGroup(final User user, final boolean wantPersonalHomepage) - throws GroupNameInUseException, EmailAddressInUseException { + throws GroupShortNameInUseException, EmailAddressInUseException { final String defaultSiteWorkspaceTheme = kuneProperties.get(KuneProperties.WS_THEMES_DEF); final License licenseDef = licenseManager.getDefLicense(); final Group userGroup = new Group(user.getShortName(), user.getName(), licenseDef, GroupType.PERSONAL); User userSameEmail = null; try { - userSameEmail = userFinder.getByEmail(user.getEmail()); + userSameEmail = userFinder.findByEmail(user.getEmail()); } catch (final NoResultException e) { // Ok, no more with this email } @@ -195,7 +197,7 @@ super.persist(user, User.class); } catch (final PersistenceException e) { if (e.getCause() instanceof ConstraintViolationException) { - throw new GroupNameInUseException(); + throw new GroupShortNameInUseException(); } throw e; } @@ -234,14 +236,14 @@ } private void initGroup(final User user, final Group group, final Collection<String> toolsToEnable, - final Object... vars) throws GroupNameInUseException { + final Object... vars) throws GroupShortNameInUseException { try { persist(group); } catch (final IllegalStateException e) { e.printStackTrace(); } catch (final PersistenceException e) { if (e.getCause() instanceof ConstraintViolationException) { - throw new GroupNameInUseException(); + throw new GroupShortNameInUseException(); } throw e; } @@ -309,4 +311,13 @@ toolConfiguration.setEnabled(enabled); } + public void checkIfNamesAreInUse(final String shortName, final String longName) { + if (finder.countByShortName(shortName) != 0) { + throw new GroupShortNameInUseException(); + } + if (finder.countByLongName(longName) != 0) { + throw new GroupLongNameInUseException(); + } + } + } Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -39,7 +39,9 @@ import org.waveprotocol.box.server.persistence.AccountStore; import org.waveprotocol.wave.model.waveref.WaveRef; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.EmailAddressInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.client.errors.UserRegistrationException; import cc.kune.core.server.manager.GroupManager; @@ -71,13 +73,13 @@ private final ChatProperties chatProperties; private final I18nCountryManager countryManager; - private final UserFinder finder; private final GroupManager groupManager; private final I18nTranslationService i18n; private final KuneWaveManager kuneWaveManager; private final I18nLanguageManager languageManager; private final ParticipantUtils participantUtils; private final KuneBasicProperties properties; + private final UserFinder userFinder; private final AccountStore waveAccountStore; private final CustomUserRegistrationServlet waveUserRegister; private final XmppManager xmppManager; @@ -91,7 +93,7 @@ final ParticipantUtils participantUtils, final KuneBasicProperties properties, final GroupManager groupManager) { super(provider, User.class); - this.finder = finder; + this.userFinder = finder; this.languageManager = languageManager; this.countryManager = countryManager; this.xmppManager = xmppManager; @@ -112,6 +114,16 @@ I18nLanguage language; I18nCountry country; TimeZone tz; + if (userFinder.countByShortName(shortName) != 0) { + throw new GroupShortNameInUseException(); + } + if (userFinder.countByLongName(longName) != 0) { + throw new GroupLongNameInUseException(); + } + groupManager.checkIfNamesAreInUse(shortName, longName); + if (userFinder.countByEmail(email) != 0) { + throw new EmailAddressInUseException(); + } try { language = languageManager.findByCode(langCode); country = countryManager.findByCode(countryCode); @@ -124,23 +136,8 @@ try { createWaveAccount(shortName, passwdDigest); } catch (final UserRegistrationException e) { - try { - if (finder.getByShortName(shortName) != null) { - throw new GroupNameInUseException(); - } else { - // Other kind of exception - throw e; - } - } catch (final NoResultException e2) { - // Other kind of exception - throw e; - } + throw e; } - // if (userPropGroup == null) { - // userPropGroup = propGroupManager.find(User.PROPS_ID); - // } - // final Properties userProp = new Properties(userPropGroup); - // propManager.persist(userProp); WaveRef welcome = null; try { final User user = new User(shortName, longName, email, passwd, passwdDigest.getDigest(), @@ -183,7 +180,7 @@ @Override public User find(final Long userId) { try { - return finder.getById(userId); + return userFinder.findById(userId); } catch (final NoResultException e) { return User.UNKNOWN_USER; } @@ -191,11 +188,11 @@ @Override public User findByShortname(final String shortName) { - return finder.getByShortName(shortName); + return userFinder.findByShortName(shortName); } public List<User> getAll() { - return finder.getAll(); + return userFinder.getAll(); } @Override @@ -209,7 +206,7 @@ final String domain = "@" + chatProperties.getDomain(); final UserBuddiesData buddiesData = new UserBuddiesData(); - final User user = finder.getByShortName(shortName); + final User user = userFinder.findByShortName(shortName); Collection<RosterEntry> roster; try { final ChatConnection connection = xmppManager.login(user.getShortName() + domain, @@ -230,7 +227,7 @@ // local user try { final String username = entry.getUser().substring(0, index); - final User buddie = finder.getByShortName(username); + final User buddie = userFinder.findByShortName(username); buddiesData.getBuddies().add(buddie); } catch (final NoResultException e) { // No existent buddie, skip @@ -248,10 +245,10 @@ public User login(final String nickOrEmail, final String passwd) { User user; try { - user = finder.getByShortName(nickOrEmail); + user = userFinder.findByShortName(nickOrEmail); } catch (final NoResultException e) { try { - user = finder.getByEmail(nickOrEmail); + user = userFinder.findByEmail(nickOrEmail); } catch (final NoResultException e2) { return null; } Modified: trunk/src/main/java/cc/kune/domain/Group.java =================================================================== --- trunk/src/main/java/cc/kune/domain/Group.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/domain/Group.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -93,7 +93,7 @@ private BasicMimeType logoMime; @Field(index = Index.TOKENIZED, store = Store.NO) - @Column(unique = true) + @Column(nullable = false, unique = true) @Length(min = 3, max = 50, message = "The longName must be between 3 and 50 characters of length") private String longName; Modified: trunk/src/main/java/cc/kune/domain/User.java =================================================================== --- trunk/src/main/java/cc/kune/domain/User.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/domain/User.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -54,248 +54,248 @@ @Table(name = "kusers") public class User implements HasId { - // public static final String PROPS_ID = "userprops"; - // see: http://docs.codehaus.org/display/PICO/Good+Citizen: - // Never expect or return null - public static final User UNKNOWN_USER = new User(); + // public static final String PROPS_ID = "userprops"; + // see: http://docs.codehaus.org/display/PICO/Good+Citizen: + // Never expect or return null + public static final User UNKNOWN_USER = new User(); - public static boolean isKnownUser(final User user) { - return !user.equals(UNKNOWN_USER); - } + public static boolean isKnownUser(final User user) { + return !user.equals(UNKNOWN_USER); + } - @Enumerated(EnumType.STRING) - private UserSNetVisibility sNetVisibility; + @ManyToOne + @NotNull + private I18nCountry country; - @ManyToOne - @NotNull - private I18nCountry country; + @Basic(optional = false) + private final Long createdOn; - @Basic(optional = false) - private final Long createdOn; + @Basic + @Lob + @Column(nullable = false) + private byte[] diggest; - // @OneToOne(cascade = CascadeType.REMOVE) - // private final CustomProperties customProperties; + // @OneToOne(cascade = CascadeType.REMOVE) + // private final CustomProperties customProperties; - @Basic - @Lob - @Column(nullable = false) - private byte[] diggest; + @Column(unique = true, nullable = false) + @Email + @Length(min = 1) + private String email; - @Column(unique = true, nullable = false) - @Email - @Length(min = 1) - private String email; + @Id + @DocumentId + @GeneratedValue + private Long id; - @Id - @DocumentId - @GeneratedValue - private Long id; + @ManyToOne + @NotNull + private I18nLanguage language; - @ManyToOne - @NotNull - private I18nLanguage language; + @Basic + private Long lastLogin; - @Basic - private Long lastLogin; + @Field(index = Index.TOKENIZED, store = Store.NO) + @Column(nullable = false, unique = true) + @Length(min = 3, max = 50) + private String name; - @Field(index = Index.TOKENIZED, store = Store.NO) - @Column(nullable = false) - @Length(min = 3, max = 50) - private String name; + @Column(nullable = false) + @Length(min = 6, max = 40) + private String password; - @Column(nullable = false) - @Length(min = 6, max = 40) - private String password; + @Basic + @Lob + @Column(nullable = false) + private byte[] salt; - @Basic - @Lob - @Column(nullable = false) - private byte[] salt; + @Field(index = Index.UN_TOKENIZED, store = Store.NO) + @Column(unique = true) + // http://www.hibernate.org/hib_docs/validator/reference/en/html/validator-defi... + @Length(min = 3, max = 15) + @Pattern(regex = "^[a-z0-9]+$", message = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes") + private String shortName; - @Field(index = Index.UN_TOKENIZED, store = Store.NO) - @Column(unique = true) - // http://www.hibernate.org/hib_docs/validator/reference/en/html/validator-defi... - @Length(min = 3, max = 15) - @Pattern(regex = "^[a-z0-9]+$", message = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes") - private String shortName; + @Enumerated(EnumType.STRING) + private UserSNetVisibility sNetVisibility; - @NotNull - private TimeZone timezone; + @NotNull + private TimeZone timezone; - @OneToOne(cascade = CascadeType.REMOVE) - private Group userGroup; + @OneToOne(cascade = CascadeType.REMOVE) + private Group userGroup; - // @OneToOne - // @OnDelete(action = OnDeleteAction.CASCADE) - // private Properties properties; + // @OneToOne + // @OnDelete(action = OnDeleteAction.CASCADE) + // private Properties properties; - public User() { - this(null, null, null, null, null, null, null, null, null); - } + public User() { + this(null, null, null, null, null, null, null, null, null); + } - // - // public User(final String shortName, final String longName, final String - // email, final String passwd, - // final I18nLanguage language, final I18nCountry country, final TimeZone - // timezone) { - // this(shortName, longName, email, passwd, language, country, timezone, - // null); - // } + // + // public User(final String shortName, final String longName, final String + // email, final String passwd, + // final I18nLanguage language, final I18nCountry country, final TimeZone + // timezone) { + // this(shortName, longName, email, passwd, language, country, timezone, + // null); + // } - public User(final String shortName, final String longName, final String email, final String passwd, - final byte[] diggets, final byte[] salt, final I18nLanguage language, final I18nCountry country, - final TimeZone timezone) { - this.shortName = shortName; - this.name = longName; - this.email = email; - this.password = passwd; - this.diggest = diggets; - this.salt = salt; - this.userGroup = null; - this.language = language; - this.country = country; - this.timezone = timezone; - // customProperties = new CustomProperties(); - sNetVisibility = UserSNetVisibility.anyone; - this.createdOn = System.currentTimeMillis(); - this.lastLogin = null; - // this.properties = properties; - } + public User(final String shortName, final String longName, final String email, final String passwd, + final byte[] diggets, final byte[] salt, final I18nLanguage language, final I18nCountry country, + final TimeZone timezone) { + this.shortName = shortName; + this.name = longName; + this.email = email; + this.password = passwd; + this.diggest = diggets; + this.salt = salt; + this.userGroup = null; + this.language = language; + this.country = country; + this.timezone = timezone; + // customProperties = new CustomProperties(); + sNetVisibility = UserSNetVisibility.anyone; + this.createdOn = System.currentTimeMillis(); + this.lastLogin = null; + // this.properties = properties; + } - public UserSNetVisibility getSNetVisibility() { - return sNetVisibility; - } + public I18nCountry getCountry() { + return country; + } - public I18nCountry getCountry() { - return country; - } + public Long getCreatedOn() { + return createdOn; + } - public Long getCreatedOn() { - return createdOn; - } + public byte[] getDiggest() { + return diggest; + } - // public CustomProperties getCustomProperties() { - // return customProperties; - // } + // public CustomProperties getCustomProperties() { + // return customProperties; + // } - public byte[] getDiggest() { - return diggest; - } + public String getEmail() { + return email; + } - public String getEmail() { - return email; - } + public boolean getHasLogo() { + return hasLogo(); + } - public boolean getHasLogo() { - return hasLogo(); - } + @Override + public Long getId() { + return id; + } - @Override - public Long getId() { - return id; - } + public I18nLanguage getLanguage() { + return language; + } - public I18nLanguage getLanguage() { - return language; - } + public Long getLastLogin() { + return lastLogin; + } - public Long getLastLogin() { - return lastLogin; - } + public String getName() { + return name; + } - public String getName() { - return name; - } + public String getPassword() { + return password; + } - // public Properties getProperties() { - // return properties; - // } + // public Properties getProperties() { + // return properties; + // } - public String getPassword() { - return password; - } + public byte[] getSalt() { + return salt; + } - public byte[] getSalt() { - return salt; - } + public String getShortName() { + return shortName; + } - public String getShortName() { - return shortName; - } + public UserSNetVisibility getSNetVisibility() { + return sNetVisibility; + } - @Transient - public StateToken getStateToken() { - return userGroup.getStateToken(); - } + @Transient + public StateToken getStateToken() { + return userGroup.getStateToken(); + } - public TimeZone getTimezone() { - return timezone; - } + public TimeZone getTimezone() { + return timezone; + } - public Group getUserGroup() { - return userGroup; - } + public Group getUserGroup() { + return userGroup; + } - @Transient - public boolean hasLogo() { - return getUserGroup().hasLogo(); - } + @Transient + public boolean hasLogo() { + return getUserGroup().hasLogo(); + } - public void setSNetVisibility(final UserSNetVisibility sNetVisibility) { - this.sNetVisibility = sNetVisibility; - } + public void setCountry(final I18nCountry country) { + this.country = country; + } - public void setCountry(final I18nCountry country) { - this.country = country; - } + public void setDiggest(final byte[] diggest) { + this.diggest = diggest; + } - public void setDiggest(final byte[] diggest) { - this.diggest = diggest; - } + public void setEmail(final String email) { + this.email = email; + } - public void setEmail(final String email) { - this.email = email; - } + @Override + public void setId(final Long id) { + this.id = id; + } - @Override - public void setId(final Long id) { - this.id = id; - } + public void setLanguage(final I18nLanguage language) { + this.language = language; + } - public void setLanguage(final I18nLanguage language) { - this.language = language; - } + public void setLastLogin(final Long lastLogin) { + this.lastLogin = lastLogin; + } - public void setLastLogin(final Long lastLogin) { - this.lastLogin = lastLogin; - } + public void setName(final String name) { + this.name = name; + } - public void setName(final String name) { - this.name = name; - } + public void setPassword(final String password) { + this.password = password; + } - public void setPassword(final String password) { - this.password = password; - } + public void setSalt(final byte[] salt) { + this.salt = salt; + } - public void setSalt(final byte[] salt) { - this.salt = salt; - } + public void setShortName(final String shortName) { + this.shortName = shortName; + } - public void setShortName(final String shortName) { - this.shortName = shortName; - } + public void setSNetVisibility(final UserSNetVisibility sNetVisibility) { + this.sNetVisibility = sNetVisibility; + } - public void setTimezone(final TimeZone timezone) { - this.timezone = timezone; - } + public void setTimezone(final TimeZone timezone) { + this.timezone = timezone; + } - public void setUserGroup(final Group userGroup) { - this.userGroup = userGroup; - } + public void setUserGroup(final Group userGroup) { + this.userGroup = userGroup; + } - @Override - public String toString() { - return "User[" + shortName + "]"; - } + @Override + public String toString() { + return "User[" + shortName + "]"; + } } Modified: trunk/src/main/java/cc/kune/domain/finders/GroupFinder.java =================================================================== --- trunk/src/main/java/cc/kune/domain/finders/GroupFinder.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/domain/finders/GroupFinder.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -31,10 +31,19 @@ public interface GroupFinder { + @Finder(query = "SELECT count(*) FROM Group g WHERE g.longName = :longName") + public Long countByLongName(@Named("longName") final String longName); + + @Finder(query = "SELECT count(*) FROM Group g WHERE g.shortName = :shortName") + public Long countByShortName(@Named("shortName") final String shortName); + @Finder(query = "FROM Group g WHERE g.id IN (SELECT g.id " + "FROM g.socialNetwork.accessLists.admins.list adm WHERE adm.id = :groupid)", returnAs = HashSet.class) public Set<Group> findAdminInGroups(@Named("groupid") final Long groupId); + @Finder(query = "FROM Group g WHERE g.longName = :longName") + public Group findByLongName(@Named("longName") final String longName); + @Finder(query = "FROM Group g WHERE g.shortName = :shortName") public Group findByShortName(@Named("shortName") final String shortName); Modified: trunk/src/main/java/cc/kune/domain/finders/UserFinder.java =================================================================== --- trunk/src/main/java/cc/kune/domain/finders/UserFinder.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/main/java/cc/kune/domain/finders/UserFinder.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -29,16 +29,27 @@ public interface UserFinder { - @Finder(query = "from User", returnAs = ArrayList.class) - public List<User> getAll(); + @Finder(query = "select count (*) from User where email = :email") + public Long countByEmail(@Named("email") final String email); - @Finder(query = "from User where email = :email") - public User getByEmail(@Named("email") final String email); + @Finder(query = "select count (*) from User where name = :name") + public Long countByLongName(@Named("name") final String name); - @Finder(query = "from User where id = :id") - public User getById(@Named("id") final Long id); + @Finder(query = "select count (*) from User where shortName = :shortName") + public Long countByShortName(@Named("shortName") final String shortName); - @Finder(query = "from User where shortName = :shortName") - public User getByShortName(@Named("shortName") final String shortName); + @Finder(query = "from User where email = :email") + public User findByEmail(@Named("email") final String email); + @Finder(query = "from User where id = :id") + public User findById(@Named("id") final Long id); + + @Finder(query = "from User where name = :name") + public User findByLongName(@Named("name") final String name); + + @Finder(query = "from User where shortName = :shortName") + public User findByShortName(@Named("shortName") final String shortName); + + @Finder(query = "from User", returnAs = ArrayList.class) + public List<User> getAll(); } Modified: trunk/src/test/java/cc/kune/core/server/finders/UserFinderTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/finders/UserFinderTest.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/test/java/cc/kune/core/server/finders/UserFinderTest.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -46,7 +46,7 @@ @Test public void findByEmail() { - final User user = finder.getByEmail("[email protected]"); + final User user = finder.findByEmail("[email protected]"); assertNotNull(user); } Modified: trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -30,7 +30,8 @@ import org.junit.Test; import cc.kune.core.client.errors.EmailAddressInUseException; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.SessionExpiredException; import cc.kune.core.client.rpcservices.UserService; import cc.kune.core.server.integration.IntegrationTest; @@ -90,14 +91,22 @@ @Test(expected = EmailAddressInUseException.class) public void createUserExistingEmailFails() throws Exception { assertNull(session.getUser().getId()); - final UserDTO user = new UserDTO("test", "test", "123456", properties.getAdminEmail(), lang, + final UserDTO user = new UserDTO("test2", "test2", "123456", properties.getAdminEmail(), lang, country, timezone, null, true, SubscriptionMode.manual, "blue"); userService.createUser(user, false); } - @Test(expected = GroupNameInUseException.class) - public void createUserExistingNameFails() throws Exception { + @Test(expected = GroupLongNameInUseException.class) + public void createUserExistingLongNameFails() throws Exception { assertNull(session.getUser().getId()); + final UserDTO user = new UserDTO(properties.getAdminUserName(), "test", "123456", + "[email protected]", lang, country, timezone, null, true, SubscriptionMode.manual, "blue"); + userService.createUser(user, false); + } + + @Test(expected = GroupShortNameInUseException.class) + public void createUserExistingShortNameFails() throws Exception { + assertNull(session.getUser().getId()); final UserDTO user = new UserDTO("test", properties.getAdminShortName(), "123456", "[email protected]", lang, country, timezone, null, true, SubscriptionMode.manual, "blue"); userService.createUser(user, false); Modified: trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/test/java/cc/kune/core/server/manager/GroupManagerDefaultTest.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -29,7 +29,8 @@ import org.junit.Test; import cc.kune.core.client.errors.EmailAddressInUseException; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupLongNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.client.errors.UserRegistrationException; import cc.kune.core.server.PersistencePreLoadedDataTest; @@ -79,7 +80,7 @@ rollbackTransaction(); } - @Test(expected = GroupNameInUseException.class) + @Test(expected = GroupLongNameInUseException.class) public void createGroupWithExistingLongName() throws Exception { final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, GroupType.PROJECT); @@ -93,7 +94,7 @@ rollbackTransaction(); } - @Test(expected = GroupNameInUseException.class) + @Test(expected = GroupShortNameInUseException.class) public void createGroupWithExistingShortName() throws Exception { final Group group = new Group("ysei", "Yellow Submarine Environmental Initiative", defLicense, GroupType.PROJECT); @@ -113,7 +114,7 @@ } @Test(expected = EmailAddressInUseException.class) - public void createUserExistingEmail() throws I18nNotFoundException, GroupNameInUseException, + public void createUserExistingEmail() throws I18nNotFoundException, GroupShortNameInUseException, EmailAddressInUseException { userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", "GB", "GMT", true); @@ -121,8 +122,8 @@ "GMT", true); } - @Test(expected = GroupNameInUseException.class) - public void createUserExistingLongName() throws I18nNotFoundException, GroupNameInUseException, + @Test(expected = GroupLongNameInUseException.class) + public void createUserExistingLongName() throws I18nNotFoundException, GroupShortNameInUseException, EmailAddressInUseException { userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", "GB", "GMT", true); @@ -130,8 +131,8 @@ "GMT", true); } - @Test(expected = GroupNameInUseException.class) - public void createUserExistingShortName() throws I18nNotFoundException, GroupNameInUseException, + @Test(expected = GroupShortNameInUseException.class) + public void createUserExistingShortName() throws I18nNotFoundException, GroupShortNameInUseException, EmailAddressInUseException { userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", "GB", "GMT", true); @@ -146,14 +147,14 @@ rollbackTransaction(); } - @Test(expected = GroupNameInUseException.class) + @Test(expected = GroupLongNameInUseException.class) public void createUserWithExistingLongName() throws Exception { userManager.createUser("username2", USER_LONG_NAME, "[email protected]", "userPassword", "en", "GB", TimeZone.getDefault().getID(), true); rollbackTransaction(); } - @Test(expected = GroupNameInUseException.class) + @Test(expected = GroupShortNameInUseException.class) public void createUserWithExistingShortName() throws Exception { userManager.createUser(USER_SHORT_NAME, "the user name 2", "[email protected]", "userPassword", "en", "GB", TimeZone.getDefault().getID(), true); Modified: trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java =================================================================== --- trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2011-08-14 01:21:47 UTC (rev 1494) +++ trunk/src/test/java/cc/kune/core/server/manager/UserManagerDefaultTest.java 2011-08-14 11:54:12 UTC (rev 1495) @@ -31,7 +31,7 @@ import org.hibernate.validator.InvalidStateException; import org.junit.Test; -import cc.kune.core.client.errors.GroupNameInUseException; +import cc.kune.core.client.errors.GroupShortNameInUseException; import cc.kune.core.client.errors.I18nNotFoundException; import cc.kune.core.server.PersistencePreLoadedDataTest; import cc.kune.core.server.manager.impl.SearchResult; @@ -99,7 +99,7 @@ * This was not working: * http://opensource.atlassian.com/projects/hibernate/browse/EJB-382 */ - @Test(expected = GroupNameInUseException.class) + @Test(expected = GroupShortNameInUseException.class) public void testUserExist() throws I18nNotFoundException { final User user1 = userManager.createUser("test", "test 1 name", "[email protected]", "some password", "en", "GB", "GMT", true);