Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz988202 - add validation to server configuration bean
Browse files Browse the repository at this point in the history
  • Loading branch information
Patrick Huang committed Mar 21, 2014
1 parent 5029d81 commit dcf3551
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 4 deletions.
Expand Up @@ -22,7 +22,6 @@

import java.io.Serializable;

import javax.validation.constraints.Digits;
import javax.validation.constraints.Pattern;

import lombok.AccessLevel;
Expand All @@ -38,12 +37,14 @@
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;

@Name("serverConfigurationBean")
@Scope(ScopeType.PAGE)
Expand Down Expand Up @@ -234,7 +235,11 @@ public void onCreate() {
}

@Transactional
public void update() {
public String update() {
boolean valid = validateRateLimitingSettings();
if (!valid) {
return null;
}
HApplicationConfiguration registerUrlValue =
applicationConfigurationDAO
.findByKey(HApplicationConfiguration.KEY_REGISTER);
Expand Down Expand Up @@ -346,7 +351,36 @@ public void update() {
applicationConfigurationDAO);

applicationConfigurationDAO.flush();
FacesMessages.instance().add("Configuration was successfully updated.");
FacesMessages facesMessages = FacesMessages.instance();
facesMessages.clearGlobalMessages();
facesMessages.add("Configuration was successfully updated.");
return "success";
}

private boolean validateRateLimitingSettings() {
boolean allGreaterThanZeroOrEmpty = greaterThanZeroOrEmpty(rateLimitPerSecond)
&& greaterThanZeroOrEmpty(maxConcurrentRequestsPerApiKey)
&& greaterThanZeroOrEmpty(maxActiveRequestsPerApiKey);
return allGreaterThanZeroOrEmpty && maxActiveLessOrEqualToMaxConcurrent();
}

private static boolean greaterThanZeroOrEmpty(String value) {
return Strings.isNullOrEmpty(value) || Long.parseLong(value) > 0;
}

private boolean maxActiveLessOrEqualToMaxConcurrent() {
if (!Strings.isNullOrEmpty(maxConcurrentRequestsPerApiKey)
&& !Strings.isNullOrEmpty(maxActiveRequestsPerApiKey)) {
FacesMessages
.instance()
.add(StatusMessage.Severity.ERROR,
"Max active requests can not exceed max concurrent requests");
return Long.parseLong(maxConcurrentRequestsPerApiKey) >= Long
.parseLong(maxActiveRequestsPerApiKey);
}
FacesMessages.instance().add(StatusMessage.Severity.ERROR,
"Max concurrent and max active requests must both be set");
return false;
}

public String cancel() {
Expand Down
4 changes: 3 additions & 1 deletion zanata-war/src/main/webapp/WEB-INF/pages.xml
Expand Up @@ -314,7 +314,9 @@
<action
execute="#{breadcrumbs.addLocation('', messages['jsf.ServerConfiguration'])}" />
<navigation from-action="#{serverConfigurationBean.update}">
<redirect view-id="/admin/home.xhtml" />
<rule if-outcome="success">
<redirect view-id="/admin/home.xhtml" />
</rule>
</navigation>
</page>

Expand Down

0 comments on commit dcf3551

Please sign in to comment.