From 2c3f770cdb67ad22e7adbdfa337a37150d2f9941 Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Mon, 8 Dec 2025 15:26:33 +0100 Subject: [PATCH 1/2] DefaultDomains: constructor takes XyzClient, not Mono --- .../_DefaultCloudFoundryOperations.java | 10 +- .../operations/domains/DefaultDomains.java | 161 +++++++----------- .../DefaultCloudFoundryOperationsTest.java | 1 + .../domains/DefaultDomainsTest.java | 2 +- 4 files changed, 70 insertions(+), 104 deletions(-) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java index 299b4bf5e4..f1a8d9f97d 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java @@ -91,7 +91,15 @@ public Buildpacks buildpacks() { @Override @Value.Derived public Domains domains() { - return new DefaultDomains(getCloudFoundryClientPublisher(), getRoutingClientPublisher()); + CloudFoundryClient cloudFoundryClient = getCloudFoundryClient(); + if (cloudFoundryClient == null) { + throw new IllegalStateException("CloudFoundryClient must be set"); + } + RoutingClient routingClient = getRoutingClient(); + if (routingClient == null) { + throw new IllegalStateException("RoutingClient must be set"); + } + return new DefaultDomains(cloudFoundryClient, routingClient); } @Override diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java index aa30f42811..dfa0f3bd1b 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java @@ -45,32 +45,29 @@ public final class DefaultDomains implements Domains { - private final Mono cloudFoundryClient; + private final CloudFoundryClient cloudFoundryClient; - private final Mono routingClient; + private final RoutingClient routingClient; - public DefaultDomains( - Mono cloudFoundryClient, Mono routingClient) { + public DefaultDomains(CloudFoundryClient cloudFoundryClient, RoutingClient routingClient) { this.cloudFoundryClient = cloudFoundryClient; this.routingClient = routingClient; } + /** + * @deprecated use {@link DefaultDomains(CloudFoundryClient, RoutingClient)} instead. + */ + @Deprecated + public DefaultDomains( + Mono cloudFoundryClient, Mono routingClient) { + this.cloudFoundryClient = cloudFoundryClient.block(); + this.routingClient = routingClient.block(); + } + @Override public Mono create(CreateDomainRequest request) { - return this.cloudFoundryClient - .flatMap( - cloudFoundryClient -> - Mono.zip( - Mono.just(cloudFoundryClient), - getOrganizationId( - cloudFoundryClient, request.getOrganization()))) - .flatMap( - function( - (cloudFoundryClient, organizationId) -> - requestCreateDomain( - cloudFoundryClient, - request.getDomain(), - organizationId))) + return getOrganizationId(request.getOrganization()) + .flatMap(organizationId -> requestCreateDomain(request.getDomain(), organizationId)) .then() .transform(OperationsLogging.log("Create Domain")) .checkpoint(); @@ -79,31 +76,15 @@ public Mono create(CreateDomainRequest request) { @Override public Mono createShared(CreateSharedDomainRequest request) { if (request.getRouterGroup() == null) { - return this.cloudFoundryClient - .flatMap( - cloudFoundryClient -> - requestCreateSharedDomain( - cloudFoundryClient, request.getDomain(), null)) + return requestCreateSharedDomain(request.getDomain(), null) .then() .transform(OperationsLogging.log("Create Shared Domain")) .checkpoint(); } else { - return Mono.zip(this.cloudFoundryClient, this.routingClient) - .flatMap( - function( - (cloudFoundryClient, routingClient) -> - Mono.zip( - Mono.just(cloudFoundryClient), - getRouterGroupId( - routingClient, - request.getRouterGroup())))) + return getRouterGroupId(routingClient, request.getRouterGroup()) .flatMap( - function( - (cloudFoundryClient, routerGroupId) -> - requestCreateSharedDomain( - cloudFoundryClient, - request.getDomain(), - routerGroupId))) + routerGroupId -> + requestCreateSharedDomain(request.getDomain(), routerGroupId)) .then() .transform(OperationsLogging.log("Create Shared Domain")) .checkpoint(); @@ -112,22 +93,16 @@ public Mono createShared(CreateSharedDomainRequest request) { @Override public Flux list() { - return this.cloudFoundryClient - .flatMapMany( - cloudFoundryClient -> - requestListPrivateDomains(cloudFoundryClient) - .map(DefaultDomains::toDomain) - .mergeWith( - requestListSharedDomains(cloudFoundryClient) - .map(DefaultDomains::toDomain))) + return requestListPrivateDomains() + .map(DefaultDomains::toDomain) + .mergeWith(requestListSharedDomains().map(DefaultDomains::toDomain)) .transform(OperationsLogging.log("List Domains")) .checkpoint(); } @Override public Flux listRouterGroups() { - return this.routingClient - .flatMapMany(DefaultDomains::requestListRouterGroups) + return requestListRouterGroups(routingClient) .flatMapIterable(ListRouterGroupsResponse::getRouterGroups) .map(DefaultDomains::toRouterGroup) .transform(OperationsLogging.log("List Router Groups")) @@ -136,15 +111,10 @@ public Flux listRouterGroups() { @Override public Mono share(ShareDomainRequest request) { - return this.cloudFoundryClient - .flatMap( - cloudFoundryClient -> - Mono.zip( - Mono.just(cloudFoundryClient), - getPrivateDomainId(cloudFoundryClient, request.getDomain()), - getOrganizationId( - cloudFoundryClient, request.getOrganization()))) - .flatMap(function(DefaultDomains::requestAssociateOrganizationPrivateDomainRequest)) + return Mono.zip( + getPrivateDomainId(request.getDomain()), + getOrganizationId(request.getOrganization())) + .flatMap(function(this::requestAssociateOrganizationPrivateDomainRequest)) .then() .transform(OperationsLogging.log("Share Domain")) .checkpoint(); @@ -152,22 +122,16 @@ public Mono share(ShareDomainRequest request) { @Override public Mono unshare(UnshareDomainRequest request) { - return this.cloudFoundryClient - .flatMap( - cloudFoundryClient -> - Mono.zip( - Mono.just(cloudFoundryClient), - getPrivateDomainId(cloudFoundryClient, request.getDomain()), - getOrganizationId( - cloudFoundryClient, request.getOrganization()))) - .flatMap(function(DefaultDomains::requestRemoveOrganizationPrivateDomainRequest)) + return Mono.zip( + getPrivateDomainId(request.getDomain()), + getOrganizationId(request.getOrganization())) + .flatMap(function(this::requestRemoveOrganizationPrivateDomainRequest)) .transform(OperationsLogging.log("Unshare Domain")) .checkpoint(); } - private static Mono getOrganization( - CloudFoundryClient cloudFoundryClient, String organization) { - return requestOrganizations(cloudFoundryClient, organization) + private Mono getOrganization(String organization) { + return requestOrganizations(organization) .single() .onErrorResume( NoSuchElementException.class, @@ -176,14 +140,12 @@ private static Mono getOrganization( "Organization %s does not exist", organization)); } - private static Mono getOrganizationId( - CloudFoundryClient cloudFoundryClient, String organization) { - return getOrganization(cloudFoundryClient, organization).map(ResourceUtils::getId); + private Mono getOrganizationId(String organization) { + return getOrganization(organization).map(ResourceUtils::getId); } - private static Mono getPrivateDomain( - CloudFoundryClient cloudFoundryClient, String domain) { - return requestListPrivateDomains(cloudFoundryClient, domain) + private Mono getPrivateDomain(String domain) { + return requestListPrivateDomains(domain) .single() .onErrorResume( NoSuchElementException.class, @@ -192,9 +154,8 @@ private static Mono getPrivateDomain( "Private domain %s does not exist", domain)); } - private static Mono getPrivateDomainId( - CloudFoundryClient cloudFoundryClient, String domain) { - return getPrivateDomain(cloudFoundryClient, domain).map(ResourceUtils::getId); + private Mono getPrivateDomainId(String domain) { + return getPrivateDomain(domain).map(ResourceUtils::getId); } private static Mono getRouterGroupId(RoutingClient routingClient, String routerGroup) { @@ -205,10 +166,10 @@ private static Mono getRouterGroupId(RoutingClient routingClient, String .map(org.cloudfoundry.routing.v1.routergroups.RouterGroup::getRouterGroupId); } - private static Mono + private Mono requestAssociateOrganizationPrivateDomainRequest( - CloudFoundryClient cloudFoundryClient, String domainId, String organizationId) { - return cloudFoundryClient + String domainId, String organizationId) { + return this.cloudFoundryClient .organizations() .associatePrivateDomain( AssociateOrganizationPrivateDomainRequest.builder() @@ -217,9 +178,9 @@ private static Mono getRouterGroupId(RoutingClient routingClient, String .build()); } - private static Mono requestCreateDomain( - CloudFoundryClient cloudFoundryClient, String domain, String organizationId) { - return cloudFoundryClient + private Mono requestCreateDomain( + String domain, String organizationId) { + return this.cloudFoundryClient .privateDomains() .create( CreatePrivateDomainRequest.builder() @@ -228,9 +189,9 @@ private static Mono requestCreateDomain( .build()); } - private static Mono requestCreateSharedDomain( - CloudFoundryClient cloudFoundryClient, String domain, String routerGroupId) { - return cloudFoundryClient + private Mono requestCreateSharedDomain( + String domain, String routerGroupId) { + return this.cloudFoundryClient .sharedDomains() .create( org.cloudfoundry.client.v2.shareddomains.CreateSharedDomainRequest.builder() @@ -239,11 +200,10 @@ private static Mono requestCreateSharedDomain( .build()); } - private static Flux requestListPrivateDomains( - CloudFoundryClient cloudFoundryClient, String domain) { + private Flux requestListPrivateDomains(String domain) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .privateDomains() .list( ListPrivateDomainsRequest.builder() @@ -252,11 +212,10 @@ private static Flux requestListPrivateDomains( .build())); } - private static Flux requestListPrivateDomains( - CloudFoundryClient cloudFoundryClient) { + private Flux requestListPrivateDomains() { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .privateDomains() .list(ListPrivateDomainsRequest.builder().page(page).build())); } @@ -270,20 +229,18 @@ private static Mono requestListRouterGroups( .build()); } - private static Flux requestListSharedDomains( - CloudFoundryClient cloudFoundryClient) { + private Flux requestListSharedDomains() { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .sharedDomains() .list(ListSharedDomainsRequest.builder().page(page).build())); } - private static Flux requestOrganizations( - CloudFoundryClient cloudFoundryClient, String organization) { + private Flux requestOrganizations(String organization) { return PaginationUtils.requestClientV2Resources( page -> - cloudFoundryClient + this.cloudFoundryClient .organizations() .list( ListOrganizationsRequest.builder() @@ -292,9 +249,9 @@ private static Flux requestOrganizations( .build())); } - private static Mono requestRemoveOrganizationPrivateDomainRequest( - CloudFoundryClient cloudFoundryClient, String domainId, String organizationId) { - return cloudFoundryClient + private Mono requestRemoveOrganizationPrivateDomainRequest( + String domainId, String organizationId) { + return this.cloudFoundryClient .organizations() .removePrivateDomain( RemoveOrganizationPrivateDomainRequest.builder() diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java index fd1027e7f0..02e671a3e6 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/DefaultCloudFoundryOperationsTest.java @@ -26,6 +26,7 @@ final class DefaultCloudFoundryOperationsTest extends AbstractOperationsTest { DefaultCloudFoundryOperations.builder() .cloudFoundryClient(this.cloudFoundryClient) .dopplerClient(this.dopplerClient) + .routingClient(this.routingClient) .organization(TEST_ORGANIZATION_NAME) .space(TEST_SPACE_NAME) .uaaClient(this.uaaClient) diff --git a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/domains/DefaultDomainsTest.java b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/domains/DefaultDomainsTest.java index 15d97267ad..a370e06b34 100644 --- a/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/domains/DefaultDomainsTest.java +++ b/cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/domains/DefaultDomainsTest.java @@ -49,7 +49,7 @@ final class DefaultDomainsTest extends AbstractOperationsTest { private final DefaultDomains domains = - new DefaultDomains(Mono.just(this.cloudFoundryClient), Mono.just(this.routingClient)); + new DefaultDomains(this.cloudFoundryClient, this.routingClient); @Test void createDomain() { From c87f56cd7c2b18fef11bcb9a6dfe7f5d998d90fc Mon Sep 17 00:00:00 2001 From: Daniel Garnier-Moiroux Date: Mon, 8 Dec 2025 22:00:06 +0100 Subject: [PATCH 2/2] Deprecate org.cloudfoundry.operations.domains.Domains --- .../cloudfoundry/operations/CloudFoundryOperations.java | 3 +++ .../cloudfoundry/operations/domains/DefaultDomains.java | 6 ++++++ .../java/org/cloudfoundry/operations/domains/Domains.java | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/CloudFoundryOperations.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/CloudFoundryOperations.java index 903aa728dd..fb99b23cd2 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/CloudFoundryOperations.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/CloudFoundryOperations.java @@ -16,6 +16,7 @@ package org.cloudfoundry.operations; +import org.cloudfoundry.client.CloudFoundryClient; import org.cloudfoundry.operations.advanced.Advanced; import org.cloudfoundry.operations.applications.Applications; import org.cloudfoundry.operations.buildpacks.Buildpacks; @@ -66,7 +67,9 @@ public interface CloudFoundryOperations { * Main entry point to the Cloud Foundry Domains Operations API * * @return the Cloud Foundry Domains Operations API + * @deprecated use {@link CloudFoundryClient#domainsV3()} instead. */ + @Deprecated Domains domains(); /** diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java index dfa0f3bd1b..cbd5886250 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/DefaultDomains.java @@ -64,6 +64,7 @@ public DefaultDomains( this.routingClient = routingClient.block(); } + @Deprecated @Override public Mono create(CreateDomainRequest request) { return getOrganizationId(request.getOrganization()) @@ -73,6 +74,7 @@ public Mono create(CreateDomainRequest request) { .checkpoint(); } + @Deprecated @Override public Mono createShared(CreateSharedDomainRequest request) { if (request.getRouterGroup() == null) { @@ -91,6 +93,7 @@ public Mono createShared(CreateSharedDomainRequest request) { } } + @Deprecated @Override public Flux list() { return requestListPrivateDomains() @@ -100,6 +103,7 @@ public Flux list() { .checkpoint(); } + @Deprecated @Override public Flux listRouterGroups() { return requestListRouterGroups(routingClient) @@ -109,6 +113,7 @@ public Flux listRouterGroups() { .checkpoint(); } + @Deprecated @Override public Mono share(ShareDomainRequest request) { return Mono.zip( @@ -120,6 +125,7 @@ public Mono share(ShareDomainRequest request) { .checkpoint(); } + @Deprecated @Override public Mono unshare(UnshareDomainRequest request) { return Mono.zip( diff --git a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/Domains.java b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/Domains.java index 74ffa068b8..f6ca0b5266 100644 --- a/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/Domains.java +++ b/cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/domains/Domains.java @@ -29,7 +29,9 @@ public interface Domains { * * @param request The Create Domain request * @return a completion indicator + * @deprecated use {@link #createV3} instead */ + @Deprecated Mono create(CreateDomainRequest request); /** @@ -37,7 +39,9 @@ public interface Domains { * * @param request the Create Shared Domain request * @return a completion indicator + * @deprecated use {@link #createV3} instead */ + @Deprecated Mono createShared(CreateSharedDomainRequest request); /** @@ -59,7 +63,9 @@ public interface Domains { * * @param request The Share Domain request * @return a completion indicator + * @deprecated use {@link #update} instead. */ + @Deprecated Mono share(ShareDomainRequest request); /** @@ -67,6 +73,8 @@ public interface Domains { * * @param request The Unshare Domain request * @return a completion indicator + * @deprecated use {@link #update} instead. */ + @Deprecated Mono unshare(UnshareDomainRequest request); }