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