From a5a0b8f90b25d4c920542e923a30926408905876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez=20Moreno?= Date: Mon, 13 Apr 2026 14:48:03 +0200 Subject: [PATCH 1/2] Refs #23437. Set default values before deserialize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González Moreno --- .../fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg b/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg index 58e588fb..a7c5b1de 100644 --- a/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg +++ b/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg @@ -117,6 +117,18 @@ eProsima_user_DllExport void deserialize( using namespace $struct.namespace$; $endif$ + $struct.allMembers : { member | + $if(member.annotationDefault)$ + data.$member.name$({$member.annotationDefaultValue$\}); + $elseif(!member.annotationOptional && !member.annotationExternal)$ + $if(member.typecode.initialValue)$ + data.$member.name$({$member.typecode.initialValue$\}); + $elseif(member.typecode.isStringType || member.typecode.isWStringType)$ + data.$member.name$({\}); + $endif$ + $endif$ + }; separator="\n"$ + cdr.deserialize_type(eprosima::fastcdr::CdrVersion::XCDRv2 == cdr.get_cdr_version() ? $if(struct.annotationFinal)$eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR2$elseif(struct.annotationAppendable)$eprosima::fastcdr::EncodingAlgorithmFlag::DELIMIT_CDR2$elseif(struct.annotationMutable)$eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR2$endif$ : $if(struct.annotationFinal || struct.annotationAppendable)$eprosima::fastcdr::EncodingAlgorithmFlag::PLAIN_CDR$elseif(struct.annotationMutable)$eprosima::fastcdr::EncodingAlgorithmFlag::PL_CDR$endif$, From 6c7e32154aa89b640259ae413f8134f7338000fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ricardo=20Gonz=C3=A1lez=20Moreno?= Date: Tue, 28 Apr 2026 12:29:09 +0200 Subject: [PATCH 2/2] Reset optionals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Ricardo González Moreno --- .../eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg b/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg index a7c5b1de..0e7f30df 100644 --- a/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg +++ b/src/main/java/com/eprosima/fastdds/idl/templates/TypesCdrAuxHeaderImpl.stg @@ -120,7 +120,9 @@ eProsima_user_DllExport void deserialize( $struct.allMembers : { member | $if(member.annotationDefault)$ data.$member.name$({$member.annotationDefaultValue$\}); - $elseif(!member.annotationOptional && !member.annotationExternal)$ + $elseif(member.annotationOptional)$ + data.$member.name$().reset(); + $elseif(!member.annotationExternal)$ $if(member.typecode.initialValue)$ data.$member.name$({$member.typecode.initialValue$\}); $elseif(member.typecode.isStringType || member.typecode.isWStringType)$