You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When serializing a Binary resource to XML a Null reference is thrown.
This is due to the children() function returning all the children without considering the version of fhir being processed. Data and Content hold the same data, but are apprpriate in different versions, and the ReadBinaryFataFromMessage in the HttpContentParsers sets both.
Hence when hit in the PocoElementNode constructor the element definition for one of them isn't found and crashes.
Note: Create does not do this... as it doesn't detect that the resource type was for a Binary!
(so create is done using the resource format rather than a binary stream)
To Reproduce
Steps to reproduce the behavior:
[TestMethod]publicvoidSerializeBinaryXml(){// This test verifies that the serialization of a resource with changed between// fhir versions can be serialized correctlyvarbinResource=new Binary
{ContentType="text/plain",// yes this is the wrong field for R4 (should use data there)Content= System.Text.Encoding.UTF8.GetBytes("some random content")};varxml=new FhirXmlSerializer().SerializeToString(binResource);// the above throws a null reference exception// once that passes probably want to actually check the content that came through// Assert.AreEqual(metaXml, xml);}
Use this unit test to check that the serialization doesn't throw the issue, but would be preferable if the update functionality doesn't set both fields
Better to udpate TestCreatingBinaryResourceHttpClient to also check the fields are appropriate
varbinary=new Binary(){Data=arr,ContentType="image/png"};
Assert.IsNull(binary.Content);varresult=await client.CreateAsync(binary);
Assert.IsNull(result.Content);varxml=new FhirXmlSerializer().SerializeToString(result);result=await client.UpdateAsync(result);
Assert.IsNull(result.Content);// Fails herexml=new FhirXmlSerializer().SerializeToString(result);// or here due to the content being not null
Expected behavior
Unit test should pass, and XML is created correctly.
Version used:
FHIR Version: R4B
Version: 5.8.1
Additional context
The only workaround is to request the resource response format in the client settings.
clientFhir.Settings.BinaryReceivePreference = BinaryTransferBehaviour.UseResource;
The text was updated successfully, but these errors were encountered:
Describe the bug
When serializing a Binary resource to XML a Null reference is thrown.
This is due to the children() function returning all the children without considering the version of fhir being processed.
Data
andContent
hold the same data, but are apprpriate in different versions, and the ReadBinaryFataFromMessage in the HttpContentParsers sets both.firely-net-sdk/src/Hl7.Fhir.Base/Rest/HttpContentParsers.cs
Line 203 in 963660e
Hence when hit in the PocoElementNode constructor the element definition for one of them isn't found and crashes.
Note: Create does not do this... as it doesn't detect that the resource type was for a Binary!
(so create is done using the resource format rather than a binary stream)
To Reproduce
Steps to reproduce the behavior:
Use this unit test to check that the serialization doesn't throw the issue, but would be preferable if the update functionality doesn't set both fields
Better to udpate
TestCreatingBinaryResourceHttpClient
to also check the fields are appropriateExpected behavior
Unit test should pass, and XML is created correctly.
Version used:
Additional context
The only workaround is to request the resource response format in the client settings.
clientFhir.Settings.BinaryReceivePreference = BinaryTransferBehaviour.UseResource;
The text was updated successfully, but these errors were encountered: