Skip to content

Commit 6d26914

Browse files
committed
DefaultBuildpacks: constructor takes CloudfoundryClient, not Mono<CloudfoundryClient>
Signed-off-by: Daniel Garnier-Moiroux <[email protected]>
1 parent e42b154 commit 6d26914

File tree

3 files changed

+56
-92
lines changed

3 files changed

+56
-92
lines changed

cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/_DefaultCloudFoundryOperations.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,11 @@ public Applications applications() {
8585
@Override
8686
@Value.Derived
8787
public Buildpacks buildpacks() {
88-
return new DefaultBuildpacks(getCloudFoundryClientPublisher());
88+
CloudFoundryClient cloudFoundryClient = getCloudFoundryClient();
89+
if (cloudFoundryClient == null) {
90+
throw new IllegalStateException("CloudFoundryClient must be set");
91+
}
92+
return new DefaultBuildpacks(cloudFoundryClient);
8993
}
9094

9195
@Override

cloudfoundry-operations/src/main/java/org/cloudfoundry/operations/buildpacks/DefaultBuildpacks.java

Lines changed: 50 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.cloudfoundry.operations.buildpacks;
1818

19-
import static org.cloudfoundry.util.tuple.TupleUtils.function;
20-
2119
import java.nio.file.Path;
2220
import java.time.Duration;
2321
import java.util.Optional;
@@ -37,133 +35,104 @@
3735
import org.cloudfoundry.util.ResourceUtils;
3836
import reactor.core.publisher.Flux;
3937
import reactor.core.publisher.Mono;
38+
import reactor.core.scheduler.Schedulers;
4039

4140
public final class DefaultBuildpacks implements Buildpacks {
4241

43-
private final Mono<CloudFoundryClient> cloudFoundryClient;
42+
private final CloudFoundryClient cloudFoundryClient;
4443

45-
public DefaultBuildpacks(Mono<CloudFoundryClient> cloudFoundryClient) {
44+
public DefaultBuildpacks(CloudFoundryClient cloudFoundryClient) {
4645
this.cloudFoundryClient = cloudFoundryClient;
4746
}
4847

48+
/**
49+
* Create a new instance.
50+
*
51+
* @deprecated Use {@link DefaultBuildpacks(CloudFoundryClient)} instead.
52+
*/
53+
@Deprecated
54+
public DefaultBuildpacks(Mono<CloudFoundryClient> cloudFoundryClient) {
55+
this.cloudFoundryClient =
56+
cloudFoundryClient.subscribeOn(Schedulers.boundedElastic()).block();
57+
}
58+
4959
@Override
5060
public Mono<Void> create(CreateBuildpackRequest request) {
51-
return this.cloudFoundryClient
52-
.flatMap(
53-
cloudFoundryClient ->
54-
Mono.zip(
55-
Mono.just(cloudFoundryClient),
56-
requestCreateBuildpack(
57-
cloudFoundryClient,
58-
request.getName(),
59-
request.getPosition(),
60-
request.getEnable())))
61+
return requestCreateBuildpack(
62+
this.cloudFoundryClient,
63+
request.getName(),
64+
request.getPosition(),
65+
request.getEnable())
6166
.flatMap(
62-
function(
63-
(cloudFoundryClient, response) ->
64-
requestUploadBuildpackBits(
65-
cloudFoundryClient,
66-
ResourceUtils.getId(response),
67-
request.getBuildpack())))
67+
response ->
68+
requestUploadBuildpackBits(
69+
ResourceUtils.getId(response), request.getBuildpack()))
6870
.then()
6971
.transform(OperationsLogging.log("Create Buildpack"))
7072
.checkpoint();
7173
}
7274

7375
@Override
7476
public Mono<Void> delete(DeleteBuildpackRequest request) {
75-
return this.cloudFoundryClient
77+
return getBuildPackId(request.getName())
7678
.flatMap(
77-
cloudFoundryClient ->
78-
Mono.zip(
79-
getBuildPackId(cloudFoundryClient, request.getName()),
80-
Mono.just(cloudFoundryClient)))
81-
.flatMap(
82-
function(
83-
(buildpackId, cloudFoundryClient) ->
84-
deleteBuildpack(
85-
cloudFoundryClient,
86-
buildpackId,
87-
request.getCompletionTimeout())))
79+
buildpackId -> deleteBuildpack(buildpackId, request.getCompletionTimeout()))
8880
.then()
8981
.transform(OperationsLogging.log("Delete Buildpack"))
9082
.checkpoint();
9183
}
9284

9385
@Override
9486
public Flux<Buildpack> list() {
95-
return this.cloudFoundryClient
96-
.flatMapMany(DefaultBuildpacks::requestBuildpacks)
97-
.map(DefaultBuildpacks::toBuildpackResource)
87+
return requestBuildpacks(this.cloudFoundryClient)
88+
.map(this::toBuildpackResource)
9889
.transform(OperationsLogging.log("List Buildpacks"))
9990
.checkpoint();
10091
}
10192

10293
@Override
10394
public Mono<Void> rename(RenameBuildpackRequest request) {
104-
return this.cloudFoundryClient
105-
.flatMap(
106-
cloudFoundryClient ->
107-
Mono.zip(
108-
getBuildPackId(cloudFoundryClient, request.getName()),
109-
Mono.just(cloudFoundryClient)))
110-
.flatMap(
111-
function(
112-
(buildpackId, cloudFoundryClient) ->
113-
requestUpdateBuildpack(
114-
cloudFoundryClient,
115-
buildpackId,
116-
request.getNewName())))
95+
return getBuildPackId(request.getName())
96+
.flatMap(buildpackId -> requestUpdateBuildpack(buildpackId, request.getNewName()))
11797
.then()
11898
.transform(OperationsLogging.log("Rename Buildpack"))
11999
.checkpoint();
120100
}
121101

122102
@Override
123103
public Mono<Void> update(UpdateBuildpackRequest request) {
124-
return this.cloudFoundryClient
104+
return getBuildPackId(request.getName())
125105
.flatMap(
126-
cloudFoundryClient ->
127-
Mono.zip(
128-
getBuildPackId(cloudFoundryClient, request.getName()),
129-
Mono.just(cloudFoundryClient)))
130-
.flatMap(
131-
function(
132-
(buildpackId, cloudFoundryClient) ->
133-
Mono.when(
134-
requestUpdateBuildpack(
135-
cloudFoundryClient, buildpackId, request),
136-
uploadBuildpackBits(
137-
cloudFoundryClient, buildpackId, request))))
106+
buildpackId ->
107+
Mono.when(
108+
requestUpdateBuildpack(buildpackId, request),
109+
uploadBuildpackBits(buildpackId, request)))
138110
.then()
139111
.transform(OperationsLogging.log("Update Buildpack"))
140112
.checkpoint();
141113
}
142114

143-
private static Mono<Void> deleteBuildpack(
144-
CloudFoundryClient cloudFoundryClient, String buildpackId, Duration timeout) {
145-
return requestDeleteBuildpack(cloudFoundryClient, buildpackId)
146-
.flatMap(job -> JobUtils.waitForCompletion(cloudFoundryClient, timeout, job));
115+
private Mono<Void> deleteBuildpack(String buildpackId, Duration timeout) {
116+
return requestDeleteBuildpack(buildpackId)
117+
.flatMap(job -> JobUtils.waitForCompletion(this.cloudFoundryClient, timeout, job));
147118
}
148119

149-
private static Mono<String> getBuildPackId(CloudFoundryClient cloudFoundryClient, String name) {
150-
return requestBuildpacks(cloudFoundryClient, name)
120+
private Mono<String> getBuildPackId(String name) {
121+
return requestBuildpacks(name)
151122
.singleOrEmpty()
152123
.map(ResourceUtils::getId)
153124
.switchIfEmpty(ExceptionUtils.illegalArgument("Buildpack %s not found", name));
154125
}
155126

156-
private static Flux<BuildpackResource> requestBuildpacks(
157-
CloudFoundryClient cloudFoundryClient) {
127+
private Flux<BuildpackResource> requestBuildpacks(CloudFoundryClient cloudFoundryClient) {
158128
return PaginationUtils.requestClientV2Resources(
159129
page ->
160130
cloudFoundryClient
161131
.buildpacks()
162132
.list(ListBuildpacksRequest.builder().page(page).build()));
163133
}
164134

165-
private static Flux<BuildpackResource> requestBuildpacks(
166-
CloudFoundryClient cloudFoundryClient, String name) {
135+
private Flux<BuildpackResource> requestBuildpacks(String name) {
167136
return PaginationUtils.requestClientV2Resources(
168137
page ->
169138
cloudFoundryClient
@@ -175,7 +144,7 @@ private static Flux<BuildpackResource> requestBuildpacks(
175144
.build()));
176145
}
177146

178-
private static Mono<CreateBuildpackResponse> requestCreateBuildpack(
147+
private Mono<CreateBuildpackResponse> requestCreateBuildpack(
179148
CloudFoundryClient cloudFoundryClient,
180149
String buildpackName,
181150
Integer position,
@@ -190,8 +159,7 @@ private static Mono<CreateBuildpackResponse> requestCreateBuildpack(
190159
.build());
191160
}
192161

193-
private static Mono<DeleteBuildpackResponse> requestDeleteBuildpack(
194-
CloudFoundryClient cloudFoundryClient, String buildpackId) {
162+
private Mono<DeleteBuildpackResponse> requestDeleteBuildpack(String buildpackId) {
195163
return cloudFoundryClient
196164
.buildpacks()
197165
.delete(
@@ -201,10 +169,8 @@ private static Mono<DeleteBuildpackResponse> requestDeleteBuildpack(
201169
.build());
202170
}
203171

204-
private static Mono<UpdateBuildpackResponse> requestUpdateBuildpack(
205-
CloudFoundryClient cloudFoundryClient,
206-
String buildpackId,
207-
UpdateBuildpackRequest request) {
172+
private Mono<UpdateBuildpackResponse> requestUpdateBuildpack(
173+
String buildpackId, UpdateBuildpackRequest request) {
208174
return cloudFoundryClient
209175
.buildpacks()
210176
.update(
@@ -216,8 +182,7 @@ private static Mono<UpdateBuildpackResponse> requestUpdateBuildpack(
216182
.build());
217183
}
218184

219-
private static Mono<UpdateBuildpackResponse> requestUpdateBuildpack(
220-
CloudFoundryClient cloudFoundryClient, String buildpackId, String name) {
185+
private Mono<UpdateBuildpackResponse> requestUpdateBuildpack(String buildpackId, String name) {
221186
return cloudFoundryClient
222187
.buildpacks()
223188
.update(
@@ -227,8 +192,8 @@ private static Mono<UpdateBuildpackResponse> requestUpdateBuildpack(
227192
.build());
228193
}
229194

230-
private static Mono<UploadBuildpackResponse> requestUploadBuildpackBits(
231-
CloudFoundryClient cloudFoundryClient, String buildpackId, Path buildpack) {
195+
private Mono<UploadBuildpackResponse> requestUploadBuildpackBits(
196+
String buildpackId, Path buildpack) {
232197
return cloudFoundryClient
233198
.buildpacks()
234199
.upload(
@@ -239,7 +204,7 @@ private static Mono<UploadBuildpackResponse> requestUploadBuildpackBits(
239204
.build());
240205
}
241206

242-
private static Buildpack toBuildpackResource(BuildpackResource resource) {
207+
private Buildpack toBuildpackResource(BuildpackResource resource) {
243208
BuildpackEntity entity = ResourceUtils.getEntity(resource);
244209

245210
return Buildpack.builder()
@@ -253,13 +218,9 @@ private static Buildpack toBuildpackResource(BuildpackResource resource) {
253218
.build();
254219
}
255220

256-
private static Mono<Void> uploadBuildpackBits(
257-
CloudFoundryClient cloudFoundryClient,
258-
String buildpackId,
259-
UpdateBuildpackRequest request) {
221+
private Mono<Void> uploadBuildpackBits(String buildpackId, UpdateBuildpackRequest request) {
260222
if (request.getBuildpack() != null) {
261-
return requestUploadBuildpackBits(
262-
cloudFoundryClient, buildpackId, request.getBuildpack())
223+
return requestUploadBuildpackBits(buildpackId, request.getBuildpack())
263224
.then(Mono.empty());
264225
}
265226

cloudfoundry-operations/src/test/java/org/cloudfoundry/operations/buildpacks/DefaultBuildpacksTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@
4747

4848
final class DefaultBuildpacksTest extends AbstractOperationsTest {
4949

50-
private final DefaultBuildpacks buildpacks =
51-
new DefaultBuildpacks(Mono.just(this.cloudFoundryClient));
50+
private final DefaultBuildpacks buildpacks = new DefaultBuildpacks(this.cloudFoundryClient);
5251

5352
@Test
5453
void create() {

0 commit comments

Comments
 (0)