diff --git a/pom.xml b/pom.xml
index 17a2c26..7786737 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,7 +14,7 @@
ca.uhn.hapi.fhir
hapi-fhir
- 7.3.2-SNAPSHOT
+ 7.3.7-SNAPSHOT
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 10ea4a6..7c3b5fb 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.binstore.DatabaseBinaryContentStorageSvcImpl;
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 class FhirServerConfigCommon {
}
}
+ @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
*/
@@ -112,10 +147,7 @@ public class FhirServerConfigCommon {
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);
@@ -129,24 +161,7 @@ public class FhirServerConfigCommon {
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());
@@ -202,13 +217,6 @@ public class FhirServerConfigCommon {
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;
}
@@ -249,10 +257,6 @@ public class FhirServerConfigCommon {
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 6ff4c5e..3166288 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.graphql.GraphQLProvider;
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 class StarterJpaConfig {
IJpaSystemProvider jpaSystemProvider,
ResourceProviderFactory resourceProviderFactory,
JpaStorageSettings jpaStorageSettings,
+ SubscriptionSettings subscriptionSettings,
ISearchParamRegistry searchParamRegistry,
IValidationSupport theValidationSupport,
DatabaseBackedPagingProvider databaseBackedPagingProvider,
@@ -378,7 +380,7 @@ public class StarterJpaConfig {
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 2aadf2e..6913d2e 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,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
RepositoryConfig.class
}, properties =
{
- "spring.profiles.include=storageSettingsTest",
+ "spring.profiles.include=subscriptionSettingsTest",
"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 9c0f85d..4854cf2 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
@@ -55,7 +55,7 @@ import static org.opencds.cqf.fhir.utility.r4.Parameters.stringPart;
NicknameServiceConfig.class,
RepositoryConfig.class
}, properties = {
- "spring.profiles.include=storageSettingsTest",
+ "spring.profiles.include=subscriptionSettingsTest",
"spring.datasource.url=jdbc:h2:mem:dbr4",
"hapi.fhir.enable_repository_validating_interceptor=true",
"hapi.fhir.fhir_version=r4",
@@ -237,7 +237,7 @@ class ExampleServerR4IT implements IServerSupport {
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/MdmTest.java b/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java
index 4fc0801..bd1f58d 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 @@ package ca.uhn.fhir.jpa.starter;
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/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java b/src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java
similarity index 67%
rename from src/test/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java
rename to src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java
index 8ed4bce..cb38d13 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/JpaStorageSettingsConfig.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java
@@ -1,19 +1,19 @@
package ca.uhn.fhir.jpa.starter;
-import ca.uhn.fhir.jpa.api.config.JpaStorageSettings;
+import ca.uhn.fhir.jpa.model.config.SubscriptionSettings;
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")
+@Profile("subscriptionSettingsTest")
@Configuration
-public class JpaStorageSettingsConfig {
+public class SubscriptionSettingsConfig {
@Primary
@Bean
- public JpaStorageSettings storageSettings() {
- JpaStorageSettings retVal = new JpaStorageSettings();
+ public SubscriptionSettings subscriptionSettings() {
+ SubscriptionSettings retVal = new SubscriptionSettings();
retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.WEBSOCKET);
retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.MESSAGE);