changed toListOfResources to send IBaseResource as Type instead of null

This commit is contained in:
patrick-werner 2019-04-26 12:55:18 +02:00
parent a5e7ea16ae
commit 7f45660a15
2 changed files with 45 additions and 31 deletions

View File

@ -51,7 +51,7 @@ public class BundleUtil {
BaseRuntimeChildDefinition relChild = relDef.getChildByName("relation"); BaseRuntimeChildDefinition relChild = relDef.getChildByName("relation");
List<IBase> relValues = relChild.getAccessor().getValues(nextLink); List<IBase> relValues = relChild.getAccessor().getValues(nextLink);
for (IBase next : relValues) { for (IBase next : relValues) {
IPrimitiveType<?> nextValue = (IPrimitiveType<?>)next; IPrimitiveType<?> nextValue = (IPrimitiveType<?>) next;
if (theLinkRelation.equals(nextValue.getValueAsString())) { if (theLinkRelation.equals(nextValue.getValueAsString())) {
isRightRel = true; isRightRel = true;
} }
@ -65,7 +65,7 @@ public class BundleUtil {
BaseRuntimeChildDefinition urlChild = linkDef.getChildByName("url"); BaseRuntimeChildDefinition urlChild = linkDef.getChildByName("url");
List<IBase> values = urlChild.getAccessor().getValues(nextLink); List<IBase> values = urlChild.getAccessor().getValues(nextLink);
for (IBase nextUrl : values) { for (IBase nextUrl : values) {
IPrimitiveType<?> nextValue = (IPrimitiveType<?>)nextUrl; IPrimitiveType<?> nextValue = (IPrimitiveType<?>) nextUrl;
if (isNotBlank(nextValue.getValueAsString())) { if (isNotBlank(nextValue.getValueAsString())) {
return nextValue.getValueAsString(); return nextValue.getValueAsString();
} }
@ -98,7 +98,7 @@ public class BundleUtil {
for (IBase nextEntryValue : requestChild.getAccessor().getValues(nextEntry)) { for (IBase nextEntryValue : requestChild.getAccessor().getValues(nextEntry)) {
for (IBase nextUrlValue : urlChild.getAccessor().getValues(nextEntryValue)) { for (IBase nextUrlValue : urlChild.getAccessor().getValues(nextEntryValue)) {
url = ((IPrimitiveType<String>)nextUrlValue).getValue(); url = ((IPrimitiveType<String>) nextUrlValue).getValue();
} }
} }
@ -151,7 +151,7 @@ public class BundleUtil {
BaseRuntimeChildDefinition resourceChild = entryChildElem.getChildByName("resource"); BaseRuntimeChildDefinition resourceChild = entryChildElem.getChildByName("resource");
BaseRuntimeChildDefinition requestChild = entryChildElem.getChildByName("request"); BaseRuntimeChildDefinition requestChild = entryChildElem.getChildByName("request");
BaseRuntimeElementCompositeDefinition<?> requestElem = (BaseRuntimeElementCompositeDefinition<?>) requestChild.getChildByName("request"); BaseRuntimeElementCompositeDefinition<?> requestElem = (BaseRuntimeElementCompositeDefinition<?>) requestChild.getChildByName("request");
BaseRuntimeChildDefinition urlChild = requestElem.getChildByName("url"); BaseRuntimeChildDefinition urlChild = requestElem.getChildByName("url");
BaseRuntimeChildDefinition methodChild = requestElem.getChildByName("method"); BaseRuntimeChildDefinition methodChild = requestElem.getChildByName("method");
@ -165,10 +165,10 @@ public class BundleUtil {
} }
for (IBase nextRequest : requestChild.getAccessor().getValues(nextEntry)) { for (IBase nextRequest : requestChild.getAccessor().getValues(nextEntry)) {
for (IBase nextUrl : urlChild.getAccessor().getValues(nextRequest)) { for (IBase nextUrl : urlChild.getAccessor().getValues(nextRequest)) {
url = ((IPrimitiveType<?>)nextUrl).getValueAsString(); url = ((IPrimitiveType<?>) nextUrl).getValueAsString();
} }
for (IBase nextUrl : methodChild.getAccessor().getValues(nextRequest)) { for (IBase nextUrl : methodChild.getAccessor().getValues(nextRequest)) {
String methodString = ((IPrimitiveType<?>)nextUrl).getValueAsString(); String methodString = ((IPrimitiveType<?>) nextUrl).getValueAsString();
if (isNotBlank(methodString)) { if (isNotBlank(methodString)) {
requestType = RequestTypeEnum.valueOf(methodString); requestType = RequestTypeEnum.valueOf(methodString);
} }
@ -190,7 +190,7 @@ public class BundleUtil {
* Extract all of the resources from a given bundle * Extract all of the resources from a given bundle
*/ */
public static List<IBaseResource> toListOfResources(FhirContext theContext, IBaseBundle theBundle) { public static List<IBaseResource> toListOfResources(FhirContext theContext, IBaseBundle theBundle) {
return toListOfResourcesOfType(theContext, theBundle, null); return toListOfResourcesOfType(theContext, theBundle, IBaseResource.class);
} }
/** /**
@ -209,36 +209,36 @@ public class BundleUtil {
BaseRuntimeChildDefinition resourceChild = entryChildElem.getChildByName("resource"); BaseRuntimeChildDefinition resourceChild = entryChildElem.getChildByName("resource");
for (IBase nextEntry : entries) { for (IBase nextEntry : entries) {
for (IBase next : resourceChild.getAccessor().getValues(nextEntry)) { for (IBase next : resourceChild.getAccessor().getValues(nextEntry)) {
if (!theTypeToInclude.isAssignableFrom(next.getClass())) { if (theTypeToInclude.isAssignableFrom(next.getClass())) {
continue; retVal.add((T) next);
} }
retVal.add((T) next);
} }
} }
return retVal; return retVal;
} }
public static class BundleEntryParts public static class BundleEntryParts {
{
private final RequestTypeEnum myRequestType; private final RequestTypeEnum myRequestType;
private final IBaseResource myResource; private final IBaseResource myResource;
private final String myUrl; private final String myUrl;
BundleEntryParts(RequestTypeEnum theRequestType, String theUrl, IBaseResource theResource) { BundleEntryParts(RequestTypeEnum theRequestType, String theUrl, IBaseResource theResource) {
super(); super();
myRequestType = theRequestType; myRequestType = theRequestType;
myUrl = theUrl; myUrl = theUrl;
myResource = theResource; myResource = theResource;
} }
public RequestTypeEnum getRequestType() { public RequestTypeEnum getRequestType() {
return myRequestType; return myRequestType;
} }
public IBaseResource getResource() { public IBaseResource getResource() {
return myResource; return myResource;
} }
public String getUrl() { public String getUrl() {
return myUrl; return myUrl;
} }
} }
} }

View File

@ -2,10 +2,13 @@ package ca.uhn.fhir.util;
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import org.hl7.fhir.r4.model.Bundle; import org.hl7.fhir.r4.model.Bundle;
import org.hl7.fhir.r4.model.Patient;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import java.util.List;
public class BundleUtilTest { public class BundleUtilTest {
private static FhirContext ourCtx = FhirContext.forR4(); private static FhirContext ourCtx = FhirContext.forR4();
@ -38,6 +41,17 @@ public class BundleUtilTest {
Assert.assertEquals(null, BundleUtil.getTotal(ourCtx, b)); Assert.assertEquals(null, BundleUtil.getTotal(ourCtx, b));
} }
@Test
public void toListOfResourcesOfTypeTest() {
Bundle bundle = new Bundle();
for (int i = 0; i < 5; i++) {
bundle.addEntry(new Bundle.BundleEntryComponent().setResource(new Patient()));
}
List<Patient> list = BundleUtil.toListOfResourcesOfType(ourCtx, bundle, Patient.class);
Assert.assertEquals(5, list.size());
}
@AfterClass @AfterClass
public static void afterClassClearContext() { public static void afterClassClearContext() {
TestUtil.clearAllStaticFieldsForUnitTest(); TestUtil.clearAllStaticFieldsForUnitTest();