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

org.cloudfoundry.operations.DefaultCloudFoundryOperations Maven / Gradle / Ivy

There is a newer version: 5.12.2.RELEASE
Show newest version
package org.cloudfoundry.operations;

import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.cloudfoundry.Nullable;
import org.cloudfoundry.client.CloudFoundryClient;
import org.cloudfoundry.doppler.DopplerClient;
import org.cloudfoundry.networking.NetworkingClient;
import org.cloudfoundry.operations.advanced.Advanced;
import org.cloudfoundry.operations.applications.Applications;
import org.cloudfoundry.operations.buildpacks.Buildpacks;
import org.cloudfoundry.operations.domains.Domains;
import org.cloudfoundry.operations.networkpolicies.NetworkPolicies;
import org.cloudfoundry.operations.organizationadmin.OrganizationAdmin;
import org.cloudfoundry.operations.organizations.Organizations;
import org.cloudfoundry.operations.routes.Routes;
import org.cloudfoundry.operations.serviceadmin.ServiceAdmin;
import org.cloudfoundry.operations.services.Services;
import org.cloudfoundry.operations.spaceadmin.SpaceAdmin;
import org.cloudfoundry.operations.spaces.Spaces;
import org.cloudfoundry.operations.stacks.Stacks;
import org.cloudfoundry.operations.useradmin.UserAdmin;
import org.cloudfoundry.routing.RoutingClient;
import org.cloudfoundry.uaa.UaaClient;
import org.immutables.value.Generated;
import reactor.core.publisher.Mono;

/**
 * The default implementation of the {@link CloudFoundryOperations} interface
 */
@Generated(from = "_DefaultCloudFoundryOperations", generator = "Immutables")
@SuppressWarnings({"all"})
@javax.annotation.Generated("org.immutables.processor.ProxyProcessor")
public final class DefaultCloudFoundryOperations
    extends org.cloudfoundry.operations._DefaultCloudFoundryOperations {
  private transient final Advanced advanced;
  private transient final Applications applications;
  private transient final Buildpacks buildpacks;
  private transient final Domains domains;
  private transient final NetworkPolicies networkPolicies;
  private transient final OrganizationAdmin organizationAdmin;
  private transient final Organizations organizations;
  private transient final Routes routes;
  private transient final ServiceAdmin serviceAdmin;
  private transient final Services services;
  private transient final SpaceAdmin spaceAdmin;
  private transient final Spaces spaces;
  private transient final Stacks stacks;
  private transient final UserAdmin userAdmin;
  private final Duration cacheDuration;
  private final @Nullable CloudFoundryClient cloudFoundryClient;
  private transient final Mono cloudFoundryClientPublisher;
  private final @Nullable DopplerClient dopplerClient;
  private transient final Mono dopplerClientPublisher;
  private final @Nullable NetworkingClient networkingClient;
  private transient final Mono networkingClientPublisher;
  private final @Nullable String organization;
  private transient final Mono organizationId;
  private final @Nullable RoutingClient routingClient;
  private transient final Mono routingClientPublisher;
  private final @Nullable String space;
  private transient final Mono spaceId;
  private final @Nullable UaaClient uaaClient;
  private transient final Mono uaaClientPublisher;
  private transient final Mono username;

  private DefaultCloudFoundryOperations(DefaultCloudFoundryOperations.Builder builder) {
    this.cacheDuration = builder.cacheDuration;
    this.cloudFoundryClient = builder.cloudFoundryClient;
    this.dopplerClient = builder.dopplerClient;
    this.networkingClient = builder.networkingClient;
    this.organization = builder.organization;
    this.routingClient = builder.routingClient;
    this.space = builder.space;
    this.uaaClient = builder.uaaClient;
    this.advanced = initShim.advanced();
    this.applications = initShim.applications();
    this.buildpacks = initShim.buildpacks();
    this.domains = initShim.domains();
    this.networkPolicies = initShim.networkPolicies();
    this.organizationAdmin = initShim.organizationAdmin();
    this.organizations = initShim.organizations();
    this.routes = initShim.routes();
    this.serviceAdmin = initShim.serviceAdmin();
    this.services = initShim.services();
    this.spaceAdmin = initShim.spaceAdmin();
    this.spaces = initShim.spaces();
    this.stacks = initShim.stacks();
    this.userAdmin = initShim.userAdmin();
    this.cloudFoundryClientPublisher = initShim.getCloudFoundryClientPublisher();
    this.dopplerClientPublisher = initShim.getDopplerClientPublisher();
    this.networkingClientPublisher = initShim.getNetworkingClientPublisher();
    this.organizationId = initShim.getOrganizationId();
    this.routingClientPublisher = initShim.getRoutingClientPublisher();
    this.spaceId = initShim.getSpaceId();
    this.uaaClientPublisher = initShim.getUaaClientPublisher();
    this.username = initShim.getUsername();
    this.initShim = null;
  }

  private static final byte STAGE_INITIALIZING = -1;
  private static final byte STAGE_UNINITIALIZED = 0;
  private static final byte STAGE_INITIALIZED = 1;
  private transient volatile InitShim initShim = new InitShim();

  @Generated(from = "_DefaultCloudFoundryOperations", generator = "Immutables")
  private final class InitShim {
    private byte advancedBuildStage = STAGE_UNINITIALIZED;
    private Advanced advanced;

    Advanced advanced() {
      if (advancedBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (advancedBuildStage == STAGE_UNINITIALIZED) {
        advancedBuildStage = STAGE_INITIALIZING;
        this.advanced = Objects.requireNonNull(DefaultCloudFoundryOperations.super.advanced(), "advanced");
        advancedBuildStage = STAGE_INITIALIZED;
      }
      return this.advanced;
    }

    private byte applicationsBuildStage = STAGE_UNINITIALIZED;
    private Applications applications;

    Applications applications() {
      if (applicationsBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (applicationsBuildStage == STAGE_UNINITIALIZED) {
        applicationsBuildStage = STAGE_INITIALIZING;
        this.applications = Objects.requireNonNull(DefaultCloudFoundryOperations.super.applications(), "applications");
        applicationsBuildStage = STAGE_INITIALIZED;
      }
      return this.applications;
    }

    private byte buildpacksBuildStage = STAGE_UNINITIALIZED;
    private Buildpacks buildpacks;

    Buildpacks buildpacks() {
      if (buildpacksBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (buildpacksBuildStage == STAGE_UNINITIALIZED) {
        buildpacksBuildStage = STAGE_INITIALIZING;
        this.buildpacks = Objects.requireNonNull(DefaultCloudFoundryOperations.super.buildpacks(), "buildpacks");
        buildpacksBuildStage = STAGE_INITIALIZED;
      }
      return this.buildpacks;
    }

    private byte domainsBuildStage = STAGE_UNINITIALIZED;
    private Domains domains;

    Domains domains() {
      if (domainsBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (domainsBuildStage == STAGE_UNINITIALIZED) {
        domainsBuildStage = STAGE_INITIALIZING;
        this.domains = Objects.requireNonNull(DefaultCloudFoundryOperations.super.domains(), "domains");
        domainsBuildStage = STAGE_INITIALIZED;
      }
      return this.domains;
    }

    private byte networkPoliciesBuildStage = STAGE_UNINITIALIZED;
    private NetworkPolicies networkPolicies;

    NetworkPolicies networkPolicies() {
      if (networkPoliciesBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (networkPoliciesBuildStage == STAGE_UNINITIALIZED) {
        networkPoliciesBuildStage = STAGE_INITIALIZING;
        this.networkPolicies = Objects.requireNonNull(DefaultCloudFoundryOperations.super.networkPolicies(), "networkPolicies");
        networkPoliciesBuildStage = STAGE_INITIALIZED;
      }
      return this.networkPolicies;
    }

    private byte organizationAdminBuildStage = STAGE_UNINITIALIZED;
    private OrganizationAdmin organizationAdmin;

    OrganizationAdmin organizationAdmin() {
      if (organizationAdminBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (organizationAdminBuildStage == STAGE_UNINITIALIZED) {
        organizationAdminBuildStage = STAGE_INITIALIZING;
        this.organizationAdmin = Objects.requireNonNull(DefaultCloudFoundryOperations.super.organizationAdmin(), "organizationAdmin");
        organizationAdminBuildStage = STAGE_INITIALIZED;
      }
      return this.organizationAdmin;
    }

    private byte organizationsBuildStage = STAGE_UNINITIALIZED;
    private Organizations organizations;

    Organizations organizations() {
      if (organizationsBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (organizationsBuildStage == STAGE_UNINITIALIZED) {
        organizationsBuildStage = STAGE_INITIALIZING;
        this.organizations = Objects.requireNonNull(DefaultCloudFoundryOperations.super.organizations(), "organizations");
        organizationsBuildStage = STAGE_INITIALIZED;
      }
      return this.organizations;
    }

    private byte routesBuildStage = STAGE_UNINITIALIZED;
    private Routes routes;

    Routes routes() {
      if (routesBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (routesBuildStage == STAGE_UNINITIALIZED) {
        routesBuildStage = STAGE_INITIALIZING;
        this.routes = Objects.requireNonNull(DefaultCloudFoundryOperations.super.routes(), "routes");
        routesBuildStage = STAGE_INITIALIZED;
      }
      return this.routes;
    }

    private byte serviceAdminBuildStage = STAGE_UNINITIALIZED;
    private ServiceAdmin serviceAdmin;

    ServiceAdmin serviceAdmin() {
      if (serviceAdminBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (serviceAdminBuildStage == STAGE_UNINITIALIZED) {
        serviceAdminBuildStage = STAGE_INITIALIZING;
        this.serviceAdmin = Objects.requireNonNull(DefaultCloudFoundryOperations.super.serviceAdmin(), "serviceAdmin");
        serviceAdminBuildStage = STAGE_INITIALIZED;
      }
      return this.serviceAdmin;
    }

    private byte servicesBuildStage = STAGE_UNINITIALIZED;
    private Services services;

    Services services() {
      if (servicesBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (servicesBuildStage == STAGE_UNINITIALIZED) {
        servicesBuildStage = STAGE_INITIALIZING;
        this.services = Objects.requireNonNull(DefaultCloudFoundryOperations.super.services(), "services");
        servicesBuildStage = STAGE_INITIALIZED;
      }
      return this.services;
    }

    private byte spaceAdminBuildStage = STAGE_UNINITIALIZED;
    private SpaceAdmin spaceAdmin;

    SpaceAdmin spaceAdmin() {
      if (spaceAdminBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (spaceAdminBuildStage == STAGE_UNINITIALIZED) {
        spaceAdminBuildStage = STAGE_INITIALIZING;
        this.spaceAdmin = Objects.requireNonNull(DefaultCloudFoundryOperations.super.spaceAdmin(), "spaceAdmin");
        spaceAdminBuildStage = STAGE_INITIALIZED;
      }
      return this.spaceAdmin;
    }

    private byte spacesBuildStage = STAGE_UNINITIALIZED;
    private Spaces spaces;

    Spaces spaces() {
      if (spacesBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (spacesBuildStage == STAGE_UNINITIALIZED) {
        spacesBuildStage = STAGE_INITIALIZING;
        this.spaces = Objects.requireNonNull(DefaultCloudFoundryOperations.super.spaces(), "spaces");
        spacesBuildStage = STAGE_INITIALIZED;
      }
      return this.spaces;
    }

    private byte stacksBuildStage = STAGE_UNINITIALIZED;
    private Stacks stacks;

    Stacks stacks() {
      if (stacksBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (stacksBuildStage == STAGE_UNINITIALIZED) {
        stacksBuildStage = STAGE_INITIALIZING;
        this.stacks = Objects.requireNonNull(DefaultCloudFoundryOperations.super.stacks(), "stacks");
        stacksBuildStage = STAGE_INITIALIZED;
      }
      return this.stacks;
    }

    private byte userAdminBuildStage = STAGE_UNINITIALIZED;
    private UserAdmin userAdmin;

    UserAdmin userAdmin() {
      if (userAdminBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (userAdminBuildStage == STAGE_UNINITIALIZED) {
        userAdminBuildStage = STAGE_INITIALIZING;
        this.userAdmin = Objects.requireNonNull(DefaultCloudFoundryOperations.super.userAdmin(), "userAdmin");
        userAdminBuildStage = STAGE_INITIALIZED;
      }
      return this.userAdmin;
    }

    private byte cloudFoundryClientPublisherBuildStage = STAGE_UNINITIALIZED;
    private Mono cloudFoundryClientPublisher;

    Mono getCloudFoundryClientPublisher() {
      if (cloudFoundryClientPublisherBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (cloudFoundryClientPublisherBuildStage == STAGE_UNINITIALIZED) {
        cloudFoundryClientPublisherBuildStage = STAGE_INITIALIZING;
        this.cloudFoundryClientPublisher = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getCloudFoundryClientPublisher(), "cloudFoundryClientPublisher");
        cloudFoundryClientPublisherBuildStage = STAGE_INITIALIZED;
      }
      return this.cloudFoundryClientPublisher;
    }

    private byte dopplerClientPublisherBuildStage = STAGE_UNINITIALIZED;
    private Mono dopplerClientPublisher;

    Mono getDopplerClientPublisher() {
      if (dopplerClientPublisherBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (dopplerClientPublisherBuildStage == STAGE_UNINITIALIZED) {
        dopplerClientPublisherBuildStage = STAGE_INITIALIZING;
        this.dopplerClientPublisher = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getDopplerClientPublisher(), "dopplerClientPublisher");
        dopplerClientPublisherBuildStage = STAGE_INITIALIZED;
      }
      return this.dopplerClientPublisher;
    }

    private byte networkingClientPublisherBuildStage = STAGE_UNINITIALIZED;
    private Mono networkingClientPublisher;

    Mono getNetworkingClientPublisher() {
      if (networkingClientPublisherBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (networkingClientPublisherBuildStage == STAGE_UNINITIALIZED) {
        networkingClientPublisherBuildStage = STAGE_INITIALIZING;
        this.networkingClientPublisher = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getNetworkingClientPublisher(), "networkingClientPublisher");
        networkingClientPublisherBuildStage = STAGE_INITIALIZED;
      }
      return this.networkingClientPublisher;
    }

    private byte organizationIdBuildStage = STAGE_UNINITIALIZED;
    private Mono organizationId;

    Mono getOrganizationId() {
      if (organizationIdBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (organizationIdBuildStage == STAGE_UNINITIALIZED) {
        organizationIdBuildStage = STAGE_INITIALIZING;
        this.organizationId = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getOrganizationId(), "organizationId");
        organizationIdBuildStage = STAGE_INITIALIZED;
      }
      return this.organizationId;
    }

    private byte routingClientPublisherBuildStage = STAGE_UNINITIALIZED;
    private Mono routingClientPublisher;

    Mono getRoutingClientPublisher() {
      if (routingClientPublisherBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (routingClientPublisherBuildStage == STAGE_UNINITIALIZED) {
        routingClientPublisherBuildStage = STAGE_INITIALIZING;
        this.routingClientPublisher = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getRoutingClientPublisher(), "routingClientPublisher");
        routingClientPublisherBuildStage = STAGE_INITIALIZED;
      }
      return this.routingClientPublisher;
    }

    private byte spaceIdBuildStage = STAGE_UNINITIALIZED;
    private Mono spaceId;

    Mono getSpaceId() {
      if (spaceIdBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (spaceIdBuildStage == STAGE_UNINITIALIZED) {
        spaceIdBuildStage = STAGE_INITIALIZING;
        this.spaceId = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getSpaceId(), "spaceId");
        spaceIdBuildStage = STAGE_INITIALIZED;
      }
      return this.spaceId;
    }

    private byte uaaClientPublisherBuildStage = STAGE_UNINITIALIZED;
    private Mono uaaClientPublisher;

    Mono getUaaClientPublisher() {
      if (uaaClientPublisherBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (uaaClientPublisherBuildStage == STAGE_UNINITIALIZED) {
        uaaClientPublisherBuildStage = STAGE_INITIALIZING;
        this.uaaClientPublisher = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getUaaClientPublisher(), "uaaClientPublisher");
        uaaClientPublisherBuildStage = STAGE_INITIALIZED;
      }
      return this.uaaClientPublisher;
    }

    private byte usernameBuildStage = STAGE_UNINITIALIZED;
    private Mono username;

    Mono getUsername() {
      if (usernameBuildStage == STAGE_INITIALIZING) throw new IllegalStateException(formatInitCycleMessage());
      if (usernameBuildStage == STAGE_UNINITIALIZED) {
        usernameBuildStage = STAGE_INITIALIZING;
        this.username = Objects.requireNonNull(DefaultCloudFoundryOperations.super.getUsername(), "username");
        usernameBuildStage = STAGE_INITIALIZED;
      }
      return this.username;
    }

    private String formatInitCycleMessage() {
      List attributes = new ArrayList<>();
      if (advancedBuildStage == STAGE_INITIALIZING) attributes.add("advanced");
      if (applicationsBuildStage == STAGE_INITIALIZING) attributes.add("applications");
      if (buildpacksBuildStage == STAGE_INITIALIZING) attributes.add("buildpacks");
      if (domainsBuildStage == STAGE_INITIALIZING) attributes.add("domains");
      if (networkPoliciesBuildStage == STAGE_INITIALIZING) attributes.add("networkPolicies");
      if (organizationAdminBuildStage == STAGE_INITIALIZING) attributes.add("organizationAdmin");
      if (organizationsBuildStage == STAGE_INITIALIZING) attributes.add("organizations");
      if (routesBuildStage == STAGE_INITIALIZING) attributes.add("routes");
      if (serviceAdminBuildStage == STAGE_INITIALIZING) attributes.add("serviceAdmin");
      if (servicesBuildStage == STAGE_INITIALIZING) attributes.add("services");
      if (spaceAdminBuildStage == STAGE_INITIALIZING) attributes.add("spaceAdmin");
      if (spacesBuildStage == STAGE_INITIALIZING) attributes.add("spaces");
      if (stacksBuildStage == STAGE_INITIALIZING) attributes.add("stacks");
      if (userAdminBuildStage == STAGE_INITIALIZING) attributes.add("userAdmin");
      if (cloudFoundryClientPublisherBuildStage == STAGE_INITIALIZING) attributes.add("cloudFoundryClientPublisher");
      if (dopplerClientPublisherBuildStage == STAGE_INITIALIZING) attributes.add("dopplerClientPublisher");
      if (networkingClientPublisherBuildStage == STAGE_INITIALIZING) attributes.add("networkingClientPublisher");
      if (organizationIdBuildStage == STAGE_INITIALIZING) attributes.add("organizationId");
      if (routingClientPublisherBuildStage == STAGE_INITIALIZING) attributes.add("routingClientPublisher");
      if (spaceIdBuildStage == STAGE_INITIALIZING) attributes.add("spaceId");
      if (uaaClientPublisherBuildStage == STAGE_INITIALIZING) attributes.add("uaaClientPublisher");
      if (usernameBuildStage == STAGE_INITIALIZING) attributes.add("username");
      return "Cannot build DefaultCloudFoundryOperations, attribute initializers form cycle " + attributes;
    }
  }

  /**
   * @return The computed-at-construction value of the {@code advanced} attribute
   */
  @Override
  public Advanced advanced() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.advanced()
        : this.advanced;
  }

  /**
   * @return The computed-at-construction value of the {@code applications} attribute
   */
  @Override
  public Applications applications() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.applications()
        : this.applications;
  }

  /**
   * @return The computed-at-construction value of the {@code buildpacks} attribute
   */
  @Override
  public Buildpacks buildpacks() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.buildpacks()
        : this.buildpacks;
  }

  /**
   * @return The computed-at-construction value of the {@code domains} attribute
   */
  @Override
  public Domains domains() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.domains()
        : this.domains;
  }

  /**
   * @return The computed-at-construction value of the {@code networkPolicies} attribute
   */
  @Override
  public NetworkPolicies networkPolicies() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.networkPolicies()
        : this.networkPolicies;
  }

  /**
   * @return The computed-at-construction value of the {@code organizationAdmin} attribute
   */
  @Override
  public OrganizationAdmin organizationAdmin() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.organizationAdmin()
        : this.organizationAdmin;
  }

  /**
   * @return The computed-at-construction value of the {@code organizations} attribute
   */
  @Override
  public Organizations organizations() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.organizations()
        : this.organizations;
  }

  /**
   * @return The computed-at-construction value of the {@code routes} attribute
   */
  @Override
  public Routes routes() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.routes()
        : this.routes;
  }

  /**
   * @return The computed-at-construction value of the {@code serviceAdmin} attribute
   */
  @Override
  public ServiceAdmin serviceAdmin() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.serviceAdmin()
        : this.serviceAdmin;
  }

  /**
   * @return The computed-at-construction value of the {@code services} attribute
   */
  @Override
  public Services services() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.services()
        : this.services;
  }

  /**
   * @return The computed-at-construction value of the {@code spaceAdmin} attribute
   */
  @Override
  public SpaceAdmin spaceAdmin() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.spaceAdmin()
        : this.spaceAdmin;
  }

  /**
   * @return The computed-at-construction value of the {@code spaces} attribute
   */
  @Override
  public Spaces spaces() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.spaces()
        : this.spaces;
  }

  /**
   * @return The computed-at-construction value of the {@code stacks} attribute
   */
  @Override
  public Stacks stacks() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.stacks()
        : this.stacks;
  }

  /**
   * @return The computed-at-construction value of the {@code userAdmin} attribute
   */
  @Override
  public UserAdmin userAdmin() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.userAdmin()
        : this.userAdmin;
  }

  /**
   * The duration that stable responses like the organization and space id should be cached
   */
  @Override
  public Optional getCacheDuration() {
    return Optional.ofNullable(cacheDuration);
  }

  /**
   * The {@link CloudFoundryClient} to use for operations functionality
   */
  @Override
  public @Nullable CloudFoundryClient getCloudFoundryClient() {
    return cloudFoundryClient;
  }

  /**
   * @return The computed-at-construction value of the {@code cloudFoundryClientPublisher} attribute
   */
  @Override
  public Mono getCloudFoundryClientPublisher() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getCloudFoundryClientPublisher()
        : this.cloudFoundryClientPublisher;
  }

  /**
   * The {@link DopplerClient} to use for operations functionality
   */
  @Override
  public @Nullable DopplerClient getDopplerClient() {
    return dopplerClient;
  }

  /**
   * @return The computed-at-construction value of the {@code dopplerClientPublisher} attribute
   */
  @Override
  public Mono getDopplerClientPublisher() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getDopplerClientPublisher()
        : this.dopplerClientPublisher;
  }

  /**
   * The {@link NetworkingClient} to use for operations functionality
   */
  @Override
  public @Nullable NetworkingClient getNetworkingClient() {
    return networkingClient;
  }

  /**
   * @return The computed-at-construction value of the {@code networkingClientPublisher} attribute
   */
  @Override
  public Mono getNetworkingClientPublisher() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getNetworkingClientPublisher()
        : this.networkingClientPublisher;
  }

  /**
   * The organization to target
   */
  @Override
  public @Nullable String getOrganization() {
    return organization;
  }

  /**
   * @return The computed-at-construction value of the {@code organizationId} attribute
   */
  @Override
  public Mono getOrganizationId() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getOrganizationId()
        : this.organizationId;
  }

  /**
   * The {@link RoutingClient} to use for operations functionality
   */
  @Override
  public @Nullable RoutingClient getRoutingClient() {
    return routingClient;
  }

  /**
   * @return The computed-at-construction value of the {@code routingClientPublisher} attribute
   */
  @Override
  public Mono getRoutingClientPublisher() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getRoutingClientPublisher()
        : this.routingClientPublisher;
  }

  /**
   * The space to target
   */
  @Override
  public @Nullable String getSpace() {
    return space;
  }

  /**
   * @return The computed-at-construction value of the {@code spaceId} attribute
   */
  @Override
  public Mono getSpaceId() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getSpaceId()
        : this.spaceId;
  }

  /**
   * The {@link UaaClient} to use for operations functionality
   */
  @Override
  public @Nullable UaaClient getUaaClient() {
    return uaaClient;
  }

  /**
   * @return The computed-at-construction value of the {@code uaaClientPublisher} attribute
   */
  @Override
  public Mono getUaaClientPublisher() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getUaaClientPublisher()
        : this.uaaClientPublisher;
  }

  /**
   * @return The computed-at-construction value of the {@code username} attribute
   */
  @Override
  public Mono getUsername() {
    InitShim shim = this.initShim;
    return shim != null
        ? shim.getUsername()
        : this.username;
  }

  /**
   * This instance is equal to all instances of {@code DefaultCloudFoundryOperations} that have equal attribute values.
   * @return {@code true} if {@code this} is equal to {@code another} instance
   */
  @Override
  public boolean equals(Object another) {
    if (this == another) return true;
    return another instanceof DefaultCloudFoundryOperations
        && equalTo((DefaultCloudFoundryOperations) another);
  }

  private boolean equalTo(DefaultCloudFoundryOperations another) {
    return advanced.equals(another.advanced)
        && applications.equals(another.applications)
        && buildpacks.equals(another.buildpacks)
        && domains.equals(another.domains)
        && networkPolicies.equals(another.networkPolicies)
        && organizationAdmin.equals(another.organizationAdmin)
        && organizations.equals(another.organizations)
        && routes.equals(another.routes)
        && serviceAdmin.equals(another.serviceAdmin)
        && services.equals(another.services)
        && spaceAdmin.equals(another.spaceAdmin)
        && spaces.equals(another.spaces)
        && stacks.equals(another.stacks)
        && userAdmin.equals(another.userAdmin)
        && Objects.equals(cacheDuration, another.cacheDuration)
        && Objects.equals(cloudFoundryClient, another.cloudFoundryClient)
        && cloudFoundryClientPublisher.equals(another.cloudFoundryClientPublisher)
        && Objects.equals(dopplerClient, another.dopplerClient)
        && dopplerClientPublisher.equals(another.dopplerClientPublisher)
        && Objects.equals(networkingClient, another.networkingClient)
        && networkingClientPublisher.equals(another.networkingClientPublisher)
        && Objects.equals(organization, another.organization)
        && organizationId.equals(another.organizationId)
        && Objects.equals(routingClient, another.routingClient)
        && routingClientPublisher.equals(another.routingClientPublisher)
        && Objects.equals(space, another.space)
        && spaceId.equals(another.spaceId)
        && Objects.equals(uaaClient, another.uaaClient)
        && uaaClientPublisher.equals(another.uaaClientPublisher)
        && username.equals(another.username);
  }

  /**
   * Computes a hash code from attributes: {@code advanced}, {@code applications}, {@code buildpacks}, {@code domains}, {@code networkPolicies}, {@code organizationAdmin}, {@code organizations}, {@code routes}, {@code serviceAdmin}, {@code services}, {@code spaceAdmin}, {@code spaces}, {@code stacks}, {@code userAdmin}, {@code cacheDuration}, {@code cloudFoundryClient}, {@code cloudFoundryClientPublisher}, {@code dopplerClient}, {@code dopplerClientPublisher}, {@code networkingClient}, {@code networkingClientPublisher}, {@code organization}, {@code organizationId}, {@code routingClient}, {@code routingClientPublisher}, {@code space}, {@code spaceId}, {@code uaaClient}, {@code uaaClientPublisher}, {@code username}.
   * @return hashCode value
   */
  @Override
  public int hashCode() {
    int h = 5381;
    h += (h << 5) + advanced.hashCode();
    h += (h << 5) + applications.hashCode();
    h += (h << 5) + buildpacks.hashCode();
    h += (h << 5) + domains.hashCode();
    h += (h << 5) + networkPolicies.hashCode();
    h += (h << 5) + organizationAdmin.hashCode();
    h += (h << 5) + organizations.hashCode();
    h += (h << 5) + routes.hashCode();
    h += (h << 5) + serviceAdmin.hashCode();
    h += (h << 5) + services.hashCode();
    h += (h << 5) + spaceAdmin.hashCode();
    h += (h << 5) + spaces.hashCode();
    h += (h << 5) + stacks.hashCode();
    h += (h << 5) + userAdmin.hashCode();
    h += (h << 5) + Objects.hashCode(cacheDuration);
    h += (h << 5) + Objects.hashCode(cloudFoundryClient);
    h += (h << 5) + cloudFoundryClientPublisher.hashCode();
    h += (h << 5) + Objects.hashCode(dopplerClient);
    h += (h << 5) + dopplerClientPublisher.hashCode();
    h += (h << 5) + Objects.hashCode(networkingClient);
    h += (h << 5) + networkingClientPublisher.hashCode();
    h += (h << 5) + Objects.hashCode(organization);
    h += (h << 5) + organizationId.hashCode();
    h += (h << 5) + Objects.hashCode(routingClient);
    h += (h << 5) + routingClientPublisher.hashCode();
    h += (h << 5) + Objects.hashCode(space);
    h += (h << 5) + spaceId.hashCode();
    h += (h << 5) + Objects.hashCode(uaaClient);
    h += (h << 5) + uaaClientPublisher.hashCode();
    h += (h << 5) + username.hashCode();
    return h;
  }

  /**
   * Prints the immutable value {@code DefaultCloudFoundryOperations} with attribute values.
   * @return A string representation of the value
   */
  @Override
  public String toString() {
    StringBuilder builder = new StringBuilder("DefaultCloudFoundryOperations{");
    builder.append("advanced=").append(advanced);
    builder.append(", ");
    builder.append("applications=").append(applications);
    builder.append(", ");
    builder.append("buildpacks=").append(buildpacks);
    builder.append(", ");
    builder.append("domains=").append(domains);
    builder.append(", ");
    builder.append("networkPolicies=").append(networkPolicies);
    builder.append(", ");
    builder.append("organizationAdmin=").append(organizationAdmin);
    builder.append(", ");
    builder.append("organizations=").append(organizations);
    builder.append(", ");
    builder.append("routes=").append(routes);
    builder.append(", ");
    builder.append("serviceAdmin=").append(serviceAdmin);
    builder.append(", ");
    builder.append("services=").append(services);
    builder.append(", ");
    builder.append("spaceAdmin=").append(spaceAdmin);
    builder.append(", ");
    builder.append("spaces=").append(spaces);
    builder.append(", ");
    builder.append("stacks=").append(stacks);
    builder.append(", ");
    builder.append("userAdmin=").append(userAdmin);
    if (cacheDuration != null) {
      builder.append(", ");
      builder.append("cacheDuration=").append(cacheDuration);
    }
    if (cloudFoundryClient != null) {
      builder.append(", ");
      builder.append("cloudFoundryClient=").append(cloudFoundryClient);
    }
    builder.append(", ");
    builder.append("cloudFoundryClientPublisher=").append(cloudFoundryClientPublisher);
    if (dopplerClient != null) {
      builder.append(", ");
      builder.append("dopplerClient=").append(dopplerClient);
    }
    builder.append(", ");
    builder.append("dopplerClientPublisher=").append(dopplerClientPublisher);
    if (networkingClient != null) {
      builder.append(", ");
      builder.append("networkingClient=").append(networkingClient);
    }
    builder.append(", ");
    builder.append("networkingClientPublisher=").append(networkingClientPublisher);
    if (organization != null) {
      builder.append(", ");
      builder.append("organization=").append(organization);
    }
    builder.append(", ");
    builder.append("organizationId=").append(organizationId);
    if (routingClient != null) {
      builder.append(", ");
      builder.append("routingClient=").append(routingClient);
    }
    builder.append(", ");
    builder.append("routingClientPublisher=").append(routingClientPublisher);
    if (space != null) {
      builder.append(", ");
      builder.append("space=").append(space);
    }
    builder.append(", ");
    builder.append("spaceId=").append(spaceId);
    if (uaaClient != null) {
      builder.append(", ");
      builder.append("uaaClient=").append(uaaClient);
    }
    builder.append(", ");
    builder.append("uaaClientPublisher=").append(uaaClientPublisher);
    builder.append(", ");
    builder.append("username=").append(username);
    return builder.append("}").toString();
  }

  /**
   * Creates a builder for {@link DefaultCloudFoundryOperations DefaultCloudFoundryOperations}.
   * @return A new DefaultCloudFoundryOperations builder
   */
  public static DefaultCloudFoundryOperations.Builder builder() {
    return new DefaultCloudFoundryOperations.Builder();
  }

  /**
   * Builds instances of type {@link DefaultCloudFoundryOperations DefaultCloudFoundryOperations}.
   * Initialize attributes and then invoke the {@link #build()} method to create an
   * immutable instance.
   * 

{@code Builder} is not thread-safe and generally should not be stored in a field or collection, * but instead used immediately to create instances. */ @Generated(from = "_DefaultCloudFoundryOperations", generator = "Immutables") public static final class Builder { private Duration cacheDuration; private CloudFoundryClient cloudFoundryClient; private DopplerClient dopplerClient; private NetworkingClient networkingClient; private String organization; private RoutingClient routingClient; private String space; private UaaClient uaaClient; private Builder() { } /** * Fill a builder with attribute values from the provided {@code DefaultCloudFoundryOperations} instance. * Regular attribute values will be replaced with those from the given instance. * Absent optional values will not replace present values. * @param instance The instance from which to copy values * @return {@code this} builder for use in a chained invocation */ public final Builder from(DefaultCloudFoundryOperations instance) { return from((_DefaultCloudFoundryOperations) instance); } /** * Copy abstract value type {@code _DefaultCloudFoundryOperations} instance into builder. * @param instance The instance from which to copy values * @return {@code this} builder for use in a chained invocation */ final Builder from(_DefaultCloudFoundryOperations instance) { Objects.requireNonNull(instance, "instance"); Optional cacheDurationOptional = instance.getCacheDuration(); if (cacheDurationOptional.isPresent()) { cacheDuration(cacheDurationOptional); } CloudFoundryClient cloudFoundryClientValue = instance.getCloudFoundryClient(); if (cloudFoundryClientValue != null) { cloudFoundryClient(cloudFoundryClientValue); } DopplerClient dopplerClientValue = instance.getDopplerClient(); if (dopplerClientValue != null) { dopplerClient(dopplerClientValue); } NetworkingClient networkingClientValue = instance.getNetworkingClient(); if (networkingClientValue != null) { networkingClient(networkingClientValue); } String organizationValue = instance.getOrganization(); if (organizationValue != null) { organization(organizationValue); } RoutingClient routingClientValue = instance.getRoutingClient(); if (routingClientValue != null) { routingClient(routingClientValue); } String spaceValue = instance.getSpace(); if (spaceValue != null) { space(spaceValue); } UaaClient uaaClientValue = instance.getUaaClient(); if (uaaClientValue != null) { uaaClient(uaaClientValue); } return this; } /** * Initializes the optional value {@link DefaultCloudFoundryOperations#getCacheDuration() cacheDuration} to cacheDuration. * @param cacheDuration The value for cacheDuration * @return {@code this} builder for chained invocation */ public final Builder cacheDuration(Duration cacheDuration) { this.cacheDuration = Objects.requireNonNull(cacheDuration, "cacheDuration"); return this; } /** * Initializes the optional value {@link DefaultCloudFoundryOperations#getCacheDuration() cacheDuration} to cacheDuration. * @param cacheDuration The value for cacheDuration * @return {@code this} builder for use in a chained invocation */ public final Builder cacheDuration(Optional cacheDuration) { this.cacheDuration = cacheDuration.orElse(null); return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getCloudFoundryClient() cloudFoundryClient} attribute. * @param cloudFoundryClient The value for cloudFoundryClient (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder cloudFoundryClient(@Nullable CloudFoundryClient cloudFoundryClient) { this.cloudFoundryClient = cloudFoundryClient; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getDopplerClient() dopplerClient} attribute. * @param dopplerClient The value for dopplerClient (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder dopplerClient(@Nullable DopplerClient dopplerClient) { this.dopplerClient = dopplerClient; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getNetworkingClient() networkingClient} attribute. * @param networkingClient The value for networkingClient (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder networkingClient(@Nullable NetworkingClient networkingClient) { this.networkingClient = networkingClient; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getOrganization() organization} attribute. * @param organization The value for organization (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder organization(@Nullable String organization) { this.organization = organization; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getRoutingClient() routingClient} attribute. * @param routingClient The value for routingClient (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder routingClient(@Nullable RoutingClient routingClient) { this.routingClient = routingClient; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getSpace() space} attribute. * @param space The value for space (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder space(@Nullable String space) { this.space = space; return this; } /** * Initializes the value for the {@link DefaultCloudFoundryOperations#getUaaClient() uaaClient} attribute. * @param uaaClient The value for uaaClient (can be {@code null}) * @return {@code this} builder for use in a chained invocation */ public final Builder uaaClient(@Nullable UaaClient uaaClient) { this.uaaClient = uaaClient; return this; } /** * Builds a new {@link DefaultCloudFoundryOperations DefaultCloudFoundryOperations}. * @return An immutable instance of DefaultCloudFoundryOperations * @throws java.lang.IllegalStateException if any required attributes are missing */ public DefaultCloudFoundryOperations build() { return new DefaultCloudFoundryOperations(this); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy