From 8f731a29eecc3527ae23d1b172465fa8831c285b Mon Sep 17 00:00:00 2001 From: dotasek Date: Mon, 17 Jun 2024 17:10:10 -0400 Subject: [PATCH] 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 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);