Skip to content

Commit e782d8d

Browse files
committed
fix: some fixes for Map generation
1 parent f8dc533 commit e782d8d

File tree

3 files changed

+64
-7
lines changed

3 files changed

+64
-7
lines changed

pkg/api/legacy_io_suffix.go

+1
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ var legacyIOSuffixed = IoSuffix{
187187
"DatabaseInput": struct{}{},
188188
"PartitionInput": struct{}{},
189189
"ConnectionInput": struct{}{},
190+
"DQTransformOutput": struct{}{},
190191
},
191192

192193
"Glacier": {

pkg/generate/code/set_resource.go

+30-4
Original file line numberDiff line numberDiff line change
@@ -1995,6 +1995,28 @@ func setResourceForSlice(
19951995
targetShape.MemberRef.Shape,
19961996
indentLevel+1,
19971997
)
1998+
if sourceShape.MemberRef.Shape.Type == "list" &&
1999+
!sourceShape.MemberRef.Shape.MemberRef.Shape.IsEnum() &&
2000+
sourceShape.MemberRef.Shape.MemberRef.Shape.Type == "string" {
2001+
out += fmt.Sprintf("%s\t%s = aws.StringSlice(%s)\n", indent, elemVarName, iterVarName)
2002+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
2003+
out += fmt.Sprintf("%s}\n", indent)
2004+
return out
2005+
} else if sourceShape.MemberRef.Shape.Type == "map" &&
2006+
!sourceShape.MemberRef.Shape.ValueRef.Shape.IsEnum() &&
2007+
sourceShape.MemberRef.Shape.KeyRef.Shape.Type == "string" {
2008+
if sourceShape.MemberRef.Shape.ValueRef.Shape.Type == "string" {
2009+
out += fmt.Sprintf("%s\t%s = aws.StringMap(%s)\n", indent, elemVarName, iterVarName)
2010+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
2011+
out += fmt.Sprintf("%s}\n", indent)
2012+
return out
2013+
} else if sourceShape.MemberRef.Shape.ValueRef.Shape.Type == "boolean" {
2014+
out += fmt.Sprintf("%s\t%s = aws.BoolMap(%s)\n", indent, elemVarName, iterVarName)
2015+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
2016+
out += fmt.Sprintf("%s}\n", indent)
2017+
return out
2018+
}
2019+
}
19982020
// We may have some instructions to specially handle this field by
19992021
// accessing a different Output shape member.
20002022
//
@@ -2118,6 +2140,7 @@ func setResourceForMap(
21182140
out += fmt.Sprintf("%s}\n", indent)
21192141
return out
21202142
} else if sourceShape.ValueRef.Shape.Type == "map" &&
2143+
!sourceShape.ValueRef.Shape.ValueRef.Shape.IsEnum() &&
21212144
sourceShape.ValueRef.Shape.KeyRef.Shape.Type == "string" {
21222145
if sourceShape.ValueRef.Shape.ValueRef.Shape.Type == "string" {
21232146
out += fmt.Sprintf("%s\t%s[%s] = aws.StringMap(%s)\n", indent, targetVarName, keyVarName, valIterVarName)
@@ -2155,7 +2178,9 @@ func setResourceForMap(
21552178
case "structure", "list", "map":
21562179
break
21572180
default:
2158-
addressOfVar = "&"
2181+
if !sourceShape.ValueRef.Shape.IsEnum() {
2182+
addressOfVar = "&"
2183+
}
21592184
}
21602185
// f0[f0key] = f0val
21612186
out += fmt.Sprintf("%s\t%s[%s] = %s%s\n", indent, targetVarName, keyVarName, addressOfVar, valVarName)
@@ -2183,17 +2208,17 @@ func setResourceForScalar(
21832208
if shape.Type == "timestamp" {
21842209
setTo = "&metav1.Time{*" + sourceVar + "}"
21852210
}
2186-
2211+
21872212
targetVar = strings.TrimPrefix(targetVar, ".")
21882213
address := ""
21892214

2190-
if (shape.Type == "long" && isList) || (shape.Type == "string" && isUnion) {
2215+
if (shape.Type == "long" && isList) || (shape.Type == "string" && isUnion) {
21912216
address = "&"
21922217
}
21932218

21942219
intOrFloat := map[string]string{
21952220
"integer": "int",
2196-
"float": "float",
2221+
"float": "float",
21972222
}
21982223

21992224
targetVar = strings.TrimPrefix(targetVar, ".")
@@ -2320,6 +2345,7 @@ func setResourceAdaptPrimitiveCollection(shape *awssdkmodel.Shape, qualifiedTarg
23202345

23212346
}
23222347
} else if shape.Type == "map" &&
2348+
!shape.ValueRef.Shape.IsEnum() &&
23232349
shape.KeyRef.Shape.Type == "string" &&
23242350
(shape.ValueRef.Shape.Type == "string" || shape.ValueRef.Shape.Type == "boolean" || shape.ValueRef.Shape.Type == "long" || shape.ValueRef.Shape.Type == "double") {
23252351
if shape.ValueRef.Shape.Type == "string" {

pkg/generate/code/set_sdk.go

+33-3
Original file line numberDiff line numberDiff line change
@@ -1289,6 +1289,28 @@ func setSDKForSlice(
12891289
if targetShape.MemberRef.Shape.RealType == "union" {
12901290
targetShape.MemberRef.Shape.Type = "union"
12911291
}
1292+
if targetShape.MemberRef.Shape.Type == "list" &&
1293+
targetShape.MemberRef.Shape.MemberRef.Shape.Type == "string" &&
1294+
!targetShape.MemberRef.Shape.MemberRef.Shape.IsEnum() {
1295+
out += fmt.Sprintf("%s\t%s := aws.ToStringSlice(%s)\n", indent, elemVarName, iterVarName)
1296+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
1297+
out += fmt.Sprintf("%s}\n", indent)
1298+
return out
1299+
} else if targetShape.MemberRef.Shape.Type == "map" &&
1300+
!targetShape.MemberRef.Shape.ValueRef.Shape.IsEnum() &&
1301+
targetShape.MemberRef.Shape.KeyRef.Shape.Type == "string" {
1302+
if targetShape.MemberRef.Shape.ValueRef.Shape.Type == "string" {
1303+
out += fmt.Sprintf("%s\t%s := aws.ToStringMap(%s)\n", indent, elemVarName, iterVarName)
1304+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
1305+
out += fmt.Sprintf("%s}\n", indent)
1306+
return out
1307+
} else if targetShape.ValueRef.Shape.ValueRef.Shape.Type == "boolean" {
1308+
out += fmt.Sprintf("%s\t%s := aws.ToBoolMap(%s)\n", indent, elemVarName, iterVarName)
1309+
out += fmt.Sprintf("%s\t%s = append(%s, %s)\n", indent, targetVarName, targetVarName, elemVarName)
1310+
out += fmt.Sprintf("%s}\n", indent)
1311+
return out
1312+
}
1313+
}
12921314
// f0elem := string{}
12931315
out += varEmptyConstructorSDKType(
12941316
cfg, r,
@@ -1368,7 +1390,8 @@ func setSDKForMap(
13681390
out += fmt.Sprintf("%s}\n", indent)
13691391
return out
13701392
} else if targetShape.ValueRef.Shape.Type == "map" &&
1371-
targetShape.ValueRef.Shape.KeyRef.Shape.Type == "string" {
1393+
targetShape.ValueRef.Shape.KeyRef.Shape.Type == "string" &&
1394+
!targetShape.ValueRef.Shape.ValueRef.Shape.IsEnum() {
13721395
if targetShape.ValueRef.Shape.ValueRef.Shape.Type == "string" {
13731396
out += fmt.Sprintf("%s\t%s[%s] = aws.ToStringMap(%s)\n", indent, targetVarName, keyVarName, valIterVarName)
13741397
out += fmt.Sprintf("%s}\n", indent)
@@ -1458,9 +1481,15 @@ func varEmptyConstructorSDKType(
14581481
if goType == "map[string][]*string" || goType == "map[string][]*int32" || goType == "map[string][]*int64" {
14591482
goType = "map[string][]" + strings.TrimPrefix(goType, "map[string][]*")
14601483
}
1484+
if shape.ValueRef.Shape.IsEnum() {
1485+
goType = fmt.Sprintf("map[string]svcsdktypes.%s", shape.ValueRef.ShapeName)
1486+
}
14611487
out += fmt.Sprintf("%s%s := %s{}\n", indent, varName, goType)
14621488

14631489
default:
1490+
if shape.IsEnum() {
1491+
goType = fmt.Sprintf("svcsdktypes.%s", shape.ShapeName)
1492+
}
14641493
// var f0 string
14651494
out += fmt.Sprintf("%svar %s %s\n", indent, varName, goType)
14661495
}
@@ -1636,8 +1665,9 @@ func setSDKAdaptiveResourceCollection(
16361665
out += fmt.Sprintf("%s\t%s.%s = aws.ToInt64Slice(%s)\n", indent, targetVarName, memberName, sourceAdaptedVarName)
16371666

16381667
}
1639-
} else if shape.Type == "map" &&
1668+
} else if shape.Type == "map" &&
16401669
shape.KeyRef.Shape.Type == "string" &&
1670+
!shape.ValueRef.Shape.IsEnum() &&
16411671
isPrimitiveType(shape.ValueRef.Shape.Type) {
16421672
mapType := resolveAWSMapValueType(shape.ValueRef.Shape.Type)
16431673
out += fmt.Sprintf("%s\t%s.%s = aws.To%sMap(%s)\n", indent, targetVarName, memberName, mapType, sourceAdaptedVarName)
@@ -1774,4 +1804,4 @@ func setSDKForUnion(
17741804
}
17751805

17761806
return out
1777-
}
1807+
}

0 commit comments

Comments
 (0)