Skip to content

Commit cc613b1

Browse files
committed
Organization Quota Definitions to Reactor
This change moves the Client V2 Organization Quota Definitions to Reactor.
1 parent 6c96639 commit cc613b1

File tree

3 files changed

+108
-86
lines changed

3 files changed

+108
-86
lines changed

cloudfoundry-client-spring/src/main/lombok/org/cloudfoundry/spring/client/v2/organizationquotadefinitions/SpringOrganizationQuotaDefinitions.java renamed to cloudfoundry-client-spring/src/main/java/org/cloudfoundry/reactor/client/v2/organizationquotadefinitions/ReactorOrganizationQuotaDefinitions.java

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.cloudfoundry.spring.client.v2.organizationquotadefinitions;
17+
package org.cloudfoundry.reactor.client.v2.organizationquotadefinitions;
1818

19-
import lombok.ToString;
19+
import com.fasterxml.jackson.databind.ObjectMapper;
2020
import org.cloudfoundry.client.v2.organizationquotadefinitions.CreateOrganizationQuotaDefinitionRequest;
2121
import org.cloudfoundry.client.v2.organizationquotadefinitions.CreateOrganizationQuotaDefinitionResponse;
2222
import org.cloudfoundry.client.v2.organizationquotadefinitions.DeleteOrganizationQuotaDefinitionRequest;
@@ -28,62 +28,56 @@
2828
import org.cloudfoundry.client.v2.organizationquotadefinitions.OrganizationQuotaDefinitions;
2929
import org.cloudfoundry.client.v2.organizationquotadefinitions.UpdateOrganizationQuotaDefinitionRequest;
3030
import org.cloudfoundry.client.v2.organizationquotadefinitions.UpdateOrganizationQuotaDefinitionResponse;
31-
import org.cloudfoundry.reactor.client.v2.FilterBuilder;
32-
import org.cloudfoundry.spring.util.AbstractSpringOperations;
33-
import org.cloudfoundry.reactor.client.QueryBuilder;
34-
import org.springframework.web.client.RestOperations;
31+
import org.cloudfoundry.reactor.client.v2.AbstractClientV2Operations;
32+
import org.cloudfoundry.reactor.util.AuthorizationProvider;
3533
import reactor.core.publisher.Mono;
36-
import reactor.core.scheduler.Scheduler;
34+
import reactor.io.netty.http.HttpClient;
3735

38-
import java.net.URI;
36+
import static org.cloudfoundry.util.tuple.TupleUtils.function;
3937

4038
/**
41-
* The Spring-based implementation of {@link OrganizationQuotaDefinitions}
39+
* The Reactor-based implementation of {@link OrganizationQuotaDefinitions}
4240
*/
43-
@ToString(callSuper = true)
44-
public final class SpringOrganizationQuotaDefinitions extends AbstractSpringOperations implements OrganizationQuotaDefinitions {
41+
public final class ReactorOrganizationQuotaDefinitions extends AbstractClientV2Operations implements OrganizationQuotaDefinitions {
4542

4643
/**
4744
* Creates an instance
4845
*
49-
* @param restOperations the {@link RestOperations} to use to communicate with the server
50-
* @param root the root URI of the server. Typically something like {@code https://api.run.pivotal.io}.
51-
* @param schedulerGroup The group to use when making requests
46+
* @param authorizationProvider the {@link AuthorizationProvider} to use when communicating with the server
47+
* @param httpClient the {@link HttpClient} to use when communicating with the server
48+
* @param objectMapper the {@link ObjectMapper} to use when communicating with the server
49+
* @param root the root URI of the server. Typically something like {@code https://uaa.run.pivotal.io}.
5250
*/
53-
public SpringOrganizationQuotaDefinitions(RestOperations restOperations, URI root, Scheduler schedulerGroup) {
54-
super(restOperations, root, schedulerGroup);
51+
public ReactorOrganizationQuotaDefinitions(AuthorizationProvider authorizationProvider, HttpClient httpClient, ObjectMapper objectMapper, Mono<String> root) {
52+
super(authorizationProvider, httpClient, objectMapper, root);
5553
}
5654

5755
@Override
5856
public Mono<CreateOrganizationQuotaDefinitionResponse> create(CreateOrganizationQuotaDefinitionRequest request) {
59-
return post(request, CreateOrganizationQuotaDefinitionResponse.class, builder -> builder.pathSegment("v2", "quota_definitions"));
57+
return post(request, CreateOrganizationQuotaDefinitionResponse.class, function((builder, validRequest) -> builder.pathSegment("v2", "quota_definitions")));
6058
}
6159

6260
@Override
6361
public Mono<DeleteOrganizationQuotaDefinitionResponse> delete(DeleteOrganizationQuotaDefinitionRequest request) {
64-
return delete(request, DeleteOrganizationQuotaDefinitionResponse.class, builder -> {
65-
builder.pathSegment("v2", "quota_definitions", request.getOrganizationQuotaDefinitionId());
66-
QueryBuilder.augment(builder, request);
67-
});
62+
return delete(request, DeleteOrganizationQuotaDefinitionResponse.class,
63+
function((builder, validRequest) -> builder.pathSegment("v2", "quota_definitions", validRequest.getOrganizationQuotaDefinitionId())));
6864
}
6965

7066
@Override
7167
public Mono<GetOrganizationQuotaDefinitionResponse> get(GetOrganizationQuotaDefinitionRequest request) {
72-
return get(request, GetOrganizationQuotaDefinitionResponse.class, builder -> builder.pathSegment("v2", "quota_definitions", request.getOrganizationQuotaDefinitionId()));
68+
return get(request, GetOrganizationQuotaDefinitionResponse.class,
69+
function((builder, validRequest) -> builder.pathSegment("v2", "quota_definitions", validRequest.getOrganizationQuotaDefinitionId())));
7370
}
7471

7572
@Override
7673
public Mono<ListOrganizationQuotaDefinitionsResponse> list(ListOrganizationQuotaDefinitionsRequest request) {
77-
return get(request, ListOrganizationQuotaDefinitionsResponse.class, builder -> {
78-
builder.pathSegment("v2", "quota_definitions");
79-
FilterBuilder.augment(builder, request);
80-
QueryBuilder.augment(builder, request);
81-
});
74+
return get(request, ListOrganizationQuotaDefinitionsResponse.class, function((builder, validRequest) -> builder.pathSegment("v2", "quota_definitions")));
8275
}
8376

8477
@Override
8578
public Mono<UpdateOrganizationQuotaDefinitionResponse> update(UpdateOrganizationQuotaDefinitionRequest request) {
86-
return put(request, UpdateOrganizationQuotaDefinitionResponse.class, builder -> builder.pathSegment("v2", "quota_definitions", request.getOrganizationQuotaDefinitionId()));
79+
return put(request, UpdateOrganizationQuotaDefinitionResponse.class,
80+
function((builder, validRequest) -> builder.pathSegment("v2", "quota_definitions", validRequest.getOrganizationQuotaDefinitionId())));
8781
}
8882

8983
}

cloudfoundry-client-spring/src/main/lombok/org/cloudfoundry/spring/client/SpringCloudFoundryClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@
7575
import org.cloudfoundry.spring.client.v2.applications.SpringApplicationsV2;
7676
import org.cloudfoundry.spring.client.v2.buildpacks.SpringBuildpacks;
7777
import org.cloudfoundry.reactor.client.v2.featureflags.ReactorFeatureFlags;
78-
import org.cloudfoundry.spring.client.v2.organizationquotadefinitions.SpringOrganizationQuotaDefinitions;
78+
import org.cloudfoundry.reactor.client.v2.organizationquotadefinitions.ReactorOrganizationQuotaDefinitions;
7979
import org.cloudfoundry.spring.client.v2.organizations.SpringOrganizations;
8080
import org.cloudfoundry.spring.client.v2.privatedomains.SpringPrivateDomains;
8181
import org.cloudfoundry.spring.client.v2.routemappings.SpringRouteMappings;
@@ -215,7 +215,6 @@ public final class SpringCloudFoundryClient implements CloudFoundryClient, Conne
215215
this.applicationsV2 = new SpringApplicationsV2(restOperations, root, schedulerGroup);
216216
this.buildpacks = new SpringBuildpacks(restOperations, root, schedulerGroup);
217217
this.organizations = new SpringOrganizations(restOperations, root, schedulerGroup);
218-
this.organizationQuotaDefinitions = new SpringOrganizationQuotaDefinitions(restOperations, root, schedulerGroup);
219218
this.packages = new SpringPackages(restOperations, root, schedulerGroup);
220219
this.privateDomains = new SpringPrivateDomains(restOperations, root, schedulerGroup);
221220
this.routeMappings = new SpringRouteMappings(restOperations, root, schedulerGroup);
@@ -260,6 +259,7 @@ public final class SpringCloudFoundryClient implements CloudFoundryClient, Conne
260259
this.events = new ReactorEvents(authorizationProvider, httpClient, objectMapper, root2);
261260
this.info = new ReactorInfo(authorizationProvider, httpClient, objectMapper, root2);
262261
this.jobs = new ReactorJobs(authorizationProvider, httpClient, objectMapper, root2);
262+
this.organizationQuotaDefinitions = new ReactorOrganizationQuotaDefinitions(authorizationProvider, httpClient, objectMapper, root2);
263263
this.processes = new ReactorProcesses(authorizationProvider, httpClient, objectMapper, root2);
264264
this.serviceBindingsV2 = new ReactorServiceBindingsV2(authorizationProvider, httpClient, objectMapper, root2);
265265
this.serviceBindingsV3 = new ReactorServiceBindingsV3(authorizationProvider, httpClient, objectMapper, root2);

cloudfoundry-client-spring/src/test/java/org/cloudfoundry/spring/client/v2/organizationquotadefinitions/SpringOrganizationQuotaDefinitionsTest.java renamed to cloudfoundry-client-spring/src/test/java/org/cloudfoundry/reactor/client/v2/organizationquotadefinitions/ReactorOrganizationQuotaDefinitionsTest.java

Lines changed: 84 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.cloudfoundry.spring.client.v2.organizationquotadefinitions;
17+
package org.cloudfoundry.reactor.client.v2.organizationquotadefinitions;
1818

1919
import org.cloudfoundry.client.v2.organizationquotadefinitions.CreateOrganizationQuotaDefinitionRequest;
2020
import org.cloudfoundry.client.v2.organizationquotadefinitions.CreateOrganizationQuotaDefinitionResponse;
@@ -28,38 +28,46 @@
2828
import org.cloudfoundry.client.v2.organizationquotadefinitions.OrganizationQuotaDefinitionResource;
2929
import org.cloudfoundry.client.v2.organizationquotadefinitions.UpdateOrganizationQuotaDefinitionRequest;
3030
import org.cloudfoundry.client.v2.organizationquotadefinitions.UpdateOrganizationQuotaDefinitionResponse;
31-
import org.cloudfoundry.spring.AbstractApiTest;
31+
import org.cloudfoundry.reactor.InteractionContext;
32+
import org.cloudfoundry.reactor.TestRequest;
33+
import org.cloudfoundry.reactor.TestResponse;
34+
import org.cloudfoundry.reactor.client.AbstractClientApiTest;
3235
import org.reactivestreams.Publisher;
3336
import reactor.core.publisher.Mono;
3437

38+
import static io.netty.handler.codec.http.HttpMethod.DELETE;
39+
import static io.netty.handler.codec.http.HttpMethod.GET;
40+
import static io.netty.handler.codec.http.HttpMethod.POST;
41+
import static io.netty.handler.codec.http.HttpMethod.PUT;
42+
import static io.netty.handler.codec.http.HttpResponseStatus.CREATED;
43+
import static io.netty.handler.codec.http.HttpResponseStatus.NO_CONTENT;
44+
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
3545
import static org.cloudfoundry.client.v2.Resource.Metadata;
36-
import static org.springframework.http.HttpMethod.DELETE;
37-
import static org.springframework.http.HttpMethod.GET;
38-
import static org.springframework.http.HttpMethod.POST;
39-
import static org.springframework.http.HttpMethod.PUT;
40-
import static org.springframework.http.HttpStatus.CREATED;
41-
import static org.springframework.http.HttpStatus.NO_CONTENT;
42-
import static org.springframework.http.HttpStatus.OK;
4346

44-
public final class SpringOrganizationQuotaDefinitionsTest {
47+
public final class ReactorOrganizationQuotaDefinitionsTest {
4548

46-
public static final class CreateQuotaDefinition extends AbstractApiTest<CreateOrganizationQuotaDefinitionRequest, CreateOrganizationQuotaDefinitionResponse> {
49+
public static final class CreateQuotaDefinition extends AbstractClientApiTest<CreateOrganizationQuotaDefinitionRequest, CreateOrganizationQuotaDefinitionResponse> {
4750

48-
private final SpringOrganizationQuotaDefinitions quotaDefinitions = new SpringOrganizationQuotaDefinitions(this.restTemplate, this.root, PROCESSOR_GROUP);
51+
private final ReactorOrganizationQuotaDefinitions quotaDefinitions = new ReactorOrganizationQuotaDefinitions(this.authorizationProvider, HTTP_CLIENT, OBJECT_MAPPER, this.root);
4952

5053
@Override
51-
protected CreateOrganizationQuotaDefinitionRequest getInvalidRequest() {
52-
return CreateOrganizationQuotaDefinitionRequest.builder()
54+
protected InteractionContext getInteractionContext() {
55+
return InteractionContext.builder()
56+
.request(TestRequest.builder()
57+
.method(POST).path("/v2/quota_definitions")
58+
.payload("fixtures/client/v2/quota_definitions/POST_request.json")
59+
.build())
60+
.response(TestResponse.builder()
61+
.status(CREATED)
62+
.payload("fixtures/client/v2/quota_definitions/POST_response.json")
63+
.build())
5364
.build();
5465
}
5566

5667
@Override
57-
protected RequestContext getRequestContext() {
58-
return new RequestContext()
59-
.method(POST).path("/v2/quota_definitions")
60-
.requestPayload("fixtures/client/v2/quota_definitions/POST_request.json")
61-
.status(CREATED)
62-
.responsePayload("fixtures/client/v2/quota_definitions/POST_response.json");
68+
protected CreateOrganizationQuotaDefinitionRequest getInvalidRequest() {
69+
return CreateOrganizationQuotaDefinitionRequest.builder()
70+
.build();
6371
}
6472

6573
@Override
@@ -107,20 +115,25 @@ protected Mono<CreateOrganizationQuotaDefinitionResponse> invoke(CreateOrganizat
107115

108116
}
109117

110-
public static final class DeleteQuotaDefinition extends AbstractApiTest<DeleteOrganizationQuotaDefinitionRequest, DeleteOrganizationQuotaDefinitionResponse> {
118+
public static final class DeleteQuotaDefinition extends AbstractClientApiTest<DeleteOrganizationQuotaDefinitionRequest, DeleteOrganizationQuotaDefinitionResponse> {
111119

112-
private final SpringOrganizationQuotaDefinitions quotaDefinitions = new SpringOrganizationQuotaDefinitions(this.restTemplate, this.root, PROCESSOR_GROUP);
120+
private final ReactorOrganizationQuotaDefinitions quotaDefinitions = new ReactorOrganizationQuotaDefinitions(this.authorizationProvider, HTTP_CLIENT, OBJECT_MAPPER, this.root);
113121

114122
@Override
115-
protected DeleteOrganizationQuotaDefinitionRequest getInvalidRequest() {
116-
return DeleteOrganizationQuotaDefinitionRequest.builder().build();
123+
protected InteractionContext getInteractionContext() {
124+
return InteractionContext.builder()
125+
.request(TestRequest.builder()
126+
.method(DELETE).path("/v2/quota_definitions/test-quota-definition-id")
127+
.build())
128+
.response(TestResponse.builder()
129+
.status(NO_CONTENT)
130+
.build())
131+
.build();
117132
}
118133

119134
@Override
120-
protected RequestContext getRequestContext() {
121-
return new RequestContext()
122-
.method(DELETE).path("/v2/quota_definitions/test-quota-definition-id")
123-
.status(NO_CONTENT);
135+
protected DeleteOrganizationQuotaDefinitionRequest getInvalidRequest() {
136+
return DeleteOrganizationQuotaDefinitionRequest.builder().build();
124137
}
125138

126139
@Override
@@ -142,22 +155,27 @@ protected Mono<DeleteOrganizationQuotaDefinitionResponse> invoke(DeleteOrganizat
142155

143156
}
144157

145-
public static final class GetQuotaDefinition extends AbstractApiTest<GetOrganizationQuotaDefinitionRequest, GetOrganizationQuotaDefinitionResponse> {
158+
public static final class GetQuotaDefinition extends AbstractClientApiTest<GetOrganizationQuotaDefinitionRequest, GetOrganizationQuotaDefinitionResponse> {
146159

147-
private final SpringOrganizationQuotaDefinitions quotaDefinitions = new SpringOrganizationQuotaDefinitions(this.restTemplate, this.root, PROCESSOR_GROUP);
160+
private final ReactorOrganizationQuotaDefinitions quotaDefinitions = new ReactorOrganizationQuotaDefinitions(this.authorizationProvider, HTTP_CLIENT, OBJECT_MAPPER, this.root);
148161

149162
@Override
150-
protected GetOrganizationQuotaDefinitionRequest getInvalidRequest() {
151-
return GetOrganizationQuotaDefinitionRequest.builder()
163+
protected InteractionContext getInteractionContext() {
164+
return InteractionContext.builder()
165+
.request(TestRequest.builder()
166+
.method(GET).path("/v2/quota_definitions/test-quota-definition-id")
167+
.build())
168+
.response(TestResponse.builder()
169+
.status(OK)
170+
.payload("fixtures/client/v2/quota_definitions/GET_{id}_response.json")
171+
.build())
152172
.build();
153173
}
154174

155175
@Override
156-
protected RequestContext getRequestContext() {
157-
return new RequestContext()
158-
.method(GET).path("/v2/quota_definitions/test-quota-definition-id")
159-
.status(OK)
160-
.responsePayload("fixtures/client/v2/quota_definitions/GET_{id}_response.json");
176+
protected GetOrganizationQuotaDefinitionRequest getInvalidRequest() {
177+
return GetOrganizationQuotaDefinitionRequest.builder()
178+
.build();
161179
}
162180

163181
@Override
@@ -198,21 +216,26 @@ protected Mono<GetOrganizationQuotaDefinitionResponse> invoke(GetOrganizationQuo
198216

199217
}
200218

201-
public static final class ListOrganizationQuotaDefinitions extends AbstractApiTest<ListOrganizationQuotaDefinitionsRequest, ListOrganizationQuotaDefinitionsResponse> {
219+
public static final class ListOrganizationQuotaDefinitions extends AbstractClientApiTest<ListOrganizationQuotaDefinitionsRequest, ListOrganizationQuotaDefinitionsResponse> {
202220

203-
private final SpringOrganizationQuotaDefinitions quotaDefinitions = new SpringOrganizationQuotaDefinitions(this.restTemplate, this.root, PROCESSOR_GROUP);
221+
private final ReactorOrganizationQuotaDefinitions quotaDefinitions = new ReactorOrganizationQuotaDefinitions(this.authorizationProvider, HTTP_CLIENT, OBJECT_MAPPER, this.root);
204222

205223
@Override
206-
protected ListOrganizationQuotaDefinitionsRequest getInvalidRequest() {
207-
return null;
224+
protected InteractionContext getInteractionContext() {
225+
return InteractionContext.builder()
226+
.request(TestRequest.builder()
227+
.method(GET).path("/v2/quota_definitions?page=-1")
228+
.build())
229+
.response(TestResponse.builder()
230+
.status(OK)
231+
.payload("fixtures/client/v2/quota_definitions/GET_response.json")
232+
.build())
233+
.build();
208234
}
209235

210236
@Override
211-
protected RequestContext getRequestContext() {
212-
return new RequestContext()
213-
.method(GET).path("/v2/quota_definitions?page=-1")
214-
.status(OK)
215-
.responsePayload("fixtures/client/v2/quota_definitions/GET_response.json");
237+
protected ListOrganizationQuotaDefinitionsRequest getInvalidRequest() {
238+
return null;
216239
}
217240

218241
@Override
@@ -257,23 +280,28 @@ protected Publisher<ListOrganizationQuotaDefinitionsResponse> invoke(ListOrganiz
257280

258281
}
259282

260-
public static final class UpdateQuotaDefinition extends AbstractApiTest<UpdateOrganizationQuotaDefinitionRequest, UpdateOrganizationQuotaDefinitionResponse> {
283+
public static final class UpdateQuotaDefinition extends AbstractClientApiTest<UpdateOrganizationQuotaDefinitionRequest, UpdateOrganizationQuotaDefinitionResponse> {
261284

262-
private final SpringOrganizationQuotaDefinitions quotaDefinitions = new SpringOrganizationQuotaDefinitions(this.restTemplate, this.root, PROCESSOR_GROUP);
285+
private final ReactorOrganizationQuotaDefinitions quotaDefinitions = new ReactorOrganizationQuotaDefinitions(this.authorizationProvider, HTTP_CLIENT, OBJECT_MAPPER, this.root);
263286

264287
@Override
265-
protected UpdateOrganizationQuotaDefinitionRequest getInvalidRequest() {
266-
return UpdateOrganizationQuotaDefinitionRequest.builder()
288+
protected InteractionContext getInteractionContext() {
289+
return InteractionContext.builder()
290+
.request(TestRequest.builder()
291+
.method(PUT).path("/v2/quota_definitions/test-quota-definition-id")
292+
.payload("fixtures/client/v2/quota_definitions/PUT_{id}_request.json")
293+
.build())
294+
.response(TestResponse.builder()
295+
.status(CREATED)
296+
.payload("fixtures/client/v2/quota_definitions/PUT_{id}_response.json")
297+
.build())
267298
.build();
268299
}
269300

270301
@Override
271-
protected RequestContext getRequestContext() {
272-
return new RequestContext()
273-
.method(PUT).path("/v2/quota_definitions/test-quota-definition-id")
274-
.requestPayload("fixtures/client/v2/quota_definitions/PUT_{id}_request.json")
275-
.status(CREATED)
276-
.responsePayload("fixtures/client/v2/quota_definitions/PUT_{id}_response.json");
302+
protected UpdateOrganizationQuotaDefinitionRequest getInvalidRequest() {
303+
return UpdateOrganizationQuotaDefinitionRequest.builder()
304+
.build();
277305
}
278306

279307
@Override

0 commit comments

Comments
 (0)