Commit cadc9755 authored by Christopher Cottier's avatar Christopher Cottier

Added ErrorModel for error reporting, improved error messages

parent 040b36df
......@@ -4,6 +4,7 @@ import com.nisum.paymentvendorsimulator.creditcard.domain.dto.CreditCardRequest;
import com.nisum.paymentvendorsimulator.creditcard.domain.dto.CreditCardResponse;
import com.nisum.paymentvendorsimulator.creditcard.services.CreditCardService;
import com.nisum.paymentvendorsimulator.exceptions.BaseController;
import com.nisum.paymentvendorsimulator.exceptions.ErrorModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -38,13 +39,19 @@ public class CreditCardController{
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ResponseEntity<List<String>> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
System.out.println("in exception handler");
public ResponseEntity<ErrorModel> handleMethodArgumentNotValidException(MethodArgumentNotValidException e) {
ErrorModel errorModel = new ErrorModel();
List<String> errors = e.getAllErrors().stream()
.map(error -> error.getDefaultMessage())
.collect(Collectors.toList());
return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
errorModel.setDeveloperMessage("Bad Request");
errorModel.setUserMessage("Errors: " + errors.toString());
errorModel.setErrorCode(HttpStatus.BAD_REQUEST.value());
errorModel.setMoreInfo("/swagger-ui/index.html#/credit-card-controller/authorizeUsingPOST_1");
return new ResponseEntity<>(errorModel, HttpStatus.BAD_REQUEST);
}
}
......@@ -14,10 +14,10 @@ import javax.validation.constraints.Pattern;
@NoArgsConstructor
public class CreditCardAmount {
@Pattern(regexp = "\\d+\\.\\d{2}", message="Value must be at dollar and cents value separated by '.'")
@Pattern(regexp = "\\d+\\.\\d{2}", message="Amount value must be at dollar and cents value separated by '.'")
String value;
@NotBlank(message = "currency cannot be left blank")
@NotBlank(message = "Amount currency cannot be left blank")
String currency;
}
......@@ -14,19 +14,19 @@ import javax.validation.constraints.Pattern;
@NoArgsConstructor
public class CreditCardData {
@Pattern(regexp = "\\d{16}", message = "Credit card must be 16 digits")
@Pattern(regexp = "\\d{16}", message = "Credit card number must be 16 digits")
String number;
@Pattern(regexp = "\\d{2}", message = "Credit card must be 2 digits")
@Pattern(regexp = "\\d{2}", message = "Credit card expiry month must be 2 digits")
String expiryMonth;
@Pattern(regexp = "\\d{4}", message = "Credit card must be 4 digits")
@Pattern(regexp = "\\d{4}", message = "Credit card expiry year must be 4 digits")
String expiryYear;
@Pattern(regexp = "\\d{3}", message = "cvc must be 3 digits")
@Pattern(regexp = "\\d{3}", message = "Credit card cvc must be 3 digits")
String cvc;
@NotBlank(message = "holderName cannot be left blank")
@NotBlank(message = "Credit card holderName cannot be left blank")
String holderName;
}
package com.nisum.paymentvendorsimulator.exceptions;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ErrorModel {
@JsonProperty("developerMessage")
private String developerMessage = null;
@JsonProperty("userMessage")
private String userMessage = null;
@JsonProperty("errorCode")
private Integer errorCode = null;
@JsonProperty("moreInfo")
private String moreInfo = null;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment