private static final int BAD_REQUEST = 400;
- private final List<Message> errors = newArrayList();
+ private List<Message> errors = newArrayList();
public BadRequestException(String message) {
super(BAD_REQUEST, message);
}
+ public BadRequestException(String message, List<Message> errors) {
+ super(BAD_REQUEST, message);
+ this.errors = errors;
+ }
+
public BadRequestException(@Nullable String message, @Nullable String l10nKey, @Nullable Object[] l10nParams) {
super(BAD_REQUEST, message, l10nKey, l10nParams);
}
+ public BadRequestException(@Nullable String message, @Nullable String l10nKey, @Nullable Object[] l10nParams, List<Message> errors) {
+ super(BAD_REQUEST, message, l10nKey, l10nParams);
+ this.errors = errors;
+ }
+
public static BadRequestException of(String message) {
return new BadRequestException(message);
}
- public static BadRequestException ofL10n(String l10nKey, Object... l10nParams) {
- return new BadRequestException(null, l10nKey, l10nParams);
+ public static BadRequestException of(String message, List<Message> errors) {
+ return new BadRequestException(message, errors);
}
- public BadRequestException addError(String text) {
- return addError(Message.of(text));
+ public static BadRequestException of(List<Message> errors) {
+ return new BadRequestException(null, errors);
}
- public BadRequestException addError(Message message) {
- errors.add(message);
- return this;
+ public static BadRequestException ofL10n(String l10nKey, Object... l10nParams) {
+ return new BadRequestException(null, l10nKey, l10nParams);
+ }
+
+ public static BadRequestException ofL10n(List<Message> errors, String l10nKey, Object... l10nParams) {
+ return new BadRequestException(null, l10nKey, l10nParams, errors);
}
/**
}
}
- public void checkMessages() {
- if (! errors.isEmpty()) {
- throw this;
- }
- }
}
}
private void processValidationMessages(ValidationMessages messages, NewProfileResult result) {
- BadRequestException exception = BadRequestException.of("Fail to create profile");
- for (String error : messages.getErrors()) {
- exception.addError(error);
- }
- if (!exception.errors().isEmpty()) {
- throw exception;
+ if (!messages.getErrors().isEmpty()) {
+ List<BadRequestException.Message> errors = newArrayList();
+ for (String error : messages.getErrors()) {
+ errors.add(BadRequestException.Message.of(error));
+ }
+ throw BadRequestException.of("Fail to create profile", errors);
}
-
result.setWarnings(messages.getWarnings());
result.setInfos(messages.getInfos());
}
import java.util.List;
import java.util.Map;
+import static com.google.common.collect.Lists.newArrayList;
+
/**
* @since 4.2
*/
}
public static ProfileRuleQuery parse(Map<String, Object> params) {
- BadRequestException validationException = BadRequestException.of("Incorrect rule search parameters");
+ List<BadRequestException.Message> errors = newArrayList();
- validatePresenceOf(params, validationException, PARAM_PROFILE_ID);
+ validatePresenceOf(params, errors, PARAM_PROFILE_ID);
ProfileRuleQuery result = new ProfileRuleQuery();
try {
result.profileId = RubyUtils.toInteger(params.get(PARAM_PROFILE_ID));
} catch (Exception badProfileId) {
- validationException.addError("profileId could not be parsed");
+ errors.add(BadRequestException.Message.of("profileId could not be parsed"));
}
result.addStatuses(optionalVarargs(params.get(PARAM_STATUSES)));
}
- validationException.checkMessages();
-
+ if (!errors.isEmpty()) {
+ throw BadRequestException.of("Incorrect rule search parameters", errors);
+ }
return result;
}
- private static void validatePresenceOf(Map<String, Object> params, BadRequestException validationException, String... paramNames) {
+ private static void validatePresenceOf(Map<String, Object> params, List<BadRequestException.Message> errors, String... paramNames) {
for (String param: paramNames) {
if (params.get(param) == null) {
- validationException.addError("Missing parameter "+param);
+ errors.add(BadRequestException.Message.of("Missing parameter " + param));
}
}
}
import org.junit.Test;
+import static com.google.common.collect.Lists.newArrayList;
import static org.fest.assertions.Assertions.assertThat;
public class BadRequestExceptionTest {
@Test
public void test_text_error_message() throws Exception {
- BadRequestException exception = BadRequestException.of("error");
- exception.addError("new error");
+ BadRequestException exception = BadRequestException.of("error", newArrayList(BadRequestException.Message.of("new error")));
assertThat(exception.errors()).hasSize(1);
assertThat(exception.errors().get(0).text()).isEqualTo("new error");