diff --git a/zanata-war/src/main/java/org/zanata/action/AbstractProfileAction.java b/zanata-war/src/main/java/org/zanata/action/AbstractProfileAction.java index 57670497c6..c29008ad4b 100644 --- a/zanata-war/src/main/java/org/zanata/action/AbstractProfileAction.java +++ b/zanata-war/src/main/java/org/zanata/action/AbstractProfileAction.java @@ -5,13 +5,13 @@ import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.NotEmpty; import org.jboss.seam.annotations.In; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.dao.AccountDAO; import org.zanata.dao.PersonDAO; import org.zanata.model.HAccount; import org.zanata.model.HPerson; import org.zanata.security.ZanataIdentity; +import org.zanata.ui.faces.FacesMessages; /** * @author Patrick Huang @@ -27,6 +27,9 @@ public abstract class AbstractProfileAction { @In ZanataIdentity identity; + @In("jsfMessages") + private FacesMessages facesMessages; + @In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER) HAccount authenticatedAccount; @@ -41,7 +44,7 @@ protected void validateEmail(String email) { if (person != null && !person.getAccount().equals(authenticatedAccount)) { valid = false; - FacesMessages.instance().addToControl("email", + facesMessages.addToControl("email", "This email address is already taken"); } } @@ -51,7 +54,7 @@ protected void validateUsername(String username) { if (account != null && !account.equals(authenticatedAccount)) { valid = false; - FacesMessages.instance().addToControl("username", + facesMessages.addToControl("username", "This username is already taken"); } } diff --git a/zanata-war/src/main/java/org/zanata/action/AccountMergeAction.java b/zanata-war/src/main/java/org/zanata/action/AccountMergeAction.java index d7f445a7fa..8867f297d5 100644 --- a/zanata-war/src/main/java/org/zanata/action/AccountMergeAction.java +++ b/zanata-war/src/main/java/org/zanata/action/AccountMergeAction.java @@ -20,7 +20,7 @@ */ package org.zanata.action; -import static org.jboss.seam.international.StatusMessage.Severity.ERROR; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; import java.io.Serializable; @@ -33,17 +33,15 @@ import org.jboss.seam.annotations.Out; import org.jboss.seam.annotations.Scope; import org.jboss.seam.contexts.Contexts; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.dao.AccountDAO; import org.zanata.model.HAccount; import org.zanata.security.AuthenticationManager; -import org.zanata.security.AuthenticationType; -import org.zanata.security.ZanataCredentials; import org.zanata.security.openid.OpenIdAuthCallback; import org.zanata.security.openid.OpenIdAuthenticationResult; import org.zanata.security.openid.OpenIdProviderType; import org.zanata.service.RegisterService; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ServiceLocator; /** @@ -58,6 +56,9 @@ public class AccountMergeAction implements Serializable { @In(value = JpaIdentityStore.AUTHENTICATED_USER) private HAccount authenticatedAccount; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private AuthenticationManager authenticationManager; @@ -110,12 +111,12 @@ public void validateAccounts() { // The account to merge in has been authenticated if (obsoleteAccount != null) { if (obsoleteAccount.getId() == null) { - FacesMessages.instance().add(ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "Could not find an account for that user."); valid = false; } else if (authenticatedAccount.getId().equals( obsoleteAccount.getId())) { - FacesMessages.instance().add(ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "You are attempting to merge the same account."); valid = false; } @@ -128,7 +129,7 @@ public void mergeAccounts() { registerServiceImpl .mergeAccounts(authenticatedAccount, obsoleteAccount); obsoleteAccount = null; // reset the obsolete account - FacesMessages.instance().add("Your accounts have been merged."); + facesMessages.addGlobal("Your accounts have been merged."); } public void cancel() { diff --git a/zanata-war/src/main/java/org/zanata/action/ActivateAction.java b/zanata-war/src/main/java/org/zanata/action/ActivateAction.java index 0940925577..fa348e317d 100644 --- a/zanata-war/src/main/java/org/zanata/action/ActivateAction.java +++ b/zanata-war/src/main/java/org/zanata/action/ActivateAction.java @@ -30,13 +30,13 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.RunAsOperation; import org.jboss.seam.security.management.IdentityManager; import org.zanata.dao.AccountActivationKeyDAO; import org.zanata.exception.KeyNotFoundException; import org.zanata.exception.ActivationLinkExpiredException; import org.zanata.model.HAccountActivationKey; +import org.zanata.ui.faces.FacesMessages; @Name("activate") @Scope(ScopeType.CONVERSATION) @@ -44,6 +44,9 @@ public class ActivateAction implements Serializable { private static final long serialVersionUID = -8079131168179421345L; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private AccountActivationKeyDAO accountActivationKeyDAO; @@ -102,9 +105,9 @@ public void execute() { accountActivationKeyDAO.makeTransient(key); - FacesMessages - .instance() - .add("Your account was successfully activated. You can now sign in."); + facesMessages + .addGlobal( + "Your account was successfully activated. You can now sign in."); return "/account/login.xhtml"; } diff --git a/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java b/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java index 0c224bcdaa..57ea647b15 100644 --- a/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java +++ b/zanata-war/src/main/java/org/zanata/action/GlossaryAction.java @@ -15,8 +15,6 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; -import org.jboss.seam.international.StatusMessage.Severity; import org.zanata.common.LocaleId; import org.zanata.dao.GlossaryDAO; import org.zanata.dao.LocaleDAO; @@ -27,6 +25,7 @@ import org.zanata.service.GlossaryFileService; import org.zanata.ui.AbstractListFilter; import org.zanata.ui.InMemoryListFilter; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ServiceLocator; import com.google.common.collect.Lists; @@ -35,6 +34,8 @@ import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; + @Name("glossaryAction") @Scope(ScopeType.PAGE) @Slf4j @@ -53,6 +54,9 @@ public class GlossaryAction implements Serializable { @In private Messages msgs; + @In("jsfMessages") + private FacesMessages facesMessages; + @Getter private GlossaryFileUploadHelper glossaryFileUpload = new GlossaryFileUploadHelper(); @@ -83,8 +87,8 @@ public String deleteGlossary(String localeId) { glossaryDAO.deleteAllEntries(new LocaleId(localeId)); log.info("Glossary deleted (" + localeId + "): " + rowCount); } - FacesMessages.instance().add(Severity.INFO, - msgs.format("jsf.Glossary.deleted", rowCount, localeId)); + facesMessages.addGlobal(msgs.format("jsf.Glossary.deleted", rowCount, + localeId)); return FacesContext.getCurrentInstance().getViewRoot().getViewId(); } @@ -103,14 +107,13 @@ public String uploadFile() { for (Glossary glossary : glossaries) { glossaryFileServiceImpl.saveGlossary(glossary); } - FacesMessages.instance().add(Severity.INFO, - "Glossary file {0} uploaded.", + facesMessages.addGlobal("Glossary file {0} uploaded.", this.glossaryFileUpload.getFileName()); } catch (ZanataServiceException e) { - FacesMessages.instance().add(Severity.ERROR, e.getMessage(), + facesMessages.addGlobal(SEVERITY_ERROR, e.getMessage(), this.glossaryFileUpload.getFileName()); } catch (ConstraintViolationException e) { - FacesMessages.instance().add(Severity.ERROR, "Invalid arguments"); + facesMessages.addGlobal(SEVERITY_ERROR, "Invalid arguments"); } // NB This needs to be done as for some reason seam is losing the diff --git a/zanata-war/src/main/java/org/zanata/action/InactiveAccountAction.java b/zanata-war/src/main/java/org/zanata/action/InactiveAccountAction.java index 7b55becfef..48c9ee924f 100644 --- a/zanata-war/src/main/java/org/zanata/action/InactiveAccountAction.java +++ b/zanata-war/src/main/java/org/zanata/action/InactiveAccountAction.java @@ -10,7 +10,6 @@ import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; -import org.jboss.seam.faces.FacesMessages; import org.zanata.action.validator.NotDuplicateEmail; import org.zanata.dao.AccountActivationKeyDAO; import org.zanata.dao.AccountDAO; @@ -23,6 +22,7 @@ import org.zanata.security.ZanataCredentials; import org.zanata.security.ZanataOpenId; import org.zanata.service.EmailService; +import org.zanata.ui.faces.FacesMessages; @Name("inactiveAccountAction") @Scope(ScopeType.PAGE) @@ -42,6 +42,9 @@ public class InactiveAccountAction implements Serializable { @In private ZanataOpenId zanataOpenId; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private CredentialsDAO credentialsDAO; @@ -78,7 +81,7 @@ public void sendActivationEmail() { account.getPerson().getName(), account.getPerson().getEmail(), account.getAccountActivationKey().getKeyHash()); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); } @Transactional @@ -91,7 +94,7 @@ public String changeEmail() { personDAO.flush(); account.getPerson().setEmail(email); - FacesMessages.instance().add("Email updated."); + facesMessages.addGlobal("Email updated."); sendActivationEmail(); return "home"; @@ -101,7 +104,7 @@ public String changeEmail() { private boolean validateEmail(String email) { if (StringUtils.isEmpty(email)) { - FacesMessages.instance().addToControl("email", + facesMessages.addToControl("email", "#{msgs['javax.faces.component.UIInput.REQUIRED']}"); return false; } @@ -109,7 +112,7 @@ private boolean validateEmail(String email) { HPerson person = personDAO.findByEmail(email); if (person != null && !person.getAccount().equals(account)) { - FacesMessages.instance().addToControl("email", + facesMessages.addToControl("email", "This email address is already taken"); return false; } diff --git a/zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java b/zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java index 6009ec9d60..3a51c43d49 100644 --- a/zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java +++ b/zanata-war/src/main/java/org/zanata/action/LanguageTeamAction.java @@ -34,8 +34,6 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.annotations.security.Restrict; -import org.jboss.seam.faces.FacesMessages; -import org.jboss.seam.international.StatusMessage.Severity; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.common.LocaleId; import org.zanata.dao.LocaleDAO; @@ -51,8 +49,11 @@ import org.zanata.model.HPerson; import org.zanata.service.LanguageTeamService; import org.zanata.service.LocaleService; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.Event; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; + @Name("languageTeamAction") @Scope(ScopeType.PAGE) @Slf4j @@ -80,6 +81,9 @@ public class LanguageTeamAction implements Serializable { @In private Messages msgs; + @In("jsfMessages") + private FacesMessages facesMessages; + @In("event") private Event joinLanguageTeamEvent; @@ -158,10 +162,10 @@ public void joinTribe() { joinLanguageTeamEvent.fire(new JoinedLanguageTeam(authenticatedAccount.getUsername(), new LocaleId(language))); log.info("{} joined tribe {}", authenticatedAccount.getUsername(), this.language); - FacesMessages.instance().add(msgs.format("jsf.MemberOfTeam", + facesMessages.addGlobal(msgs.format("jsf.MemberOfTeam", getLocale().retrieveNativeName())); } catch (Exception e) { - FacesMessages.instance().add(Severity.ERROR, e.getMessage()); + facesMessages.addGlobal(SEVERITY_ERROR, e.getMessage()); } } @@ -177,7 +181,7 @@ public void leaveTribe() { leaveLanguageTeamEvent.fire(new LeftLanguageTeam(authenticatedAccount.getUsername(), new LocaleId(language))); log.info("{} left tribe {}", authenticatedAccount.getUsername(), this.language); - FacesMessages.instance().add(msgs.format("jsf.LeftTeam", + facesMessages.addGlobal(msgs.format("jsf.LeftTeam", getLocale().retrieveNativeName())); } @@ -223,11 +227,11 @@ private void savePermission(HLocaleMember member, String permissionDesc, this.localeDAO.flush(); HPerson person = member.getPerson(); if (isPermissionGranted) { - FacesMessages.instance().add( + facesMessages.addGlobal( msgs.format("jsf.AddedAPermission", person.getAccount().getUsername(), permissionDesc)); } else { - FacesMessages.instance().add( + facesMessages.addGlobal( msgs.format("jsf.RemovedAPermission", person.getAccount().getUsername(), permissionDesc)); } diff --git a/zanata-war/src/main/java/org/zanata/action/NewProfileAction.java b/zanata-war/src/main/java/org/zanata/action/NewProfileAction.java index f6d6ee5673..2982eb080e 100644 --- a/zanata-war/src/main/java/org/zanata/action/NewProfileAction.java +++ b/zanata-war/src/main/java/org/zanata/action/NewProfileAction.java @@ -29,13 +29,13 @@ import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; -import org.jboss.seam.faces.FacesMessages; import org.zanata.ApplicationConfiguration; import org.zanata.i18n.Messages; import org.zanata.security.AuthenticationType; import org.zanata.security.ZanataOpenId; import org.zanata.service.EmailService; import org.zanata.service.RegisterService; +import org.zanata.ui.faces.FacesMessages; /** * This action handles new user profile creation. @@ -52,6 +52,10 @@ public class NewProfileAction extends AbstractProfileAction implements Serializa @In private EmailService emailServiceImpl; + + @In("jsfMessages") + private FacesMessages facesMessages; + @In Messages msgs; @@ -103,7 +107,7 @@ public void createUser() { String message = emailServiceImpl.sendActivationEmail(this.name, this.email, key); identity.unAuthenticate(); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); } public void cancel() { diff --git a/zanata-war/src/main/java/org/zanata/action/PasswordResetAction.java b/zanata-war/src/main/java/org/zanata/action/PasswordResetAction.java index cb51ef6a31..47f27aa5d1 100644 --- a/zanata-war/src/main/java/org/zanata/action/PasswordResetAction.java +++ b/zanata-war/src/main/java/org/zanata/action/PasswordResetAction.java @@ -12,13 +12,13 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.AuthorizationException; import org.jboss.seam.security.NotLoggedInException; import org.jboss.seam.security.RunAsOperation; import org.jboss.seam.security.management.IdentityManager; import org.zanata.exception.KeyNotFoundException; import org.zanata.model.HAccountResetPasswordKey; +import org.zanata.ui.faces.FacesMessages; @Name("passwordReset") @Scope(ScopeType.CONVERSATION) @@ -32,6 +32,9 @@ public class PasswordResetAction implements Serializable { @In private IdentityManager identityManager; + @In("jsfMessages") + private FacesMessages facesMessages; + private String activationKey; private String password; @@ -63,7 +66,7 @@ public String getPasswordConfirm() { public boolean validatePasswordsMatch() { if (password == null || !password.equals(passwordConfirm)) { - FacesMessages.instance().addToControl("passwordConfirm", + facesMessages.addToControl("passwordConfirm", "Passwords do not match"); return false; } @@ -115,11 +118,11 @@ public void execute() { .getAccount().getUsername(), getPassword()); } catch (AuthorizationException e) { passwordChanged = false; - FacesMessages.instance().add( + facesMessages.addGlobal( "Error changing password: " + e.getMessage()); } catch (NotLoggedInException ex) { passwordChanged = false; - FacesMessages.instance().add( + facesMessages.addGlobal( "Error changing password: " + ex.getMessage()); } } @@ -128,14 +131,14 @@ public void execute() { entityManager.remove(getKey()); if (passwordChanged) { - FacesMessages - .instance() - .add("Your password has been successfully changed. Please sign in with your new password."); + facesMessages + .addGlobal( + "Your password has been successfully changed. Please sign in with your new password."); return "/account/login.xhtml"; } else { - FacesMessages - .instance() - .add("There was a problem changing the password. Please try again."); + facesMessages + .addGlobal( + "There was a problem changing the password. Please try again."); return null; } diff --git a/zanata-war/src/main/java/org/zanata/action/PasswordResetRequestAction.java b/zanata-war/src/main/java/org/zanata/action/PasswordResetRequestAction.java index f286a8f79a..b1a49a3c0b 100644 --- a/zanata-war/src/main/java/org/zanata/action/PasswordResetRequestAction.java +++ b/zanata-war/src/main/java/org/zanata/action/PasswordResetRequestAction.java @@ -14,12 +14,12 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.zanata.dao.AccountDAO; import org.zanata.model.HAccount; import org.zanata.model.HAccountResetPasswordKey; import org.zanata.service.EmailService; import org.zanata.service.UserAccountService; +import org.zanata.ui.faces.FacesMessages; @Name("passwordResetRequest") @NoArgsConstructor @@ -28,6 +28,8 @@ public class PasswordResetRequestAction implements Serializable { private static final long serialVersionUID = 1L; + @In("jsfMessages") + private FacesMessages facesMessages; @In private AccountDAO accountDAO; @In @@ -73,13 +75,13 @@ public String requestReset() { userAccountServiceImpl.requestPasswordReset(account); if (key == null) { - FacesMessages.instance().add("No such account found"); + facesMessages.addGlobal("No such account found"); return null; } else { String message = emailServiceImpl.sendPasswordResetEmail(account.getPerson(), key.getKeyHash()); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); return "/home.xhtml"; } diff --git a/zanata-war/src/main/java/org/zanata/action/ProjectHome.java b/zanata-war/src/main/java/org/zanata/action/ProjectHome.java index 9ef30ca50d..b5fc5305c6 100644 --- a/zanata-war/src/main/java/org/zanata/action/ProjectHome.java +++ b/zanata-war/src/main/java/org/zanata/action/ProjectHome.java @@ -44,8 +44,6 @@ import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.annotations.security.Restrict; -import org.jboss.seam.faces.FacesMessages; -import org.jboss.seam.international.StatusMessage; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.common.EntityStatus; import org.zanata.common.LocaleId; @@ -71,6 +69,7 @@ import org.zanata.ui.InMemoryListFilter; import org.zanata.ui.autocomplete.LocaleAutocomplete; import org.zanata.ui.autocomplete.MaintainerAutocomplete; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ComparatorUtil; import org.zanata.util.Event; import org.zanata.util.UrlUtil; @@ -81,6 +80,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; + @Name("projectHome") public class ProjectHome extends SlugHome { private static final long serialVersionUID = 1L; @@ -109,6 +110,9 @@ public class ProjectHome extends SlugHome { @In private EntityManager entityManager; + @In("jsfMessages") + private FacesMessages facesMessages; + @In("event") private Event projectUpdateEvent; @@ -283,7 +287,7 @@ public void verifySlugAvailable(ValueChangeEvent e) { public boolean validateSlug(String slug, String componentId) { if (!isSlugAvailable(slug)) { - FacesMessages.instance().addToControl(componentId, + facesMessages.addToControl(componentId, "This Project ID is not available"); return false; } @@ -314,14 +318,14 @@ public String persist() { if (StringUtils.isEmpty(selectedProjectType) || selectedProjectType.equals("null")) { - FacesMessages.instance().add(StatusMessage.Severity.ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "Project type not selected"); return null; } if (StringUtils.isEmpty(selectedProjectType) || selectedProjectType.equals("null")) { - FacesMessages.instance().add(StatusMessage.Severity.ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "Project type not selected"); return null; } @@ -552,7 +556,7 @@ public void addWebHook(String url) { WebHook webHook = new WebHook(this.getInstance(), url); getInstance().getWebHooks().add(webHook); update(); - FacesMessages.instance().add(StatusMessage.Severity.INFO, + facesMessages.addGlobal( msgs.format("jsf.project.AddNewWebhook", webHook.getUrl())); } } @@ -561,19 +565,19 @@ public void addWebHook(String url) { public void removeWebHook(WebHook webHook) { getInstance().getWebHooks().remove(webHook); webHookDAO.makeTransient(webHook); - FacesMessages.instance().add(StatusMessage.Severity.INFO, + facesMessages.addGlobal( msgs.format("jsf.project.RemoveWebhook", webHook.getUrl())); } private boolean isValidUrl(String url) { if (!UrlUtil.isValidUrl(url)) { - FacesMessages.instance().add(StatusMessage.Severity.ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, msgs.format("jsf.project.InvalidUrl", url)); return false; } for(WebHook webHook: getInstance().getWebHooks()) { if(StringUtils.equalsIgnoreCase(webHook.getUrl(), url)) { - FacesMessages.instance().add(StatusMessage.Severity.ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, msgs.format("jsf.project.DuplicateUrl", url)); return false; } diff --git a/zanata-war/src/main/java/org/zanata/action/RegisterAction.java b/zanata-war/src/main/java/org/zanata/action/RegisterAction.java index c4c7cf3724..812da7d1fb 100644 --- a/zanata-war/src/main/java/org/zanata/action/RegisterAction.java +++ b/zanata-war/src/main/java/org/zanata/action/RegisterAction.java @@ -37,13 +37,14 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; -import org.jboss.seam.international.StatusMessage; import org.zanata.action.validator.NotDuplicateEmail; import org.zanata.dao.PersonDAO; import org.zanata.model.HPerson; import org.zanata.service.EmailService; import org.zanata.service.RegisterService; +import org.zanata.ui.faces.FacesMessages; + +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; @Name("register") @Scope(ScopeType.CONVERSATION) @@ -55,6 +56,9 @@ public class RegisterAction implements Serializable { @In private EntityManager entityManager; + @In("jsfMessages") + private FacesMessages facesMessages; + @In RegisterService registerServiceImpl; @@ -132,7 +136,7 @@ public void validateUsername(String username) { .createQuery("from HAccount a where a.username = :username") .setParameter("username", username).getSingleResult(); valid = false; - FacesMessages.instance().addToControl("username", + facesMessages.addToControl("username", "This username is not available"); } catch (NoResultException e) { // pass @@ -142,7 +146,7 @@ public void validateUsername(String username) { public void validateHumanField() { if (humanField != null && humanField.length() > 0) { valid = false; - FacesMessages.instance().add(StatusMessage.Severity.ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "You have filled a field that was not meant for humans."); humanField = null; } @@ -168,7 +172,7 @@ public String register() { String message = emailServiceImpl.sendActivationEmail(user, email, key); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); return "/home.xhtml"; } diff --git a/zanata-war/src/main/java/org/zanata/action/SendEmailAction.java b/zanata-war/src/main/java/org/zanata/action/SendEmailAction.java index a84ffd9df9..cbb6d78aff 100644 --- a/zanata-war/src/main/java/org/zanata/action/SendEmailAction.java +++ b/zanata-war/src/main/java/org/zanata/action/SendEmailAction.java @@ -24,10 +24,14 @@ import java.util.Collection; import java.util.List; import java.util.Locale; + import javax.faces.application.FacesMessage; -import com.google.common.collect.Lists; +import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; + import org.hibernate.validator.constraints.Email; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.AutoCreate; @@ -35,13 +39,17 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.international.LocaleSelector; import org.jboss.seam.security.NotLoggedInException; import org.jboss.seam.security.management.JpaIdentityStore; import org.jboss.seam.web.ServletContexts; import org.zanata.common.LocaleId; +import org.zanata.email.ContactAdminEmailStrategy; +import org.zanata.email.ContactLanguageCoordinatorEmailStrategy; import org.zanata.email.EmailStrategy; +import org.zanata.email.RequestRoleLanguageEmailStrategy; +import org.zanata.email.RequestToJoinLanguageEmailStrategy; +import org.zanata.email.RequestToJoinVersionGroupEmailStrategy; import org.zanata.model.HAccount; import org.zanata.model.HLocale; import org.zanata.model.HPerson; @@ -50,20 +58,11 @@ import org.zanata.security.UserRedirectBean; import org.zanata.service.EmailService; import org.zanata.service.LocaleService; - -import lombok.Getter; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.UrlUtil; import org.zanata.webtrans.shared.model.ProjectIterationId; -import org.zanata.email.ContactAdminEmailStrategy; -import org.zanata.email.ContactLanguageCoordinatorEmailStrategy; - -import org.zanata.email.RequestRoleLanguageEmailStrategy; - -import org.zanata.email.RequestToJoinLanguageEmailStrategy; -import org.zanata.email.RequestToJoinVersionGroupEmailStrategy; +import com.google.common.collect.Lists; /** * Sends an email to a specified role. @@ -109,6 +108,9 @@ public class SendEmailAction implements Serializable { @In private LocaleSelector localeSelector; + @In("jsfMessages") + private FacesMessages facesMessages; + @Getter @Setter private String fromName; @@ -196,7 +198,7 @@ public String send() { String msg = emailServiceImpl.sendToAdmins(strategy); - FacesMessages.instance().add(msg); + facesMessages.addGlobal(msg); conversationScopeMessages.setMessage( FacesMessage.SEVERITY_INFO, msg); return SUCCESS; @@ -213,7 +215,7 @@ public String send() { String msg = emailServiceImpl.sendToLanguageCoordinators( locale, strategy); - FacesMessages.instance().add(msg); + facesMessages.addGlobal(msg); conversationScopeMessages.setMessage( FacesMessage.SEVERITY_INFO, msg); return SUCCESS; @@ -234,7 +236,7 @@ public String send() { .getRequestAsCoordinator()); String msg = emailServiceImpl.sendToLanguageCoordinators( locale, strategy); - FacesMessages.instance().add(msg); + facesMessages.addGlobal(msg); conversationScopeMessages.setMessage( FacesMessage.SEVERITY_INFO, msg); return SUCCESS; @@ -255,7 +257,7 @@ public String send() { .requestingCoordinator()); String msg = emailServiceImpl.sendToLanguageCoordinators( locale, strategy); - FacesMessages.instance().add(msg); + facesMessages.addGlobal(msg); conversationScopeMessages.setMessage( FacesMessage.SEVERITY_INFO, msg); return SUCCESS; @@ -295,7 +297,7 @@ public String send() { throw new Exception("Invalid email type: " + emailType); } } catch (Exception e) { - FacesMessages.instance().add( + facesMessages.addGlobal( "There was a problem sending the message: " + e.getMessage()); log.error( @@ -312,7 +314,7 @@ public void cancel() { log.info( "Canceled sending email: fromName '{}', fromLoginName '{}', replyEmail '{}', subject '{}', message '{}'", fromName, fromLoginName, replyEmail, subject, htmlMessage); - FacesMessages.instance().add("Sending message canceled"); + facesMessages.addGlobal("Sending message canceled"); conversationScopeMessages.setMessage(FacesMessage.SEVERITY_INFO, "Sending message canceled"); } diff --git a/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java b/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java index 750777b985..41ca787aac 100644 --- a/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java +++ b/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java @@ -41,13 +41,13 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.annotations.security.Restrict; -import org.jboss.seam.faces.FacesMessages; import org.zanata.ApplicationConfiguration; import org.zanata.action.validator.EmailList; import org.zanata.dao.ApplicationConfigurationDAO; import org.zanata.model.HApplicationConfiguration; import org.zanata.model.validator.Url; import org.zanata.rest.service.ServerConfigurationService; +import org.zanata.ui.faces.FacesMessages; import static org.zanata.model.HApplicationConfiguration.*; @@ -58,6 +58,9 @@ public class ServerConfigurationBean implements Serializable { private static final long serialVersionUID = 1L; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private ApplicationConfigurationDAO applicationConfigurationDAO; @@ -165,7 +168,7 @@ public String updateHomeContent() { persistPropertyToDatabase(homeContentProperty); applicationConfigurationDAO.flush(); - FacesMessages.instance().add("Home content was successfully updated."); + facesMessages.addGlobal("Home content was successfully updated."); return "/home.xhtml"; } @@ -173,7 +176,7 @@ public String updateHelpContent() { persistPropertyToDatabase(helpContentProperty); applicationConfigurationDAO.flush(); - FacesMessages.instance().add( + facesMessages.addGlobal( "Help page content was successfully updated."); return "/help/view.xhtml"; } @@ -238,9 +241,8 @@ public String update() { applicationConfigurationDAO.makePersistent(emailLogEventsValue); applicationConfigurationDAO.flush(); - FacesMessages facesMessages = FacesMessages.instance(); - facesMessages.clearGlobalMessages(); - facesMessages.add("Configuration was successfully updated."); + facesMessages.clear(); + facesMessages.addGlobal("Configuration was successfully updated."); return "success"; } diff --git a/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java b/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java index fc5026c6f7..3ded4eedcb 100644 --- a/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java +++ b/zanata-war/src/main/java/org/zanata/action/TranslationMemoryAction.java @@ -20,7 +20,7 @@ */ package org.zanata.action; -import static org.jboss.seam.international.StatusMessage.Severity.ERROR; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; import java.io.Serializable; import java.util.Collections; @@ -41,7 +41,6 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.annotations.security.Restrict; -import org.jboss.seam.faces.FacesMessages; import org.zanata.async.AsyncTaskHandle; import org.zanata.async.AsyncTaskHandleManager; import org.zanata.dao.TransMemoryDAO; @@ -49,6 +48,7 @@ import org.zanata.model.tm.TransMemory; import org.zanata.rest.service.TranslationMemoryResourceService; +import org.zanata.ui.faces.FacesMessages; import com.google.common.collect.Lists; /** @@ -62,6 +62,8 @@ @Scope(ScopeType.PAGE) @Slf4j public class TranslationMemoryAction implements Serializable { + @In("jsfMessages") + private FacesMessages facesMessages; @In private TransMemoryDAO transMemoryDAO; @@ -156,7 +158,7 @@ public void deleteTransMemory(String transMemorySlug) { translationMemoryResource.deleteTranslationMemory(transMemorySlug); transMemoryList = null; // Force refresh next time list is requested } catch (EntityMissingException e) { - FacesMessages.instance().addFromResourceBundle(ERROR, + facesMessages.addFromResourceBundle(SEVERITY_ERROR, "jsf.transmemory.TransMemoryNotFound"); } } diff --git a/zanata-war/src/main/java/org/zanata/action/UserAction.java b/zanata-war/src/main/java/org/zanata/action/UserAction.java index 4321b4755d..d5d630ba80 100644 --- a/zanata-war/src/main/java/org/zanata/action/UserAction.java +++ b/zanata-war/src/main/java/org/zanata/action/UserAction.java @@ -35,8 +35,6 @@ import org.jboss.seam.annotations.Install; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; -import org.jboss.seam.international.StatusMessage; import org.jboss.seam.security.management.IdentityManager; import org.zanata.ApplicationConfiguration; import org.zanata.dao.AccountDAO; @@ -51,7 +49,9 @@ import lombok.Getter; import lombok.Setter; +import org.zanata.ui.faces.FacesMessages; +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; import static org.jboss.seam.ScopeType.CONVERSATION; import static org.jboss.seam.annotations.Install.APPLICATION; @@ -75,6 +75,9 @@ public class UserAction extends @In private EntityManager entityManager; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private Messages msgs; @@ -118,9 +121,9 @@ public void deleteUser(String userName) { entityManager.flush(); } catch (PersistenceException e) { if (e.getCause() instanceof ConstraintViolationException) { - FacesMessages.instance() - .add(StatusMessage.Severity.ERROR, msgs.get( - "jsf.UserManager.delete.constraintViolation.error")); + facesMessages + .addFromResourceBundle(SEVERITY_ERROR, + "jsf.UserManager.delete.constraintViolation.error"); } } } @@ -160,7 +163,7 @@ public String save() { newUsername); usernameChanged = true; } else { - FacesMessages.instance().addToControl("username", + facesMessages.addToControl("username", msgs.format("jsf.UsernameNotAvailable", getUsername())); setUsername(originalUsername); // reset the username field @@ -174,7 +177,7 @@ public String save() { String email = getEmail(newUsername); String message = emailServiceImpl.sendUsernameChangedEmail( email, newUsername); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); } return saveResult; } diff --git a/zanata-war/src/main/java/org/zanata/action/UserSettingsAction.java b/zanata-war/src/main/java/org/zanata/action/UserSettingsAction.java index ec56350bac..ce09b71125 100644 --- a/zanata-war/src/main/java/org/zanata/action/UserSettingsAction.java +++ b/zanata-war/src/main/java/org/zanata/action/UserSettingsAction.java @@ -20,22 +20,16 @@ */ package org.zanata.action; -import static org.jboss.seam.international.StatusMessage.Severity.ERROR; -import static org.jboss.seam.international.StatusMessage.Severity.INFO; - import java.io.Serializable; import java.util.Collections; import java.util.List; import javax.faces.context.ExternalContext; -import javax.mail.internet.InternetAddress; import javax.persistence.EntityManager; import javax.servlet.http.HttpServletRequest; import javax.validation.constraints.Size; -import com.googlecode.totallylazy.collections.PersistentMap; import lombok.Getter; -import lombok.RequiredArgsConstructor; import lombok.Setter; import lombok.extern.slf4j.Slf4j; @@ -48,14 +42,12 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.Transactional; import org.jboss.seam.core.Conversation; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.RunAsOperation; import org.jboss.seam.security.management.IdentityManager; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.dao.AccountDAO; import org.zanata.dao.CredentialsDAO; import org.zanata.dao.PersonDAO; -import org.zanata.email.EmailStrategy; import org.zanata.i18n.Messages; import org.zanata.model.HAccount; import org.zanata.model.HLocale; @@ -72,11 +64,15 @@ import org.zanata.service.EmailService; import org.zanata.service.LanguageTeamService; import org.zanata.service.impl.EmailChangeService; - -import com.google.common.collect.Lists; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ComparatorUtil; import org.zanata.util.ServiceLocator; +import com.google.common.collect.Lists; + +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; +import static javax.faces.application.FacesMessage.SEVERITY_INFO; + /** * This is an action class that should eventually replace the * {@link org.zanata.action.ProfileAction} class as the UI controller for user @@ -111,6 +107,9 @@ public class UserSettingsAction { @In private LanguageTeamService languageTeamServiceImpl; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private Messages msgs; @@ -154,7 +153,7 @@ public void onCreate() { public void updateEmail() { if(!isEmailAddressValid(emailAddress)) { - FacesMessages.instance().addToControl("email", + facesMessages.addToControl("email", "This email address is already taken"); return; } @@ -170,7 +169,7 @@ public void updateEmail() { String message = emailServiceImpl.sendEmailValidationEmail(this.accountName, this.emailAddress, activationKey); - FacesMessages.instance().add(message); + facesMessages.addGlobal(message); } } @@ -184,7 +183,7 @@ public void changePassword() { if (isPasswordSet() && !identityManager.authenticate( authenticatedAccount.getUsername(), oldPassword)) { - FacesMessages.instance().addToControl("oldPassword", + facesMessages.addToControl("oldPassword", "Old password is incorrect, please check and try again."); return; } @@ -196,7 +195,7 @@ public void execute() { } }.addRole("admin").run(); - FacesMessages.instance().add( + facesMessages.addGlobal( "Your password has been successfully changed."); } @@ -324,8 +323,8 @@ public void updateProfile() { // TODO When more fields are added, we'll need a better solution authenticatedAccount.getPerson().setName(accountName); personDAO.makePersistent(person); - FacesMessages.instance().add( - msgs.get("jsf.dashboard.settings.profileUpdated.message")); + facesMessages.addFromResourceBundle(SEVERITY_INFO, + "jsf.dashboard.settings.profileUpdated.message"); } // TODO Cache this @@ -341,7 +340,7 @@ public List getUserLanguageTeams() { public void leaveLanguageTeam(String localeId) { languageTeamServiceImpl.leaveLanguageTeam(localeId, authenticatedAccount.getPerson().getId()); - FacesMessages.instance().add( + facesMessages.addGlobal( msgs.format("jsf.dashboard.settings.leaveLangTeam.message", localeId)); } @@ -370,23 +369,22 @@ public void afterOpenIdAuth(OpenIdAuthenticationResult result) { CredentialsDAO credentialsDAO = ServiceLocator.instance().getInstance( CredentialsDAO.class); + FacesMessages facesMessages = + ServiceLocator.instance().getInstance( + FacesMessages.class); Conversation.instance().begin(true, false); // (To retain // messages) - FacesMessages.instance().clear(); + facesMessages.clear(); if (credentialsDAO.findByUser(result.getAuthenticatedId()) != null) { - FacesMessages.instance().add(ERROR, - "jsf.identities.invalid.Duplicate", null, - "Duplicate identity", + facesMessages.addGlobal(SEVERITY_ERROR, "This Identity is already in use."); } else { em.persist(this.newCredentials); - FacesMessages - .instance() - .add(INFO, "jsf.identities.IdentityAdded", null, - "Identity Added", - "Your new identity has been added to this account."); + facesMessages + .addGlobal( + "Your new identity has been added to this account."); } } } diff --git a/zanata-war/src/main/java/org/zanata/action/ValidateEmailAction.java b/zanata-war/src/main/java/org/zanata/action/ValidateEmailAction.java index c1dba4012d..272f678497 100644 --- a/zanata-war/src/main/java/org/zanata/action/ValidateEmailAction.java +++ b/zanata-war/src/main/java/org/zanata/action/ValidateEmailAction.java @@ -20,8 +20,6 @@ */ package org.zanata.action; -import static org.jboss.seam.international.StatusMessage.Severity.ERROR; - import java.io.Serializable; import java.util.Date; @@ -33,7 +31,6 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Transactional; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.Identity; import org.zanata.dao.PersonDAO; import org.zanata.exception.KeyNotFoundException; @@ -41,6 +38,9 @@ import org.zanata.model.HPerson; import org.zanata.model.HPersonEmailValidationKey; import org.zanata.service.impl.EmailChangeService; +import org.zanata.ui.faces.FacesMessages; + +import static javax.faces.application.FacesMessage.SEVERITY_ERROR; @Name("validateEmail") @Slf4j @@ -54,6 +54,9 @@ public class ValidateEmailAction implements Serializable { @In Identity identity; + @In("jsfMessages") + private FacesMessages facesMessages; + @In EmailChangeService emailChangeService; @@ -84,7 +87,7 @@ public String validate() throws LoginException { personDAO.makePersistent(person); personDAO.flush(); emailChangeService.removeEntry(entry); - FacesMessages.instance().add( + facesMessages.addGlobal( "You have successfully changed your email account."); log.info("update email address to {} successfully", entry.getEmail()); @@ -100,7 +103,7 @@ public String validate() throws LoginException { private String checkExpiryDate(Date createdDate) { if (emailChangeService.isExpired(createdDate, LINK_ACTIVE_DAYS)) { log.info("Creation date expired:" + createdDate); - FacesMessages.instance().add(ERROR, + facesMessages.addGlobal(SEVERITY_ERROR, "Link expired. Please update your email again."); return "/profile/edit.xhtml"; } diff --git a/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java b/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java index 0f40d3fcb5..431aff1673 100644 --- a/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java +++ b/zanata-war/src/main/java/org/zanata/action/VersionGroupHome.java @@ -35,7 +35,6 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.security.Restrict; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.common.EntityStatus; import org.zanata.dao.ProjectIterationDAO; @@ -54,6 +53,7 @@ import org.zanata.ui.InMemoryListFilter; import org.zanata.ui.autocomplete.LocaleAutocomplete; import org.zanata.ui.autocomplete.MaintainerAutocomplete; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ComparatorUtil; import org.zanata.util.ServiceLocator; import com.google.common.base.Predicate; @@ -78,6 +78,9 @@ public class VersionGroupHome extends SlugHome { @In(required = false, value = JpaIdentityStore.AUTHENTICATED_USER) private HAccount authenticatedAccount; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private SlugEntityService slugEntityServiceImpl; @@ -120,7 +123,7 @@ public void verifySlugAvailable(ValueChangeEvent e) { public boolean validateSlug(String slug, String componentId) { if (!isSlugAvailable(slug)) { - FacesMessages.instance().addToControl(componentId, + facesMessages.addToControl(componentId, "This Group ID is not available"); return false; } diff --git a/zanata-war/src/main/java/org/zanata/action/VersionGroupJoinAction.java b/zanata-war/src/main/java/org/zanata/action/VersionGroupJoinAction.java index def81c7e88..3cdc488bb0 100644 --- a/zanata-war/src/main/java/org/zanata/action/VersionGroupJoinAction.java +++ b/zanata-war/src/main/java/org/zanata/action/VersionGroupJoinAction.java @@ -35,7 +35,6 @@ import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.security.management.JpaIdentityStore; import org.zanata.dao.ProjectDAO; import org.zanata.dao.ProjectIterationDAO; @@ -45,6 +44,7 @@ import org.zanata.model.HProject; import org.zanata.model.HProjectIteration; import org.zanata.service.VersionGroupService; +import org.zanata.ui.faces.FacesMessages; import com.google.common.collect.Lists; @@ -54,6 +54,9 @@ public class VersionGroupJoinAction implements Serializable { private static final long serialVersionUID = 1L; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private VersionGroupService versionGroupServiceImpl; @@ -140,7 +143,7 @@ public String send() { } return sendEmail.sendToVersionGroupMaintainer(maintainers); } else { - FacesMessages.instance().add( + facesMessages.addGlobal( "#{msgs['jsf.NoProjectVersionSelected']}"); return "failure"; } diff --git a/zanata-war/src/main/java/org/zanata/security/AuthenticationManager.java b/zanata-war/src/main/java/org/zanata/security/AuthenticationManager.java index 3ce9246042..33fbdd5378 100644 --- a/zanata-war/src/main/java/org/zanata/security/AuthenticationManager.java +++ b/zanata-war/src/main/java/org/zanata/security/AuthenticationManager.java @@ -29,7 +29,6 @@ import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Observer; import org.jboss.seam.annotations.Scope; -import org.jboss.seam.faces.FacesMessages; import org.zanata.ApplicationConfiguration; import org.zanata.dao.AccountDAO; import org.zanata.dao.CredentialsDAO; @@ -39,6 +38,7 @@ import org.zanata.security.openid.OpenIdAuthCallback; import org.zanata.security.openid.OpenIdProviderType; import org.zanata.service.UserAccountService; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.ServiceLocator; import javax.enterprise.event.Observes; @@ -69,6 +69,9 @@ public class AuthenticationManager { @In private ZanataOpenId zanataOpenId; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private UserAccountService userAccountServiceImpl; @@ -384,8 +387,8 @@ private boolean isAccountEnabledAndActivated() { + " has been disabled. Please contact server admin."; } - FacesMessages.instance().clear(); - FacesMessages.instance().add(message); + facesMessages.clear(); + facesMessages.addGlobal(message); // identity.setPreAuthenticated(false); // identity.unAuthenticate(); diff --git a/zanata-war/src/main/java/org/zanata/security/ZanataOpenId.java b/zanata-war/src/main/java/org/zanata/security/ZanataOpenId.java index 43b70571b5..fc2c784359 100644 --- a/zanata-war/src/main/java/org/zanata/security/ZanataOpenId.java +++ b/zanata-war/src/main/java/org/zanata/security/ZanataOpenId.java @@ -34,7 +34,6 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.core.Events; import org.jboss.seam.faces.FacesManager; -import org.jboss.seam.faces.FacesMessages; import org.jboss.seam.faces.Redirect; import org.jboss.seam.international.StatusMessage; import org.jboss.seam.security.Credentials; @@ -63,6 +62,7 @@ import org.zanata.security.openid.OpenIdProvider; import org.zanata.security.openid.OpenIdProviderType; import org.zanata.security.openid.YahooOpenIdProvider; +import org.zanata.ui.faces.FacesMessages; import org.zanata.util.Event; import org.zanata.util.ServiceLocator; @@ -79,6 +79,9 @@ public class ZanataOpenId implements OpenIdAuthCallback { private ZanataIdentity identity; private ApplicationConfiguration applicationConfiguration; + @In("jsfMessages") + private FacesMessages facesMessages; + @In private Credentials credentials; @@ -190,8 +193,7 @@ public String verifyResponse(HttpServletRequest httpReq) { // TODO This should be done at a higher level. i.e. instead of // returning a string, return an // object that holds more information for the UI to render - FacesMessages.instance().add(StatusMessage.Severity.INFO, - "Authentication Request Cancelled"); + facesMessages.addGlobal("Authentication Request Cancelled"); } // examine the verification result and extract the verified diff --git a/zanata-war/src/main/java/org/zanata/ui/faces/FacesMessages.java b/zanata-war/src/main/java/org/zanata/ui/faces/FacesMessages.java index bbf1a83381..60dbebac9c 100644 --- a/zanata-war/src/main/java/org/zanata/ui/faces/FacesMessages.java +++ b/zanata-war/src/main/java/org/zanata/ui/faces/FacesMessages.java @@ -31,6 +31,8 @@ import org.jboss.seam.annotations.Scope; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.core.Interpolator; +import org.zanata.i18n.Messages; +import org.zanata.util.ServiceLocator; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; @@ -106,6 +108,59 @@ public void addToControl(String id, String messageTemplate, addToControl(id, SEVERITY_INFO, null, messageTemplate, params); } + /** + * Adds a global message with the default severity (info). + * + * @param messageTemplate + * The message template string (not a key). + * @param params + * The parameters to be interpolated into the template. + */ + public void addGlobal(String messageTemplate, final Object... params) { + addToControl(null, SEVERITY_INFO, null, messageTemplate, params); + } + + /** + * Adds a global message with the default severity (info). + * + * @param severity + * Message severity + * @param messageTemplate + * The message template string (not a key). + * @param params + * The parameters to be interpolated into the template. + */ + public void addGlobal(Severity severity, String messageTemplate, + final Object... params) { + addToControl(null, severity, null, messageTemplate, params); + } + + /** + * Adds a global message from the configured resource bundle. + * @param severity Message severity. + * @param key Resource bundle message key. + * @param params The parameters to be interpolated into the message. + */ + public void addFromResourceBundle(Severity severity, String key, + final Object... params) { + Messages messages = + ServiceLocator.instance().getInstance(Messages.class); + String formatedMssg = messages.format(key, params); + addGlobal(severity, formatedMssg, params); + } + + /** + * Clears all messages from the faces context. + */ + public void clear() { + Iterator it = + FacesContext.getCurrentInstance().getMessages(); + while (it.hasNext()) { + it.remove(); + it.next(); + } + } + /** * Returns a list of messages for the specific component Id that is given, * and which reside in the current Faces context.