Skip to content

Commit cdc2c0c

Browse files
code generation wrappers refactoring and protocol test clients generation
1 parent c11d9a1 commit cdc2c0c

File tree

10 files changed

+822
-564
lines changed

10 files changed

+822
-564
lines changed

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/config/ServiceGeneratorConfig.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public class ServiceGeneratorConfig {
6868
SPEC_OVERRIDE_MAPPING.put("cpp-neptune-query", new NeptuneCppClientGenerator());
6969
SPEC_OVERRIDE_MAPPING.put("cpp-eventbridge-json", new EventBridgeCppClientGenerator());
7070
SPEC_OVERRIDE_MAPPING.put("cpp-dsql-rest-json", new DsqlCppClientGenerator());
71+
72+
// protocol tests clients
73+
SPEC_OVERRIDE_MAPPING.put("cpp-ec2-protocol-ec2", new Ec2CppClientGenerator());
7174
} catch (Exception e) {
7275
e.printStackTrace();
7376
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3+
* SPDX-License-Identifier: Apache-2.0.
4+
*/
5+
6+
package com.amazonaws.util.awsclientgenerator.domainmodels.c2j;
7+
8+
9+
import com.google.gson.JsonDeserializationContext;
10+
import com.google.gson.JsonDeserializer;
11+
import com.google.gson.JsonElement;
12+
import com.google.gson.JsonObject;
13+
import com.google.gson.JsonParseException;
14+
import com.google.gson.JsonPrimitive;
15+
16+
import java.lang.reflect.Type;
17+
18+
public class C2jXmlNamespaceDeserializer implements JsonDeserializer<C2jXmlNamespace> {
19+
20+
@Override
21+
public C2jXmlNamespace deserialize(JsonElement jsonElement, Type type,
22+
JsonDeserializationContext context) throws JsonParseException {
23+
C2jXmlNamespace retValue = new C2jXmlNamespace();
24+
25+
if (jsonElement.isJsonObject()) {
26+
JsonObject jsonObject = jsonElement.getAsJsonObject();
27+
if (jsonObject.has("uri")) {
28+
JsonPrimitive uriPrimitive = jsonObject.getAsJsonPrimitive("uri");
29+
if (!uriPrimitive.isString()) {
30+
throw new JsonParseException("Unexpected C2jXmlNamespace.uri type, expected a String!");
31+
}
32+
retValue.setUri(uriPrimitive.getAsString());
33+
}
34+
if (jsonObject.has("prefix")) {
35+
JsonPrimitive prefixPrimitive = jsonObject.getAsJsonPrimitive("prefix");
36+
if (!prefixPrimitive.isString()) {
37+
throw new JsonParseException("Unexpected C2jXmlNamespace.prefix type, expected a String!");
38+
}
39+
retValue.setPrefix(prefixPrimitive.getAsString());
40+
}
41+
} else if (jsonElement.isJsonPrimitive() && jsonElement.getAsJsonPrimitive().isString()) {
42+
retValue.setUri(jsonElement.getAsJsonPrimitive().getAsString());
43+
} else {
44+
throw new JsonParseException("Unexpected C2jXmlNamespace value, expected primitive Object or Primitive!");
45+
}
46+
47+
return retValue;
48+
}
49+
}

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/DirectFromC2jGenerator.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
package com.amazonaws.util.awsclientgenerator.generators;
77

88
import com.amazonaws.util.awsclientgenerator.domainmodels.c2j.C2jServiceModel;
9+
import com.amazonaws.util.awsclientgenerator.domainmodels.c2j.C2jXmlNamespace;
10+
import com.amazonaws.util.awsclientgenerator.domainmodels.c2j.C2jXmlNamespaceDeserializer;
911
import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.EndpointRuleSetModel;
1012
import com.amazonaws.util.awsclientgenerator.domainmodels.codegeneration.PartitionsModel;
1113
import com.amazonaws.util.awsclientgenerator.domainmodels.defaults.BaseOption;
@@ -38,6 +40,7 @@ public ByteArrayOutputStream generateServiceSourceFromJson(String rawJson, Strin
3840
GsonBuilder gsonBuilder = new GsonBuilder();
3941
gsonBuilder.registerTypeAdapter(EndpointTests.EndpointTestParams.class, new EndpointTestParamsDeserializer());
4042
gsonBuilder.registerTypeAdapter(EndpointParameterValue.class, new EndpointParameterValueDeserializer());
43+
gsonBuilder.registerTypeAdapter(C2jXmlNamespace.class, new C2jXmlNamespaceDeserializer());
4144
Gson gson = gsonBuilder.create();
4245

4346
C2jServiceModel c2jServiceModel = gson.fromJson(rawJson, C2jServiceModel.class);

tools/code-generation/generator/src/main/java/com/amazonaws/util/awsclientgenerator/generators/cpp/ec2/Ec2CppClientGenerator.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ public SdkFileEntry[] generateSourceFiles(ServiceModel serviceModel) throws Exce
5050
shapes.put(key.replaceAll("Result$", "Response"), shape);
5151
}
5252

53-
//add "disabled" state to SpotInstanceState
54-
List<String> spotInstanceStateEnumValues = shapes.get("SpotInstanceState").getEnumValues();
5553

56-
if(!spotInstanceStateEnumValues.contains("disabled")) {
57-
spotInstanceStateEnumValues.add("disabled");
54+
if (shapes.containsKey("SpotInstanceState")) {
55+
// add "disabled" state to SpotInstanceState
56+
List<String> spotInstanceStateEnumValues = shapes.get("SpotInstanceState").getEnumValues();
57+
if (!spotInstanceStateEnumValues.contains("disabled")) {
58+
spotInstanceStateEnumValues.add("disabled");
59+
}
5860
}
5961

6062
final Collection<Error> serviceErrors = serviceModel.getServiceErrors();

tools/scripts/codegen/__init__.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#!/usr/bin/env python3
2+
3+
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
4+
# SPDX-License-Identifier: Apache-2.0.

0 commit comments

Comments
 (0)