• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License").
5  * You may not use this file except in compliance with the License.
6  * A copy of the License is located at
7  *
8  *  http://aws.amazon.com/apache2.0
9  *
10  * or in the "license" file accompanying this file. This file is distributed
11  * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12  * express or implied. See the License for the specific language governing
13  * permissions and limitations under the License.
14  */
15 
16 package software.amazon.awssdk.codegen.poet;
17 
18 import java.io.File;
19 
20 import software.amazon.awssdk.codegen.C2jModels;
21 import software.amazon.awssdk.codegen.IntermediateModelBuilder;
22 import software.amazon.awssdk.codegen.model.config.customization.CustomizationConfig;
23 import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
24 import software.amazon.awssdk.codegen.model.rules.endpoints.EndpointTestSuiteModel;
25 import software.amazon.awssdk.codegen.model.service.EndpointRuleSetModel;
26 import software.amazon.awssdk.codegen.model.service.Paginators;
27 import software.amazon.awssdk.codegen.model.service.ServiceModel;
28 import software.amazon.awssdk.codegen.model.service.Waiters;
29 import software.amazon.awssdk.codegen.utils.ModelLoaderUtils;
30 
31 /**
32  * A static set of service models that can be used for testing purposes.
33  */
34 public class ClientTestModels {
ClientTestModels()35     private ClientTestModels() {}
36 
awsJsonServiceModels()37     public static IntermediateModel awsJsonServiceModels() {
38         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/json/service-2.json").getFile());
39         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/json/customization.config").getFile());
40         File paginatorsModel = new File(ClientTestModels.class.getResource("client/c2j/json/paginators.json").getFile());
41         C2jModels models = C2jModels.builder()
42             .serviceModel(getServiceModel(serviceModel))
43             .customizationConfig(getCustomizationConfig(customizationModel))
44             .paginatorsModel(getPaginatorsModel(paginatorsModel))
45             .build();
46 
47         return new IntermediateModelBuilder(models).build();
48     }
49 
awsQueryCompatibleJsonServiceModels()50     public static IntermediateModel awsQueryCompatibleJsonServiceModels() {
51         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/query-to-json-errorcode/service-2.json").getFile());
52         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/query-to-json-errorcode/customization.config").getFile());
53         File paginatorsModel = new File(ClientTestModels.class.getResource("client/c2j/query-to-json-errorcode/paginators.json").getFile());
54         C2jModels models = C2jModels.builder()
55                                     .serviceModel(getServiceModel(serviceModel))
56                                     .customizationConfig(getCustomizationConfig(customizationModel))
57                                     .paginatorsModel(getPaginatorsModel(paginatorsModel))
58                                     .build();
59 
60         return new IntermediateModelBuilder(models).build();
61     }
62 
bearerAuthServiceModels()63     public static IntermediateModel bearerAuthServiceModels() {
64         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/json-bearer-auth/service-2.json").getFile());
65         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/json-bearer-auth/customization.config").getFile());
66         File paginatorsModel = new File(ClientTestModels.class.getResource("client/c2j/json-bearer-auth/paginators.json").getFile());
67         C2jModels models = C2jModels.builder()
68                                     .serviceModel(getServiceModel(serviceModel))
69                                     .customizationConfig(getCustomizationConfig(customizationModel))
70                                     .paginatorsModel(getPaginatorsModel(paginatorsModel))
71                                     .build();
72 
73         return new IntermediateModelBuilder(models).build();
74     }
75 
restJsonServiceModels()76     public static IntermediateModel restJsonServiceModels() {
77         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/rest-json/service-2.json").getFile());
78         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/rest-json/customization.config").getFile());
79         File paginatorsModel = new File(ClientTestModels.class.getResource("client/c2j/rest-json/paginators.json").getFile());
80         C2jModels models = C2jModels.builder()
81                                     .serviceModel(getServiceModel(serviceModel))
82                                     .customizationConfig(getCustomizationConfig(customizationModel))
83                                     .paginatorsModel(getPaginatorsModel(paginatorsModel))
84                                     .build();
85 
86         return new IntermediateModelBuilder(models).build();
87     }
88 
queryServiceModels()89     public static IntermediateModel queryServiceModels() {
90         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/query/service-2.json").getFile());
91         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/query/customization.config").getFile());
92         File waitersModel = new File(ClientTestModels.class.getResource("client/c2j/query/waiters-2.json").getFile());
93         File endpointRuleSetModel =
94             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-rule-set.json").getFile());
95         File endpointTestsModel =
96             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-tests.json").getFile());
97 
98         C2jModels models = C2jModels
99                 .builder()
100                 .serviceModel(getServiceModel(serviceModel))
101                 .customizationConfig(getCustomizationConfig(customizationModel))
102                 .waitersModel(getWaiters(waitersModel))
103             .endpointRuleSetModel(getEndpointRuleSet(endpointRuleSetModel))
104             .endpointTestSuiteModel(getEndpointTestSuite(endpointTestsModel))
105                 .build();
106 
107         return new IntermediateModelBuilder(models).build();
108     }
109 
queryServiceModelsWithOverrideKnowProperties()110     public static IntermediateModel queryServiceModelsWithOverrideKnowProperties() {
111         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/query/service-2.json").getFile());
112         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/query/customization-endpoint-know-prop.config").getFile());
113         File waitersModel = new File(ClientTestModels.class.getResource("client/c2j/query/waiters-2.json").getFile());
114         File endpointRuleSetModel =
115             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-rule-set.json").getFile());
116         File endpointTestsModel =
117             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-tests.json").getFile());
118 
119         C2jModels models = C2jModels
120             .builder()
121             .serviceModel(getServiceModel(serviceModel))
122             .customizationConfig(getCustomizationConfig(customizationModel))
123             .waitersModel(getWaiters(waitersModel))
124             .endpointRuleSetModel(getEndpointRuleSet(endpointRuleSetModel))
125             .endpointTestSuiteModel(getEndpointTestSuite(endpointTestsModel))
126             .build();
127 
128         return new IntermediateModelBuilder(models).build();
129     }
130 
queryServiceModelsEndpointAuthParamsWithAllowList()131     public static IntermediateModel queryServiceModelsEndpointAuthParamsWithAllowList() {
132         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/query/service-2.json").getFile());
133         File customizationModel =
134             new File(ClientTestModels.class.getResource("client/c2j/query/customization-endpoint-auth-params-with-allowed.config")
135                                            .getFile());
136         File waitersModel = new File(ClientTestModels.class.getResource("client/c2j/query/waiters-2.json").getFile());
137         File endpointRuleSetModel =
138             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-rule-set.json").getFile());
139         File endpointTestsModel =
140             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-tests.json").getFile());
141 
142         C2jModels models = C2jModels
143             .builder()
144             .serviceModel(getServiceModel(serviceModel))
145             .customizationConfig(getCustomizationConfig(customizationModel))
146             .waitersModel(getWaiters(waitersModel))
147             .endpointRuleSetModel(getEndpointRuleSet(endpointRuleSetModel))
148             .endpointTestSuiteModel(getEndpointTestSuite(endpointTestsModel))
149             .build();
150 
151         return new IntermediateModelBuilder(models).build();
152     }
153 
queryServiceModelsEndpointAuthParamsWithoutAllowList()154     public static IntermediateModel queryServiceModelsEndpointAuthParamsWithoutAllowList() {
155         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/query/service-2.json").getFile());
156         File customizationModel =
157             new File(ClientTestModels.class.getResource("client/c2j/query/customization-endpoint-auth-params-without-allowed"
158                                                         + ".config")
159                                            .getFile());
160         File waitersModel = new File(ClientTestModels.class.getResource("client/c2j/query/waiters-2.json").getFile());
161         File endpointRuleSetModel =
162             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-rule-set.json").getFile());
163         File endpointTestsModel =
164             new File(ClientTestModels.class.getResource("client/c2j/query/endpoint-tests.json").getFile());
165 
166         C2jModels models = C2jModels
167             .builder()
168             .serviceModel(getServiceModel(serviceModel))
169             .customizationConfig(getCustomizationConfig(customizationModel))
170             .waitersModel(getWaiters(waitersModel))
171             .endpointRuleSetModel(getEndpointRuleSet(endpointRuleSetModel))
172             .endpointTestSuiteModel(getEndpointTestSuite(endpointTestsModel))
173             .build();
174 
175         return new IntermediateModelBuilder(models).build();
176     }
177 
granularAuthProvidersServiceModels()178     public static IntermediateModel granularAuthProvidersServiceModels() {
179         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/fine-grained-auth/service-2.json").getFile());
180         File customizationModel =
181             new File(ClientTestModels.class.getResource("client/c2j/fine-grained-auth/customization.config")
182                                            .getFile());
183 
184         C2jModels models = C2jModels
185             .builder()
186             .serviceModel(getServiceModel(serviceModel))
187             .customizationConfig(getCustomizationConfig(customizationModel))
188             .build();
189 
190         return new IntermediateModelBuilder(models).build();
191     }
192 
granularAuthWithLegacyTraitServiceModels()193     public static IntermediateModel granularAuthWithLegacyTraitServiceModels() {
194         File serviceModel =
195             new File(ClientTestModels.class.getResource("client/c2j/fine-grained-auth-legacy-trait/service-2.json").getFile());
196         File customizationModel =
197             new File(ClientTestModels.class.getResource("client/c2j/fine-grained-auth-legacy-trait/customization.config")
198                                            .getFile());
199         C2jModels models = C2jModels
200             .builder()
201             .serviceModel(getServiceModel(serviceModel))
202             .customizationConfig(getCustomizationConfig(customizationModel))
203             .build();
204 
205         return new IntermediateModelBuilder(models).build();
206     }
207 
allOperationsWithAuthSameValueServiceModels()208     public static IntermediateModel allOperationsWithAuthSameValueServiceModels() {
209         File serviceModel =
210             new File(ClientTestModels.class.getResource("client/c2j/all-ops-with-auth-same-value/service-2.json").getFile());
211         File customizationModel =
212             new File(ClientTestModels.class.getResource("client/c2j/all-ops-with-auth-same-value/customization.config")
213                                            .getFile());
214         C2jModels models = C2jModels
215             .builder()
216             .serviceModel(getServiceModel(serviceModel))
217             .customizationConfig(getCustomizationConfig(customizationModel))
218             .build();
219 
220         return new IntermediateModelBuilder(models).build();
221     }
222 
allOperationsWithAuthDifferentValueServiceModels()223     public static IntermediateModel allOperationsWithAuthDifferentValueServiceModels() {
224         File serviceModel =
225             new File(ClientTestModels.class.getResource("client/c2j/all-ops-with-auth-different-value/service-2.json").getFile());
226         File customizationModel =
227             new File(ClientTestModels.class.getResource("client/c2j/all-ops-with-auth-different-value/customization.config")
228                                            .getFile());
229         C2jModels models = C2jModels
230             .builder()
231             .serviceModel(getServiceModel(serviceModel))
232             .customizationConfig(getCustomizationConfig(customizationModel))
233             .build();
234 
235         return new IntermediateModelBuilder(models).build();
236     }
237 
operationWithNoAuth()238     public static IntermediateModel operationWithNoAuth() {
239         File serviceModel =
240             new File(ClientTestModels.class.getResource("client/c2j/ops-with-no-auth/service-2.json").getFile());
241         File customizationModel =
242             new File(ClientTestModels.class.getResource("client/c2j/ops-with-no-auth/customization.config")
243                                            .getFile());
244         C2jModels models = C2jModels
245             .builder()
246             .serviceModel(getServiceModel(serviceModel))
247             .customizationConfig(getCustomizationConfig(customizationModel))
248             .build();
249 
250         return new IntermediateModelBuilder(models).build();
251     }
252 
serviceWithNoAuth()253     public static IntermediateModel serviceWithNoAuth() {
254         File serviceModel =
255             new File(ClientTestModels.class.getResource("client/c2j/service-with-no-auth/service-2.json").getFile());
256         File customizationModel =
257             new File(ClientTestModels.class.getResource("client/c2j/service-with-no-auth/customization.config")
258                                            .getFile());
259         C2jModels models = C2jModels
260             .builder()
261             .serviceModel(getServiceModel(serviceModel))
262             .customizationConfig(getCustomizationConfig(customizationModel))
263             .build();
264 
265         return new IntermediateModelBuilder(models).build();
266     }
267 
serviceMiniS3()268     public static IntermediateModel serviceMiniS3() {
269         File serviceModel =
270             new File(ClientTestModels.class.getResource("client/c2j/mini-s3/service-2.json").getFile());
271         File customizationModel =
272             new File(ClientTestModels.class.getResource("client/c2j/mini-s3/customization.config")
273                                            .getFile());
274         C2jModels models = C2jModels
275             .builder()
276             .serviceModel(getServiceModel(serviceModel))
277             .customizationConfig(getCustomizationConfig(customizationModel))
278             .build();
279 
280         return new IntermediateModelBuilder(models).build();
281     }
282 
xmlServiceModels()283     public static IntermediateModel xmlServiceModels() {
284         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/xml/service-2.json").getFile());
285         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/xml/customization.config").getFile());
286 
287 
288         C2jModels models = C2jModels
289             .builder()
290             .serviceModel(getServiceModel(serviceModel))
291             .customizationConfig(getCustomizationConfig(customizationModel))
292             .build();
293 
294         return new IntermediateModelBuilder(models).build();
295     }
296 
endpointDiscoveryModels()297     public static IntermediateModel endpointDiscoveryModels() {
298         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/endpointdiscovery/service-2.json").getFile());
299         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/endpointdiscovery/customization.config").getFile());
300 
301         C2jModels models = C2jModels.builder()
302                                     .serviceModel(getServiceModel(serviceModel))
303                                     .customizationConfig(getCustomizationConfig(customizationModel))
304                                     .build();
305 
306         return new IntermediateModelBuilder(models).build();
307     }
308 
customContentTypeModels()309     public static IntermediateModel customContentTypeModels() {
310         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/customservicemetadata/service-2.json").getFile());
311         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/customservicemetadata/customization.config").getFile());
312 
313         C2jModels models = C2jModels.builder()
314                 .serviceModel(getServiceModel(serviceModel))
315                 .customizationConfig(getCustomizationConfig(customizationModel))
316                 .build();
317 
318         return new IntermediateModelBuilder(models).build();
319     }
320 
customPackageModels()321     public static IntermediateModel customPackageModels() {
322         File serviceModel =
323             new File(ClientTestModels.class.getResource("client/c2j/custompackage/service-2.json").getFile());
324         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/custompackage/customization.config").getFile());
325 
326         C2jModels models = C2jModels.builder()
327                                     .serviceModel(getServiceModel(serviceModel))
328                                     .customizationConfig(getCustomizationConfig(customizationModel))
329                                     .build();
330 
331         return new IntermediateModelBuilder(models).build();
332     }
333 
composedClientJsonServiceModels()334     public static IntermediateModel composedClientJsonServiceModels() {
335         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/rest-json/service-2.json").getFile());
336         File customizationModel =
337             new File(ClientTestModels.class.getResource("client/c2j/composedclient/customization.config").getFile());
338         CustomizationConfig customizationConfig = getCustomizationConfig(customizationModel);
339         C2jModels models = C2jModels.builder()
340                                     .serviceModel(getServiceModel(serviceModel))
341                                     .customizationConfig(customizationConfig)
342                                     .build();
343 
344         return new IntermediateModelBuilder(models).build();
345     }
346 
internalConfigModels()347     public static IntermediateModel internalConfigModels() {
348         File serviceModel = new File(ClientTestModels.class.getResource("client/c2j/internalconfig/service-2.json").getFile());
349         File customizationModel = new File(ClientTestModels.class.getResource("client/c2j/internalconfig/customization.config").getFile());
350 
351         C2jModels models = C2jModels.builder()
352                                     .serviceModel(getServiceModel(serviceModel))
353                                     .customizationConfig(getCustomizationConfig(customizationModel))
354                                     .build();
355 
356         return new IntermediateModelBuilder(models).build();
357     }
358 
getServiceModel(File file)359     private static ServiceModel getServiceModel(File file) {
360         return ModelLoaderUtils.loadModel(ServiceModel.class, file);
361     }
362 
getCustomizationConfig(File file)363     private static CustomizationConfig getCustomizationConfig(File file) {
364         return ModelLoaderUtils.loadModel(CustomizationConfig.class, file);
365     }
366 
getWaiters(File file)367     private static Waiters getWaiters(File file) {
368         return ModelLoaderUtils.loadModel(Waiters.class, file);
369     }
370 
getEndpointRuleSet(File file)371     private static EndpointRuleSetModel getEndpointRuleSet(File file) {
372         return ModelLoaderUtils.loadModel(EndpointRuleSetModel.class, file);
373     }
374 
getEndpointTestSuite(File file)375     private static EndpointTestSuiteModel getEndpointTestSuite(File file) {
376         return ModelLoaderUtils.loadModel(EndpointTestSuiteModel.class, file);
377     }
378 
getPaginatorsModel(File file)379     private static Paginators getPaginatorsModel(File file) {
380         return ModelLoaderUtils.loadModel(Paginators.class, file);
381     }
382 }
383