1616
1717package org .cloudfoundry .reactor .client .v3 .serviceinstances ;
1818
19+
20+ import org .cloudfoundry .client .v3 .serviceinstances .CreateServiceInstanceRequest ;
21+ import org .cloudfoundry .client .v3 .serviceinstances .CreateServiceInstanceResponse ;
22+ import org .cloudfoundry .client .v3 .serviceinstances .DeleteServiceInstanceRequest ;
1923import org .cloudfoundry .client .v3 .serviceinstances .GetManagedServiceParametersRequest ;
2024import org .cloudfoundry .client .v3 .serviceinstances .GetManagedServiceParametersResponse ;
25+ import org .cloudfoundry .client .v3 .serviceinstances .GetServiceInstanceRequest ;
26+ import org .cloudfoundry .client .v3 .serviceinstances .GetServiceInstanceResponse ;
2127import org .cloudfoundry .client .v3 .serviceinstances .GetUserProvidedCredentialsRequest ;
2228import org .cloudfoundry .client .v3 .serviceinstances .GetUserProvidedCredentialsResponse ;
2329import org .cloudfoundry .client .v3 .serviceinstances .ListServiceInstancesRequest ;
2430import org .cloudfoundry .client .v3 .serviceinstances .ListServiceInstancesResponse ;
2531import org .cloudfoundry .client .v3 .serviceinstances .ListSharedSpacesRelationshipRequest ;
2632import org .cloudfoundry .client .v3 .serviceinstances .ListSharedSpacesRelationshipResponse ;
33+ import org .cloudfoundry .client .v3 .serviceinstances .ServiceInstanceResource ;
2734import org .cloudfoundry .client .v3 .serviceinstances .ServiceInstancesV3 ;
2835import org .cloudfoundry .client .v3 .serviceinstances .ShareServiceInstanceRequest ;
2936import org .cloudfoundry .client .v3 .serviceinstances .ShareServiceInstanceResponse ;
3037import org .cloudfoundry .client .v3 .serviceinstances .UnshareServiceInstanceRequest ;
3138import org .cloudfoundry .client .v3 .serviceinstances .UpdateServiceInstanceRequest ;
3239import org .cloudfoundry .client .v3 .serviceinstances .UpdateServiceInstanceResponse ;
3340import org .cloudfoundry .reactor .ConnectionContext ;
41+ import org .cloudfoundry .reactor .HttpClientResponseWithParsedBody ;
3442import org .cloudfoundry .reactor .TokenProvider ;
3543import org .cloudfoundry .reactor .client .v3 .AbstractClientV3Operations ;
3644import reactor .core .publisher .Mono ;
3745
3846import java .util .Map ;
47+ import java .util .Optional ;
3948
4049/**
4150 * The Reactor-based implementation of {@link ServiceInstancesV3}
@@ -54,16 +63,43 @@ public ReactorServiceInstancesV3(ConnectionContext connectionContext, Mono<Strin
5463 super (connectionContext , root , tokenProvider , requestTags );
5564 }
5665
66+ @ Override
67+ public Mono <CreateServiceInstanceResponse > create (CreateServiceInstanceRequest request ) {
68+ return postWithResponse (request , ServiceInstanceResource .class , builder -> builder .pathSegment ("service_instances" ))
69+ .map (responseTuple -> CreateServiceInstanceResponse .builder ()
70+ .jobId (getJobId (responseTuple ))
71+ .serviceInstance (responseTuple .getBody ())
72+ .build ())
73+ .checkpoint ();
74+ }
75+
76+ private <T > Optional <String > getJobId (HttpClientResponseWithParsedBody <T > responseTuple ) {
77+ return Optional .ofNullable (extractJobId (responseTuple .getResponse ()));
78+ }
79+
80+ @ Override
81+ public Mono <GetServiceInstanceResponse > get (GetServiceInstanceRequest request ) {
82+ return get (request , GetServiceInstanceResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId ()))
83+ .checkpoint ();
84+ }
85+
86+ @ Override
87+ public Mono <Optional <String >> delete (DeleteServiceInstanceRequest request ) {
88+ return deleteWithResponse (request , String .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId ()))
89+ .map (this ::getJobId )
90+ .checkpoint ();
91+ }
92+
5793 @ Override
5894 public Mono <GetManagedServiceParametersResponse > getManagedServiceParameters (GetManagedServiceParametersRequest request ) {
59- return get (request , GetManagedServiceParametersResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId (), "parameters" ))
60- .checkpoint ();
95+ return get (request , GetManagedServiceParametersResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId (), "parameters" ))
96+ .checkpoint ();
6197 }
6298
6399 @ Override
64100 public Mono <GetUserProvidedCredentialsResponse > getUserProvidedCredentials (GetUserProvidedCredentialsRequest request ) {
65- return get (request , GetUserProvidedCredentialsResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId (), "credentials" ))
66- .checkpoint ();
101+ return get (request , GetUserProvidedCredentialsResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId (), "credentials" ))
102+ .checkpoint ();
67103 }
68104
69105 @ Override
@@ -92,6 +128,11 @@ public Mono<Void> unshare(UnshareServiceInstanceRequest request) {
92128
93129 @ Override
94130 public Mono <UpdateServiceInstanceResponse > update (UpdateServiceInstanceRequest request ) {
95- return patch (request , UpdateServiceInstanceResponse .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId ()));
131+ return patchWithResponse (request , ServiceInstanceResource .class , builder -> builder .pathSegment ("service_instances" , request .getServiceInstanceId ()))
132+ .map (responseTuple -> UpdateServiceInstanceResponse .builder ()
133+ .jobId (getJobId (responseTuple ))
134+ .serviceInstance (responseTuple .getBody ())
135+ .build ())
136+ .checkpoint ();
96137 }
97138}
0 commit comments