diff --git a/pom.xml b/pom.xml
index 8199669ccc7..fdd677c6a77 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 7.2.1
+ 7.4.0
hapi-fhir-jpaserver-starter
diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java
index 0f15abff8e7..a312360723c 100644
--- a/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java
+++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/FhirServerConfigCommon.java
@@ -6,6 +6,7 @@
import ca.uhn.fhir.jpa.config.HibernatePropertiesProvider;
import ca.uhn.fhir.jpa.model.config.PartitionSettings;
import ca.uhn.fhir.jpa.model.config.PartitionSettings.CrossPartitionReferenceMode;
+import ca.uhn.fhir.jpa.model.config.SubscriptionSettings;
import ca.uhn.fhir.jpa.model.entity.StorageSettings;
import ca.uhn.fhir.jpa.starter.AppProperties;
import ca.uhn.fhir.jpa.starter.util.JpaHibernatePropertiesProvider;
@@ -87,6 +88,40 @@ public FhirServerConfigCommon(AppProperties appProperties) {
}
}
+ @Bean
+ public SubscriptionSettings subscriptionSettings(AppProperties appProperties) {
+ SubscriptionSettings subscriptionSettings = new SubscriptionSettings();
+ if (appProperties.getSubscription() != null) {
+ if (appProperties.getSubscription().getEmail() != null)
+ subscriptionSettings.setEmailFromAddress(
+ appProperties.getSubscription().getEmail().getFrom());
+
+ // Subscriptions are enabled by channel type
+ if (appProperties.getSubscription().getResthook_enabled()) {
+ ourLog.info("Enabling REST-hook subscriptions");
+ subscriptionSettings.addSupportedSubscriptionType(
+ org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.RESTHOOK);
+ }
+ if (appProperties.getSubscription().getEmail() != null) {
+ ourLog.info("Enabling email subscriptions");
+ subscriptionSettings.addSupportedSubscriptionType(
+ org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.EMAIL);
+ }
+ if (appProperties.getSubscription().getWebsocket_enabled()) {
+ ourLog.info("Enabling websocket subscriptions");
+ subscriptionSettings.addSupportedSubscriptionType(
+ org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.WEBSOCKET);
+ }
+
+ }
+ if (appProperties.getMdm_enabled()) {
+ // MDM requires the subscription of type message
+ ourLog.info("Enabling message subscriptions");
+ subscriptionSettings.addSupportedSubscriptionType(
+ org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.MESSAGE);
+ }
+ return subscriptionSettings;
+ }
/**
* Configure FHIR properties around the JPA server via this bean
*/
@@ -114,10 +149,7 @@ public JpaStorageSettings jpaStorageSettings(AppProperties appProperties) {
jpaStorageSettings.setDeleteExpungeEnabled(appProperties.getDelete_expunge_enabled());
jpaStorageSettings.setExpungeEnabled(appProperties.getExpunge_enabled());
jpaStorageSettings.setLanguageSearchParameterEnabled(appProperties.getLanguage_search_parameter_enabled());
- if (appProperties.getSubscription() != null
- && appProperties.getSubscription().getEmail() != null)
- jpaStorageSettings.setEmailFromAddress(
- appProperties.getSubscription().getEmail().getFrom());
+
Integer maxFetchSize = appProperties.getMax_page_size();
jpaStorageSettings.setFetchSizeDefaultMaximum(maxFetchSize);
@@ -131,24 +163,7 @@ public JpaStorageSettings jpaStorageSettings(AppProperties appProperties) {
Long retainCachedSearchesMinutes = appProperties.getRetain_cached_searches_mins();
jpaStorageSettings.setExpireSearchResultsAfterMillis(retainCachedSearchesMinutes * 60 * 1000);
- if (appProperties.getSubscription() != null) {
- // Subscriptions are enabled by channel type
- if (appProperties.getSubscription().getResthook_enabled()) {
- ourLog.info("Enabling REST-hook subscriptions");
- jpaStorageSettings.addSupportedSubscriptionType(
- org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.RESTHOOK);
- }
- if (appProperties.getSubscription().getEmail() != null) {
- ourLog.info("Enabling email subscriptions");
- jpaStorageSettings.addSupportedSubscriptionType(
- org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.EMAIL);
- }
- if (appProperties.getSubscription().getWebsocket_enabled()) {
- ourLog.info("Enabling websocket subscriptions");
- jpaStorageSettings.addSupportedSubscriptionType(
- org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.WEBSOCKET);
- }
- }
+
jpaStorageSettings.setFilterParameterEnabled(appProperties.getFilter_search_enabled());
jpaStorageSettings.setAdvancedHSearchIndexing(appProperties.getAdvanced_lucene_indexing());
@@ -204,13 +219,6 @@ public JpaStorageSettings jpaStorageSettings(AppProperties appProperties) {
jpaStorageSettings.setBundleBatchPoolSize(appProperties.getBundle_batch_pool_size());
jpaStorageSettings.setBundleBatchPoolSize(appProperties.getBundle_batch_pool_max_size());
- if (appProperties.getMdm_enabled()) {
- // MDM requires the subscription of type message
- ourLog.info("Enabling message subscriptions");
- jpaStorageSettings.addSupportedSubscriptionType(
- org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.MESSAGE);
- }
-
storageSettings(appProperties, jpaStorageSettings);
return jpaStorageSettings;
}
@@ -251,10 +259,6 @@ protected StorageSettings storageSettings(AppProperties appProperties, JpaStorag
jpaStorageSettings.setAllowExternalReferences(appProperties.getAllow_external_references());
jpaStorageSettings.setDefaultSearchParamsCanBeOverridden(
appProperties.getAllow_override_default_search_params());
- if (appProperties.getSubscription() != null
- && appProperties.getSubscription().getEmail() != null)
- jpaStorageSettings.setEmailFromAddress(
- appProperties.getSubscription().getEmail().getFrom());
jpaStorageSettings.setNormalizedQuantitySearchLevel(appProperties.getNormalized_quantity_search_level());
diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java
index 6ff4c5e1262..31662888f76 100644
--- a/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java
+++ b/src/main/java/ca/uhn/fhir/jpa/starter/common/StarterJpaConfig.java
@@ -30,6 +30,7 @@
import ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor;
import ca.uhn.fhir.jpa.interceptor.validation.RepositoryValidatingInterceptor;
import ca.uhn.fhir.jpa.ips.provider.IpsOperationProvider;
+import ca.uhn.fhir.jpa.model.config.SubscriptionSettings;
import ca.uhn.fhir.jpa.packages.IPackageInstallerSvc;
import ca.uhn.fhir.jpa.packages.PackageInstallationSpec;
import ca.uhn.fhir.jpa.partition.PartitionManagementProvider;
@@ -252,6 +253,7 @@ public RestfulServer restfulServer(
IJpaSystemProvider jpaSystemProvider,
ResourceProviderFactory resourceProviderFactory,
JpaStorageSettings jpaStorageSettings,
+ SubscriptionSettings subscriptionSettings,
ISearchParamRegistry searchParamRegistry,
IValidationSupport theValidationSupport,
DatabaseBackedPagingProvider databaseBackedPagingProvider,
@@ -378,7 +380,7 @@ public RestfulServer restfulServer(
corsInterceptor.ifPresent(fhirServer::registerInterceptor);
- if (jpaStorageSettings.getSupportedSubscriptionTypes().size() > 0) {
+ if (!subscriptionSettings.getSupportedSubscriptionTypes().isEmpty()) {
// Subscription debug logging
fhirServer.registerInterceptor(new SubscriptionDebugLogInterceptor());
}
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
index 3d706b6a392..32fabbce76c 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
@@ -43,7 +43,6 @@
RepositoryConfig.class
}, properties =
{
- "spring.profiles.include=storageSettingsTest",
"spring.datasource.url=jdbc:h2:mem:dbr3",
"hapi.fhir.fhir_version=dstu3",
"hapi.fhir.cr_enabled=true",
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
index 59e06b82190..d7b46315dbd 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
@@ -55,11 +55,10 @@
NicknameServiceConfig.class,
RepositoryConfig.class
}, properties = {
- "spring.profiles.include=storageSettingsTest",
"spring.datasource.url=jdbc:h2:mem:dbr4",
"hapi.fhir.enable_repository_validating_interceptor=true",
"hapi.fhir.fhir_version=r4",
- //"hapi.fhir.subscription.websocket_enabled=true",
+ "hapi.fhir.subscription.websocket_enabled=true",
//"hapi.fhir.mdm_enabled=true",
"hapi.fhir.cr.enabled=true",
"hapi.fhir.cr.caregaps.section_author=Organization/alphora-author",
@@ -230,7 +229,7 @@ void testWebsocketSubscription() throws Exception {
IIdType mySubscriptionId = methodOutcome.getId();
// Wait for the subscription to be activated
- await().atMost(1, TimeUnit.MINUTES).until(()->activeSubscriptionCount(), equalTo(initialActiveSubscriptionCount + 1));
+ await().atMost(1, TimeUnit.MINUTES).until(this::activeSubscriptionCount, equalTo(initialActiveSubscriptionCount + 1));
/*
* Attach websocket
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java b/src/test/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java
deleted file mode 100644
index 8ed4bce0cbd..00000000000
--- a/src/test/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package ca.uhn.fhir.jpa.starter;
-
-import ca.uhn.fhir.jpa.api.config.JpaStorageSettings;
-import org.hl7.fhir.dstu2.model.Subscription;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.context.annotation.Profile;
-
-@Profile("storageSettingsTest")
-@Configuration
-public class JpaStorageSettingsConfig {
- @Primary
- @Bean
- public JpaStorageSettings storageSettings() {
- JpaStorageSettings retVal = new JpaStorageSettings();
-
- retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.WEBSOCKET);
- retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.MESSAGE);
- return retVal;
- }
-}
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java b/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java
index 4fc080195be..bd1f58db633 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java
@@ -2,6 +2,7 @@
import static org.assertj.core.api.Assertions.assertThat;
+import ca.uhn.fhir.jpa.model.config.SubscriptionSettings;
import org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -21,9 +22,12 @@ class MdmTest {
@Autowired
JpaStorageSettings jpaStorageSettings;
+ @Autowired
+ SubscriptionSettings subscriptionSettings;
+
@Test
void testApplicationStartedSuccessfully() {
assertThat(nicknameService).isNotNull();
- assertThat(jpaStorageSettings.getSupportedSubscriptionTypes()).contains(SubscriptionChannelType.MESSAGE);
+ assertThat(subscriptionSettings.getSupportedSubscriptionTypes()).contains(SubscriptionChannelType.MESSAGE);
}
}
diff --git a/src/test/smoketest/plain_server.http b/src/test/smoketest/plain_server.http
index ff159a46a17..572a48f4e1c 100644
--- a/src/test/smoketest/plain_server.http
+++ b/src/test/smoketest/plain_server.http
@@ -87,7 +87,7 @@ Content-Type: application/json
});
const batch_patient_location = response.body.entry[0].response.location;
const indexOfHistory = batch_patient_location.lastIndexOf("/_history");
- trimmed_location = batch_patient_location.substring(0, indexOfHistory);
+ var trimmed_location = batch_patient_location.substring(0, indexOfHistory);
trimmed_location = trimmed_location.replace("Patient/", "")
client.global.set("batch_patient_id", trimmed_location);
%}