diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointProviderSpec.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointProviderSpec.java index 0577934790b5..eb7d17b4e57f 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointProviderSpec.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules/EndpointProviderSpec.java @@ -25,7 +25,6 @@ import com.squareup.javapoet.TypeSpec; import com.squareup.javapoet.TypeVariableName; import com.squareup.javapoet.WildcardTypeName; -import java.net.URI; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -42,6 +41,7 @@ import software.amazon.awssdk.codegen.poet.PoetUtils; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.utils.CompletableFutureUtils; import software.amazon.awssdk.utils.Logger; import software.amazon.awssdk.utils.Validate; @@ -127,7 +127,7 @@ private MethodSpec valueAsEndpointOrThrowMethodSpec() { .addStatement("$T endpoint = $N.expectEndpoint()", endpointRulesSpecUtils.rulesRuntimeClassName("Value.Endpoint"), valueParamName) .addStatement("$T builder = Endpoint.builder()", Endpoint.Builder.class) - .addStatement("builder.url($T.create(endpoint.getUrl()))", URI.class) + .addStatement("builder.endpointUrl($T.fromString(endpoint.getUrl()))", EndpointUrl.class) .addStatement("$T headers = endpoint.getHeaders()", ParameterizedTypeName.get(ClassName.get(Map.class), TypeName.get(String.class), diff --git a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules2/CodeGeneratorVisitor.java b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules2/CodeGeneratorVisitor.java index daf0d5ff7f39..51cc3e812f23 100644 --- a/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules2/CodeGeneratorVisitor.java +++ b/codegen/src/main/java/software/amazon/awssdk/codegen/poet/rules2/CodeGeneratorVisitor.java @@ -17,7 +17,6 @@ import com.squareup.javapoet.ClassName; import com.squareup.javapoet.CodeBlock; -import java.net.URI; import java.util.Arrays; import java.util.List; import java.util.Map; @@ -29,7 +28,7 @@ import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme; import software.amazon.awssdk.codegen.model.config.customization.KeyTypePair; import software.amazon.awssdk.endpoints.Endpoint; -import software.amazon.awssdk.utils.uri.SdkUri; +import software.amazon.awssdk.endpoints.EndpointUrl; public class CodeGeneratorVisitor extends WalkRuleExpressionVisitor { private static final Logger log = LoggerFactory.getLogger(CodeGeneratorVisitor.class); @@ -333,11 +332,7 @@ private String callParams(String ruleId) { @Override public Void visitEndpointExpression(EndpointExpression e) { builder.add("return $T.endpoint(", typeMirror.rulesResult().type()); - if (endpointCaching) { - builder.add("$T.builder().url($T.getInstance().create(", Endpoint.class, SdkUri.class); - } else { - builder.add("$T.builder().url($T.create(", Endpoint.class, URI.class); - } + builder.add("$T.builder().endpointUrl($T.fromString(", Endpoint.class, EndpointUrl.class); e.url().accept(this); builder.add("))"); e.headers().accept(this); diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-class.java index 7c7e0170f7e5..6aeec5df170a 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-class.java @@ -1,6 +1,5 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -12,6 +11,7 @@ import software.amazon.awssdk.awscore.endpoints.AwsEndpointAttribute; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; import software.amazon.awssdk.utils.CompletableFutureUtils; @@ -63,11 +63,11 @@ private static Map toIdentifierValueMap(QueryEndpointParams p } if (params.listOfStrings() != null) { paramsMap.put(Identifier.of("listOfStrings"), - Value.fromArray(params.listOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.listOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); } if (params.defaultListOfStrings() != null) { paramsMap.put(Identifier.of("defaultListOfStrings"), - Value.fromArray(params.defaultListOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.defaultListOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); } if (params.endpointId() != null) { paramsMap.put(Identifier.of("endpointId"), Value.fromStr(params.endpointId())); @@ -92,11 +92,11 @@ private static Map toIdentifierValueMap(QueryEndpointParams p } if (params.customEndpointArray() != null) { paramsMap.put(Identifier.of("CustomEndpointArray"), - Value.fromArray(params.customEndpointArray().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.customEndpointArray().stream().map(Value::fromStr).collect(Collectors.toList()))); } if (params.arnList() != null) { paramsMap.put(Identifier.of("ArnList"), - Value.fromArray(params.arnList().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.arnList().stream().map(Value::fromStr).collect(Collectors.toList()))); } return paramsMap; } @@ -105,7 +105,7 @@ Endpoint valueAsEndpointOrThrow(Value value) { if (value instanceof Value.Endpoint) { Value.Endpoint endpoint = value.expectEndpoint(); Endpoint.Builder builder = Endpoint.builder(); - builder.url(URI.create(endpoint.getUrl())); + builder.endpointUrl(EndpointUrl.fromString(endpoint.getUrl())); Map> headers = endpoint.getHeaders(); if (headers != null) { headers.forEach((name, values) -> values.forEach(v -> builder.putHeader(name, v))); @@ -120,214 +120,214 @@ Endpoint valueAsEndpointOrThrow(Value value) { throw SdkClientException.create(errorMsg); } else { throw SdkClientException.create("Rule engine return neither an endpoint result or error value. Returned value was: " - + value); + + value); } } private static Rule endpointRule_2() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()).error("FIPS endpoints not supported with multi-region endpoints"); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()).error("FIPS endpoints not supported with multi-region endpoints"); } private static Rule endpointRule_3() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_4() { return Rule.builder() - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_1() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("endpointId")))) - .build().validate()).build()) - .treeRule(Arrays.asList(endpointRule_2(), endpointRule_3(), endpointRule_4())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("endpointId")))) + .build().validate()).build()) + .treeRule(Arrays.asList(endpointRule_2(), endpointRule_3(), endpointRule_4())); } private static Rule endpointRule_6() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build() - .validate())).build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query-fips.{region}.{partitionResult#dnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build() + .validate())).build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query-fips.{region}.{partitionResult#dnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_7() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query.{region}.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*"))))), Literal - .fromRecord(MapUtils.of(Identifier.of("name"), Literal.fromStr("sigv4"), - Identifier.of("signingName"), Literal.fromStr("query"), - Identifier.of("signingRegion"), Literal.fromStr("{region}")))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query.{region}.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*"))))), Literal + .fromRecord(MapUtils.of(Identifier.of("name"), Literal.fromStr("sigv4"), + Identifier.of("signingName"), Literal.fromStr("query"), + Identifier.of("signingRegion"), Literal.fromStr("{region}")))))).build()); } private static Rule endpointRule_8() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query-fips.{region}.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query-fips.{region}.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_9() { return Rule.builder().endpoint( - EndpointResult.builder().url(Expr.of("https://query.{region}.{partitionResult#dnsSuffix}")).build()); + EndpointResult.builder().url(Expr.of("https://query.{region}.{partitionResult#dnsSuffix}")).build()); } private static Rule endpointRule_5() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isValidHostLabel") - .argv(Arrays.asList(Expr.ref(Identifier.of("region")), Expr.of(false))).build() - .validate()).build()) - .treeRule(Arrays.asList(endpointRule_6(), endpointRule_7(), endpointRule_8(), endpointRule_9())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isValidHostLabel") + .argv(Arrays.asList(Expr.ref(Identifier.of("region")), Expr.of(false))).build() + .validate()).build()) + .treeRule(Arrays.asList(endpointRule_6(), endpointRule_7(), endpointRule_8(), endpointRule_9())); } private static Rule endpointRule_10() { @@ -336,133 +336,133 @@ private static Rule endpointRule_10() { private static Rule endpointRule_11() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")))).build() - .validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("getAttr") - .argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")), Expr.of("[0]"))).build() - .validate()).result("FirstArn").build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("FirstArn")))) - .build().validate()).result("ParsedArn").build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")))).build() + .validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("getAttr") + .argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")), Expr.of("[0]"))).build() + .validate()).result("FirstArn").build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("FirstArn")))) + .build().validate()).result("ParsedArn").build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_0() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("region")))) - .build().validate()).result("partitionResult").build()) - .treeRule(Arrays.asList(endpointRule_1(), endpointRule_5(), endpointRule_10(), endpointRule_11())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("region")))) + .build().validate()).result("partitionResult").build()) + .treeRule(Arrays.asList(endpointRule_1(), endpointRule_5(), endpointRule_10(), endpointRule_11())); } private static EndpointRuleset ruleSet() { return EndpointRuleset - .builder() - .version("1.2") - .serviceId("query") - .parameters( - Parameters - .builder() - .addParameter( - Parameter.builder().name("region").type(ParameterType.fromValue("string")).required(true) - .builtIn("AWS::Region").documentation("The region to send requests to").build()) - .addParameter( - Parameter.builder().name("useDualStackEndpoint").type(ParameterType.fromValue("boolean")) - .required(false).builtIn("AWS::UseDualStack").build()) - .addParameter( - Parameter.builder().name("useFIPSEndpoint").type(ParameterType.fromValue("boolean")) - .required(false).builtIn("AWS::UseFIPS").build()) - .addParameter( - Parameter.builder().name("AccountId").type(ParameterType.fromValue("String")) - .required(false).builtIn("AWS::Auth::AccountId").build()) - .addParameter( - Parameter.builder().name("AccountIdEndpointMode").type(ParameterType.fromValue("String")) - .required(false).builtIn("AWS::Auth::AccountIdEndpointMode").build()) - .addParameter( - Parameter.builder().name("listOfStrings").type(ParameterType.fromValue("StringArray")) - .required(false).build()) - .addParameter( - Parameter - .builder() - .name("defaultListOfStrings") - .type(ParameterType.fromValue("stringarray")) - .required(false) - .defaultValue( - Value.fromArray(Arrays.asList("item1", "item2", "item3").stream() - .map(Value::fromStr).collect(Collectors.toList()))).build()) - .addParameter( - Parameter.builder().name("endpointId").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("defaultTrueParam").type(ParameterType.fromValue("boolean")) - .required(false).documentation("A param that defauls to true") - .defaultValue(Value.fromBool(true)).build()) - .addParameter( - Parameter.builder().name("defaultStringParam").type(ParameterType.fromValue("string")) - .required(false).defaultValue(Value.fromStr("hello endpoints")).build()) - .addParameter( - Parameter.builder().name("deprecatedParam").type(ParameterType.fromValue("string")) - .required(false).deprecated(new Parameter.Deprecated("Don't use!", "2021-01-01")) - .build()) - .addParameter( - Parameter.builder().name("booleanContextParam").type(ParameterType.fromValue("boolean")) - .required(false).build()) - .addParameter( - Parameter.builder().name("stringContextParam").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("operationContextParam").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("CustomEndpointArray") - .type(ParameterType.fromValue("StringArray")).required(false) - .documentation("Parameter from the customization config").build()) - .addParameter( - Parameter.builder().name("ArnList").type(ParameterType.fromValue("StringArray")) - .required(false).documentation("Parameter from the customization config").build()) - .build()).addRule(endpointRule_0()).build(); + .builder() + .version("1.2") + .serviceId("query") + .parameters( + Parameters + .builder() + .addParameter( + Parameter.builder().name("region").type(ParameterType.fromValue("string")).required(true) + .builtIn("AWS::Region").documentation("The region to send requests to").build()) + .addParameter( + Parameter.builder().name("useDualStackEndpoint").type(ParameterType.fromValue("boolean")) + .required(false).builtIn("AWS::UseDualStack").build()) + .addParameter( + Parameter.builder().name("useFIPSEndpoint").type(ParameterType.fromValue("boolean")) + .required(false).builtIn("AWS::UseFIPS").build()) + .addParameter( + Parameter.builder().name("AccountId").type(ParameterType.fromValue("String")) + .required(false).builtIn("AWS::Auth::AccountId").build()) + .addParameter( + Parameter.builder().name("AccountIdEndpointMode").type(ParameterType.fromValue("String")) + .required(false).builtIn("AWS::Auth::AccountIdEndpointMode").build()) + .addParameter( + Parameter.builder().name("listOfStrings").type(ParameterType.fromValue("StringArray")) + .required(false).build()) + .addParameter( + Parameter + .builder() + .name("defaultListOfStrings") + .type(ParameterType.fromValue("stringarray")) + .required(false) + .defaultValue( + Value.fromArray(Arrays.asList("item1", "item2", "item3").stream() + .map(Value::fromStr).collect(Collectors.toList()))).build()) + .addParameter( + Parameter.builder().name("endpointId").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("defaultTrueParam").type(ParameterType.fromValue("boolean")) + .required(false).documentation("A param that defauls to true") + .defaultValue(Value.fromBool(true)).build()) + .addParameter( + Parameter.builder().name("defaultStringParam").type(ParameterType.fromValue("string")) + .required(false).defaultValue(Value.fromStr("hello endpoints")).build()) + .addParameter( + Parameter.builder().name("deprecatedParam").type(ParameterType.fromValue("string")) + .required(false).deprecated(new Parameter.Deprecated("Don't use!", "2021-01-01")) + .build()) + .addParameter( + Parameter.builder().name("booleanContextParam").type(ParameterType.fromValue("boolean")) + .required(false).build()) + .addParameter( + Parameter.builder().name("stringContextParam").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("operationContextParam").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("CustomEndpointArray") + .type(ParameterType.fromValue("StringArray")).required(false) + .documentation("Parameter from the customization config").build()) + .addParameter( + Parameter.builder().name("ArnList").type(ParameterType.fromValue("StringArray")) + .required(false).documentation("Parameter from the customization config").build()) + .build()).addRule(endpointRule_0()).build(); } @Override @@ -478,12 +478,12 @@ public int hashCode() { private void addKnownProperties(Endpoint.Builder builder, Map properties) { properties.forEach((n, v) -> { switch (n) { - case "authSchemes": - builder.putAttribute(AwsEndpointAttribute.AUTH_SCHEMES, endpointAuthSchemeStrategy.createAuthSchemes(v)); - break; - default: - LOG.debug(() -> "Ignoring unknown endpoint property: " + n); - break; + case "authSchemes": + builder.putAttribute(AwsEndpointAttribute.AUTH_SCHEMES, endpointAuthSchemeStrategy.createAuthSchemes(v)); + break; + default: + LOG.debug(() -> "Ignoring unknown endpoint property: " + n); + break; } }); } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-know-prop-override-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-know-prop-override-class.java index 98af0f39dfe4..bc9850b0ec83 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-know-prop-override-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules/endpoint-provider-know-prop-override-class.java @@ -1,6 +1,5 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -11,6 +10,7 @@ import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; import software.amazon.awssdk.utils.CompletableFutureUtils; @@ -62,11 +62,11 @@ private static Map toIdentifierValueMap(QueryEndpointParams p } if (params.listOfStrings() != null) { paramsMap.put(Identifier.of("listOfStrings"), - Value.fromArray(params.listOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.listOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); } if (params.defaultListOfStrings() != null) { paramsMap.put(Identifier.of("defaultListOfStrings"), - Value.fromArray(params.defaultListOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.defaultListOfStrings().stream().map(Value::fromStr).collect(Collectors.toList()))); } if (params.endpointId() != null) { paramsMap.put(Identifier.of("endpointId"), Value.fromStr(params.endpointId())); @@ -91,7 +91,7 @@ private static Map toIdentifierValueMap(QueryEndpointParams p } if (params.arnList() != null) { paramsMap.put(Identifier.of("ArnList"), - Value.fromArray(params.arnList().stream().map(Value::fromStr).collect(Collectors.toList()))); + Value.fromArray(params.arnList().stream().map(Value::fromStr).collect(Collectors.toList()))); } return paramsMap; } @@ -100,7 +100,7 @@ Endpoint valueAsEndpointOrThrow(Value value) { if (value instanceof Value.Endpoint) { Value.Endpoint endpoint = value.expectEndpoint(); Endpoint.Builder builder = Endpoint.builder(); - builder.url(URI.create(endpoint.getUrl())); + builder.endpointUrl(EndpointUrl.fromString(endpoint.getUrl())); Map> headers = endpoint.getHeaders(); if (headers != null) { headers.forEach((name, values) -> values.forEach(v -> builder.putHeader(name, v))); @@ -115,214 +115,214 @@ Endpoint valueAsEndpointOrThrow(Value value) { throw SdkClientException.create(errorMsg); } else { throw SdkClientException.create("Rule engine return neither an endpoint result or error value. Returned value was: " - + value); + + value); } } private static Rule endpointRule_2() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()).error("FIPS endpoints not supported with multi-region endpoints"); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()).error("FIPS endpoints not supported with multi-region endpoints"); } private static Rule endpointRule_3() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_4() { return Rule.builder() - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_1() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("endpointId")))) - .build().validate()).build()) - .treeRule(Arrays.asList(endpointRule_2(), endpointRule_3(), endpointRule_4())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("endpointId")))) + .build().validate()).build()) + .treeRule(Arrays.asList(endpointRule_2(), endpointRule_3(), endpointRule_4())); } private static Rule endpointRule_6() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build() - .validate())).build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query-fips.{region}.{partitionResult#dnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build() + .validate())).build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query-fips.{region}.{partitionResult#dnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_7() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query.{region}.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*"))))), Literal - .fromRecord(MapUtils.of(Identifier.of("name"), Literal.fromStr("sigv4"), - Identifier.of("signingName"), Literal.fromStr("query"), - Identifier.of("signingRegion"), Literal.fromStr("{region}")))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query.{region}.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*"))))), Literal + .fromRecord(MapUtils.of(Identifier.of("name"), Literal.fromStr("sigv4"), + Identifier.of("signingName"), Literal.fromStr("query"), + Identifier.of("signingRegion"), Literal.fromStr("{region}")))))).build()); } private static Rule endpointRule_8() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() - .validate()).build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://query-fips.{region}.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")), Expr.of(true))).build() + .validate()).build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://query-fips.{region}.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_9() { return Rule.builder().endpoint( - EndpointResult.builder().url(Expr.of("https://query.{region}.{partitionResult#dnsSuffix}")).build()); + EndpointResult.builder().url(Expr.of("https://query.{region}.{partitionResult#dnsSuffix}")).build()); } private static Rule endpointRule_5() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isValidHostLabel") - .argv(Arrays.asList(Expr.ref(Identifier.of("region")), Expr.of(false))).build() - .validate()).build()) - .treeRule(Arrays.asList(endpointRule_6(), endpointRule_7(), endpointRule_8(), endpointRule_9())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isValidHostLabel") + .argv(Arrays.asList(Expr.ref(Identifier.of("region")), Expr.of(false))).build() + .validate()).build()) + .treeRule(Arrays.asList(endpointRule_6(), endpointRule_7(), endpointRule_8(), endpointRule_9())); } private static Rule endpointRule_10() { @@ -331,129 +331,129 @@ private static Rule endpointRule_10() { private static Rule endpointRule_11() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode - .builder() - .fn("not") - .argv(Arrays.asList(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() - .validate())).build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) - .build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("booleanEquals") - .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) - .build().validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")))).build() - .validate()).build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("getAttr") - .argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")), Expr.of("[0]"))).build() - .validate()).result("FirstArn").build()) - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("FirstArn")))) - .build().validate()).result("ParsedArn").build()) - .endpoint( - EndpointResult - .builder() - .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) - .addProperty( - Identifier.of("authSchemes"), - Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), - Literal.fromStr("sigv4a"), Identifier.of("signingName"), - Literal.fromStr("query"), Identifier.of("signingRegionSet"), - Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode + .builder() + .fn("not") + .argv(Arrays.asList(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useFIPSEndpoint")))).build() + .validate())).build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")))).build().validate()) + .build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("booleanEquals") + .argv(Arrays.asList(Expr.ref(Identifier.of("useDualStackEndpoint")), Expr.of(true))) + .build().validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("isSet").argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")))).build() + .validate()).build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("getAttr") + .argv(Arrays.asList(Expr.ref(Identifier.of("ArnList")), Expr.of("[0]"))).build() + .validate()).result("FirstArn").build()) + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("aws.parseArn").argv(Arrays.asList(Expr.ref(Identifier.of("FirstArn")))) + .build().validate()).result("ParsedArn").build()) + .endpoint( + EndpointResult + .builder() + .url(Expr.of("https://{endpointId}.query.{partitionResult#dualStackDnsSuffix}")) + .addProperty( + Identifier.of("authSchemes"), + Literal.fromTuple(Arrays.asList(Literal.fromRecord(MapUtils.of(Identifier.of("name"), + Literal.fromStr("sigv4a"), Identifier.of("signingName"), + Literal.fromStr("query"), Identifier.of("signingRegionSet"), + Literal.fromTuple(Arrays.asList(Literal.fromStr("*")))))))).build()); } private static Rule endpointRule_0() { return Rule - .builder() - .addCondition( - Condition - .builder() - .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("region")))) - .build().validate()).result("partitionResult").build()) - .treeRule(Arrays.asList(endpointRule_1(), endpointRule_5(), endpointRule_10(), endpointRule_11())); + .builder() + .addCondition( + Condition + .builder() + .fn(FnNode.builder().fn("aws.partition").argv(Arrays.asList(Expr.ref(Identifier.of("region")))) + .build().validate()).result("partitionResult").build()) + .treeRule(Arrays.asList(endpointRule_1(), endpointRule_5(), endpointRule_10(), endpointRule_11())); } private static EndpointRuleset ruleSet() { return EndpointRuleset - .builder() - .version("1.2") - .serviceId("query") - .parameters( - Parameters - .builder() - .addParameter( - Parameter.builder().name("region").type(ParameterType.fromValue("string")).required(true) - .builtIn("AWS::Region").documentation("The region to send requests to").build()) - .addParameter( - Parameter.builder().name("useDualStackEndpoint").type(ParameterType.fromValue("boolean")) - .required(false).builtIn("AWS::UseDualStack").build()) - .addParameter( - Parameter.builder().name("useFIPSEndpoint").type(ParameterType.fromValue("boolean")) - .required(false).builtIn("AWS::UseFIPS").build()) - .addParameter( - Parameter.builder().name("AccountId").type(ParameterType.fromValue("String")) - .required(false).builtIn("AWS::Auth::AccountId").build()) - .addParameter( - Parameter.builder().name("AccountIdEndpointMode").type(ParameterType.fromValue("String")) - .required(false).builtIn("AWS::Auth::AccountIdEndpointMode").build()) - .addParameter( - Parameter.builder().name("listOfStrings").type(ParameterType.fromValue("StringArray")) - .required(false).build()) - .addParameter( - Parameter - .builder() - .name("defaultListOfStrings") - .type(ParameterType.fromValue("stringarray")) - .required(false) - .defaultValue( - Value.fromArray(Arrays.asList("item1", "item2", "item3").stream() - .map(Value::fromStr).collect(Collectors.toList()))).build()) - .addParameter( - Parameter.builder().name("endpointId").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("defaultTrueParam").type(ParameterType.fromValue("boolean")) - .required(false).documentation("A param that defauls to true") - .defaultValue(Value.fromBool(true)).build()) - .addParameter( - Parameter.builder().name("defaultStringParam").type(ParameterType.fromValue("string")) - .required(false).defaultValue(Value.fromStr("hello endpoints")).build()) - .addParameter( - Parameter.builder().name("deprecatedParam").type(ParameterType.fromValue("string")) - .required(false).deprecated(new Parameter.Deprecated("Don't use!", "2021-01-01")) - .build()) - .addParameter( - Parameter.builder().name("booleanContextParam").type(ParameterType.fromValue("boolean")) - .required(false).build()) - .addParameter( - Parameter.builder().name("stringContextParam").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("operationContextParam").type(ParameterType.fromValue("string")) - .required(false).build()) - .addParameter( - Parameter.builder().name("ArnList").type(ParameterType.fromValue("StringArray")) - .required(false).documentation("Parameter from the customization config").build()) - .build()).addRule(endpointRule_0()).build(); + .builder() + .version("1.2") + .serviceId("query") + .parameters( + Parameters + .builder() + .addParameter( + Parameter.builder().name("region").type(ParameterType.fromValue("string")).required(true) + .builtIn("AWS::Region").documentation("The region to send requests to").build()) + .addParameter( + Parameter.builder().name("useDualStackEndpoint").type(ParameterType.fromValue("boolean")) + .required(false).builtIn("AWS::UseDualStack").build()) + .addParameter( + Parameter.builder().name("useFIPSEndpoint").type(ParameterType.fromValue("boolean")) + .required(false).builtIn("AWS::UseFIPS").build()) + .addParameter( + Parameter.builder().name("AccountId").type(ParameterType.fromValue("String")) + .required(false).builtIn("AWS::Auth::AccountId").build()) + .addParameter( + Parameter.builder().name("AccountIdEndpointMode").type(ParameterType.fromValue("String")) + .required(false).builtIn("AWS::Auth::AccountIdEndpointMode").build()) + .addParameter( + Parameter.builder().name("listOfStrings").type(ParameterType.fromValue("StringArray")) + .required(false).build()) + .addParameter( + Parameter + .builder() + .name("defaultListOfStrings") + .type(ParameterType.fromValue("stringarray")) + .required(false) + .defaultValue( + Value.fromArray(Arrays.asList("item1", "item2", "item3").stream() + .map(Value::fromStr).collect(Collectors.toList()))).build()) + .addParameter( + Parameter.builder().name("endpointId").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("defaultTrueParam").type(ParameterType.fromValue("boolean")) + .required(false).documentation("A param that defauls to true") + .defaultValue(Value.fromBool(true)).build()) + .addParameter( + Parameter.builder().name("defaultStringParam").type(ParameterType.fromValue("string")) + .required(false).defaultValue(Value.fromStr("hello endpoints")).build()) + .addParameter( + Parameter.builder().name("deprecatedParam").type(ParameterType.fromValue("string")) + .required(false).deprecated(new Parameter.Deprecated("Don't use!", "2021-01-01")) + .build()) + .addParameter( + Parameter.builder().name("booleanContextParam").type(ParameterType.fromValue("boolean")) + .required(false).build()) + .addParameter( + Parameter.builder().name("stringContextParam").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("operationContextParam").type(ParameterType.fromValue("string")) + .required(false).build()) + .addParameter( + Parameter.builder().name("ArnList").type(ParameterType.fromValue("StringArray")) + .required(false).documentation("Parameter from the customization config").build()) + .build()).addRule(endpointRule_0()).build(); } @Override diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-class.java index 684823698760..2edf6b89329c 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-class.java @@ -1,6 +1,5 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.Arrays; import java.util.concurrent.CompletableFuture; import software.amazon.awssdk.annotations.Generated; @@ -10,6 +9,7 @@ import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; @@ -66,7 +66,7 @@ private static RuleResult endpointRule1(QueryEndpointParams params, String regio if (parsedArn != null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, @@ -87,7 +87,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio if (params.useFipsEndpoint() == null && params.useDualStackEndpoint() != null && params.useDualStackEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -95,7 +95,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio } return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query").signingRegionSet(Arrays.asList("*")) @@ -109,7 +109,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useFipsEndpoint() != null && params.useFipsEndpoint() && params.useDualStackEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -118,7 +118,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useDualStackEndpoint() != null && params.useDualStackEndpoint() && params.useFipsEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -129,14 +129,14 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio && params.useFipsEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") .signingRegionSet(Arrays.asList("*")).build())).build()); } return RuleResult.endpoint(Endpoint.builder() - .url(URI.create("https://query." + region + "." + partitionResult.dnsSuffix())).build()); + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dnsSuffix())).build()); } return RuleResult.carryOn(); } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-know-prop-override-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-know-prop-override-class.java index 684823698760..2edf6b89329c 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-know-prop-override-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-know-prop-override-class.java @@ -1,6 +1,5 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.Arrays; import java.util.concurrent.CompletableFuture; import software.amazon.awssdk.annotations.Generated; @@ -10,6 +9,7 @@ import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; @@ -66,7 +66,7 @@ private static RuleResult endpointRule1(QueryEndpointParams params, String regio if (parsedArn != null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, @@ -87,7 +87,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio if (params.useFipsEndpoint() == null && params.useDualStackEndpoint() != null && params.useDualStackEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -95,7 +95,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio } return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query").signingRegionSet(Arrays.asList("*")) @@ -109,7 +109,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useFipsEndpoint() != null && params.useFipsEndpoint() && params.useDualStackEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -118,7 +118,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useDualStackEndpoint() != null && params.useDualStackEndpoint() && params.useFipsEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -129,14 +129,14 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio && params.useFipsEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") .signingRegionSet(Arrays.asList("*")).build())).build()); } return RuleResult.endpoint(Endpoint.builder() - .url(URI.create("https://query." + region + "." + partitionResult.dnsSuffix())).build()); + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dnsSuffix())).build()); } return RuleResult.carryOn(); } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-metric-values-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-metric-values-class.java index 6c854826e953..a086d3466d4e 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-metric-values-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-metric-values-class.java @@ -1,6 +1,5 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.Arrays; import java.util.concurrent.CompletableFuture; import software.amazon.awssdk.annotations.Generated; @@ -10,6 +9,7 @@ import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; @@ -70,7 +70,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio if (params.useFipsEndpoint() == null && params.useDualStackEndpoint() != null && params.useDualStackEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -78,7 +78,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio } return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query").signingRegionSet(Arrays.asList("*")) @@ -92,7 +92,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useFipsEndpoint() != null && params.useFipsEndpoint() && params.useDualStackEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -101,7 +101,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useDualStackEndpoint() != null && params.useDualStackEndpoint() && params.useFipsEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -112,14 +112,14 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio && params.useFipsEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(URI.create("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") .signingRegionSet(Arrays.asList("*")).build())).build()); } return RuleResult.endpoint(Endpoint.builder() - .url(URI.create("https://query." + region + "." + partitionResult.dnsSuffix())).build()); + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dnsSuffix())).build()); } return RuleResult.carryOn(); } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-unknown-property-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-unknown-property-class.java index 18f0c5cb6e42..908313b824e5 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-unknown-property-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-unknown-property-class.java @@ -1,11 +1,11 @@ package software.amazon.awssdk.services.query.endpoints.internal; -import java.net.URI; import java.util.concurrent.CompletableFuture; import software.amazon.awssdk.annotations.Generated; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; import software.amazon.awssdk.utils.CompletableFutureUtils; @@ -43,7 +43,7 @@ private static RuleResult endpointRule0(QueryEndpointParams params) { private static RuleResult endpointRule1(QueryEndpointParams params) { if (params.endpoint() != null) { - return RuleResult.endpoint(Endpoint.builder().url(URI.create(params.endpoint())).build()); + return RuleResult.endpoint(Endpoint.builder().endpointUrl(EndpointUrl.fromString(params.endpoint())).build()); } return RuleResult.carryOn(); } diff --git a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-uri-cache-class.java b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-uri-cache-class.java index 53eb66b3c147..2edf6b89329c 100644 --- a/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-uri-cache-class.java +++ b/codegen/src/test/resources/software/amazon/awssdk/codegen/poet/rules2/endpoint-provider-uri-cache-class.java @@ -9,12 +9,12 @@ import software.amazon.awssdk.awscore.endpoints.authscheme.SigV4aAuthScheme; import software.amazon.awssdk.core.exception.SdkClientException; import software.amazon.awssdk.endpoints.Endpoint; +import software.amazon.awssdk.endpoints.EndpointUrl; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.query.endpoints.QueryEndpointParams; import software.amazon.awssdk.services.query.endpoints.QueryEndpointProvider; import software.amazon.awssdk.utils.CompletableFutureUtils; import software.amazon.awssdk.utils.Validate; -import software.amazon.awssdk.utils.uri.SdkUri; @Generated("software.amazon.awssdk:codegen") @SdkInternalApi @@ -66,8 +66,8 @@ private static RuleResult endpointRule1(QueryEndpointParams params, String regio if (parsedArn != null) { return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create( - "https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -87,8 +87,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio if (params.useFipsEndpoint() == null && params.useDualStackEndpoint() != null && params.useDualStackEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create( - "https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -96,7 +95,7 @@ private static RuleResult endpointRule2(QueryEndpointParams params, RulePartitio } return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://" + params.endpointId() + ".query." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query").signingRegionSet(Arrays.asList("*")) @@ -110,7 +109,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useFipsEndpoint() != null && params.useFipsEndpoint() && params.useDualStackEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create("https://query-fips." + region + "." + partitionResult.dnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -119,7 +118,7 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio if (params.useDualStackEndpoint() != null && params.useDualStackEndpoint() && params.useFipsEndpoint() == null) { return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") @@ -130,15 +129,14 @@ private static RuleResult endpointRule6(QueryEndpointParams params, String regio && params.useFipsEndpoint()) { return RuleResult.endpoint(Endpoint .builder() - .url(SdkUri.getInstance().create( - "https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) + .endpointUrl(EndpointUrl.fromString("https://query-fips." + region + "." + partitionResult.dualStackDnsSuffix())) .putAttribute( AwsEndpointAttribute.AUTH_SCHEMES, Arrays.asList(SigV4aAuthScheme.builder().signingName("query") .signingRegionSet(Arrays.asList("*")).build())).build()); } return RuleResult.endpoint(Endpoint.builder() - .url(SdkUri.getInstance().create("https://query." + region + "." + partitionResult.dnsSuffix())).build()); + .endpointUrl(EndpointUrl.fromString("https://query." + region + "." + partitionResult.dnsSuffix())).build()); } return RuleResult.carryOn(); }