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

com.nutanix.dp1.dat.dataprotection.v4.config.RecoveryPointRepository Maven / Gradle / Ivy

/*
 * Generated file ..
 *
 * Product version: 4.0.1
 *
 * Part of the Nutanix Data Protection APIs
 *
 * (c) 2024 Nutanix Inc.  All rights reserved
 *
 */

package com.nutanix.dp1.dat.dataprotection.v4.config;

import com.fasterxml.jackson.annotation.JsonAnySetter;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.AccessLevel;
import com.nutanix.devplatform.models.PrettyModeViews.*;
import com.fasterxml.jackson.annotation.JsonView;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.stream.Collectors;
import com.nutanix.dp1.dat.deserializers.DatObjectTypeTypedObject;

import javax.validation.constraints.*;

import java.util.List;

import static com.nutanix.dp1.dat.deserializers.DatDeserializerUtils.*;


/**
 * A recovery point repository is a reference to a data store which can be used to store recovery points using Multicloud snapshot technology (MST). It can be backed by any S3-compatible object storage solutions, which include options like Nutanix Objects, as well as hyperscaler offerings such as Amazon AWS S3 and Microsoft Azure Blobs.
 */
@EqualsAndHashCode(callSuper=true)
@Data
@lombok.extern.slf4j.Slf4j
public class RecoveryPointRepository extends com.nutanix.dp1.dat.common.v1.response.ExternalizableAbstractModel implements java.io.Serializable, DatObjectTypeTypedObject {

  

  public RecoveryPointRepository() {
    super();

  }

  @lombok.Builder(builderMethodName = "RecoveryPointRepositoryBuilder")
  public RecoveryPointRepository(String tenantId, String extId, java.util.List links, String name, com.nutanix.dp1.dat.dataprotection.v4.config.ObjectStorageType objectStorageType, Object objectStorageReference) {
    super(tenantId, extId, links);
    this.setName(name);
    this.setObjectStorageType(objectStorageType);
    this.setObjectStorageReferenceInWrapper(objectStorageReference);
  }

  @Override 
  protected String initialize$objectType() {
    return "dataprotection.v4.config.RecoveryPointRepository";
  }

  @Override 
  protected String initialize$fv() {
    return "v4.r0";
  }


  
  
  
    /**
    * Name of the recovery point repository.
    */
    @javax.validation.constraints.Size(max = 256)
    
    
    @JsonProperty("name")
    public String name = null;
  
  
  
    /**
    * 
    */
    
    
    @JsonProperty("objectStorageType")
    public com.nutanix.dp1.dat.dataprotection.v4.config.ObjectStorageType objectStorageType = null;
  
  
    
    
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @Getter
    private String $objectStorageReferenceItemDiscriminator = null;
    
    public String get$objectStorageReferenceItemDiscriminator() {
      // not required when setObjectStorageReferenceInWrapper is renamed to setObjectStorageReference
      if (this.objectStorageReference != null && this.$objectStorageReferenceItemDiscriminator == null) {
        this.$objectStorageReferenceItemDiscriminator = this.objectStorageReference.getDiscriminator();
      }
      return this.$objectStorageReferenceItemDiscriminator;
    }
    
    @Data
    @com.fasterxml.jackson.databind.annotation.JsonDeserialize(using = OneOfObjectStorageReferenceWrapper.OneOfObjectStorageReferenceWrapperJsonDeserializer.class)
    public static class OneOfObjectStorageReferenceWrapper {
    
    
      public OneOfObjectStorageReferenceWrapper() {
      }
    
    
    
      public OneOfObjectStorageReferenceWrapper(com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer data) {
        this.oneOfType0 = data;
        this.discriminator = data.get$objectType();
        this.$objectType = data.get$objectType();
      }
      public OneOfObjectStorageReferenceWrapper(com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket data) {
        this.oneOfType1 = data;
        this.discriminator = data.get$objectType();
        this.$objectType = data.get$objectType();
      }
      public OneOfObjectStorageReferenceWrapper(com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket data) {
        this.oneOfType2 = data;
        this.discriminator = data.get$objectType();
        this.$objectType = data.get$objectType();
      }
    
      @com.nutanix.dp1.dat.annotations.DatJsonDeserializer
      private static class OneOfObjectStorageReferenceWrapperJsonDeserializer extends com.nutanix.dp1.dat.deserializers.DatOneOfDeserializer  {
        private static final com.fasterxml.jackson.databind.type.TypeFactory TYPE_FACTORY = com.fasterxml.jackson.databind.type.TypeFactory.defaultInstance();
        private static final com.fasterxml.jackson.databind.JavaType ONE_OF_TYPE0 = TYPE_FACTORY.constructType(com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer.class);
        private static final com.fasterxml.jackson.databind.JavaType ONE_OF_TYPE1 = TYPE_FACTORY.constructType(com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket.class);
        private static final com.fasterxml.jackson.databind.JavaType ONE_OF_TYPE2 = TYPE_FACTORY.constructType(com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket.class);
    
        public OneOfObjectStorageReferenceWrapperJsonDeserializer() {
          super(TYPE_FACTORY.constructType(OneOfObjectStorageReferenceWrapper.class));
        }
    
        @Override
        protected void setDataObject(OneOfObjectStorageReferenceWrapper oneOfObject, Object nestedObject) {
          if (oneOfObject == null) {
            throw new IllegalArgumentException("Instance of OneOfObjectStorageReferenceWrapper provided is null");
          }
          if(ONE_OF_TYPE0.getRawClass().isAssignableFrom(nestedObject.getClass())) {
            oneOfObject.setValue(nestedObject);
            if (oneOfObject.getValue() != null) {
                return;
            }
          }
          if(ONE_OF_TYPE1.getRawClass().isAssignableFrom(nestedObject.getClass())) {
            oneOfObject.setValue(nestedObject);
            if (oneOfObject.getValue() != null) {
                return;
            }
          }
          if(ONE_OF_TYPE2.getRawClass().isAssignableFrom(nestedObject.getClass())) {
            oneOfObject.setValue(nestedObject);
            if (oneOfObject.getValue() != null) {
                return;
            }
          }
    
          throw new IllegalArgumentException("Attempting to set unsupported object type in OneOfObjectStorageReferenceWrapper:" + nestedObject.getClass().getName());
        }
    
        public String getPackagePrefix() {
          return "com.nutanix.dp1.dat";
        }
      }
    
      @com.fasterxml.jackson.annotation.JsonIgnore
      @lombok.Getter(lombok.AccessLevel.NONE)
      @lombok.Setter(lombok.AccessLevel.NONE)
      private com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer oneOfType0;
      @com.fasterxml.jackson.annotation.JsonIgnore
      @lombok.Getter(lombok.AccessLevel.NONE)
      @lombok.Setter(lombok.AccessLevel.NONE)
      private com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket oneOfType1;
      @com.fasterxml.jackson.annotation.JsonIgnore
      @lombok.Getter(lombok.AccessLevel.NONE)
      @lombok.Setter(lombok.AccessLevel.NONE)
      private com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket oneOfType2;
    
      @lombok.Setter(lombok.AccessLevel.NONE)
      private String discriminator;
    
    
      @com.fasterxml.jackson.annotation.JsonIgnore
      @lombok.Setter(lombok.AccessLevel.NONE)
      private String $objectType;
    
      @com.fasterxml.jackson.annotation.JsonGetter
      public Object getValue() {
        if(oneOfType0 != null && oneOfType0.get$objectType().equals(this.discriminator)) {
          return this.oneOfType0;
        }
        if(oneOfType1 != null && oneOfType1.get$objectType().equals(this.discriminator)) {
          return this.oneOfType1;
        }
        if(oneOfType2 != null && oneOfType2.get$objectType().equals(this.discriminator)) {
          return this.oneOfType2;
        }
        throw new IllegalArgumentException("Unrecognized discriminator:" + this.discriminator);
      }
    
      public void setValue(Object value) {
        if(value == null) {
          log.warn("null passed to setValue function. OneOf's value will not be set.");
          return;
        }
    
        if (value instanceof com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer) {
          this.oneOfType0 = (com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer) value;
          this.discriminator = this.oneOfType0.get$objectType();
          this.$objectType = this.oneOfType0.get$objectType();
          return;
        }
        if (value instanceof com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket) {
          this.oneOfType1 = (com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket) value;
          this.discriminator = this.oneOfType1.get$objectType();
          this.$objectType = this.oneOfType1.get$objectType();
          return;
        }
        if (value instanceof com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket) {
          this.oneOfType2 = (com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket) value;
          this.discriminator = this.oneOfType2.get$objectType();
          this.$objectType = this.oneOfType2.get$objectType();
          return;
        }
    
        throw new IllegalArgumentException("Attempting to set unsupported object type in OneOfObjectStorageReferenceWrapper:" + value.getClass().getName());
    
      }
    
    }
  
    private OneOfObjectStorageReferenceWrapper objectStorageReference = null;
  
    /**
     * @param value value of one of field objectStorageReference
     */
    @com.fasterxml.jackson.annotation.JsonIgnore
    public void setObjectStorageReferenceInWrapper(Object value) {
      if (value == null) {
        return;
      }
      if (this.objectStorageReference == null) {
        this.objectStorageReference = new OneOfObjectStorageReferenceWrapper();
      }
      this.objectStorageReference.setValue(value);
      this.$objectStorageReferenceItemDiscriminator = this.objectStorageReference.getDiscriminator();
    }
  
    /**
     * Get objectStorageReference in one of possible types :
     * 
    *
  • com.nutanix.dp1.dat.dataprotection.v4.config.AzureBlobStorageContainer
  • *
  • com.nutanix.dp1.dat.dataprotection.v4.config.AmazonS3Bucket
  • *
  • com.nutanix.dp1.dat.dataprotection.v4.config.NutanixObjectsBucket
  • *
* @return Object */ @com.fasterxml.jackson.databind.annotation.JsonSerialize(using = com.nutanix.dp1.dat.serializers.DatOneOfSerializer.class) public Object getObjectStorageReference() { if (this.objectStorageReference == null) { log.debug("OneOf property objectStorageReference was never set. Returning null..."); return null; } return this.objectStorageReference.getValue(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy