in codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/RuleSetCreationSpec.java [186:289]
private CodeBlock endpoint(EndpointModel model) {
CodeBlock.Builder b = CodeBlock.builder();
b.add("$T.builder()", endpointRulesSpecUtils.rulesRuntimeClassName("EndpointResult"));
TreeNode url = model.getUrl();
b.add(".url($L)", expr(url));
if (model.getHeaders() != null) {
model.getHeaders().forEach((name, valueList) -> {
valueList.forEach(value -> b.add(".addHeaderValue($S, $L)", name, expr(value)));
});
}
if (model.getProperties() != null) {
// Explicitly only support known properties
model.getProperties().forEach((name, property) -> {
switch (name) {
case "authSchemes":
b.add(".addProperty($T.of($S), $T.fromTuple($T.asList(",
endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
"authSchemes",
endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
Arrays.class);
Iterator<JrsValue> authSchemesIter = ((JrsArray) property).elements();
while (authSchemesIter.hasNext()) {
b.add("$T.fromRecord($T.of(", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
MapUtils.class);
JrsObject authScheme = (JrsObject) authSchemesIter.next();
Iterator<String> authSchemeFieldsIter = authScheme.fieldNames();
while (authSchemeFieldsIter.hasNext()) {
String schemeProp = authSchemeFieldsIter.next();
JrsValue propValue = authScheme.get(schemeProp);
b.add("$T.of($S), ", endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"), schemeProp);
if ("signingRegionSet".equalsIgnoreCase(schemeProp)) {
b.add("$T.fromTuple($T.asList(", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
Arrays.class);
Iterator<JrsValue> signingRegions = ((JrsArray) propValue).elements();
while (signingRegions.hasNext()) {
JrsString region = (JrsString) signingRegions.next();
b.add("$T.fromStr($S)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
region.getValue());
if (signingRegions.hasNext()) {
b.add(", ");
}
}
b.add("))");
} else if ("disableDoubleEncoding".equalsIgnoreCase(schemeProp)) {
b.add("$T.fromBool($L)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
((JrsBoolean) propValue).booleanValue());
} else {
b.add("$T.fromStr($S)", endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
((JrsString) propValue).getValue());
}
if (authSchemeFieldsIter.hasNext()) {
b.add(", ");
}
}
b.add("))");
if (authSchemesIter.hasNext()) {
b.add(", ");
}
}
b.add(")))");
break;
case "bucketType":
b.add(".addProperty($T.of($S), $T.fromStr($S))",
endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
"bucketType",
endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
((JrsString) property).getValue());
break;
case "useS3ExpressSessionAuth":
b.add(".addProperty($T.of($S), $T.fromBool($L))",
endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
"useS3ExpressSessionAuth",
endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
((JrsBoolean) property).booleanValue());
break;
case "backend":
b.add(".addProperty($T.of($S), $T.fromStr($S))",
endpointRulesSpecUtils.rulesRuntimeClassName("Identifier"),
"backend",
endpointRulesSpecUtils.rulesRuntimeClassName("Literal"),
((JrsString) property).getValue());
break;
default:
break;
}
});
}
b.add(".build()");
return b.build();
}