content: /*
   * Adyen Checkout API
   *
   * The version of the OpenAPI document: 71
   *
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  package com.adyen.model.checkout;
  
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import java.util.*;
  
  /** ApplicationInfo */
  @JsonPropertyOrder({
    ApplicationInfo.JSON_PROPERTY_ADYEN_LIBRARY,
    ApplicationInfo.JSON_PROPERTY_ADYEN_PAYMENT_SOURCE,
    ApplicationInfo.JSON_PROPERTY_EXTERNAL_PLATFORM,
    ApplicationInfo.JSON_PROPERTY_MERCHANT_APPLICATION,
    ApplicationInfo.JSON_PROPERTY_MERCHANT_DEVICE,
    ApplicationInfo.JSON_PROPERTY_SHOPPER_INTERACTION_DEVICE
  })
  public class ApplicationInfo {
    public static final String JSON_PROPERTY_ADYEN_LIBRARY = "adyenLibrary";
    private CommonField adyenLibrary;
  
    public static final String JSON_PROPERTY_ADYEN_PAYMENT_SOURCE = "adyenPaymentSource";
    private CommonField adyenPaymentSource;
  
    public static final String JSON_PROPERTY_EXTERNAL_PLATFORM = "externalPlatform";
    private ExternalPlatform externalPlatform;
  
    public static final String JSON_PROPERTY_MERCHANT_APPLICATION = "merchantApplication";
    private CommonField merchantApplication;
  
    public static final String JSON_PROPERTY_MERCHANT_DEVICE = "merchantDevice";
    private MerchantDevice merchantDevice;
  
    public static final String JSON_PROPERTY_SHOPPER_INTERACTION_DEVICE = "shopperInteractionDevice";
    private ShopperInteractionDevice shopperInteractionDevice;
  
    public ApplicationInfo() {}
  
    /**
     * adyenLibrary
     *
     * @param adyenLibrary
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo adyenLibrary(CommonField adyenLibrary) {
      this.adyenLibrary = adyenLibrary;
      return this;
    }
  
    /**
     * Get adyenLibrary
     *
     * @return adyenLibrary
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_LIBRARY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public CommonField getAdyenLibrary() {
      return adyenLibrary;
    }
  
    /**
     * adyenLibrary
     *
     * @param adyenLibrary
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_LIBRARY)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdyenLibrary(CommonField adyenLibrary) {
      this.adyenLibrary = adyenLibrary;
    }
  
    /**
     * adyenPaymentSource
     *
     * @param adyenPaymentSource
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo adyenPaymentSource(CommonField adyenPaymentSource) {
      this.adyenPaymentSource = adyenPaymentSource;
      return this;
    }
  
    /**
     * Get adyenPaymentSource
     *
     * @return adyenPaymentSource
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_PAYMENT_SOURCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public CommonField getAdyenPaymentSource() {
      return adyenPaymentSource;
    }
  
    /**
     * adyenPaymentSource
     *
     * @param adyenPaymentSource
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_PAYMENT_SOURCE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdyenPaymentSource(CommonField adyenPaymentSource) {
      this.adyenPaymentSource = adyenPaymentSource;
    }
  
    /**
     * externalPlatform
     *
     * @param externalPlatform
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo externalPlatform(ExternalPlatform externalPlatform) {
      this.externalPlatform = externalPlatform;
      return this;
    }
  
    /**
     * Get externalPlatform
     *
     * @return externalPlatform
     */
    @JsonProperty(JSON_PROPERTY_EXTERNAL_PLATFORM)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public ExternalPlatform getExternalPlatform() {
      return externalPlatform;
    }
  
    /**
     * externalPlatform
     *
     * @param externalPlatform
     */
    @JsonProperty(JSON_PROPERTY_EXTERNAL_PLATFORM)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setExternalPlatform(ExternalPlatform externalPlatform) {
      this.externalPlatform = externalPlatform;
    }
  
    /**
     * merchantApplication
     *
     * @param merchantApplication
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo merchantApplication(CommonField merchantApplication) {
      this.merchantApplication = merchantApplication;
      return this;
    }
  
    /**
     * Get merchantApplication
     *
     * @return merchantApplication
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_APPLICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public CommonField getMerchantApplication() {
      return merchantApplication;
    }
  
    /**
     * merchantApplication
     *
     * @param merchantApplication
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_APPLICATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMerchantApplication(CommonField merchantApplication) {
      this.merchantApplication = merchantApplication;
    }
  
    /**
     * merchantDevice
     *
     * @param merchantDevice
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo merchantDevice(MerchantDevice merchantDevice) {
      this.merchantDevice = merchantDevice;
      return this;
    }
  
    /**
     * Get merchantDevice
     *
     * @return merchantDevice
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_DEVICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public MerchantDevice getMerchantDevice() {
      return merchantDevice;
    }
  
    /**
     * merchantDevice
     *
     * @param merchantDevice
     */
    @JsonProperty(JSON_PROPERTY_MERCHANT_DEVICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setMerchantDevice(MerchantDevice merchantDevice) {
      this.merchantDevice = merchantDevice;
    }
  
    /**
     * shopperInteractionDevice
     *
     * @param shopperInteractionDevice
     * @return the current {@code ApplicationInfo} instance, allowing for method chaining
     */
    public ApplicationInfo shopperInteractionDevice(
        ShopperInteractionDevice shopperInteractionDevice) {
      this.shopperInteractionDevice = shopperInteractionDevice;
      return this;
    }
  
    /**
     * Get shopperInteractionDevice
     *
     * @return shopperInteractionDevice
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_INTERACTION_DEVICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public ShopperInteractionDevice getShopperInteractionDevice() {
      return shopperInteractionDevice;
    }
  
    /**
     * shopperInteractionDevice
     *
     * @param shopperInteractionDevice
     */
    @JsonProperty(JSON_PROPERTY_SHOPPER_INTERACTION_DEVICE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setShopperInteractionDevice(ShopperInteractionDevice shopperInteractionDevice) {
      this.shopperInteractionDevice = shopperInteractionDevice;
    }
  
    /** Return true if this ApplicationInfo object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      ApplicationInfo applicationInfo = (ApplicationInfo) o;
      return Objects.equals(this.adyenLibrary, applicationInfo.adyenLibrary)
          && Objects.equals(this.adyenPaymentSource, applicationInfo.adyenPaymentSource)
          && Objects.equals(this.externalPlatform, applicationInfo.externalPlatform)
          && Objects.equals(this.merchantApplication, applicationInfo.merchantApplication)
          && Objects.equals(this.merchantDevice, applicationInfo.merchantDevice)
          && Objects.equals(this.shopperInteractionDevice, applicationInfo.shopperInteractionDevice);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          adyenLibrary,
          adyenPaymentSource,
          externalPlatform,
          merchantApplication,
          merchantDevice,
          shopperInteractionDevice);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class ApplicationInfo {\n");
      sb.append("    adyenLibrary: ").append(toIndentedString(adyenLibrary)).append("\n");
      sb.append("    adyenPaymentSource: ").append(toIndentedString(adyenPaymentSource)).append("\n");
      sb.append("    externalPlatform: ").append(toIndentedString(externalPlatform)).append("\n");
      sb.append("    merchantApplication: ")
          .append(toIndentedString(merchantApplication))
          .append("\n");
      sb.append("    merchantDevice: ").append(toIndentedString(merchantDevice)).append("\n");
      sb.append("    shopperInteractionDevice: ")
          .append(toIndentedString(shopperInteractionDevice))
          .append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
    /**
     * Create an instance of ApplicationInfo given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of ApplicationInfo
     * @throws JsonProcessingException if the JSON string is invalid with respect to ApplicationInfo
     */
    public static ApplicationInfo fromJson(String jsonString) throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, ApplicationInfo.class);
    }
  
    /**
     * Convert an instance of ApplicationInfo to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  