diff --git a/functional-test/pom.xml b/functional-test/pom.xml index d9d1846123..ab077827e1 100644 --- a/functional-test/pom.xml +++ b/functional-test/pom.xml @@ -222,6 +222,10 @@ javassist javassist + + javax.annotation + jsr250-api + @@ -764,23 +768,6 @@ true - - - - - org.jboss - jboss-remote-naming - - org.jboss.naming.remote.* - - - - - - com.thoughtworks.selenium.* - org.openqa.selenium.* - - diff --git a/pom.xml b/pom.xml index 1c2c7c9d98..fbe88154f1 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,18 @@ import + + commons-beanutils + commons-beanutils + 1.9.2 + + + commons-logging + commons-logging + + + + org.assertj assertj-core @@ -147,6 +159,16 @@ org.zanata zanata-common-api ${zanata.api.version} + + + javax.servlet + servlet-api + + + javax.annotation + jsr250-api + + @@ -484,6 +506,10 @@ commons-httpclient commons-httpclient + + javax.servlet + servlet-api + org.apache.solr solr-solrj @@ -707,66 +733,6 @@ maven-enforcer-plugin - - - - - com.beust - jcommander - - com.beust.jcommander.* - - - - com.google.gwt - gwt-dev - - org.apache.* - - - - - commons-fileupload - commons-fileupload - - org.apache.commons.fileupload.* - - - - - org.apache.maven - maven* - - org.apache.maven.* - - - - - org.picketbox - picketbox - - org.picketbox.* - org.jboss.* - - - - - net.sf.ehcache - ehcache-core - - net.sf.ehcache.* - - - - - org.projectlombok - lombok - - com.sun.jna.* - - - - jboss-public-repository-group diff --git a/zanata-war/pom.xml b/zanata-war/pom.xml index 85c40393f1..ade7e20d04 100644 --- a/zanata-war/pom.xml +++ b/zanata-war/pom.xml @@ -144,18 +144,10 @@ antlr:antlr com.google.guava:guava-gwt - - com.ibm.icu:icu4j - - commons-codec:commons-codec - - commons-collections:commons-collections - commons-lang:commons-lang javax.el:el-api javax.servlet.jsp:jsp-api - org.richfaces.core:richfaces-core-impl com.sun.faces:jsf-impl org.apache.solr:solr-core @@ -213,53 +205,45 @@ + + + + com.ning.maven.plugins + maven-duplicate-finder-plugin - - - - - - - - com.google.common.* - com.google.gwt.* - com.google.web.bindery.* - com.ibm.icu.* - com.steadystate.css.* - javax.annotation.* - javax.servlet.* - javax.servlet.jsp.* - javax.validation.ConstraintViolationException_CustomFieldSerializer - javax.xml.* - org.apache.commons.beanutils.* - org.apache.commons.codec.* - org.apache.commons.collections.* - org.apache.commons.io.* - org.apache.commons.lang.* - org.apache.commons.logging.* - org.apache.html.* - org.apache.http.* - org.apache.james.mime4j.* - org.apache.regexp.* - org.apache.wml.* - org.apache.xerces.* - org.apache.xml.* - org.apache.xmlcommons.Version - org.cyberneko.html.* - org.hibernate.validator.* - org.w3c.css.sac.* - org.w3c.dom.* - org.xml.sax.* - - - org.osgi.util.* - - com.sun.tools.* - sun.* - - - + + + com.google.gwt + gwt-user + + + + + com/lowagie/text/pdf/fonts/cmap_info.txt + + META-INF/components.xml + + META-INF/faces-config.xml + + META-INF/javamail.providers + + META-INF/richfaces/resource-mappings.properties + + META-INF/seam-deployment.properties + + build.properties + + seam.properties + + + + validate + + check + + + @@ -1154,12 +1138,6 @@ - - com.google.gwt - gwt-dev - provided - - com.google.gwt gwt-servlet @@ -1172,6 +1150,22 @@ provided + + com.google.gwt.gwtmockito + gwtmockito + 1.1.3 + + + com.google.gwt + gwt-dev + + + org.mockito + mockito-all + + + + org.json json @@ -1223,6 +1217,10 @@ javassist javassist + + javax.annotation + jsr250-api + jcip-annotations net.jcip @@ -1361,7 +1359,6 @@ org.richfaces.ui richfaces-components-ui - org.richfaces.core richfaces-core-impl @@ -1521,6 +1518,12 @@ com.google.guava guava-gwt + + + com.google.code.findbugs + jsr305 + + com.google.code.findbugs @@ -1631,8 +1634,8 @@ - javax.servlet - javax.servlet-api + org.jboss.spec.javax.servlet + jboss-servlet-api_3.0_spec provided @@ -1674,8 +1677,8 @@ - javax.annotation - jsr250-api + org.jboss.spec.javax.annotation + jboss-annotations-api_1.1_spec provided @@ -2024,6 +2027,10 @@ classloader-leak-prevention 1.9.3 + + javax.servlet + servlet-api + org.apache.cxf cxf-rt-transports-http diff --git a/zanata-war/src/main/java/org/zanata/ApplicationConfiguration.java b/zanata-war/src/main/java/org/zanata/ApplicationConfiguration.java index bd486e77c9..135237c9ef 100644 --- a/zanata-war/src/main/java/org/zanata/ApplicationConfiguration.java +++ b/zanata-war/src/main/java/org/zanata/ApplicationConfiguration.java @@ -31,6 +31,7 @@ import javax.servlet.http.HttpServletRequest; +import com.google.common.base.Optional; import lombok.extern.slf4j.Slf4j; import lombok.Getter; import lombok.Setter; @@ -46,6 +47,7 @@ import org.jboss.seam.annotations.Synchronized; import org.jboss.seam.web.ServletContexts; import org.zanata.config.DatabaseBackedConfig; +import org.zanata.config.JaasConfig; import org.zanata.config.JndiBackedConfig; import org.zanata.log4j.ZanataHTMLLayout; import org.zanata.log4j.ZanataSMTPAppender; @@ -56,6 +58,7 @@ import com.google.common.base.Strings; import com.google.common.collect.Maps; import com.google.common.collect.Sets; +import org.zanata.security.OpenIdLoginModule; @Name("applicationConfiguration") @Scope(ScopeType.APPLICATION) @@ -76,6 +79,8 @@ public class ApplicationConfiguration implements Serializable { private DatabaseBackedConfig databaseBackedConfig; @In private JndiBackedConfig jndiBackedConfig; + @In + private JaasConfig jaasConfig; private static final ZanataSMTPAppender smtpAppenderInstance = new ZanataSMTPAppender(); @@ -112,12 +117,15 @@ public class ApplicationConfiguration implements Serializable { // set by component.xml private String webAssetsVersion = ""; + private Optional openIdProvider; // Cache the OpenId provider + @Create public void load() { log.info("Reloading configuration"); this.loadLoginModuleNames(); this.validateConfiguration(); this.applyLoggingConfiguration(); + this.loadJaasConfig(); } @Observer({ EVENT_CONFIGURATION_CHANGED }) @@ -202,6 +210,23 @@ public void applyLoggingConfiguration() { } } + /** + * Load configuration pertaining to JAAS. + */ + private void loadJaasConfig() { + if (loginModuleNames.containsKey(AuthenticationType.OPENID)) { + openIdProvider = + Optional.fromNullable(jaasConfig + .getAppConfigurationProperty( + loginModuleNames + .get(AuthenticationType.OPENID), + OpenIdLoginModule.class, + OpenIdLoginModule.OPEN_ID_PROVIDER_KEY)); + } else { + openIdProvider = Optional.absent(); + } + } + public String getRegisterPath() { return databaseBackedConfig.getRegistrationUrl(); } @@ -275,6 +300,14 @@ public boolean isOpenIdAuth() { return this.loginModuleNames.containsKey(AuthenticationType.OPENID); } + public boolean isSingleOpenIdProvider() { + return openIdProvider.isPresent(); + } + + public String getOpenIdProviderUrl() { + return openIdProvider.orNull(); + } + public boolean isKerberosAuth() { return this.loginModuleNames.containsKey(AuthenticationType.KERBEROS); } diff --git a/zanata-war/src/main/java/org/zanata/action/ApplicationConfigurationAction.java b/zanata-war/src/main/java/org/zanata/action/ApplicationConfigurationAction.java new file mode 100644 index 0000000000..6894428093 --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/action/ApplicationConfigurationAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2014, Red Hat, Inc. and individual contributors as indicated by the + * @author tags. See the copyright.txt file in the distribution for a full + * listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This software 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this software; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF + * site: http://www.fsf.org. + */ +package org.zanata.action; + +import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.In; +import org.jboss.seam.annotations.Name; +import org.jboss.seam.annotations.Scope; +import org.zanata.ApplicationConfiguration; + +/** + * This class serves as a UI proxy for the application configuration bean. + * It offers methods that help figuring out how to present certain options + * depending on the application configuration. + * + * @author Carlos Munoz camunoz@redhat.com + */ +@Name("applicationConfigurationAction") +@Scope(ScopeType.STATELESS) +public class ApplicationConfigurationAction { + @In + private ApplicationConfiguration applicationConfiguration; + + public boolean isLoginHandledByInternalPage() { + return applicationConfiguration.isInternalAuth() + || applicationConfiguration.isJaasAuth() + || (applicationConfiguration.isOpenIdAuth() && !applicationConfiguration + .isSingleOpenIdProvider()); + } + + public boolean isRegistrationLinkNeeded() { + return !applicationConfiguration.isInternalAuth() + && applicationConfiguration.getRegisterPath() != null + && !applicationConfiguration.getRegisterPath().isEmpty(); + } + + public boolean isSingleOpenId() { + return applicationConfiguration.isOpenIdAuth() + && applicationConfiguration.isSingleOpenIdProvider(); + } +} diff --git a/zanata-war/src/main/java/org/zanata/action/LoginAction.java b/zanata-war/src/main/java/org/zanata/action/LoginAction.java index 34ac636796..e42ceab376 100644 --- a/zanata-war/src/main/java/org/zanata/action/LoginAction.java +++ b/zanata-war/src/main/java/org/zanata/action/LoginAction.java @@ -22,19 +22,21 @@ import java.io.Serializable; +import lombok.Getter; +import lombok.Setter; + import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.In; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.Scope; import org.zanata.ApplicationConfiguration; -import org.zanata.dao.AccountDAO; import org.zanata.security.AuthenticationManager; import org.zanata.security.AuthenticationType; import org.zanata.security.ZanataCredentials; +import org.zanata.security.openid.FedoraOpenIdProvider; +import org.zanata.security.openid.GoogleOpenIdProvider; import org.zanata.security.openid.OpenIdProviderType; - -import lombok.Getter; -import lombok.Setter; +import org.zanata.security.openid.YahooOpenIdProvider; /** * This action takes care of logging a user into the system. It contains logic @@ -120,4 +122,33 @@ public String openIdLogin(String authProvider) { credentials.setOpenIdProviderType(providerType); return authenticationManager.openIdLogin(); } + + /** + * Another way of doing open id without knowing the provider first hand. + * Tries to match the given open id with a known provider. If it can't find + * one it uses a generic provider. + */ + public String genericOpenIdLogin(String openId) { + setOpenId(openId); + OpenIdProviderType providerType = getBestSuitedProvider(openId); + return openIdLogin(providerType.name()); + } + + /** + * Returns the best suited provider for a given Open id. + * + * @param openId + * An Open id (They are usually in the form of a url). + */ + public static OpenIdProviderType getBestSuitedProvider(String openId) { + if (new FedoraOpenIdProvider().accepts(openId)) { + return OpenIdProviderType.Fedora; + } else if (new GoogleOpenIdProvider().accepts(openId)) { + return OpenIdProviderType.Google; + } else if (new YahooOpenIdProvider().accepts(openId)) { + return OpenIdProviderType.Yahoo; + } else { + return OpenIdProviderType.Generic; + } + } } 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 b36896cdd3..702e6ef4d1 100644 --- a/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java +++ b/zanata-war/src/main/java/org/zanata/action/ServerConfigurationBean.java @@ -21,14 +21,18 @@ package org.zanata.action; import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.util.Arrays; +import java.util.List; import javax.validation.constraints.Pattern; -import lombok.AccessLevel; +import lombok.Data; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.beanutils.BeanUtils; import org.hibernate.validator.constraints.Email; import org.jboss.seam.ScopeType; import org.jboss.seam.annotations.Create; @@ -38,93 +42,126 @@ 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.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 com.google.common.base.Strings; + +import static org.zanata.model.HApplicationConfiguration.*; @Name("serverConfigurationBean") @Scope(ScopeType.PAGE) @Restrict("#{s:hasRole('admin')}") -@Getter -@Setter @Slf4j public class ServerConfigurationBean implements Serializable { private static final long serialVersionUID = 1L; @In - @Setter(AccessLevel.NONE) - @Getter(AccessLevel.NONE) private ApplicationConfigurationDAO applicationConfigurationDAO; @In - @Setter(AccessLevel.NONE) - @Getter(AccessLevel.NONE) private ApplicationConfiguration applicationConfiguration; @Url(canEndInSlash = true) + @Getter + @Setter private String registerUrl; @Url(canEndInSlash = false) + @Getter + @Setter private String serverUrl; + @Getter + @Setter private String emailDomain; @EmailList + @Getter + @Setter private String adminEmail; @Email + @Getter + @Setter private String fromEmailAddr; + private PropertyWithKey fromEmailAddrProperty = new PropertyWithKey("fromEmailAddr", KEY_EMAIL_FROM_ADDRESS); private String homeContent; + private PropertyWithKey homeContentProperty = new PropertyWithKey("homeContent", KEY_HOME_CONTENT); private String helpContent; + private PropertyWithKey helpContentProperty = new PropertyWithKey("helpContent", KEY_HELP_CONTENT); + @Getter + @Setter private boolean enableLogEmail; + private PropertyWithKey enableLogEmailProperty = new PropertyWithKey("enableLogEmail", KEY_EMAIL_LOG_EVENTS); + @Getter + @Setter private String logDestinationEmails; + @Getter + @Setter private String logEmailLevel; @Url(canEndInSlash = true) + @Getter + @Setter private String piwikUrl; + @Getter + @Setter private String piwikIdSite; @Url(canEndInSlash = true) + @Getter + @Setter private String termsOfUseUrl; @Pattern(regexp = "\\d{0,5}") + @Getter + @Setter private String maxConcurrentRequestsPerApiKey; @Pattern(regexp = "\\d{0,5}") + @Getter + @Setter private String maxActiveRequestsPerApiKey; + private List> commonStringProperties = Arrays.asList( + new PropertyWithKey("registerUrl", KEY_REGISTER), + new PropertyWithKey("serverUrl", KEY_HOST), + new PropertyWithKey("emailDomain", KEY_DOMAIN), + new PropertyWithKey("adminEmail", KEY_ADMIN_EMAIL), + new PropertyWithKey("logDestinationEmails", KEY_LOG_DESTINATION_EMAIL), + new PropertyWithKey("logEmailLevel", KEY_EMAIL_LOG_LEVEL), + new PropertyWithKey("piwikUrl", KEY_PIWIK_URL), + new PropertyWithKey("piwikIdSite", KEY_PIWIK_IDSITE), + new PropertyWithKey("termsOfUseUrl", KEY_TERMS_CONDITIONS_URL), + new PropertyWithKey("maxConcurrentRequestsPerApiKey", KEY_MAX_CONCURRENT_REQ_PER_API_KEY), + new PropertyWithKey("maxActiveRequestsPerApiKey", KEY_MAX_ACTIVE_REQ_PER_API_KEY) + ); + public String getHomeContent() { HApplicationConfiguration var = applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HOME_CONTENT); + .findByKey(homeContentProperty.getKey()); return var != null ? var.getValue() : ""; } public String getHelpContent() { HApplicationConfiguration var = applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HELP_CONTENT); + .findByKey(helpContentProperty.getKey()); return var != null ? var.getValue() : ""; } public String updateHomeContent() { - HApplicationConfiguration var = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HOME_CONTENT); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_HOME_CONTENT, - var, homeContent, applicationConfigurationDAO); + persistPropertyToDatabase(homeContentProperty); applicationConfigurationDAO.flush(); FacesMessages.instance().add("Home content was successfully updated."); @@ -132,12 +169,7 @@ public String updateHomeContent() { } public String updateHelpContent() { - HApplicationConfiguration var = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HELP_CONTENT); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_HELP_CONTENT, - var, helpContent, applicationConfigurationDAO); + persistPropertyToDatabase(helpContentProperty); applicationConfigurationDAO.flush(); FacesMessages.instance().add( @@ -145,125 +177,51 @@ public String updateHelpContent() { return "/help/view.xhtml"; } - // TODO tech debt: all below code should really be cleaned up @Create public void onCreate() { - HApplicationConfiguration registerUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_REGISTER); - if (registerUrlValue != null) { - this.registerUrl = registerUrlValue.getValue(); - } - HApplicationConfiguration serverUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HOST); - if (serverUrlValue != null) { - this.serverUrl = serverUrlValue.getValue(); - } - HApplicationConfiguration emailDomainValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_DOMAIN); - if (emailDomainValue != null) { - this.emailDomain = emailDomainValue.getValue(); - } - HApplicationConfiguration adminEmailValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_ADMIN_EMAIL); - if (adminEmailValue != null) { - this.adminEmail = adminEmailValue.getValue(); - } - + setPropertiesFromConfigIfNotNull(commonStringProperties); + setBooleanPropertyFromConfigIfNotNull(enableLogEmailProperty); this.fromEmailAddr = applicationConfiguration.getFromEmailAddr(); + } - HApplicationConfiguration emailLogEventsValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_EMAIL_LOG_EVENTS); - if (emailLogEventsValue != null) { - this.enableLogEmail = - Boolean.parseBoolean(emailLogEventsValue.getValue()); - } - HApplicationConfiguration logDestinationValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_LOG_DESTINATION_EMAIL); - if (logDestinationValue != null) { - this.logDestinationEmails = logDestinationValue.getValue(); - } - HApplicationConfiguration logEmailLevelValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_EMAIL_LOG_LEVEL); - if (logEmailLevelValue != null) { - this.logEmailLevel = logEmailLevelValue.getValue(); - } - HApplicationConfiguration piwikUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_PIWIK_URL); - if (piwikUrlValue != null) { - this.piwikUrl = piwikUrlValue.getValue(); - } - HApplicationConfiguration piwikIdSiteValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_PIWIK_IDSITE); - if (piwikIdSiteValue != null) { - this.piwikIdSite = piwikIdSiteValue.getValue(); + private void setPropertiesFromConfigIfNotNull(List> properties) { + for (PropertyWithKey property : properties) { + setPropertyFromConfigIfNotNull(property); } + } - HApplicationConfiguration termsOfUseUrlValue = + private void setPropertyFromConfigIfNotNull(PropertyWithKey property) { + HApplicationConfiguration valueHolder = applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_TERMS_CONDITIONS_URL); - if (termsOfUseUrlValue != null) { - this.termsOfUseUrl = termsOfUseUrlValue.getValue(); - } - - HApplicationConfiguration maxConcurrent = applicationConfigurationDAO.findByKey( - HApplicationConfiguration.KEY_MAX_CONCURRENT_REQ_PER_API_KEY); - if (maxConcurrent != null) { - this.maxConcurrentRequestsPerApiKey = maxConcurrent.getValue(); + .findByKey(property.getKey()); + if (valueHolder != null) { + try { + property.set(valueHolder.getValue()); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } } + } - HApplicationConfiguration maxActive = applicationConfigurationDAO.findByKey( - HApplicationConfiguration.KEY_MAX_ACTIVE_REQ_PER_API_KEY); - if (maxActive != null) { - this.maxActiveRequestsPerApiKey = maxActive.getValue(); + private void setBooleanPropertyFromConfigIfNotNull(PropertyWithKey property) { + HApplicationConfiguration valueHolder = applicationConfigurationDAO.findByKey(property.getKey()); + if (valueHolder != null) { + try { + property.set(Boolean.parseBoolean(valueHolder.getValue())); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } } } @Transactional public String update() { - HApplicationConfiguration registerUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_REGISTER); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_REGISTER, - registerUrlValue, registerUrl, applicationConfigurationDAO); - - HApplicationConfiguration serverUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_HOST); - ServerConfigurationService - .persistApplicationConfig(HApplicationConfiguration.KEY_HOST, - serverUrlValue, serverUrl, applicationConfigurationDAO); - - HApplicationConfiguration emailDomainValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_DOMAIN); - ServerConfigurationService - .persistApplicationConfig(HApplicationConfiguration.KEY_DOMAIN, - emailDomainValue, emailDomain, - applicationConfigurationDAO); - - HApplicationConfiguration adminEmailValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_ADMIN_EMAIL); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_ADMIN_EMAIL, - adminEmailValue, adminEmail, applicationConfigurationDAO); - - HApplicationConfiguration fromEmailAddrValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_EMAIL_FROM_ADDRESS); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_EMAIL_FROM_ADDRESS, - fromEmailAddrValue, fromEmailAddr, applicationConfigurationDAO); + persistPropertiesToDatabase(commonStringProperties); + persistPropertyToDatabase(fromEmailAddrProperty); HApplicationConfiguration emailLogEventsValue = applicationConfigurationDAO @@ -278,60 +236,6 @@ public String update() { } applicationConfigurationDAO.makePersistent(emailLogEventsValue); - HApplicationConfiguration logDestEmailValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_LOG_DESTINATION_EMAIL); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_LOG_DESTINATION_EMAIL, - logDestEmailValue, logDestinationEmails, - applicationConfigurationDAO); - - HApplicationConfiguration logEmailLevelValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_EMAIL_LOG_LEVEL); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_EMAIL_LOG_LEVEL, - logEmailLevelValue, logEmailLevel, applicationConfigurationDAO); - - HApplicationConfiguration piwikUrlValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_PIWIK_URL); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_PIWIK_URL, - piwikUrlValue, piwikUrl, applicationConfigurationDAO); - - HApplicationConfiguration piwikIdSiteValue = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_PIWIK_IDSITE); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_PIWIK_IDSITE, - piwikIdSiteValue, piwikIdSite, applicationConfigurationDAO); - - HApplicationConfiguration termsOfUseUrlValue = - applicationConfigurationDAO - .findByKey( - HApplicationConfiguration.KEY_TERMS_CONDITIONS_URL); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_TERMS_CONDITIONS_URL, - termsOfUseUrlValue, termsOfUseUrl, applicationConfigurationDAO); - - HApplicationConfiguration maxConcurrent = - applicationConfigurationDAO - .findByKey( - HApplicationConfiguration.KEY_MAX_CONCURRENT_REQ_PER_API_KEY); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_MAX_CONCURRENT_REQ_PER_API_KEY, - maxConcurrent, maxConcurrentRequestsPerApiKey, - applicationConfigurationDAO); - - HApplicationConfiguration maxActive = - applicationConfigurationDAO - .findByKey(HApplicationConfiguration.KEY_MAX_ACTIVE_REQ_PER_API_KEY); - ServerConfigurationService.persistApplicationConfig( - HApplicationConfiguration.KEY_MAX_ACTIVE_REQ_PER_API_KEY, - maxActive, maxActiveRequestsPerApiKey, - applicationConfigurationDAO); - applicationConfigurationDAO.flush(); FacesMessages facesMessages = FacesMessages.instance(); facesMessages.clearGlobalMessages(); @@ -339,7 +243,47 @@ public String update() { return "success"; } + private void persistPropertiesToDatabase(List> properties) { + for (PropertyWithKey property : properties) { + persistPropertyToDatabase(property); + } + } + + private void persistPropertyToDatabase(PropertyWithKey property) { + HApplicationConfiguration registerUrlValue = + applicationConfigurationDAO + .findByKey(property.getKey()); + try { + ServerConfigurationService.persistApplicationConfig( + property.getKey(), + registerUrlValue, property.get(), applicationConfigurationDAO); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + public String cancel() { return "cancel"; } + + /** + * Associates a field of type T with a HApplicationConfiguration key, + * allowing abstraction around setting fields only if keys are bound. + */ + @Data + private class PropertyWithKey { + private final String propertyName; + private final String key; + + public void set(T value) throws InvocationTargetException, IllegalAccessException { + BeanUtils.setProperty(ServerConfigurationBean.this, propertyName, value); + } + public T get() throws IllegalAccessException, NoSuchMethodException, InvocationTargetException { + return (T) BeanUtils.getProperty(ServerConfigurationBean.this, propertyName); + } + } } diff --git a/zanata-war/src/main/java/org/zanata/config/JaasConfig.java b/zanata-war/src/main/java/org/zanata/config/JaasConfig.java new file mode 100644 index 0000000000..c64525b376 --- /dev/null +++ b/zanata-war/src/main/java/org/zanata/config/JaasConfig.java @@ -0,0 +1,127 @@ +/* + * Copyright 2014, Red Hat, Inc. and individual contributors as indicated by the + * @author tags. See the copyright.txt file in the distribution for a full + * listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or (at your option) + * any later version. + * + * This software 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 Lesser General Public License for more + * details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this software; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA, or see the FSF + * site: http://www.fsf.org. + */ +package org.zanata.config; + +import javax.security.auth.login.AppConfigurationEntry; +import javax.security.auth.login.Configuration; +import javax.security.auth.spi.LoginModule; + +import org.jboss.seam.ScopeType; +import org.jboss.seam.annotations.AutoCreate; +import org.jboss.seam.annotations.Name; +import org.jboss.seam.annotations.Scope; +import org.jboss.seam.annotations.intercept.BypassInterceptors; + +/** + * Store for JAAS configuration. + * + * @author Carlos Munoz camunoz@redhat.com + */ +@Name("jaasConfig") +@AutoCreate +@BypassInterceptors +@Scope(ScopeType.APPLICATION) +public class JaasConfig { + + /** + * Retrieves all App configuration entries under a given name. In Jboss's + * standalone.xml, these are all the {@code } + * entries under @{code } + * + * @param loginModuleName + * The login module name as configured. In Jboss' standalone.xml + * this the name attribute at + * {@code } + * @return A collection of configuration entries. May be null if there are + * no configuration entries under that name. + */ + public AppConfigurationEntry[] getAppConfigurationEntries( + String loginModuleName) { + return Configuration.getConfiguration().getAppConfigurationEntry( + loginModuleName); + } + + /** + * Retrieves a single configuration entry under a given name and using a + * specific class. In JBoss' standalone.xml this type is specified under + * {@code }. Since there may be + * more than one configuration entry using the same code, this method + * returns the first one found. + * + * @param loginModuleName + * The login module name as configured. In Jboss' standalone.xml + * this the name attribute at + * {@code } + * @param loginModuleType + * The Login module type used. + * @return the first found configuration entry under the given name, and + * using the given login module class. Null if no such configuration + * is found. + */ + public AppConfigurationEntry + getAppConfigurationEntry(String loginModuleName, + Class loginModuleType) { + AppConfigurationEntry[] entries = + getAppConfigurationEntries(loginModuleName); + if(entries != null) { + for (AppConfigurationEntry e : entries) { + if (e.getLoginModuleName().equals(loginModuleType.getName())) { + return e; + } + } + } + return null; + } + + /** + * Retrieves a configuration property. In Jboss's standalone.xml, these are + * configured at {@code + * + * + * ... + * + * } + * + * @param loginModuleName + * The login module name as configured. In Jboss' standalone.xml + * this the name attribute at + * {@code } + * @param loginModuleType + * The Login module type used. + * @param key + * The option key. + * @return The configuration value for the property ofr null if the property + * cannot be found. + */ + public String getAppConfigurationProperty(String loginModuleName, + Class loginModuleType, String key) { + AppConfigurationEntry configEntry = + getAppConfigurationEntry(loginModuleName, loginModuleType); + if (configEntry == null) { + return null; + } else if (configEntry.getOptions().containsKey(key)) { + return (String) configEntry.getOptions().get(key); + } else { + return null; + } + } +} diff --git a/zanata-war/src/main/java/org/zanata/security/AuthenticationType.java b/zanata-war/src/main/java/org/zanata/security/AuthenticationType.java index ec61f2f2ca..01e792ab06 100644 --- a/zanata-war/src/main/java/org/zanata/security/AuthenticationType.java +++ b/zanata-war/src/main/java/org/zanata/security/AuthenticationType.java @@ -26,5 +26,12 @@ * @author camunoz@redhat.com */ public enum AuthenticationType { - INTERNAL, KERBEROS, OPENID, JAAS + /* Internal authentication (username / password) */ + INTERNAL, + /* Kerberos authentication. Ticket or form based. */ + KERBEROS, + /* Open Id authentication */ + OPENID, + /* Any other custom username & password-based jaas authentication mechanism */ + JAAS, } diff --git a/zanata-war/src/main/java/org/zanata/security/OpenIdLoginModule.java b/zanata-war/src/main/java/org/zanata/security/OpenIdLoginModule.java index eb675ff1bd..c328a60e8b 100644 --- a/zanata-war/src/main/java/org/zanata/security/OpenIdLoginModule.java +++ b/zanata-war/src/main/java/org/zanata/security/OpenIdLoginModule.java @@ -34,6 +34,7 @@ import org.zanata.util.ServiceLocator; public class OpenIdLoginModule implements LoginModule { + public static final String OPEN_ID_PROVIDER_KEY = "providerURL"; protected Set roles = new HashSet(); protected Subject subject; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java index 005b834d73..342ce5ea54 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/AppPresenter.java @@ -57,7 +57,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.base.Strings; import com.google.common.collect.Lists; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.inject.Inject; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListPresenter.java index 16125cf0fc..4981072e6d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/DocumentListPresenter.java @@ -87,7 +87,7 @@ import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent; import com.google.inject.Inject; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryDetailsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryDetailsPresenter.java index c23e498506..2dce312d8f 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryDetailsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/GlossaryDetailsPresenter.java @@ -19,7 +19,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.inject.Inject; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TargetContentsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TargetContentsPresenter.java index 0141957ce7..f87215686a 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TargetContentsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TargetContentsPresenter.java @@ -75,7 +75,7 @@ import com.google.common.base.Objects; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryDetailsPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryDetailsPresenter.java index 87272f7314..cf031bd802 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryDetailsPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryDetailsPresenter.java @@ -13,7 +13,7 @@ import org.zanata.webtrans.shared.rpc.GetTransMemoryDetailsAction; import org.zanata.webtrans.shared.rpc.TransMemoryDetailsList; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.inject.Inject; public class TransMemoryDetailsPresenter extends diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryPresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryPresenter.java index c8a629c882..28576528f5 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryPresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransMemoryPresenter.java @@ -30,7 +30,7 @@ import org.zanata.webtrans.shared.rpc.HasSearchType.SearchType; import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.inject.Inject; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java index 51011a3a23..60295d0563 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/presenter/TransUnitsTablePresenter.java @@ -62,7 +62,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.base.Objects; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.inject.Inject; import static org.zanata.webtrans.client.events.NotificationEvent.Severity.*; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/DelegatingDispatchAsync.java b/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/DelegatingDispatchAsync.java index 2baa377072..42ade9012f 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/DelegatingDispatchAsync.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/DelegatingDispatchAsync.java @@ -7,7 +7,7 @@ import org.zanata.webtrans.shared.auth.Identity; import org.zanata.webtrans.shared.model.UserWorkspaceContext; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.rpc.AsyncCallback; public class DelegatingDispatchAsync implements CachingDispatchAsync { diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/SeamDispatchAsync.java b/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/SeamDispatchAsync.java index 53d5dba61b..e7a05b99e8 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/SeamDispatchAsync.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/rpc/SeamDispatchAsync.java @@ -20,7 +20,7 @@ import org.zanata.webtrans.shared.rpc.WrappedAction; import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.user.client.Cookies; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.rpc.ServiceDefTarget; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Breadcrumb.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Breadcrumb.java index 2f3dfacc0f..546281b466 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Breadcrumb.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Breadcrumb.java @@ -4,7 +4,7 @@ package org.zanata.webtrans.client.ui; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.event.shared.HandlerRegistration; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorEditor.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorEditor.java index 28978cee7f..744bfd1ff1 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorEditor.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorEditor.java @@ -1,7 +1,7 @@ package org.zanata.webtrans.client.ui; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorReadOnlyWidget.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorReadOnlyWidget.java index db37417ac7..8e02147cf4 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorReadOnlyWidget.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/CodeMirrorReadOnlyWidget.java @@ -1,7 +1,7 @@ package org.zanata.webtrans.client.ui; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.TextAreaElement; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DialogBoxCloseButton.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DialogBoxCloseButton.java index 9b06f4a096..b84b8e0fa7 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DialogBoxCloseButton.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DialogBoxCloseButton.java @@ -2,7 +2,7 @@ import org.zanata.webtrans.client.resources.WebTransMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.DialogBox; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DiffColorLegendPanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DiffColorLegendPanel.java index 2889ed86b5..d34d48011e 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DiffColorLegendPanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/DiffColorLegendPanel.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.keys.ShortcutContext; import org.zanata.webtrans.client.resources.WebTransMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Editor.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Editor.java index 5485c53f30..b967768d90 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Editor.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Editor.java @@ -12,7 +12,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.base.Objects; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.FocusEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorButtonsWidget.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorButtonsWidget.java index 2e705c8739..2ca9bde29f 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorButtonsWidget.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/EditorButtonsWidget.java @@ -2,7 +2,7 @@ import org.zanata.webtrans.client.view.TargetContentsDisplay; import org.zanata.webtrans.shared.model.TransUnitId; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/HistoryEntryComparisonPanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/HistoryEntryComparisonPanel.java index 9728ab322c..51b13d1825 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/HistoryEntryComparisonPanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/HistoryEntryComparisonPanel.java @@ -4,7 +4,7 @@ import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.shared.model.TransHistoryItem; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationDetailsBox.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationDetailsBox.java index 4058066e34..91ca62427d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationDetailsBox.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationDetailsBox.java @@ -8,7 +8,7 @@ import org.zanata.webtrans.client.util.DateUtil; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationItem.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationItem.java index a11853b809..b20ff3d6e0 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationItem.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/NotificationItem.java @@ -26,7 +26,7 @@ import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.util.DateUtil; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.resources.client.CssResource; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.java index 6ceb49e297..81d19544b1 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/Pager.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.resources.WebTransMessages; import com.allen_sauer.gwt.log.client.Log; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.BlurHandler; import com.google.gwt.event.dom.client.ClickEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReferencePanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReferencePanel.java index bb7c2d1753..64f2dd1234 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReferencePanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReferencePanel.java @@ -1,6 +1,6 @@ package org.zanata.webtrans.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentInputWidget.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentInputWidget.java index 4f8ef268fd..d0aca7c1b9 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentInputWidget.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentInputWidget.java @@ -22,7 +22,7 @@ package org.zanata.webtrans.client.ui; import org.zanata.webtrans.client.view.ForceReviewCommentDisplay; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentItemLine.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentItemLine.java index f3baf2c39c..5749c036f2 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentItemLine.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ReviewCommentItemLine.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.util.DateUtil; import org.zanata.webtrans.shared.model.ReviewComment; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.safehtml.client.SafeHtmlTemplates; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchField.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchField.java index e47fd34afc..163ec8fb6d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchField.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchField.java @@ -20,7 +20,7 @@ */ package org.zanata.webtrans.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.FocusEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchResultsDocumentTable.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchResultsDocumentTable.java index 31b941c664..0894905734 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchResultsDocumentTable.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SearchResultsDocumentTable.java @@ -36,7 +36,7 @@ import com.google.gwt.cell.client.Cell.Context; import com.google.gwt.cell.client.CheckboxCell; import com.google.gwt.cell.client.ValueUpdater; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.dom.client.Style.Unit; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SourcePanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SourcePanel.java index 818d32fdc7..62fafd5659 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SourcePanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/SourcePanel.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.resources.NavigationMessages; import org.zanata.webtrans.shared.model.TransUnitId; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TMMergeForm.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TMMergeForm.java index ebe4ca436b..eed5d07b5d 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TMMergeForm.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TMMergeForm.java @@ -28,7 +28,7 @@ import org.zanata.webtrans.shared.rpc.MergeOptions; import com.google.common.base.Preconditions; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TooltipPopupPanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TooltipPopupPanel.java index 3ef95d461d..386d9a7fcd 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TooltipPopupPanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TooltipPopupPanel.java @@ -20,7 +20,7 @@ */ package org.zanata.webtrans.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.i18n.client.LocaleInfo; import com.google.gwt.resources.client.CssResource; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransHistoryItemLine.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransHistoryItemLine.java index 5fa76ca9c3..ac99cfee5e 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransHistoryItemLine.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransHistoryItemLine.java @@ -25,7 +25,7 @@ import org.zanata.webtrans.client.resources.WebTransMessages; import org.zanata.webtrans.client.util.DateUtil; import org.zanata.webtrans.shared.model.TransHistoryItem; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.SpanElement; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.client.SafeHtmlTemplates; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransMemoryMergePopupPanelView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransMemoryMergePopupPanelView.java index 590f865a0a..08fde7cc6b 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransMemoryMergePopupPanelView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransMemoryMergePopupPanelView.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.resources.UiMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.Label; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitCountBar.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitCountBar.java index 472571d21e..b32a4bdeac 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitCountBar.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitCountBar.java @@ -8,7 +8,7 @@ import org.zanata.webtrans.client.util.TextFormatUtil; import org.zanata.webtrans.shared.model.UserWorkspaceContext; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitDetailsPanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitDetailsPanel.java index f4a9d10774..a3934f376f 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitDetailsPanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TransUnitDetailsPanel.java @@ -5,7 +5,7 @@ import org.zanata.webtrans.shared.model.TransUnit; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java index 7b34610d87..dbb9b13d29 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslationHistoryView.java @@ -9,7 +9,7 @@ import org.zanata.webtrans.shared.model.ReviewComment; import org.zanata.webtrans.shared.model.TransHistoryItem; import com.google.common.collect.Lists; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslatorListWidget.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslatorListWidget.java index d8f048b764..8da00774d3 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslatorListWidget.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/TranslatorListWidget.java @@ -1,6 +1,6 @@ package org.zanata.webtrans.client.ui; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanelView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanelView.java index 9e31998c96..f4f9db8a97 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanelView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationMessagePanelView.java @@ -26,7 +26,7 @@ import com.allen_sauer.gwt.log.client.Log; import com.google.common.collect.Maps; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationWarningPanel.java b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationWarningPanel.java index 99868626e9..42df43e11e 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationWarningPanel.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/ui/ValidationWarningPanel.java @@ -37,7 +37,7 @@ import org.zanata.webtrans.shared.model.TransUnitId; import org.zanata.webtrans.shared.model.ValidationAction; import com.google.common.collect.Lists; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java index bacef6f71e..7dfadd8c6c 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AppView.java @@ -36,7 +36,7 @@ import org.zanata.webtrans.client.ui.UnorderedListWidget; import org.zanata.webtrans.shared.model.UserWorkspaceContext; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.Style.Unit; import com.google.gwt.dom.client.UListElement; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AttentionKeyShortcutView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AttentionKeyShortcutView.java index b184cf0001..1e78d4755b 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/AttentionKeyShortcutView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/AttentionKeyShortcutView.java @@ -1,7 +1,7 @@ package org.zanata.webtrans.client.view; import org.zanata.webtrans.client.resources.WebTransMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ChangeReferenceLangView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ChangeReferenceLangView.java index 39321857c6..66d2d1290c 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ChangeReferenceLangView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ChangeReferenceLangView.java @@ -20,7 +20,7 @@ */ package org.zanata.webtrans.client.view; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ChangeHandler; import com.google.gwt.resources.client.CssResource; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListOptionsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListOptionsView.java index 82a8a53cd8..03e2e65ae1 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListOptionsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListOptionsView.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.presenter.UserConfigHolder; import org.zanata.webtrans.client.resources.WebTransMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.java index fd0a712225..5e6a486156 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/DocumentListView.java @@ -43,7 +43,7 @@ import org.zanata.webtrans.shared.model.UserWorkspaceContext; import org.zanata.webtrans.shared.model.WorkspaceId; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java index eabb4b83fb..34b9cd9f62 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/EditorOptionsView.java @@ -30,7 +30,7 @@ import org.zanata.webtrans.shared.model.DiffMode; import org.zanata.webtrans.shared.rpc.NavOption; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryDetailsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryDetailsView.java index 28fe6cbd7b..c51720bcf4 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryDetailsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryDetailsView.java @@ -9,7 +9,7 @@ import org.zanata.webtrans.client.util.DateUtil; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java index 4242beee91..024520f69a 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/GlossaryView.java @@ -10,7 +10,7 @@ import org.zanata.webtrans.shared.model.GlossaryResultItem; import org.zanata.webtrans.shared.rpc.HasSearchType.SearchType; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/KeyShortcutView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/KeyShortcutView.java index 16361b70fb..7ccf65789e 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/KeyShortcutView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/KeyShortcutView.java @@ -29,7 +29,7 @@ import com.google.common.base.Strings; import com.google.gwt.cell.client.SafeHtmlCell; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.resources.client.CssResource; import com.google.gwt.safehtml.shared.SafeHtml; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/NotificationView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/NotificationView.java index d474571a2c..45ccdbda4a 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/NotificationView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/NotificationView.java @@ -29,7 +29,7 @@ import org.zanata.webtrans.client.ui.NotificationItem; import org.zanata.webtrans.client.ui.UnorderedListWidget; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/OptionsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/OptionsView.java index fdb0d6820b..90a490cee0 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/OptionsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/OptionsView.java @@ -22,7 +22,7 @@ import org.zanata.webtrans.shared.rpc.ThemesOption; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.logical.shared.ValueChangeEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java index 0bc86c6f84..590456b95e 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SearchResultsView.java @@ -30,7 +30,7 @@ import org.zanata.webtrans.client.ui.SearchResultsDocumentTable; import com.google.gwt.cell.client.ActionCell.Delegate; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasChangeHandlers; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SideMenuView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SideMenuView.java index f7c9879758..e50e1ce264 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/SideMenuView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/SideMenuView.java @@ -3,7 +3,7 @@ import org.zanata.webtrans.client.events.NotificationEvent.Severity; import org.zanata.webtrans.client.resources.WebTransMessages; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TargetContentsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TargetContentsView.java index 1afd58a0a2..1a76a7a6f2 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TargetContentsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TargetContentsView.java @@ -40,7 +40,7 @@ import com.google.common.base.Objects; import com.google.common.collect.Lists; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransFilterView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransFilterView.java index cb15f56f83..b8f1e121c6 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransFilterView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransFilterView.java @@ -24,7 +24,7 @@ import org.zanata.webtrans.client.resources.UiMessages; import org.zanata.webtrans.client.ui.EditorSearchField; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryDetailsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryDetailsView.java index 02bbcaef27..7ed7c7404a 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryDetailsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryDetailsView.java @@ -10,7 +10,7 @@ import org.zanata.webtrans.client.util.DateUtil; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ChangeEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.safehtml.shared.SafeHtml; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryView.java index dfbe964449..9872244612 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransMemoryView.java @@ -18,7 +18,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Splitter; import com.google.common.collect.Lists; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitNavigationView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitNavigationView.java index 9090c98914..366061f3c0 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitNavigationView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitNavigationView.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.resources.NavigationMessages; import org.zanata.webtrans.shared.rpc.NavOption; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.resources.client.CssResource; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitsTableView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitsTableView.java index 42371de375..39f3e6df56 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitsTableView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TransUnitsTableView.java @@ -6,7 +6,7 @@ import org.zanata.webtrans.client.ui.FilterViewConfirmationDisplay; import org.zanata.webtrans.client.ui.LoadingPanel; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.logical.shared.ResizeEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java index 24a1e13e79..fd1c1e5905 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationEditorView.java @@ -24,7 +24,7 @@ import org.zanata.webtrans.client.ui.HasPager; import org.zanata.webtrans.client.ui.Pager; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.FocusEvent; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationView.java index 8a5357a400..e37d4eecd6 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/TranslationView.java @@ -23,7 +23,7 @@ import org.zanata.webtrans.client.presenter.TranslationPresenter; import org.zanata.webtrans.client.ui.SplitLayoutPanelHelper; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationOptionsView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationOptionsView.java index ec897a09d7..d19cfeb796 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationOptionsView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/ValidationOptionsView.java @@ -9,7 +9,7 @@ import org.zanata.webtrans.client.ui.UnorderedListWidget; import org.zanata.webtrans.client.util.DateUtil; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.logical.shared.HasValueChangeHandlers; import com.google.gwt.uibinder.client.UiBinder; diff --git a/zanata-war/src/main/java/org/zanata/webtrans/client/view/WorkspaceUsersView.java b/zanata-war/src/main/java/org/zanata/webtrans/client/view/WorkspaceUsersView.java index d1806e580c..de2d253d22 100644 --- a/zanata-war/src/main/java/org/zanata/webtrans/client/view/WorkspaceUsersView.java +++ b/zanata-war/src/main/java/org/zanata/webtrans/client/view/WorkspaceUsersView.java @@ -8,7 +8,7 @@ import org.zanata.webtrans.shared.rpc.HasWorkspaceChatData.MESSAGE_TYPE; import com.google.common.base.Strings; -import com.google.gwt.core.client.GWT; +import com.google.gwt.core.shared.GWT; import com.google.gwt.event.dom.client.BlurEvent; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.FocusEvent; diff --git a/zanata-war/src/main/webapp/WEB-INF/pages.xml b/zanata-war/src/main/webapp/WEB-INF/pages.xml index 47fa5cbaa1..c3b53349ef 100644 --- a/zanata-war/src/main/webapp/WEB-INF/pages.xml +++ b/zanata-war/src/main/webapp/WEB-INF/pages.xml @@ -50,17 +50,24 @@ if="#{!identity.isLoggedIn() and authenticationManager.authenticatedAccountWaitingForActivation}"> + + + + if="#{identity.loggedIn and userRedirect.shouldRedirectToDashboard()}}"> + if="#{identity.loggedIn and userRedirect.redirect}"> + + + + diff --git a/zanata-war/src/main/webapp/WEB-INF/template/banner.xhtml b/zanata-war/src/main/webapp/WEB-INF/template/banner.xhtml index a2e6ff8a38..967131b853 100644 --- a/zanata-war/src/main/webapp/WEB-INF/template/banner.xhtml +++ b/zanata-war/src/main/webapp/WEB-INF/template/banner.xhtml @@ -146,7 +146,7 @@ rendered="#{applicationConfiguration.internalAuth}"/> + rendered="#{applicationConfigurationAction.registrationLinkNeeded}"> #{msgs['jsf.Signup']} @@ -154,10 +154,18 @@ + rendered="#{applicationConfigurationAction.loginHandledByInternalPage}"> #{msgs['jsf.Login']} + + + #{messages['jsf.Login']} + + + >> exceptionMappers = - new HashSet>>(); - protected final Set resources = new HashSet(); - protected final Set> providers = new HashSet>(); - protected final Set providerInstances = new HashSet(); + newHashSet(); + protected final Set resources = newHashSet(); + protected final Set> providers = newHashSet(); + protected final Set providerInstances = newHashSet(); @Mock private JndiBackedConfig jndiBackedConfig; @@ -56,7 +54,7 @@ public abstract class ZanataRestTest extends ZanataDbunitJpaTest { public final void prepareRestEasyFramework() { MockitoAnnotations.initMocks(this); when(jndiBackedConfig.getEnabledAuthenticationPolicies()).thenReturn( - Sets.newHashSet(AuthenticationType.INTERNAL.name())); + newHashSet(AuthenticationType.INTERNAL.name())); Dispatcher dispatcher = MockDispatcherFactory.createDispatcher(); prepareSeamAutowire(); prepareAccount(); diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SearchResultsPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SearchResultsPresenterTest.java index 2377645cb4..4252863c28 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SearchResultsPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SearchResultsPresenterTest.java @@ -33,6 +33,8 @@ import java.util.List; import java.util.Map; +import com.google.gwtmockito.GwtMock; +import com.google.gwtmockito.GwtMockito; import net.customware.gwt.presenter.client.EventBus; import org.mockito.ArgumentCaptor; @@ -41,6 +43,7 @@ import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; +import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.zanata.webtrans.client.events.TransUnitUpdatedEvent; @@ -208,7 +211,7 @@ public class SearchResultsPresenterTest { ArgumentCaptor capturedSelectionChangeHandlerDoc1; @Captor ArgumentCaptor capturedSelectionChangeDeselectHandlerDoc1; - @Mock + @GwtMock private ClickEvent clickEvent; @Mock private HandlerRegistration handlerRegistration; @@ -218,6 +221,7 @@ public class SearchResultsPresenterTest { @BeforeMethod public void beforeMethod() { MockitoAnnotations.initMocks(this); + GwtMockito.initMocks(this); searchResultsPresenter = new SearchResultsPresenter(mockDisplay, mockEventBus, @@ -255,6 +259,11 @@ public void beforeMethod() { } + @AfterMethod + public void tearDown() { + GwtMockito.tearDown(); + } + @Test public void testExpectedActionsOnBind() { dataProviderDoc1List = new ArrayList(); diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SourceContentsPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SourceContentsPresenterTest.java index 25b074ad6b..34dba30bcd 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SourceContentsPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/SourceContentsPresenterTest.java @@ -3,11 +3,14 @@ import java.util.List; import javax.inject.Provider; +import com.google.gwtmockito.GwtMock; +import com.google.gwtmockito.GwtMockito; import org.hamcrest.Matchers; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.zanata.model.TestFixture; @@ -51,13 +54,15 @@ public class SourceContentsPresenterTest { private HasSelectableSource hasSelectableSource1; @Mock private HasSelectableSource hasSelectableSource2; - @Mock + @GwtMock private ClickEvent clickEvent; + private UserConfigHolder configHolder; @BeforeMethod public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + GwtMockito.initMocks(this); configHolder = new UserConfigHolder(); presenter = new SourceContentsPresenter(eventBus, displayProvider, @@ -66,6 +71,11 @@ public void setUp() throws Exception { verify(eventBus).addHandler(UserConfigChangeEvent.TYPE, presenter); } + @AfterMethod + public void tearDown() { + GwtMockito.tearDown(); + } + @Test public void testShowData() throws Exception { // Given: 2 trans units diff --git a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TargetContentsPresenterTest.java b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TargetContentsPresenterTest.java index 06756b73d2..a2b28cd41b 100644 --- a/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TargetContentsPresenterTest.java +++ b/zanata-war/src/test/java/org/zanata/webtrans/client/presenter/TargetContentsPresenterTest.java @@ -92,7 +92,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.gwt.event.shared.GwtEvent; -import com.google.gwt.thirdparty.guava.common.collect.Maps; +import com.google.common.collect.Maps; import com.google.inject.Provider; @Test(groups = { "unit-tests" })