diff --git a/src/CodeGenerator/src/Generator/RequestSerializer/RestXmlSerializer.php b/src/CodeGenerator/src/Generator/RequestSerializer/RestXmlSerializer.php index 9390d93aa..26473bee3 100644 --- a/src/CodeGenerator/src/Generator/RequestSerializer/RestXmlSerializer.php +++ b/src/CodeGenerator/src/Generator/RequestSerializer/RestXmlSerializer.php @@ -141,11 +141,12 @@ private function dumpXmlShape(Member $member, Shape $shape, string $output, stri switch ($shape->getType()) { case 'blob': case 'string': + return $this->dumpXmlShapeString($member, $shape, $output, $input); case 'integer': case 'long': case 'float': case 'double': - return $this->dumpXmlShapeString($member, $shape, $output, $input); + return $this->dumpXmlShapeNumeric($member, $output, $input); case 'boolean': return $this->dumpXmlShapeBoolean($member, $output, $input); } @@ -230,6 +231,23 @@ private function dumpXmlShapeString(Member $member, Shape $shape, string $output return strtr($body, $replacements); } + private function dumpXmlShapeNumeric(Member $member, string $output, string $input): string + { + if ($member instanceof StructureMember && $member->isXmlAttribute()) { + $body = 'OUTPUT->setAttribute(NODE_NAME, (string) INPUT);'; + } else { + $body = 'OUTPUT->appendChild($document->createElement(NODE_NAME, (string) INPUT));'; + } + + $replacements = [ + 'INPUT' => $input, + 'OUTPUT' => $output, + 'NODE_NAME' => var_export($member->getLocationName() ?? ($member instanceof StructureMember ? $member->getName() : 'member'), true), + ]; + + return strtr($body, $replacements); + } + private function dumpXmlShapeBoolean(Member $member, string $output, string $input): string { if ($member instanceof StructureMember && $member->isXmlAttribute()) { diff --git a/src/Service/CloudFront/src/ValueObject/Paths.php b/src/Service/CloudFront/src/ValueObject/Paths.php index 8426bc59b..8a757fe6d 100644 --- a/src/Service/CloudFront/src/ValueObject/Paths.php +++ b/src/Service/CloudFront/src/ValueObject/Paths.php @@ -66,7 +66,7 @@ public function requestBody(\DOMElement $node, \DOMDocument $document): void if (null === $v = $this->quantity) { throw new InvalidArgument(sprintf('Missing parameter "Quantity" for "%s". The value cannot be null.', __CLASS__)); } - $node->appendChild($document->createElement('Quantity', $v)); + $node->appendChild($document->createElement('Quantity', (string) $v)); if (null !== $v = $this->items) { $node->appendChild($nodeList = $document->createElement('Items')); foreach ($v as $item) { diff --git a/src/Service/Route53/src/ValueObject/ResourceRecordSet.php b/src/Service/Route53/src/ValueObject/ResourceRecordSet.php index 584a036b5..b043c093b 100644 --- a/src/Service/Route53/src/ValueObject/ResourceRecordSet.php +++ b/src/Service/Route53/src/ValueObject/ResourceRecordSet.php @@ -541,7 +541,7 @@ public function requestBody(\DOMElement $node, \DOMDocument $document): void $node->appendChild($document->createElement('SetIdentifier', $v)); } if (null !== $v = $this->weight) { - $node->appendChild($document->createElement('Weight', $v)); + $node->appendChild($document->createElement('Weight', (string) $v)); } if (null !== $v = $this->region) { if (!ResourceRecordSetRegion::exists($v)) { @@ -564,7 +564,7 @@ public function requestBody(\DOMElement $node, \DOMDocument $document): void $node->appendChild($document->createElement('MultiValueAnswer', $v ? 'true' : 'false')); } if (null !== $v = $this->ttl) { - $node->appendChild($document->createElement('TTL', $v)); + $node->appendChild($document->createElement('TTL', (string) $v)); } if (null !== $v = $this->resourceRecords) { $node->appendChild($nodeList = $document->createElement('ResourceRecords')); diff --git a/src/Service/S3/src/ValueObject/CORSRule.php b/src/Service/S3/src/ValueObject/CORSRule.php index cd5bda75d..7ba5f3c61 100644 --- a/src/Service/S3/src/ValueObject/CORSRule.php +++ b/src/Service/S3/src/ValueObject/CORSRule.php @@ -152,7 +152,7 @@ public function requestBody(\DOMElement $node, \DOMDocument $document): void } } if (null !== $v = $this->maxAgeSeconds) { - $node->appendChild($document->createElement('MaxAgeSeconds', $v)); + $node->appendChild($document->createElement('MaxAgeSeconds', (string) $v)); } } } diff --git a/src/Service/S3/src/ValueObject/CompletedPart.php b/src/Service/S3/src/ValueObject/CompletedPart.php index 6bea95461..8822446cd 100644 --- a/src/Service/S3/src/ValueObject/CompletedPart.php +++ b/src/Service/S3/src/ValueObject/CompletedPart.php @@ -139,7 +139,7 @@ public function requestBody(\DOMElement $node, \DOMDocument $document): void $node->appendChild($document->createElement('ChecksumSHA256', $v)); } if (null !== $v = $this->partNumber) { - $node->appendChild($document->createElement('PartNumber', $v)); + $node->appendChild($document->createElement('PartNumber', (string) $v)); } } }