Add ability to generate named parametrrs in a version independent way
This commit is contained in:
parent
1311ded7de
commit
87ed00a002
|
@ -20,10 +20,7 @@ package ca.uhn.fhir.util;
|
|||
* #L%
|
||||
*/
|
||||
|
||||
import ca.uhn.fhir.context.BaseRuntimeChildDefinition;
|
||||
import ca.uhn.fhir.context.BaseRuntimeElementCompositeDefinition;
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.RuntimeResourceDefinition;
|
||||
import ca.uhn.fhir.context.*;
|
||||
import ca.uhn.fhir.model.primitive.StringDt;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
|
@ -107,6 +104,25 @@ public class ParametersUtil {
|
|||
addClientParameter(theContext, theValue, theParameters, paramChild, paramChildElem, theName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a paratemer value to a Parameters resource
|
||||
*
|
||||
* @param theContext The FhirContext
|
||||
* @param theParameters The Parameters resource
|
||||
* @param theName The parameter name
|
||||
* @param thePrimitiveDatatype The datatype, e.g. "string", or "uri"
|
||||
* @param theValue The value
|
||||
*/
|
||||
public static void addParameterToParameters(FhirContext theContext, IBaseParameters theParameters, String theName, String thePrimitiveDatatype, String theValue) {
|
||||
Validate.notBlank(thePrimitiveDatatype, "thePrimitiveDatatype must not be null or empty");
|
||||
|
||||
BaseRuntimeElementDefinition<?> datatypeDef = theContext.getElementDefinition(thePrimitiveDatatype);
|
||||
IPrimitiveType<?> value = (IPrimitiveType<?>) datatypeDef.newInstance();
|
||||
value.setValueAsString(theValue);
|
||||
|
||||
addParameterToParameters(theContext, theParameters, theName, value);
|
||||
}
|
||||
|
||||
private static IBase createParameterRepetition(FhirContext theContext, IBaseResource theTargetResource, BaseRuntimeChildDefinition paramChild, BaseRuntimeElementCompositeDefinition<?> paramChildElem, String theName) {
|
||||
IBase parameter = paramChildElem.newInstance();
|
||||
paramChild.getMutator().addValue(theTargetResource, parameter);
|
||||
|
|
|
@ -3,14 +3,29 @@ package ca.uhn.fhir.util;
|
|||
import ca.uhn.fhir.context.FhirContext;
|
||||
import org.hamcrest.MatcherAssert;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.hl7.fhir.instance.model.api.IBaseParameters;
|
||||
import org.hl7.fhir.r4.model.Parameters;
|
||||
import org.hl7.fhir.r4.model.StringType;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class ParametersUtilR4Test {
|
||||
|
||||
@Test
|
||||
public void testCreateParameters() {
|
||||
FhirContext ctx = FhirContext.forR4();
|
||||
|
||||
IBaseParameters parameters = ParametersUtil.newInstance(ctx);
|
||||
ParametersUtil.addParameterToParameters(ctx, parameters, "someString", "string", "someStringValue");
|
||||
ParametersUtil.addParameterToParameters(ctx, parameters, "someDate", "date", "2019");
|
||||
|
||||
String encoded = ctx.newJsonParser().encodeResourceToString(parameters);
|
||||
assertEquals("{\"resourceType\":\"Parameters\",\"parameter\":[{\"name\":\"someString\",\"valueString\":\"someStringValue\"},{\"name\":\"someDate\",\"valueDate\":\"2019\"}]}", encoded);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetValues(){
|
||||
Parameters p = new Parameters();
|
||||
|
|
|
@ -43,6 +43,11 @@
|
|||
A Google Analytics script fragment was leftover in the hapi-fhir-jpaserver
|
||||
example and starter projects. Thanks to Patrick Werner for removing these!
|
||||
</action>
|
||||
<action type="add">
|
||||
ParametersUtil now has a utility method that can be used to add parameter values
|
||||
using the string name of the datatype (e.g. "dateTime") in order to help
|
||||
building Parameters resources in a version-independent way.
|
||||
</action>
|
||||
</release>
|
||||
<release version="3.7.0" date="2019-02-06" description="Gale">
|
||||
<action type="add">
|
||||
|
|
Loading…
Reference in New Issue