From 422d200f6e1d562193ecc02eb39ee88ede963729 Mon Sep 17 00:00:00 2001 From: dotasek Date: Tue, 21 May 2024 17:06:36 -0400 Subject: [PATCH 1/3] Track HAPI 7.3.2-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6b414afd4..17a2c26be 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ ca.uhn.hapi.fhir hapi-fhir - 7.2.0 + 7.3.2-SNAPSHOT hapi-fhir-jpaserver-starter From 8f731a29eecc3527ae23d1b172465fa8831c285b Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 17 Jun 2024 17:10:10 -0400 Subject: [PATCH 2/3] WIP bump HAPI --- pom.xml | 2 +- .../common/FhirServerConfigCommon.java | 70 ++++++++++--------- .../jpa/starter/common/StarterJpaConfig.java | 4 +- .../jpa/starter/ExampleServerDstu3IT.java | 2 +- .../fhir/jpa/starter/ExampleServerR4IT.java | 4 +- .../java/ca/uhn/fhir/jpa/starter/MdmTest.java | 6 +- ...g.java => SubscriptionSettingsConfig.java} | 10 +-- 7 files changed, 54 insertions(+), 44 deletions(-) rename src/test/java/ca/uhn/fhir/jpa/starter/{JpaStorageSettingsConfig.java => SubscriptionSettingsConfig.java} (67%) diff --git a/pom.xml b/pom.xml index 17a2c26be..77867374c 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 10ea4a6b8..7c3b5fb1e 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 */ @@ -112,10 +147,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); @@ -129,24 +161,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()); @@ -202,13 +217,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; } @@ -249,10 +257,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 6ff4c5e12..31662888f 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 2aadf2ebc..6913d2e8b 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 @@ 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 9c0f85d0c..4854cf2a5 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 @@ 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 @@ 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/MdmTest.java b/src/test/java/ca/uhn/fhir/jpa/starter/MdmTest.java index 4fc080195..bd1f58db6 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/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 8ed4bce0c..cb38d13f3 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); From db238aa9ec9d1c583d629440d00119d61df57b33 Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 17 Jun 2024 18:46:12 -0400 Subject: [PATCH 3/3] Fix subscription settings config in integration tests --- .../jpa/starter/ExampleServerDstu3IT.java | 1 - .../fhir/jpa/starter/ExampleServerR4IT.java | 3 +-- .../starter/SubscriptionSettingsConfig.java | 22 ------------------- 3 files changed, 1 insertion(+), 25 deletions(-) delete mode 100644 src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java 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 6913d2e8b..6882e3afb 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=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 4854cf2a5..23953fb69 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=subscriptionSettingsTest", "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", diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java b/src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java deleted file mode 100644 index cb38d13f3..000000000 --- a/src/test/java/ca/uhn/fhir/jpa/starter/SubscriptionSettingsConfig.java +++ /dev/null @@ -1,22 +0,0 @@ -package ca.uhn.fhir.jpa.starter; - -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("subscriptionSettingsTest") -@Configuration -public class SubscriptionSettingsConfig { - @Primary - @Bean - public SubscriptionSettings subscriptionSettings() { - SubscriptionSettings retVal = new SubscriptionSettings(); - - retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.WEBSOCKET); - retVal.addSupportedSubscriptionType(Subscription.SubscriptionChannelType.MESSAGE); - return retVal; - } -}