diff --git a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorDstu3.java b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorDstu3.java index 235596aae03..7886b4f01ed 100644 --- a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorDstu3.java +++ b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorDstu3.java @@ -31,21 +31,14 @@ import org.hl7.fhir.dstu3.model.Base; import org.hl7.fhir.dstu3.utils.FHIRPathEngine; import org.hl7.fhir.instance.model.api.IBase; import org.hl7.fhir.instance.model.api.IBaseResource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.context.event.EventListener; import java.util.ArrayList; import java.util.List; -import static org.apache.commons.lang3.StringUtils.trim; - public class SearchParamExtractorDstu3 extends BaseSearchParamExtractor implements ISearchParamExtractor { - @Autowired - private org.hl7.fhir.dstu3.hapi.ctx.IValidationSupport myValidationSupport; - - private HapiWorkerContext myWorkerContext; private FHIRPathEngine myFhirPathEngine; /** @@ -59,13 +52,13 @@ public class SearchParamExtractorDstu3 extends BaseSearchParamExtractor implemen @VisibleForTesting public SearchParamExtractorDstu3(ModelConfig theModelConfig, FhirContext theCtx, IValidationSupport theValidationSupport, ISearchParamRegistry theSearchParamRegistry) { super(theCtx, theSearchParamRegistry); - myValidationSupport = theValidationSupport; start(null); start(); } @Override protected IValueExtractor getPathValueExtractor(IBaseResource theResource, String theSinglePath) { + start(null); return () -> { List values = new ArrayList<>(); List allValues = myFhirPathEngine.evaluate((Base) theResource, theSinglePath); @@ -77,13 +70,17 @@ public class SearchParamExtractorDstu3 extends BaseSearchParamExtractor implemen }; } + + + + @EventListener public void start(ContextRefreshedEvent theEvent) { - if (myValidationSupport == null) { - myValidationSupport = myApplicationContext.getBean(IValidationSupport.class); + if (myFhirPathEngine == null) { + IValidationSupport support = myApplicationContext.getBean(IValidationSupport.class); + IWorkerContext worker = new HapiWorkerContext(getContext(), support); + myFhirPathEngine = new FHIRPathEngine(worker); } - IWorkerContext worker = new HapiWorkerContext(getContext(), myValidationSupport); - myFhirPathEngine = new FHIRPathEngine(worker); } } diff --git a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR4.java b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR4.java index a54e3c24789..3776b926700 100644 --- a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR4.java +++ b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR4.java @@ -41,7 +41,6 @@ import static org.apache.commons.lang3.StringUtils.isNotBlank; public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements ISearchParamExtractor { - private IValidationSupport myValidationSupport; private FHIRPathEngine myFhirPathEngine; /** @@ -55,7 +54,6 @@ public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements @VisibleForTesting public SearchParamExtractorR4(ModelConfig theModelConfig, FhirContext theCtx, IValidationSupport theValidationSupport, ISearchParamRegistry theSearchParamRegistry) { super(theCtx, theSearchParamRegistry); - myValidationSupport = theValidationSupport; initFhirPath(); start(); } @@ -68,14 +66,19 @@ public class SearchParamExtractorR4 extends BaseSearchParamExtractor implements }; } + + + + + @PostConstruct public void initFhirPath() { - if (myValidationSupport == null) { - myValidationSupport = myApplicationContext.getBean(IValidationSupport.class); + if (myFhirPathEngine == null) { + IValidationSupport support = myApplicationContext.getBean(IValidationSupport.class); + IWorkerContext worker = new HapiWorkerContext(getContext(), support); + myFhirPathEngine = new FHIRPathEngine(worker); + myFhirPathEngine.setHostServices(new SearchParamExtractorR4HostServices()); } - IWorkerContext worker = new HapiWorkerContext(getContext(), myValidationSupport); - myFhirPathEngine = new FHIRPathEngine(worker); - myFhirPathEngine.setHostServices(new SearchParamExtractorR4HostServices()); } diff --git a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR5.java b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR5.java index 6af6e523965..a30a5140786 100644 --- a/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR5.java +++ b/hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/SearchParamExtractorR5.java @@ -26,8 +26,8 @@ import org.hl7.fhir.exceptions.FHIRException; import org.hl7.fhir.exceptions.PathEngineException; import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.r5.context.IWorkerContext; -import org.hl7.fhir.r5.hapi.ctx.DefaultProfileValidationSupport; import org.hl7.fhir.r5.hapi.ctx.HapiWorkerContext; +import org.hl7.fhir.r5.hapi.ctx.DefaultProfileValidationSupport; import org.hl7.fhir.r5.hapi.ctx.IValidationSupport; import org.hl7.fhir.r5.model.*; import org.hl7.fhir.r5.utils.FHIRPathEngine; @@ -57,16 +57,18 @@ public class SearchParamExtractorR5 extends BaseSearchParamExtractor implements public SearchParamExtractorR5(FhirContext theCtx, DefaultProfileValidationSupport theDefaultProfileValidationSupport, ISearchParamRegistry theSearchParamRegistry) { super(theCtx, theSearchParamRegistry); myValidationSupport = theDefaultProfileValidationSupport; + initFhirPath(); start(); } - @Override @PostConstruct - public void start() { - super.start(); - IWorkerContext worker = new HapiWorkerContext(getContext(), myValidationSupport); - myFhirPathEngine = new FHIRPathEngine(worker); - myFhirPathEngine.setHostServices(new SearchParamExtractorR5HostServices()); + public void initFhirPath() { + if (myFhirPathEngine == null) { + IValidationSupport support = myApplicationContext.getBean(IValidationSupport.class); + IWorkerContext worker = new HapiWorkerContext(getContext(), support); + myFhirPathEngine = new FHIRPathEngine(worker); + myFhirPathEngine.setHostServices(new SearchParamExtractorR5HostServices()); + } } @Override diff --git a/pom.xml b/pom.xml index ee6008fd74d..7401e046cad 100755 --- a/pom.xml +++ b/pom.xml @@ -746,7 +746,7 @@ com.h2database h2 - 1.4.199 + 1.4.200 com.helger