add instantiateBackboneElement method to TerserUtil (#5060)
* add instantiateBackboneElement method to TerserUtil * changelog
This commit is contained in:
parent
a93d06c25f
commit
a87321a227
|
@ -29,6 +29,7 @@ import ca.uhn.fhir.i18n.Msg;
|
||||||
import org.apache.commons.lang3.Validate;
|
import org.apache.commons.lang3.Validate;
|
||||||
import org.apache.commons.lang3.tuple.Triple;
|
import org.apache.commons.lang3.tuple.Triple;
|
||||||
import org.hl7.fhir.instance.model.api.IBase;
|
import org.hl7.fhir.instance.model.api.IBase;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
|
||||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||||
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
import org.hl7.fhir.instance.model.api.IPrimitiveType;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -656,6 +657,20 @@ public final class TerserUtil {
|
||||||
return (T) def.newInstance(theConstructorParam);
|
return (T) def.newInstance(theConstructorParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new BackboneElement.
|
||||||
|
*
|
||||||
|
* @param theFhirContext Context holding resource definition
|
||||||
|
* @param theTargetResourceName Name of the resource in the context
|
||||||
|
* @param theTargetFieldName Name of the backbone element in the resource
|
||||||
|
* @return Returns a new instance of the element
|
||||||
|
*/
|
||||||
|
public static IBaseBackboneElement instantiateBackboneElement(FhirContext theFhirContext, String theTargetResourceName, String theTargetFieldName) {
|
||||||
|
BaseRuntimeElementDefinition<?> targetParentElementDefinition = theFhirContext.getResourceDefinition(theTargetResourceName);
|
||||||
|
BaseRuntimeChildDefinition childDefinition = targetParentElementDefinition.getChildByName(theTargetFieldName);
|
||||||
|
return (IBaseBackboneElement) childDefinition.getChildByName(theTargetFieldName).newInstance();
|
||||||
|
}
|
||||||
|
|
||||||
private static void clear(List<IBase> values) {
|
private static void clear(List<IBase> values) {
|
||||||
if (values == null) {
|
if (values == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
type: add
|
||||||
|
issue: 5061
|
||||||
|
title: "Added a utility method to the TerserUtil class to facilitate the creation of new instances of BackboneElement classes."
|
|
@ -2,6 +2,7 @@ package ca.uhn.fhir.util;
|
||||||
|
|
||||||
import ca.uhn.fhir.context.FhirContext;
|
import ca.uhn.fhir.context.FhirContext;
|
||||||
import ca.uhn.fhir.context.RuntimeResourceDefinition;
|
import ca.uhn.fhir.context.RuntimeResourceDefinition;
|
||||||
|
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
|
||||||
import org.hl7.fhir.r4.model.Address;
|
import org.hl7.fhir.r4.model.Address;
|
||||||
import org.hl7.fhir.r4.model.DateTimeType;
|
import org.hl7.fhir.r4.model.DateTimeType;
|
||||||
import org.hl7.fhir.r4.model.DateType;
|
import org.hl7.fhir.r4.model.DateType;
|
||||||
|
@ -579,4 +580,12 @@ class TerserUtilTest {
|
||||||
assertNotNull(TerserUtil.newResource(ourFhirContext, "Patient", null));
|
assertNotNull(TerserUtil.newResource(ourFhirContext, "Patient", null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testInstantiateBackboneElement() {
|
||||||
|
IBaseBackboneElement patientContact = TerserUtil.instantiateBackboneElement(ourFhirContext, "Patient", "contact");
|
||||||
|
assertNotNull(patientContact);
|
||||||
|
assertEquals(Patient.ContactComponent.class, patientContact.getClass());
|
||||||
|
assertTrue(patientContact.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue