All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cerner.beadledom.json.common.model.ErrorDetail Maven / Gradle / Ivy

The newest version!
package com.cerner.beadledom.json.common.model;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
import com.google.auto.value.AutoValue;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.annotation.Nullable;

/**
 * Standard error details body for RESTful APIs.
 *
 * @author Brian van de Boogaard
 * @since 2.6
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "domain",
    "reason",
    "message",
    "locationType",
    "location"})
@AutoValue
@ApiModel(value = "Standard error details")
@JsonDeserialize(builder = ErrorDetail.Builder.class)
public abstract class ErrorDetail {

  @Nullable
  @JsonProperty("domain")
  @ApiModelProperty(value = "A subsystem or context where an error occurred")
  public abstract String domain();

  @Nullable
  @JsonProperty("reason")
  @ApiModelProperty(value = "short name or key for an error")
  public abstract String reason();

  @Nullable
  @JsonProperty("message")
  @ApiModelProperty(value = "Human readable description of an error")
  public abstract String message();

  @Nullable
  @JsonProperty("locationType")
  @ApiModelProperty(
      value = "Location or type of the value that caused an error")
  public abstract String locationType();

  @Nullable
  @JsonProperty("location")
  @ApiModelProperty(value = "Name of the value that caused an error")
  public abstract String location();

  public static Builder builder() {
    return new AutoValue_ErrorDetail.Builder();
  }

  @AutoValue.Builder
  @JsonPOJOBuilder(withPrefix = "")
  public abstract static class Builder {

    @JsonCreator
    private static Builder create() {
      return ErrorDetail.builder();
    }

    @JsonProperty("domain")
    public abstract Builder domain(String domain);

    @JsonProperty("reason")
    public abstract Builder reason(String reason);

    @JsonProperty("message")
    public abstract Builder message(String message);

    @JsonProperty("locationType")
    public abstract Builder locationType(String locationType);

    @JsonProperty("location")
    public abstract Builder location(String location);

    public abstract ErrorDetail build();
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy