Skip to content

Commit

Permalink
fix(client-s3): remove int validation of object size type
Browse files Browse the repository at this point in the history
  • Loading branch information
AllanZhengYP committed Sep 10, 2021
1 parent a3e3927 commit 62dcfc4
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 3 deletions.
6 changes: 3 additions & 3 deletions clients/client-s3/protocols/Aws_restXml.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13814,7 +13814,7 @@ const deserializeAws_restXml_Object = (output: any, context: __SerdeContext): _O
contents.ETag = __expectString(output["ETag"]);
}
if (output["Size"] !== undefined) {
contents.Size = __strictParseInt32(output["Size"]) as number;
contents.Size = __strictParseLong(output["Size"]) as number;
}
if (output["StorageClass"] !== undefined) {
contents.StorageClass = __expectString(output["StorageClass"]);
Expand Down Expand Up @@ -13902,7 +13902,7 @@ const deserializeAws_restXmlObjectVersion = (output: any, context: __SerdeContex
contents.ETag = __expectString(output["ETag"]);
}
if (output["Size"] !== undefined) {
contents.Size = __strictParseInt32(output["Size"]) as number;
contents.Size = __strictParseLong(output["Size"]) as number;
}
if (output["StorageClass"] !== undefined) {
contents.StorageClass = __expectString(output["StorageClass"]);
Expand Down Expand Up @@ -14004,7 +14004,7 @@ const deserializeAws_restXmlPart = (output: any, context: __SerdeContext): Part
contents.ETag = __expectString(output["ETag"]);
}
if (output["Size"] !== undefined) {
contents.Size = __strictParseInt32(output["Size"]) as number;
contents.Size = __strictParseLong(output["Size"]) as number;
}
return contents;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
/*
* Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

package software.amazon.smithy.aws.typescript.codegen;

import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;
import software.amazon.smithy.build.PluginContext;
import software.amazon.smithy.model.Model;
import software.amazon.smithy.model.shapes.LongShape;
import software.amazon.smithy.model.shapes.ShapeId;
import software.amazon.smithy.typescript.codegen.TypeScriptSettings;
import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration;
import software.amazon.smithy.utils.MapUtils;
import software.amazon.smithy.utils.OptionalUtils;
import software.amazon.smithy.utils.SetUtils;
import software.amazon.smithy.utils.SmithyInternalApi;

/**
* Transform the S3 object size member from an integer to a long.
*/
@SmithyInternalApi
public final class AddS3ObjectSizeMemberShapeType implements TypeScriptIntegration {
private static final Logger LOGGER = Logger.getLogger(AddS3ObjectSizeMemberShapeType.class.getName());

private static final Map<ShapeId, Set<ShapeId>> SERVICE_TO_SHAPE_MAP = MapUtils.of(
ShapeId.from("com.amazonaws.s3#AmazonS3"), SetUtils.of(
ShapeId.from("com.amazonaws.s3#Size")
)
);

@Override
public byte getOrder() {
// This integration should happen before other integrations that rely on the presence of this trait
return -60;
}

@Override
public Model preprocessModel(PluginContext context, TypeScriptSettings settings) {
Model model = context.getModel();
ShapeId serviceId = settings.getService();
if (!SERVICE_TO_SHAPE_MAP.containsKey(serviceId)) {
return model;
}

Set<ShapeId> shapeIds = SERVICE_TO_SHAPE_MAP.get(serviceId);

Model.Builder builder = model.toBuilder();
for (ShapeId shapeId : shapeIds) {
OptionalUtils.ifPresentOrElse(
model.getShape(shapeId),
(shape) -> {
if (shape.isLongShape()) {
LOGGER.warning("shape is already modeled as an LONG does not require backfill");
return;
}

builder.addShape(LongShape.builder()
.id(shape.getId())
.addTraits(shape.getAllTraits().values())
.build());
},
() -> LOGGER.warning("shape " + shapeId + " not found in " + serviceId + " model")
);
}

return builder.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ software.amazon.smithy.aws.typescript.codegen.AddSqsDependency
software.amazon.smithy.aws.typescript.codegen.AddBodyChecksumGeneratorDependency
software.amazon.smithy.aws.typescript.codegen.AddS3Config
software.amazon.smithy.aws.typescript.codegen.AddS3ControlDependency
software.amazon.smithy.aws.typescript.codegen.AddS3ObjectSizeMemberShapeType
software.amazon.smithy.aws.typescript.codegen.AddEventStreamHandlingDependency
software.amazon.smithy.aws.typescript.codegen.AddHttp2Dependency
software.amazon.smithy.aws.typescript.codegen.AddTranscribeStreamingDependency
Expand Down

0 comments on commit 62dcfc4

Please sign in to comment.