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

org.cloudfoundry.spring.client.SpringCloudFoundryClient Maven / Gradle / Ivy

The newest version!
// Generated by delombok at Sat Jun 18 07:22:04 PDT 2016
/*
 * Copyright 2013-2016 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.cloudfoundry.spring.client;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.deser.DeserializationProblemHandler;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import lombok.NonNull;
import org.cloudfoundry.client.CloudFoundryClient;
import org.cloudfoundry.client.v2.applications.ApplicationsV2;
import org.cloudfoundry.client.v2.applicationusageevents.ApplicationUsageEvents;
import org.cloudfoundry.client.v2.buildpacks.Buildpacks;
import org.cloudfoundry.client.v2.domains.Domains;
import org.cloudfoundry.client.v2.environmentvariablegroups.EnvironmentVariableGroups;
import org.cloudfoundry.client.v2.events.Events;
import org.cloudfoundry.client.v2.featureflags.FeatureFlags;
import org.cloudfoundry.client.v2.info.Info;
import org.cloudfoundry.client.v2.jobs.Jobs;
import org.cloudfoundry.client.v2.organizationquotadefinitions.OrganizationQuotaDefinitions;
import org.cloudfoundry.client.v2.organizations.Organizations;
import org.cloudfoundry.client.v2.privatedomains.PrivateDomains;
import org.cloudfoundry.client.v2.routemappings.RouteMappings;
import org.cloudfoundry.client.v2.routes.Routes;
import org.cloudfoundry.client.v2.securitygroups.SecurityGroups;
import org.cloudfoundry.client.v2.servicebindings.ServiceBindingsV2;
import org.cloudfoundry.client.v2.servicebrokers.ServiceBrokers;
import org.cloudfoundry.client.v2.serviceinstances.ServiceInstances;
import org.cloudfoundry.client.v2.servicekeys.ServiceKeys;
import org.cloudfoundry.client.v2.serviceplans.ServicePlans;
import org.cloudfoundry.client.v2.serviceplanvisibilities.ServicePlanVisibilities;
import org.cloudfoundry.client.v2.services.Services;
import org.cloudfoundry.client.v2.serviceusageevents.ServiceUsageEvents;
import org.cloudfoundry.client.v2.shareddomains.SharedDomains;
import org.cloudfoundry.client.v2.spacequotadefinitions.SpaceQuotaDefinitions;
import org.cloudfoundry.client.v2.spaces.Spaces;
import org.cloudfoundry.client.v2.stacks.Stacks;
import org.cloudfoundry.client.v2.userprovidedserviceinstances.UserProvidedServiceInstances;
import org.cloudfoundry.client.v2.users.Users;
import org.cloudfoundry.client.v3.applications.ApplicationsV3;
import org.cloudfoundry.client.v3.droplets.Droplets;
import org.cloudfoundry.client.v3.packages.Packages;
import org.cloudfoundry.client.v3.processes.Processes;
import org.cloudfoundry.client.v3.servicebindings.ServiceBindingsV3;
import org.cloudfoundry.client.v3.tasks.Tasks;
import org.cloudfoundry.reactor.client.v2.applications.ReactorApplicationsV2;
import org.cloudfoundry.reactor.client.v2.applicationusageevents.ReactorApplicationUsageEvents;
import org.cloudfoundry.reactor.client.v2.buildpacks.ReactorBuildpacks;
import org.cloudfoundry.reactor.client.v2.domains.ReactorDomains;
import org.cloudfoundry.reactor.client.v2.environmentvariablegroups.ReactorEnvironmentVariableGroups;
import org.cloudfoundry.reactor.client.v2.events.ReactorEvents;
import org.cloudfoundry.reactor.client.v2.featureflags.ReactorFeatureFlags;
import org.cloudfoundry.reactor.client.v2.info.ReactorInfo;
import org.cloudfoundry.reactor.client.v2.jobs.ReactorJobs;
import org.cloudfoundry.reactor.client.v2.organizationquotadefinitions.ReactorOrganizationQuotaDefinitions;
import org.cloudfoundry.reactor.client.v2.organizations.ReactorOrganizations;
import org.cloudfoundry.reactor.client.v2.privatedomains.ReactorPrivateDomains;
import org.cloudfoundry.reactor.client.v2.routemappings.ReactorRouteMappings;
import org.cloudfoundry.reactor.client.v2.routes.ReactorRoutes;
import org.cloudfoundry.reactor.client.v2.securitygroups.ReactorSecurityGroups;
import org.cloudfoundry.reactor.client.v2.servicebindings.ReactorServiceBindingsV2;
import org.cloudfoundry.reactor.client.v2.servicebrokers.ReactorServiceBrokers;
import org.cloudfoundry.reactor.client.v2.serviceinstances.ReactorServiceInstances;
import org.cloudfoundry.reactor.client.v2.servicekeys.ReactorServiceKeys;
import org.cloudfoundry.reactor.client.v2.serviceplans.ReactorServicePlans;
import org.cloudfoundry.reactor.client.v2.serviceplanvisibilities.ReactorServicePlanVisibilities;
import org.cloudfoundry.reactor.client.v2.services.ReactorServices;
import org.cloudfoundry.reactor.client.v2.serviceusageevents.ReactorServiceUsageEvents;
import org.cloudfoundry.reactor.client.v2.shareddomains.ReactorSharedDomains;
import org.cloudfoundry.reactor.client.v2.spacequotadefinitions.ReactorSpaceQuotaDefinitions;
import org.cloudfoundry.reactor.client.v2.spaces.ReactorSpaces;
import org.cloudfoundry.reactor.client.v2.stacks.ReactorStacks;
import org.cloudfoundry.reactor.client.v2.userprovidedserviceinstances.ReactorUserProvidedServiceInstances;
import org.cloudfoundry.reactor.client.v2.users.ReactorUsers;
import org.cloudfoundry.reactor.client.v3.applications.ReactorApplicationsV3;
import org.cloudfoundry.reactor.client.v3.droplets.ReactorDroplets;
import org.cloudfoundry.reactor.client.v3.packages.ReactorPackages;
import org.cloudfoundry.reactor.client.v3.processes.ReactorProcesses;
import org.cloudfoundry.reactor.client.v3.servicebindings.ReactorServiceBindingsV3;
import org.cloudfoundry.reactor.client.v3.tasks.ReactorTasks;
import org.cloudfoundry.reactor.util.AuthorizationProvider;
import org.cloudfoundry.reactor.util.ConnectionContextSupplier;
import org.cloudfoundry.reactor.util.DefaultConnectionContext;
import org.cloudfoundry.spring.util.CloudFoundryClientCompatibilityChecker;
import org.cloudfoundry.spring.util.network.ConnectionContext;
import org.cloudfoundry.spring.util.network.ConnectionContextFactory;
import org.cloudfoundry.spring.util.network.FallbackHttpMessageConverter;
import org.cloudfoundry.spring.util.network.OAuth2RestOperationsOAuth2TokenProvider;
import org.cloudfoundry.spring.util.network.OAuth2RestTemplateBuilder;
import org.cloudfoundry.spring.util.network.OAuth2TokenProvider;
import org.springframework.security.oauth2.client.OAuth2RestOperations;
import reactor.core.publisher.Mono;
import reactor.io.netty.http.HttpClient;
import java.util.List;
import java.util.Optional;
import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL;
import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;

/**
 * The Spring-based implementation of {@link CloudFoundryClient}
 */
public final class SpringCloudFoundryClient implements CloudFoundryClient, ConnectionContextSupplier {
    private final ApplicationUsageEvents applicationUsageEvents;
    private final ApplicationsV2 applicationsV2;
    private final ApplicationsV3 applicationsV3;
    private final Buildpacks buildpacks;
    private final org.cloudfoundry.reactor.util.ConnectionContext connectionContext;
    private final Domains domains;
    private final Droplets droplets;
    private final EnvironmentVariableGroups environmentVariableGroups;
    private final Events events;
    private final FeatureFlags featureFlags;
    private final Info info;
    private final Jobs jobs;
    private final OrganizationQuotaDefinitions organizationQuotaDefinitions;
    private final Organizations organizations;
    private final Packages packages;
    private final PrivateDomains privateDomains;
    private final Processes processes;
    private final RouteMappings routeMappings;
    private final Routes routes;
    private final SecurityGroups securityGroups;
    private final ServiceBindingsV2 serviceBindingsV2;
    private final ServiceBindingsV3 serviceBindingsV3;
    private final ServiceBrokers serviceBrokers;
    private final ServiceInstances serviceInstances;
    private final ServiceKeys serviceKeys;
    private final ServicePlanVisibilities servicePlanVisibilities;
    private final ServicePlans servicePlans;
    private final ServiceUsageEvents serviceUsageEvents;
    private final Services services;
    private final SharedDomains sharedDomains;
    private final SpaceQuotaDefinitions spaceQuotaDefinitions;
    private final Spaces spaces;
    private final Stacks stacks;
    private final Tasks tasks;
    private final OAuth2TokenProvider tokenProvider;
    private final UserProvidedServiceInstances userProvidedServiceInstances;
    private final Users users;

    SpringCloudFoundryClient(@NonNull String host, Integer port, Boolean skipSslValidation, String clientId, String clientSecret, String proxyHost, String proxyPassword, Integer proxyPort, String proxyUsername, @NonNull String username, @NonNull String password, List problemHandlers) {
        this(getConnectionContext(host, port, skipSslValidation, clientId, clientSecret, username, password), host, port, proxyHost, proxyPassword, proxyPort, proxyUsername, skipSslValidation, problemHandlers, clientId, clientSecret);
        if (host == null) {
            throw new java.lang.NullPointerException("host");
        }
        if (username == null) {
            throw new java.lang.NullPointerException("username");
        }
        if (password == null) {
            throw new java.lang.NullPointerException("password");
        }
        new CloudFoundryClientCompatibilityChecker(this.info).check();
    }

    SpringCloudFoundryClient(String host, Integer port, String proxyHost, String proxyPassword, Integer proxyPort, String proxyUsername, Boolean skipSslValidation, OAuth2TokenProvider tokenProvider, List problemHandlers, String clientId, String clientSecret) {
        this.tokenProvider = tokenProvider;
        ObjectMapper objectMapper = new ObjectMapper().disable(FAIL_ON_UNKNOWN_PROPERTIES).registerModule(new Jdk8Module()).setSerializationInclusion(NON_NULL);
        problemHandlers.forEach(objectMapper::addHandler);
        DefaultConnectionContext.Builder connectionContextBuilder = DefaultConnectionContext.builder().authorizationProvider(outbound -> tokenProvider.getToken().map(token -> String.format("bearer %s", token)).map(token -> {
            outbound.addHeader("Authorization", token);
            return outbound;
        })).host(host).objectMapper(objectMapper).port(port).proxyHost(proxyHost).proxyPassword(proxyPassword).proxyPort(proxyPort).proxyUsername(proxyUsername).trustCertificates(skipSslValidation);
        Optional.ofNullable(clientId).ifPresent(connectionContextBuilder::clientId);
        Optional.ofNullable(clientSecret).ifPresent(connectionContextBuilder::clientSecret);
        this.connectionContext = connectionContextBuilder.build();
        AuthorizationProvider authorizationProvider = this.connectionContext.getAuthorizationProvider();
        HttpClient httpClient = this.connectionContext.getHttpClient();
        Mono root2 = this.connectionContext.getRoot(); // TODO: Change name once Spring is gone
        this.applicationsV2 = new ReactorApplicationsV2(authorizationProvider, httpClient, objectMapper, root2);
        this.applicationsV3 = new ReactorApplicationsV3(authorizationProvider, httpClient, objectMapper, root2);
        this.applicationUsageEvents = new ReactorApplicationUsageEvents(authorizationProvider, httpClient, objectMapper, root2);
        this.buildpacks = new ReactorBuildpacks(authorizationProvider, httpClient, objectMapper, root2);
        this.domains = new ReactorDomains(authorizationProvider, httpClient, objectMapper, root2);
        this.droplets = new ReactorDroplets(authorizationProvider, httpClient, objectMapper, root2);
        this.environmentVariableGroups = new ReactorEnvironmentVariableGroups(authorizationProvider, httpClient, objectMapper, root2);
        this.featureFlags = new ReactorFeatureFlags(authorizationProvider, httpClient, objectMapper, root2);
        this.events = new ReactorEvents(authorizationProvider, httpClient, objectMapper, root2);
        this.info = new ReactorInfo(authorizationProvider, httpClient, objectMapper, root2);
        this.jobs = new ReactorJobs(authorizationProvider, httpClient, objectMapper, root2);
        this.organizationQuotaDefinitions = new ReactorOrganizationQuotaDefinitions(authorizationProvider, httpClient, objectMapper, root2);
        this.organizations = new ReactorOrganizations(authorizationProvider, httpClient, objectMapper, root2);
        this.packages = new ReactorPackages(authorizationProvider, httpClient, objectMapper, root2);
        this.privateDomains = new ReactorPrivateDomains(authorizationProvider, httpClient, objectMapper, root2);
        this.processes = new ReactorProcesses(authorizationProvider, httpClient, objectMapper, root2);
        this.routeMappings = new ReactorRouteMappings(authorizationProvider, httpClient, objectMapper, root2);
        this.routes = new ReactorRoutes(authorizationProvider, httpClient, objectMapper, root2);
        this.securityGroups = new ReactorSecurityGroups(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceBindingsV2 = new ReactorServiceBindingsV2(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceBindingsV3 = new ReactorServiceBindingsV3(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceBrokers = new ReactorServiceBrokers(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceInstances = new ReactorServiceInstances(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceKeys = new ReactorServiceKeys(authorizationProvider, httpClient, objectMapper, root2);
        this.servicePlans = new ReactorServicePlans(authorizationProvider, httpClient, objectMapper, root2);
        this.servicePlanVisibilities = new ReactorServicePlanVisibilities(authorizationProvider, httpClient, objectMapper, root2);
        this.services = new ReactorServices(authorizationProvider, httpClient, objectMapper, root2);
        this.serviceUsageEvents = new ReactorServiceUsageEvents(authorizationProvider, httpClient, objectMapper, root2);
        this.sharedDomains = new ReactorSharedDomains(authorizationProvider, httpClient, objectMapper, root2);
        this.spaceQuotaDefinitions = new ReactorSpaceQuotaDefinitions(authorizationProvider, httpClient, objectMapper, root2);
        this.spaces = new ReactorSpaces(authorizationProvider, httpClient, objectMapper, root2);
        this.stacks = new ReactorStacks(authorizationProvider, httpClient, objectMapper, root2);
        this.tasks = new ReactorTasks(authorizationProvider, httpClient, objectMapper, root2);
        this.users = new ReactorUsers(authorizationProvider, httpClient, objectMapper, root2);
        this.userProvidedServiceInstances = new ReactorUserProvidedServiceInstances(authorizationProvider, httpClient, objectMapper, root2);
    }

    // Let's take a moment to reflect on the fact that this bridge constructor is needed to counter a useless compiler constraint
    private SpringCloudFoundryClient(ConnectionContext connectionContext, String host, Integer port, String proxyHost, String proxyPassword, Integer proxyPort, String proxyUsername, Boolean skipSslValidation, List problemHandlers, String clientId, String clientSecret) {
        this(host, port, proxyHost, proxyPassword, proxyPort, proxyUsername, skipSslValidation, getRestOperations(connectionContext, problemHandlers), problemHandlers, clientId, clientSecret);
    }

    // Let's take a moment to reflect on the fact that this bridge constructor is needed to counter a useless compiler constraint
    private SpringCloudFoundryClient(String host, Integer port, String proxyHost, String proxyPassword, Integer proxyPort, String proxyUsername, Boolean skipSslValidation, OAuth2RestOperations restOperations, List problemHandlers, String clientId, String clientSecret) {
        this(host, port, proxyHost, proxyPassword, proxyPort, proxyUsername, skipSslValidation, new OAuth2RestOperationsOAuth2TokenProvider(restOperations), problemHandlers, clientId, clientSecret);
    }

    @Override
    public ApplicationUsageEvents applicationUsageEvents() {
        return this.applicationUsageEvents;
    }

    @Override
    public ApplicationsV2 applicationsV2() {
        return this.applicationsV2;
    }

    @Override
    public ApplicationsV3 applicationsV3() {
        return this.applicationsV3;
    }

    @Override
    public Buildpacks buildpacks() {
        return this.buildpacks;
    }

    @Override
    public Domains domains() {
        return this.domains;
    }

    @Override
    public Droplets droplets() {
        return this.droplets;
    }

    @Override
    public EnvironmentVariableGroups environmentVariableGroups() {
        return this.environmentVariableGroups;
    }

    @Override
    public Events events() {
        return this.events;
    }

    @Override
    public FeatureFlags featureFlags() {
        return this.featureFlags;
    }

    @Override
    public Mono getAccessToken() {
        return this.tokenProvider.getToken();
    }

    @Override
    public org.cloudfoundry.reactor.util.ConnectionContext getConnectionContext() {
        return this.connectionContext;
    }

    @Override
    public Info info() {
        return this.info;
    }

    @Override
    public Jobs jobs() {
        return this.jobs;
    }

    @Override
    public OrganizationQuotaDefinitions organizationQuotaDefinitions() {
        return this.organizationQuotaDefinitions;
    }

    @Override
    public Organizations organizations() {
        return this.organizations;
    }

    @Override
    public Packages packages() {
        return this.packages;
    }

    @Override
    public PrivateDomains privateDomains() {
        return this.privateDomains;
    }

    @Override
    public Processes processes() {
        return this.processes;
    }

    @Override
    public RouteMappings routeMappings() {
        return this.routeMappings;
    }

    @Override
    public Routes routes() {
        return this.routes;
    }

    @Override
    public SecurityGroups securityGroups() {
        return this.securityGroups;
    }

    @Override
    public ServiceBindingsV2 serviceBindingsV2() {
        return this.serviceBindingsV2;
    }

    @Override
    public ServiceBindingsV3 serviceBindingsV3() {
        return this.serviceBindingsV3;
    }

    @Override
    public ServiceBrokers serviceBrokers() {
        return this.serviceBrokers;
    }

    @Override
    public ServiceInstances serviceInstances() {
        return this.serviceInstances;
    }

    @Override
    public ServiceKeys serviceKeys() {
        return this.serviceKeys;
    }

    @Override
    public ServicePlanVisibilities servicePlanVisibilities() {
        return this.servicePlanVisibilities;
    }

    @Override
    public ServicePlans servicePlans() {
        return this.servicePlans;
    }

    @Override
    public ServiceUsageEvents serviceUsageEvents() {
        return this.serviceUsageEvents;
    }

    @Override
    public Services services() {
        return this.services;
    }

    @Override
    public SharedDomains sharedDomains() {
        return this.sharedDomains;
    }

    @Override
    public SpaceQuotaDefinitions spaceQuotaDefinitions() {
        return this.spaceQuotaDefinitions;
    }

    @Override
    public Spaces spaces() {
        return this.spaces;
    }

    @Override
    public Stacks stacks() {
        return this.stacks;
    }

    @Override
    public Tasks tasks() {
        return this.tasks;
    }

    @Override
    public UserProvidedServiceInstances userProvidedServiceInstances() {
        return this.userProvidedServiceInstances;
    }

    @Override
    public Users users() {
        return this.users;
    }

    private static ConnectionContext getConnectionContext(String host, Integer port, Boolean skipSslValidation, String clientId, String clientSecret, String username, String password) {
        return new ConnectionContextFactory().trustCertificates(skipSslValidation).host(host).port(port).clientId(clientId).clientSecret(clientSecret).username(username).password(password).build();
    }

    private static OAuth2RestOperations getRestOperations(ConnectionContext connectionContext, List problemHandlers) {
        return new OAuth2RestTemplateBuilder().clientContext(connectionContext.getClientContext()).protectedResourceDetails(connectionContext.getProtectedResourceDetails()).hostnameVerifier(connectionContext.getHostnameVerifier()).sslContext(connectionContext.getSslContext()).messageConverter(new FallbackHttpMessageConverter()).problemHandlers(problemHandlers).build();
    }


    @java.lang.SuppressWarnings("all")
    @javax.annotation.Generated("lombok")
    public static class SpringCloudFoundryClientBuilder {
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String host;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private Integer port;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private Boolean skipSslValidation;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String clientId;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String clientSecret;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String proxyHost;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String proxyPassword;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private Integer proxyPort;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String proxyUsername;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String username;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private String password;
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        private java.util.ArrayList problemHandlers;

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        SpringCloudFoundryClientBuilder() {
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder host(final String host) {
            this.host = host;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder port(final Integer port) {
            this.port = port;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder skipSslValidation(final Boolean skipSslValidation) {
            this.skipSslValidation = skipSslValidation;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder clientId(final String clientId) {
            this.clientId = clientId;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder clientSecret(final String clientSecret) {
            this.clientSecret = clientSecret;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder proxyHost(final String proxyHost) {
            this.proxyHost = proxyHost;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder proxyPassword(final String proxyPassword) {
            this.proxyPassword = proxyPassword;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder proxyPort(final Integer proxyPort) {
            this.proxyPort = proxyPort;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder proxyUsername(final String proxyUsername) {
            this.proxyUsername = proxyUsername;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder username(final String username) {
            this.username = username;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder password(final String password) {
            this.password = password;
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder problemHandler(final DeserializationProblemHandler problemHandler) {
            if (this.problemHandlers == null) this.problemHandlers = new java.util.ArrayList();
            this.problemHandlers.add(problemHandler);
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder problemHandlers(final java.util.Collection problemHandlers) {
            if (this.problemHandlers == null) this.problemHandlers = new java.util.ArrayList();
            this.problemHandlers.addAll(problemHandlers);
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClientBuilder clearProblemHandlers() {
            if (this.problemHandlers != null) this.problemHandlers.clear();
            return this;
        }

        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public SpringCloudFoundryClient build() {
            java.util.List problemHandlers;
            switch (this.problemHandlers == null ? 0 : this.problemHandlers.size()) {
            case 0: 
                problemHandlers = java.util.Collections.emptyList();
                break;

            case 1: 
                problemHandlers = java.util.Collections.singletonList(this.problemHandlers.get(0));
                break;

            default: 
                problemHandlers = java.util.Collections.unmodifiableList(new java.util.ArrayList(this.problemHandlers));
            }
            return new SpringCloudFoundryClient(host, port, skipSslValidation, clientId, clientSecret, proxyHost, proxyPassword, proxyPort, proxyUsername, username, password, problemHandlers);
        }

        @java.lang.Override
        @java.lang.SuppressWarnings("all")
        @javax.annotation.Generated("lombok")
        public java.lang.String toString() {
            return "SpringCloudFoundryClient.SpringCloudFoundryClientBuilder(host=" + this.host + ", port=" + this.port + ", skipSslValidation=" + this.skipSslValidation + ", clientId=" + this.clientId + ", clientSecret=" + this.clientSecret + ", proxyHost=" + this.proxyHost + ", proxyPassword=" + this.proxyPassword + ", proxyPort=" + this.proxyPort + ", proxyUsername=" + this.proxyUsername + ", username=" + this.username + ", password=" + this.password + ", problemHandlers=" + this.problemHandlers + ")";
        }
    }

    @java.lang.SuppressWarnings("all")
    @javax.annotation.Generated("lombok")
    public static SpringCloudFoundryClientBuilder builder() {
        return new SpringCloudFoundryClientBuilder();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy