Apply the same fix we used for Dstu3 (#1367)
This commit is contained in:
commit
5b58cbec76
|
@ -0,0 +1,90 @@
|
|||
package ca.uhn.fhir.jpa.model.any;
|
||||
|
||||
import ca.uhn.fhir.context.FhirContext;
|
||||
import ca.uhn.fhir.context.FhirVersionEnum;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import org.hl7.fhir.instance.model.api.IBaseBundle;
|
||||
import org.hl7.fhir.instance.model.api.IBaseResource;
|
||||
|
||||
public class AnyBundle {
|
||||
private final FhirVersionEnum myFhirVersion;
|
||||
private final IBaseBundle myBundle;
|
||||
|
||||
public static AnyBundle fromFhirContext(FhirContext theFhirContext) {
|
||||
FhirVersionEnum version = theFhirContext.getVersion().getVersion();
|
||||
switch (version) {
|
||||
case DSTU2:
|
||||
return new AnyBundle(new ca.uhn.fhir.model.dstu2.resource.Bundle());
|
||||
case DSTU3:
|
||||
return new AnyBundle(new org.hl7.fhir.dstu3.model.Bundle());
|
||||
case R4:
|
||||
return new AnyBundle(new org.hl7.fhir.r4.model.Bundle());
|
||||
default:
|
||||
throw new UnsupportedOperationException(version + " not supported");
|
||||
}
|
||||
}
|
||||
|
||||
public AnyBundle(ca.uhn.fhir.model.dstu2.resource.Bundle theBundleR2) {
|
||||
myFhirVersion = FhirVersionEnum.DSTU2;
|
||||
myBundle = theBundleR2;
|
||||
}
|
||||
|
||||
public AnyBundle(org.hl7.fhir.dstu3.model.Bundle theBundleR3) {
|
||||
myFhirVersion = FhirVersionEnum.DSTU3;
|
||||
myBundle = theBundleR3;
|
||||
}
|
||||
|
||||
public AnyBundle(org.hl7.fhir.r4.model.Bundle theBundleR4) {
|
||||
myFhirVersion = FhirVersionEnum.R4;
|
||||
myBundle = theBundleR4;
|
||||
}
|
||||
|
||||
public static AnyBundle fromResource(IBaseResource theBundle) {
|
||||
if (theBundle instanceof ca.uhn.fhir.model.dstu2.resource.Bundle) {
|
||||
return new AnyBundle((ca.uhn.fhir.model.dstu2.resource.Bundle) theBundle);
|
||||
} else if (theBundle instanceof org.hl7.fhir.dstu3.model.Bundle) {
|
||||
return new AnyBundle((org.hl7.fhir.dstu3.model.Bundle) theBundle);
|
||||
} else if (theBundle instanceof org.hl7.fhir.r4.model.Bundle) {
|
||||
return new AnyBundle((org.hl7.fhir.r4.model.Bundle) theBundle);
|
||||
} else {
|
||||
throw new UnsupportedOperationException("Cannot convert " + theBundle.getClass().getName() + " to AnyBundle");
|
||||
}
|
||||
}
|
||||
|
||||
public IBaseBundle get() {
|
||||
return myBundle;
|
||||
}
|
||||
|
||||
public ca.uhn.fhir.model.dstu2.resource.Bundle getDstu2() {
|
||||
Validate.isTrue(myFhirVersion == FhirVersionEnum.DSTU2);
|
||||
return (ca.uhn.fhir.model.dstu2.resource.Bundle) get();
|
||||
}
|
||||
|
||||
public org.hl7.fhir.dstu3.model.Bundle getDstu3() {
|
||||
Validate.isTrue(myFhirVersion == FhirVersionEnum.DSTU3);
|
||||
return (org.hl7.fhir.dstu3.model.Bundle) get();
|
||||
}
|
||||
|
||||
public org.hl7.fhir.r4.model.Bundle getR4() {
|
||||
Validate.isTrue(myFhirVersion == FhirVersionEnum.R4);
|
||||
return (org.hl7.fhir.r4.model.Bundle) get();
|
||||
}
|
||||
|
||||
public void addResource(IBaseResource theResource) {
|
||||
switch (myFhirVersion) {
|
||||
case DSTU3:
|
||||
org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent entry = new org.hl7.fhir.dstu3.model.Bundle.BundleEntryComponent();
|
||||
entry.setResource((org.hl7.fhir.dstu3.model.Resource) theResource);
|
||||
getDstu3().getEntry().add(entry);
|
||||
break;
|
||||
case R4:
|
||||
org.hl7.fhir.r4.model.Bundle.BundleEntryComponent entryr4 = new org.hl7.fhir.r4.model.Bundle.BundleEntryComponent();
|
||||
entryr4.setResource((org.hl7.fhir.r4.model.Resource) theResource);
|
||||
getR4().getEntry().add(entryr4);
|
||||
break;
|
||||
default:
|
||||
throw new UnsupportedOperationException(myFhirVersion + " not supported");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -53,10 +53,4 @@ public class SearchParamR4Config extends BaseSearchParamConfig {
|
|||
public SearchParamExtractorR4 searchParamExtractor() {
|
||||
return new SearchParamExtractorR4();
|
||||
}
|
||||
|
||||
@Primary
|
||||
@Bean(autowire = Autowire.BY_NAME, name = "myJpaValidationSupportChainR4")
|
||||
public IValidationSupport validationSupportChainR4() {
|
||||
return new DefaultProfileValidationSupport();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,8 +21,19 @@ package ca.uhn.fhir.jpa.subscription.module.config;
|
|||
*/
|
||||
|
||||
import ca.uhn.fhir.jpa.searchparam.config.SearchParamR4Config;
|
||||
import org.hl7.fhir.r4.hapi.ctx.DefaultProfileValidationSupport;
|
||||
import org.hl7.fhir.r4.hapi.ctx.IValidationSupport;
|
||||
import org.springframework.beans.factory.annotation.Autowire;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
|
||||
@Import({SearchParamR4Config.class})
|
||||
public class SubscriptionR4Config extends BaseSubscriptionConfig {
|
||||
|
||||
@Primary
|
||||
@Bean(autowire = Autowire.BY_NAME, name = "myJpaValidationSupportChainR4")
|
||||
public IValidationSupport validationSupportChainR4() {
|
||||
return new DefaultProfileValidationSupport();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue