@@ -35,14 +35,11 @@ def show
3535 message = ServiceInstanceShowMessage . from_params ( query_params )
3636 invalid_param! ( message . errors . full_messages ) unless message . valid?
3737
38- decorators = [ ]
39- decorators << FieldServiceInstanceSpaceDecorator . new ( message . fields ) if FieldServiceInstanceSpaceDecorator . match? ( message . fields )
40- decorators << FieldServiceInstanceOrganizationDecorator . new ( message . fields ) if FieldServiceInstanceOrganizationDecorator . match? ( message . fields )
41- decorators << FieldServiceInstancePlanDecorator . new ( message . fields ) if FieldServiceInstancePlanDecorator . match? ( message . fields )
42- decorators << FieldServiceInstanceOfferingDecorator . new ( message . fields ) if FieldServiceInstanceOfferingDecorator . match? ( message . fields )
43- decorators << FieldServiceInstanceBrokerDecorator . new ( message . fields ) if FieldServiceInstanceBrokerDecorator . match? ( message . fields )
44-
45- presenter = Presenters ::V3 ::ServiceInstancePresenter . new ( service_instance , decorators : decorators )
38+ presenter = Presenters ::V3 ::ServiceInstancePresenter . new (
39+ service_instance ,
40+ decorators : decorators_for_fields ( message . fields )
41+ )
42+
4643 render status : :ok , json : presenter . to_json
4744 end
4845
@@ -56,19 +53,12 @@ def index
5653 ServiceInstanceListFetcher . new . fetch ( message , readable_space_guids : permission_queryer . readable_space_guids )
5754 end
5855
59- decorators = [ ]
60- decorators << FieldServiceInstanceSpaceDecorator . new ( message . fields ) if FieldServiceInstanceSpaceDecorator . match? ( message . fields )
61- decorators << FieldServiceInstanceOrganizationDecorator . new ( message . fields ) if FieldServiceInstanceOrganizationDecorator . match? ( message . fields )
62- decorators << FieldServiceInstancePlanDecorator . new ( message . fields ) if FieldServiceInstancePlanDecorator . match? ( message . fields )
63- decorators << FieldServiceInstanceOfferingDecorator . new ( message . fields ) if FieldServiceInstanceOfferingDecorator . match? ( message . fields )
64- decorators << FieldServiceInstanceBrokerDecorator . new ( message . fields ) if FieldServiceInstanceBrokerDecorator . match? ( message . fields )
65-
6656 render status : :ok , json : Presenters ::V3 ::PaginatedListPresenter . new (
6757 presenter : Presenters ::V3 ::ServiceInstancePresenter ,
6858 paginated_result : SequelPaginator . new . get_page ( dataset , message . try ( :pagination_options ) ) ,
6959 path : '/v3/service_instances' ,
7060 message : message ,
71- decorators : decorators
61+ decorators : decorators_for_fields ( message . fields )
7262 )
7363 end
7464
@@ -197,6 +187,20 @@ def parameters
197187
198188 private
199189
190+ DECORATORS = [
191+ FieldServiceInstanceSpaceDecorator ,
192+ FieldServiceInstanceOrganizationDecorator ,
193+ FieldServiceInstancePlanDecorator ,
194+ FieldServiceInstanceOfferingDecorator ,
195+ FieldServiceInstanceBrokerDecorator
196+ ] . freeze
197+
198+ def decorators_for_fields ( fields )
199+ DECORATORS .
200+ select { |decorator | decorator . match? ( fields ) } .
201+ map { |decorator | decorator . new ( fields ) }
202+ end
203+
200204 def create_user_provided ( message )
201205 service_event_repository = VCAP ::CloudController ::Repositories ::ServiceEventRepository ::WithUserActor . new ( user_audit_info )
202206
0 commit comments