Apply spotless

This commit is contained in:
dotasek
2025-02-12 12:01:54 -05:00
parent ac5dbb975e
commit 8b77aa0c53
20 changed files with 803 additions and 771 deletions

View File

@@ -1,6 +1,5 @@
package ca.uhn.fhir.jpa.starter; package ca.uhn.fhir.jpa.starter;
import ca.uhn.fhir.context.FhirVersionEnum; import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.ClientIdStrategyEnum; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.ClientIdStrategyEnum;
import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.IdStrategyEnum; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings.IdStrategyEnum;
@@ -89,7 +88,8 @@ public class AppProperties {
private Boolean lastn_enabled = false; private Boolean lastn_enabled = false;
private boolean store_resource_in_lucene_index_enabled = false; private boolean store_resource_in_lucene_index_enabled = false;
private NormalizedQuantitySearchLevel normalized_quantity_search_level = NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED; private NormalizedQuantitySearchLevel normalized_quantity_search_level =
NormalizedQuantitySearchLevel.NORMALIZED_QUANTITY_SEARCH_NOT_SUPPORTED;
private Boolean use_apache_address_strategy = false; private Boolean use_apache_address_strategy = false;
private Boolean use_apache_address_strategy_https = false; private Boolean use_apache_address_strategy_https = false;
@@ -118,7 +118,6 @@ public class AppProperties {
return custom_provider_classes; return custom_provider_classes;
} }
public Boolean getOpenapi_enabled() { public Boolean getOpenapi_enabled() {
return openapi_enabled; return openapi_enabled;
} }
@@ -183,7 +182,6 @@ public class AppProperties {
this.ips_enabled = ips_enabled; this.ips_enabled = ips_enabled;
} }
public Boolean getMdm_enabled() { public Boolean getMdm_enabled() {
return mdm_enabled; return mdm_enabled;
} }
@@ -268,8 +266,7 @@ public Cors getCors() {
return client_id_strategy; return client_id_strategy;
} }
public void setClient_id_strategy( public void setClient_id_strategy(ClientIdStrategyEnum client_id_strategy) {
ClientIdStrategyEnum client_id_strategy) {
this.client_id_strategy = client_id_strategy; this.client_id_strategy = client_id_strategy;
} }
@@ -325,8 +322,7 @@ public Cors getCors() {
return allow_override_default_search_params; return allow_override_default_search_params;
} }
public void setAllow_override_default_search_params( public void setAllow_override_default_search_params(Boolean allow_override_default_search_params) {
Boolean allow_override_default_search_params) {
this.allow_override_default_search_params = allow_override_default_search_params; this.allow_override_default_search_params = allow_override_default_search_params;
} }
@@ -342,8 +338,7 @@ public Cors getCors() {
return auto_create_placeholder_reference_targets; return auto_create_placeholder_reference_targets;
} }
public void setAuto_create_placeholder_reference_targets( public void setAuto_create_placeholder_reference_targets(Boolean auto_create_placeholder_reference_targets) {
Boolean auto_create_placeholder_reference_targets) {
this.auto_create_placeholder_reference_targets = auto_create_placeholder_reference_targets; this.auto_create_placeholder_reference_targets = auto_create_placeholder_reference_targets;
} }
@@ -403,8 +398,7 @@ public Cors getCors() {
return enforce_referential_integrity_on_delete; return enforce_referential_integrity_on_delete;
} }
public void setEnforce_referential_integrity_on_delete( public void setEnforce_referential_integrity_on_delete(Boolean enforce_referential_integrity_on_delete) {
Boolean enforce_referential_integrity_on_delete) {
this.enforce_referential_integrity_on_delete = enforce_referential_integrity_on_delete; this.enforce_referential_integrity_on_delete = enforce_referential_integrity_on_delete;
} }
@@ -412,8 +406,7 @@ public Cors getCors() {
return enforce_referential_integrity_on_write; return enforce_referential_integrity_on_write;
} }
public void setEnforce_referential_integrity_on_write( public void setEnforce_referential_integrity_on_write(Boolean enforce_referential_integrity_on_write) {
Boolean enforce_referential_integrity_on_write) {
this.enforce_referential_integrity_on_write = enforce_referential_integrity_on_write; this.enforce_referential_integrity_on_write = enforce_referential_integrity_on_write;
} }
@@ -549,13 +542,11 @@ public Cors getCors() {
this.tester = tester; this.tester = tester;
} }
public Boolean getNarrative_enabled() public Boolean getNarrative_enabled() {
{
return narrative_enabled; return narrative_enabled;
} }
public void setNarrative_enabled(Boolean narrative_enabled) public void setNarrative_enabled(Boolean narrative_enabled) {
{
this.narrative_enabled = narrative_enabled; this.narrative_enabled = narrative_enabled;
} }
@@ -623,7 +614,6 @@ public Cors getCors() {
return logical_urls; return logical_urls;
} }
public Boolean getIg_runtime_upload_enabled() { public Boolean getIg_runtime_upload_enabled() {
return ig_runtime_upload_enabled; return ig_runtime_upload_enabled;
} }
@@ -676,7 +666,8 @@ public Cors getCors() {
return userRequestRetryVersionConflictsInterceptorEnabled; return userRequestRetryVersionConflictsInterceptorEnabled;
} }
public void setUserRequestRetryVersionConflictsInterceptorEnabled(Boolean userRequestRetryVersionConflictsInterceptorEnabled) { public void setUserRequestRetryVersionConflictsInterceptorEnabled(
Boolean userRequestRetryVersionConflictsInterceptorEnabled) {
this.userRequestRetryVersionConflictsInterceptorEnabled = userRequestRetryVersionConflictsInterceptorEnabled; this.userRequestRetryVersionConflictsInterceptorEnabled = userRequestRetryVersionConflictsInterceptorEnabled;
} }
@@ -705,7 +696,8 @@ public Cors getCors() {
private String name = "fhirtest.access"; private String name = "fhirtest.access";
private String error_format = "ERROR - ${requestVerb} ${requestUrl}"; private String error_format = "ERROR - ${requestVerb} ${requestUrl}";
private String format = "Path[${servletPath}] Source[${requestHeader.x-forwarded-for}] Operation[${operationType} ${operationName} ${idOrResourceName}] UA[${requestHeader.user-agent}] Params[${requestParameters}] ResponseEncoding[${responseEncodingNoDefault}] Operation[${operationType} ${operationName} ${idOrResourceName}] UA[${requestHeader.user-agent}] Params[${requestParameters}] ResponseEncoding[${responseEncodingNoDefault}]"; private String format =
"Path[${servletPath}] Source[${requestHeader.x-forwarded-for}] Operation[${operationType} ${operationName} ${idOrResourceName}] UA[${requestHeader.user-agent}] Params[${requestParameters}] ResponseEncoding[${responseEncodingNoDefault}] Operation[${operationType} ${operationName} ${idOrResourceName}] UA[${requestHeader.user-agent}] Params[${requestParameters}] ResponseEncoding[${responseEncodingNoDefault}]";
private Boolean log_exceptions = true; private Boolean log_exceptions = true;
public String getName() { public String getName() {
@@ -741,7 +733,6 @@ public Cors getCors() {
} }
} }
public static class Tester { public static class Tester {
private String name; private String name;
@@ -782,7 +773,6 @@ public Cors getCors() {
} }
} }
public static class Validation { public static class Validation {
private Boolean requests_enabled = false; private Boolean requests_enabled = false;
@@ -846,6 +836,7 @@ public Cors getCors() {
public void setPartitioning_include_in_search_hashes(Boolean partitioning_include_in_search_hashes) { public void setPartitioning_include_in_search_hashes(Boolean partitioning_include_in_search_hashes) {
this.partitioning_include_in_search_hashes = partitioning_include_in_search_hashes; this.partitioning_include_in_search_hashes = partitioning_include_in_search_hashes;
} }
public Boolean getAllow_references_across_partitions() { public Boolean getAllow_references_across_partitions() {
return allow_references_across_partitions; return allow_references_across_partitions;
} }
@@ -858,7 +849,8 @@ public Cors getCors() {
return conditional_create_duplicate_identifiers_enabled; return conditional_create_duplicate_identifiers_enabled;
} }
public void setConditional_create_duplicate_identifiers_enabled(Boolean conditional_create_duplicate_identifiers_enabled) { public void setConditional_create_duplicate_identifiers_enabled(
Boolean conditional_create_duplicate_identifiers_enabled) {
this.conditional_create_duplicate_identifiers_enabled = conditional_create_duplicate_identifiers_enabled; this.conditional_create_duplicate_identifiers_enabled = conditional_create_duplicate_identifiers_enabled;
} }
@@ -897,7 +889,6 @@ public Cors getCors() {
this.email = email; this.email = email;
} }
public static class Email { public static class Email {
public String getFrom() { public String getFrom() {
return from; return from;

View File

@@ -49,7 +49,6 @@ public class Application extends SpringBootServletInitializer {
// UI is now accessible at http://localhost:8080/ // UI is now accessible at http://localhost:8080/
} }
@Autowired @Autowired
AutowireCapableBeanFactory beanFactory; AutowireCapableBeanFactory beanFactory;
@@ -64,5 +63,4 @@ public class Application extends SpringBootServletInitializer {
return servletRegistrationBean; return servletRegistrationBean;
} }
} }

View File

@@ -1,15 +1,19 @@
package ca.uhn.fhir.jpa.starter.cdshooks; package ca.uhn.fhir.jpa.starter.cdshooks;
import ca.uhn.fhir.jpa.starter.AppProperties; import ca.uhn.fhir.jpa.starter.AppProperties;
import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson;
import ca.uhn.fhir.rest.server.RestfulServer; import ca.uhn.fhir.rest.server.RestfulServer;
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException; import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
import ca.uhn.hapi.fhir.cdshooks.api.ICdsServiceRegistry; import ca.uhn.hapi.fhir.cdshooks.api.ICdsServiceRegistry;
import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson;
import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServiceResponseJson; import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServiceResponseJson;
import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServicesJson; import ca.uhn.hapi.fhir.cdshooks.api.json.CdsServicesJson;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -19,10 +23,6 @@ import org.springframework.beans.factory.annotation.Qualifier;
import java.io.IOException; import java.io.IOException;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import static ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig.CDS_HOOKS_OBJECT_MAPPER_FACTORY; import static ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig.CDS_HOOKS_OBJECT_MAPPER_FACTORY;

View File

@@ -2,12 +2,12 @@ package ca.uhn.fhir.jpa.starter.cdshooks;
import ca.uhn.fhir.jpa.starter.AppProperties; import ca.uhn.fhir.jpa.starter.AppProperties;
import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException; import ca.uhn.fhir.rest.server.exceptions.BaseServerResponseException;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Arrays; import java.util.Arrays;
import jakarta.servlet.http.HttpServletResponse;
public class ErrorHandling { public class ErrorHandling {

File diff suppressed because one or more lines are too long

View File

@@ -1,21 +1,17 @@
package ca.uhn.fhir.jpa.starter.cdshooks; package ca.uhn.fhir.jpa.starter.cdshooks;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.fhir.jpa.starter.cr.CrCommonConfig; import ca.uhn.fhir.jpa.starter.cr.CrCommonConfig;
import ca.uhn.fhir.jpa.starter.cr.CrConfigCondition; import ca.uhn.fhir.jpa.starter.cr.CrConfigCondition;
import ca.uhn.fhir.jpa.starter.cr.CrProperties; import ca.uhn.fhir.jpa.starter.cr.CrProperties;
import ca.uhn.hapi.fhir.cdshooks.api.ICdsHooksDaoAuthorizationSvc; import ca.uhn.hapi.fhir.cdshooks.api.ICdsHooksDaoAuthorizationSvc;
import ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig; import ca.uhn.hapi.fhir.cdshooks.config.CdsHooksConfig;
import ca.uhn.hapi.fhir.cdshooks.svc.CdsHooksContextBooter; import ca.uhn.hapi.fhir.cdshooks.svc.CdsHooksContextBooter;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrSettings;
import ca.uhn.fhir.context.FhirVersionEnum;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrServiceRegistry; import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrServiceRegistry;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrSettings;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.ICdsCrServiceRegistry; import ca.uhn.hapi.fhir.cdshooks.svc.cr.ICdsCrServiceRegistry;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.CdsCrDiscoveryServiceRegistry; import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.CdsCrDiscoveryServiceRegistry;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.ICdsCrDiscoveryServiceRegistry; import ca.uhn.hapi.fhir.cdshooks.svc.cr.discovery.ICdsCrDiscoveryServiceRegistry;
import ca.uhn.hapi.fhir.cdshooks.svc.prefetch.CdsPrefetchDaoSvc;
import ca.uhn.hapi.fhir.cdshooks.svc.prefetch.CdsPrefetchFhirClientSvc;
import ca.uhn.hapi.fhir.cdshooks.svc.prefetch.CdsPrefetchSvc;
import ca.uhn.hapi.fhir.cdshooks.svc.prefetch.CdsResolutionStrategySvc;
import org.hl7.fhir.instance.model.api.IBaseResource; import org.hl7.fhir.instance.model.api.IBaseResource;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory; import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean;

View File

@@ -1,21 +1,19 @@
package ca.uhn.fhir.jpa.starter.cdshooks; package ca.uhn.fhir.jpa.starter.cdshooks;
import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.api.server.RequestDetails;
import ca.uhn.hapi.fhir.cdshooks.api.ICdsConfigService;
import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson; import ca.uhn.fhir.rest.api.server.cdshooks.CdsServiceRequestJson;
import ca.uhn.hapi.fhir.cdshooks.api.ICdsConfigService;
import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrServiceR4; import ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrServiceR4;
import org.hl7.fhir.r4.model.BooleanType; import org.hl7.fhir.r4.model.BooleanType;
import org.hl7.fhir.r4.model.Parameters; import org.hl7.fhir.r4.model.Parameters;
import org.opencds.cqf.fhir.api.Repository; import org.opencds.cqf.fhir.api.Repository;
import java.util.stream.Collectors;
import static ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrConstants.APPLY_PARAMETER_DATA; import static ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrConstants.APPLY_PARAMETER_DATA;
import static ca.uhn.hapi.fhir.cdshooks.svc.cr.CdsCrConstants.APPLY_PARAMETER_DATA_ENDPOINT;
import static org.opencds.cqf.fhir.utility.r4.Parameters.part; import static org.opencds.cqf.fhir.utility.r4.Parameters.part;
public class UpdatedCdsCrServiceR4 extends CdsCrServiceR4 { public class UpdatedCdsCrServiceR4 extends CdsCrServiceR4 {
public UpdatedCdsCrServiceR4(RequestDetails theRequestDetails, Repository theRepository, ICdsConfigService theCdsConfigService) { public UpdatedCdsCrServiceR4(
RequestDetails theRequestDetails, Repository theRepository, ICdsConfigService theCdsConfigService) {
super(theRequestDetails, theRepository, theCdsConfigService); super(theRequestDetails, theRepository, theCdsConfigService);
} }

View File

@@ -1,17 +1,13 @@
package ca.uhn.fhir.jpa.starter.common; package ca.uhn.fhir.jpa.starter.common;
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.interceptor.api.IInterceptorService;
import ca.uhn.fhir.jpa.api.config.JpaStorageSettings; import ca.uhn.fhir.jpa.api.config.JpaStorageSettings;
import ca.uhn.fhir.jpa.binary.api.IBinaryStorageSvc; import ca.uhn.fhir.jpa.binary.api.IBinaryStorageSvc;
import ca.uhn.fhir.jpa.binstore.DatabaseBinaryContentStorageSvcImpl; import ca.uhn.fhir.jpa.binstore.DatabaseBinaryContentStorageSvcImpl;
import ca.uhn.fhir.jpa.config.HibernatePropertiesProvider; import ca.uhn.fhir.jpa.config.HibernatePropertiesProvider;
import ca.uhn.fhir.jpa.interceptor.PatientIdPartitionInterceptor;
import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.model.config.PartitionSettings;
import ca.uhn.fhir.jpa.model.config.PartitionSettings.CrossPartitionReferenceMode; import ca.uhn.fhir.jpa.model.config.PartitionSettings.CrossPartitionReferenceMode;
import ca.uhn.fhir.jpa.model.config.SubscriptionSettings; import ca.uhn.fhir.jpa.model.config.SubscriptionSettings;
import ca.uhn.fhir.jpa.model.entity.StorageSettings; import ca.uhn.fhir.jpa.model.entity.StorageSettings;
import ca.uhn.fhir.jpa.searchparam.extractor.ISearchParamExtractor;
import ca.uhn.fhir.jpa.starter.AppProperties; import ca.uhn.fhir.jpa.starter.AppProperties;
import ca.uhn.fhir.jpa.starter.util.JpaHibernatePropertiesProvider; import ca.uhn.fhir.jpa.starter.util.JpaHibernatePropertiesProvider;
import ca.uhn.fhir.jpa.subscription.match.deliver.email.EmailSenderImpl; import ca.uhn.fhir.jpa.subscription.match.deliver.email.EmailSenderImpl;
@@ -118,7 +114,6 @@ public class FhirServerConfigCommon {
subscriptionSettings.addSupportedSubscriptionType( subscriptionSettings.addSupportedSubscriptionType(
org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.WEBSOCKET); org.hl7.fhir.dstu2.model.Subscription.SubscriptionChannelType.WEBSOCKET);
} }
} }
if (appProperties.getMdm_enabled()) { if (appProperties.getMdm_enabled()) {
// MDM requires the subscription of type message // MDM requires the subscription of type message
@@ -141,8 +136,7 @@ public class FhirServerConfigCommon {
: StorageSettings.IndexEnabledEnum.DISABLED); : StorageSettings.IndexEnabledEnum.DISABLED);
jpaStorageSettings.setAutoCreatePlaceholderReferenceTargets( jpaStorageSettings.setAutoCreatePlaceholderReferenceTargets(
appProperties.getAuto_create_placeholder_reference_targets()); appProperties.getAuto_create_placeholder_reference_targets());
jpaStorageSettings.setMassIngestionMode( jpaStorageSettings.setMassIngestionMode(appProperties.getMass_ingestion_mode_enabled());
appProperties.getMass_ingestion_mode_enabled());
jpaStorageSettings.setAutoVersionReferenceAtPaths(appProperties.getAuto_version_reference_at_paths()); jpaStorageSettings.setAutoVersionReferenceAtPaths(appProperties.getAuto_version_reference_at_paths());
jpaStorageSettings.setEnforceReferentialIntegrityOnWrite( jpaStorageSettings.setEnforceReferentialIntegrityOnWrite(
appProperties.getEnforce_referential_integrity_on_write()); appProperties.getEnforce_referential_integrity_on_write());
@@ -155,7 +149,8 @@ public class FhirServerConfigCommon {
jpaStorageSettings.setDeleteExpungeEnabled(appProperties.getDelete_expunge_enabled()); jpaStorageSettings.setDeleteExpungeEnabled(appProperties.getDelete_expunge_enabled());
jpaStorageSettings.setExpungeEnabled(appProperties.getExpunge_enabled()); jpaStorageSettings.setExpungeEnabled(appProperties.getExpunge_enabled());
jpaStorageSettings.setLanguageSearchParameterEnabled(appProperties.getLanguage_search_parameter_enabled()); jpaStorageSettings.setLanguageSearchParameterEnabled(appProperties.getLanguage_search_parameter_enabled());
jpaStorageSettings.setValidateResourceStatusForPackageUpload(appProperties.getValidate_resource_status_for_package_upload()); jpaStorageSettings.setValidateResourceStatusForPackageUpload(
appProperties.getValidate_resource_status_for_package_upload());
jpaStorageSettings.setIndexOnUpliftedRefchains(appProperties.getUpliftedRefchains_enabled()); jpaStorageSettings.setIndexOnUpliftedRefchains(appProperties.getUpliftedRefchains_enabled());
if (!appProperties.getSearch_prefetch_thresholds().isEmpty()) { if (!appProperties.getSearch_prefetch_thresholds().isEmpty()) {
@@ -174,8 +169,6 @@ public class FhirServerConfigCommon {
Long retainCachedSearchesMinutes = appProperties.getRetain_cached_searches_mins(); Long retainCachedSearchesMinutes = appProperties.getRetain_cached_searches_mins();
jpaStorageSettings.setExpireSearchResultsAfterMillis(retainCachedSearchesMinutes * 60 * 1000); jpaStorageSettings.setExpireSearchResultsAfterMillis(retainCachedSearchesMinutes * 60 * 1000);
jpaStorageSettings.setFilterParameterEnabled(appProperties.getFilter_search_enabled()); jpaStorageSettings.setFilterParameterEnabled(appProperties.getFilter_search_enabled());
jpaStorageSettings.setHibernateSearchIndexSearchParams(appProperties.getAdvanced_lucene_indexing()); jpaStorageSettings.setHibernateSearchIndexSearchParams(appProperties.getAdvanced_lucene_indexing());
jpaStorageSettings.setTreatBaseUrlsAsLocal(new HashSet<>(appProperties.getLocal_base_urls())); jpaStorageSettings.setTreatBaseUrlsAsLocal(new HashSet<>(appProperties.getLocal_base_urls()));
@@ -239,7 +232,6 @@ public class FhirServerConfigCommon {
return new YamlPropertySourceLoader(); return new YamlPropertySourceLoader();
} }
@Bean @Bean
public PartitionSettings partitionSettings(AppProperties appProperties) { public PartitionSettings partitionSettings(AppProperties appProperties) {
PartitionSettings retVal = new PartitionSettings(); PartitionSettings retVal = new PartitionSettings();
@@ -247,7 +239,8 @@ public class FhirServerConfigCommon {
// Partitioning // Partitioning
if (appProperties.getPartitioning() != null) { if (appProperties.getPartitioning() != null) {
retVal.setPartitioningEnabled(true); retVal.setPartitioningEnabled(true);
boolean databasePartitionModeEnabled = defaultIfNull(appProperties.getPartitioning().getDatabase_partition_mode_enabled(), Boolean.FALSE); boolean databasePartitionModeEnabled =
defaultIfNull(appProperties.getPartitioning().getDatabase_partition_mode_enabled(), Boolean.FALSE);
Integer defaultPartitionId = appProperties.getPartitioning().getDefault_partition_id(); Integer defaultPartitionId = appProperties.getPartitioning().getDefault_partition_id();
if (databasePartitionModeEnabled) { if (databasePartitionModeEnabled) {
retVal.setDatabasePartitionMode(true); retVal.setDatabasePartitionMode(true);
@@ -265,7 +258,6 @@ public class FhirServerConfigCommon {
appProperties.getPartitioning().getConditional_create_duplicate_identifiers_enabled()); appProperties.getPartitioning().getConditional_create_duplicate_identifiers_enabled());
} }
return retVal; return retVal;
} }
@@ -274,7 +266,6 @@ public class FhirServerConfigCommon {
return new PartitionModeConfigurer(); return new PartitionModeConfigurer();
} }
@Primary @Primary
@Bean @Bean
public HibernatePropertiesProvider jpaStarterDialectProvider( public HibernatePropertiesProvider jpaStarterDialectProvider(

View File

@@ -1,7 +1,6 @@
package ca.uhn.fhir.jpa.starter.common; package ca.uhn.fhir.jpa.starter.common;
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.interceptor.api.IInterceptorService;
import ca.uhn.fhir.jpa.interceptor.PatientIdPartitionInterceptor; import ca.uhn.fhir.jpa.interceptor.PatientIdPartitionInterceptor;
import ca.uhn.fhir.jpa.model.config.PartitionSettings; import ca.uhn.fhir.jpa.model.config.PartitionSettings;
import ca.uhn.fhir.jpa.partition.PartitionManagementProvider; import ca.uhn.fhir.jpa.partition.PartitionManagementProvider;
@@ -20,24 +19,29 @@ public class PartitionModeConfigurer {
@Autowired @Autowired
private AppProperties myAppProperties; private AppProperties myAppProperties;
@Autowired @Autowired
private FhirContext myFhirContext; private FhirContext myFhirContext;
@Autowired @Autowired
private ISearchParamExtractor mySearchParamExtractor; private ISearchParamExtractor mySearchParamExtractor;
@Autowired @Autowired
private PartitionSettings myPartitionSettings; private PartitionSettings myPartitionSettings;
@Autowired @Autowired
private RestfulServer myRestfulServer; private RestfulServer myRestfulServer;
@Autowired @Autowired
private PartitionManagementProvider myPartitionManagementProvider; private PartitionManagementProvider myPartitionManagementProvider;
@PostConstruct @PostConstruct
public void start() { public void start() {
if (myAppProperties.getPartitioning() != null) { if (myAppProperties.getPartitioning() != null) {
if (myAppProperties.getPartitioning().getPatient_id_partitioning_mode() == Boolean.TRUE) { if (myAppProperties.getPartitioning().getPatient_id_partitioning_mode() == Boolean.TRUE) {
ourLog.info("Partitioning mode enabled in: Patient ID partitioning mode"); ourLog.info("Partitioning mode enabled in: Patient ID partitioning mode");
PatientIdPartitionInterceptor patientIdInterceptor = new PatientIdPartitionInterceptor(myFhirContext, mySearchParamExtractor, myPartitionSettings); PatientIdPartitionInterceptor patientIdInterceptor =
new PatientIdPartitionInterceptor(myFhirContext, mySearchParamExtractor, myPartitionSettings);
myRestfulServer.registerInterceptor(patientIdInterceptor); myRestfulServer.registerInterceptor(patientIdInterceptor);
myPartitionSettings.setUnnamedPartitionMode(true); myPartitionSettings.setUnnamedPartitionMode(true);
} else if (myAppProperties.getPartitioning().getRequest_tenant_partitioning_mode() == Boolean.TRUE) { } else if (myAppProperties.getPartitioning().getRequest_tenant_partitioning_mode() == Boolean.TRUE) {
@@ -49,5 +53,4 @@ public class PartitionModeConfigurer {
myRestfulServer.registerProviders(myPartitionManagementProvider); myRestfulServer.registerProviders(myPartitionManagementProvider);
} }
} }
} }

View File

@@ -92,12 +92,12 @@ import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfiguration;
import javax.sql.DataSource;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
import javax.sql.DataSource;
import static ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory.ENABLE_REPOSITORY_VALIDATING_INTERCEPTOR; import static ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory.ENABLE_REPOSITORY_VALIDATING_INTERCEPTOR;
@@ -149,9 +149,10 @@ public class StarterJpaConfig {
public LocalContainerEntityManagerFactoryBean entityManagerFactory( public LocalContainerEntityManagerFactoryBean entityManagerFactory(
DataSource myDataSource, DataSource myDataSource,
ConfigurableListableBeanFactory myConfigurableListableBeanFactory, ConfigurableListableBeanFactory myConfigurableListableBeanFactory,
FhirContext theFhirContext, JpaStorageSettings theStorageSettings) { FhirContext theFhirContext,
LocalContainerEntityManagerFactoryBean retVal = JpaStorageSettings theStorageSettings) {
HapiEntityManagerFactoryUtil.newEntityManagerFactory(myConfigurableListableBeanFactory, theFhirContext, theStorageSettings); LocalContainerEntityManagerFactoryBean retVal = HapiEntityManagerFactoryUtil.newEntityManagerFactory(
myConfigurableListableBeanFactory, theFhirContext, theStorageSettings);
retVal.setPersistenceUnitName("HAPI_PU"); retVal.setPersistenceUnitName("HAPI_PU");
try { try {
@@ -287,7 +288,8 @@ public class StarterJpaConfig {
IPackageInstallerSvc packageInstallerSvc, IPackageInstallerSvc packageInstallerSvc,
ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc, ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc,
ApplicationContext appContext, ApplicationContext appContext,
Optional<IpsOperationProvider> theIpsOperationProvider, Optional<IImplementationGuideOperationProvider> implementationGuideOperationProvider) { Optional<IpsOperationProvider> theIpsOperationProvider,
Optional<IImplementationGuideOperationProvider> implementationGuideOperationProvider) {
RestfulServer fhirServer = new RestfulServer(fhirSystemDao.getContext()); RestfulServer fhirServer = new RestfulServer(fhirSystemDao.getContext());
List<String> supportedResourceTypes = appProperties.getSupported_resource_types(); List<String> supportedResourceTypes = appProperties.getSupported_resource_types();

View File

@@ -46,8 +46,9 @@ public class RepositoryValidationInterceptorFactoryDstu3 implements IRepositoryV
public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() { public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() {
IBundleProvider results = structureDefinitionResourceProvider.search( IBundleProvider results = structureDefinitionResourceProvider.search(new SearchParameterMap()
new SearchParameterMap().setLoadSynchronous(true).add(StructureDefinition.SP_KIND, new TokenParam("resource"))); .setLoadSynchronous(true)
.add(StructureDefinition.SP_KIND, new TokenParam("resource")));
Map<String, List<StructureDefinition>> structureDefinitions = results.getResources(0, results.size()).stream() Map<String, List<StructureDefinition>> structureDefinitions = results.getResources(0, results.size()).stream()
.map(StructureDefinition.class::cast) .map(StructureDefinition.class::cast)
.collect(Collectors.groupingBy(StructureDefinition::getType)); .collect(Collectors.groupingBy(StructureDefinition::getType));

View File

@@ -47,8 +47,9 @@ public class RepositoryValidationInterceptorFactoryR4 implements IRepositoryVali
@Override @Override
public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() { public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() {
IBundleProvider results = structureDefinitionResourceProvider.search( IBundleProvider results = structureDefinitionResourceProvider.search(new SearchParameterMap()
new SearchParameterMap().setLoadSynchronous(true).add(StructureDefinition.SP_KIND, new TokenParam("resource"))); .setLoadSynchronous(true)
.add(StructureDefinition.SP_KIND, new TokenParam("resource")));
Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream() Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream()
.map(StructureDefinition.class::cast) .map(StructureDefinition.class::cast)
.collect(Collectors.groupingBy(StructureDefinition::getType)); .collect(Collectors.groupingBy(StructureDefinition::getType));

View File

@@ -47,8 +47,9 @@ public class RepositoryValidationInterceptorFactoryR4B implements IRepositoryVal
@Override @Override
public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() { public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() {
IBundleProvider results = structureDefinitionResourceProvider.search( IBundleProvider results = structureDefinitionResourceProvider.search(new SearchParameterMap()
new SearchParameterMap().setLoadSynchronous(true).add(StructureDefinition.SP_KIND, new TokenParam("resource"))); .setLoadSynchronous(true)
.add(StructureDefinition.SP_KIND, new TokenParam("resource")));
Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream() Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream()
.map(StructureDefinition.class::cast) .map(StructureDefinition.class::cast)
.collect(Collectors.groupingBy(StructureDefinition::getType)); .collect(Collectors.groupingBy(StructureDefinition::getType));

View File

@@ -46,8 +46,9 @@ public class RepositoryValidationInterceptorFactoryR5 implements IRepositoryVali
public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() { public RepositoryValidatingInterceptor buildUsingStoredStructureDefinitions() {
IBundleProvider results = structureDefinitionResourceProvider.search( IBundleProvider results = structureDefinitionResourceProvider.search(new SearchParameterMap()
new SearchParameterMap().setLoadSynchronous(true).add(StructureDefinition.SP_KIND, new TokenParam("resource"))); .setLoadSynchronous(true)
.add(StructureDefinition.SP_KIND, new TokenParam("resource")));
Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream() Map<String, List<StructureDefinition>> structureDefintions = results.getResources(0, results.size()).stream()
.map(StructureDefinition.class::cast) .map(StructureDefinition.class::cast)
.collect(Collectors.groupingBy(StructureDefinition::getType)); .collect(Collectors.groupingBy(StructureDefinition::getType));

View File

@@ -9,10 +9,17 @@ import java.io.IOException;
public interface IImplementationGuideOperationProvider { public interface IImplementationGuideOperationProvider {
static PackageInstallationSpec toPackageInstallationSpec(byte[] npmPackageAsByteArray) throws IOException { static PackageInstallationSpec toPackageInstallationSpec(byte[] npmPackageAsByteArray) throws IOException {
NpmPackage npmPackage = NpmPackage.fromPackage(new ByteArrayInputStream(npmPackageAsByteArray)); NpmPackage npmPackage = NpmPackage.fromPackage(new ByteArrayInputStream(npmPackageAsByteArray));
return new PackageInstallationSpec().setName(npmPackage.name()).setPackageContents(npmPackageAsByteArray).setVersion(npmPackage.version()).setInstallMode(PackageInstallationSpec.InstallModeEnum.STORE_AND_INSTALL).setFetchDependencies(false); return new PackageInstallationSpec()
.setName(npmPackage.name())
.setPackageContents(npmPackageAsByteArray)
.setVersion(npmPackage.version())
.setInstallMode(PackageInstallationSpec.InstallModeEnum.STORE_AND_INSTALL)
.setFetchDependencies(false);
} }
// The following declaration is the one that counts but cannot be used across different versions as stating Base64BinaryType would bind to a separate version // The following declaration is the one that counts but cannot be used across different versions as stating
// Base64BinaryType would bind to a separate version
// Parameters install(@OperationParam(name = "npmContent",min = 1, max = 1) Base64BinaryType implementationGuide); // Parameters install(@OperationParam(name = "npmContent",min = 1, max = 1) Base64BinaryType implementationGuide);
// Parameters uninstall(@OperationParam(name = "name", min = 1, max = 1) String name, @OperationParam(name = "version", min = 1, max = 1) String version) ; // Parameters uninstall(@OperationParam(name = "name", min = 1, max = 1) String name, @OperationParam(name =
// "version", min = 1, max = 1) String version) ;
} }

View File

@@ -23,10 +23,12 @@ public class ImplementationGuideR4OperationProvider implements IImplementationGu
} }
@Operation(name = "$install", typeName = "ImplementationGuide") @Operation(name = "$install", typeName = "ImplementationGuide")
public Parameters install(@OperationParam(name = "npmContent", min = 1, max = 1) Base64BinaryType implementationGuide) { public Parameters install(
@OperationParam(name = "npmContent", min = 1, max = 1) Base64BinaryType implementationGuide) {
try { try {
packageInstallerSvc.install(IImplementationGuideOperationProvider.toPackageInstallationSpec(implementationGuide.getValue())); packageInstallerSvc.install(
IImplementationGuideOperationProvider.toPackageInstallationSpec(implementationGuide.getValue()));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@@ -34,10 +36,12 @@ public class ImplementationGuideR4OperationProvider implements IImplementationGu
} }
@Operation(name = "$uninstall", typeName = "ImplementationGuide") @Operation(name = "$uninstall", typeName = "ImplementationGuide")
public Parameters uninstall(@OperationParam(name = "name", min = 1, max = 1) String name, @OperationParam(name = "version", min = 1, max = 1) String version) { public Parameters uninstall(
@OperationParam(name = "name", min = 1, max = 1) String name,
@OperationParam(name = "version", min = 1, max = 1) String version) {
packageInstallerSvc.uninstall(new PackageInstallationSpec().setName(name).setVersion(version)); packageInstallerSvc.uninstall(
new PackageInstallationSpec().setName(name).setVersion(version));
return new Parameters(); return new Parameters();
} }
} }

View File

@@ -23,21 +23,25 @@ public class ImplementationGuideR5OperationProvider implements IImplementationGu
} }
@Operation(name = "$install", typeName = "ImplementationGuide") @Operation(name = "$install", typeName = "ImplementationGuide")
public Parameters install(@OperationParam(name = "npmContent", min = 1, max = 1) Base64BinaryType implementationGuide) { public Parameters install(
@OperationParam(name = "npmContent", min = 1, max = 1) Base64BinaryType implementationGuide) {
try { try {
packageInstallerSvc.install(IImplementationGuideOperationProvider.toPackageInstallationSpec(implementationGuide.getValue())); packageInstallerSvc.install(
IImplementationGuideOperationProvider.toPackageInstallationSpec(implementationGuide.getValue()));
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return new Parameters(); return new Parameters();
} }
@Operation(name = "$uninstall", typeName = "ImplementationGuide") @Operation(name = "$uninstall", typeName = "ImplementationGuide")
public Parameters uninstall(@OperationParam(name = "name", min = 1, max = 1) String name, @OperationParam(name = "version", min = 1, max = 1) String version) { public Parameters uninstall(
@OperationParam(name = "name", min = 1, max = 1) String name,
@OperationParam(name = "version", min = 1, max = 1) String version) {
packageInstallerSvc.uninstall(new PackageInstallationSpec().setName(name).setVersion(version)); packageInstallerSvc.uninstall(
new PackageInstallationSpec().setName(name).setVersion(version));
return new Parameters(); return new Parameters();
} }
} }

View File

@@ -17,21 +17,20 @@ public class CustomContentFilesConfigurer implements WebMvcConfigurer {
public static final String CUSTOM_CONTENT = "/content"; public static final String CUSTOM_CONTENT = "/content";
private String customContentPath; private String customContentPath;
public CustomContentFilesConfigurer(AppProperties appProperties) { public CustomContentFilesConfigurer(AppProperties appProperties) {
customContentPath = appProperties.getCustom_content_path(); customContentPath = appProperties.getCustom_content_path();
if (customContentPath.endsWith("/")) if (customContentPath.endsWith("/"))
customContentPath = customContentPath.substring(0, customContentPath.lastIndexOf('/')); customContentPath = customContentPath.substring(0, customContentPath.lastIndexOf('/'));
} }
@Override @Override
public void addResourceHandlers(@NotNull ResourceHandlerRegistry theRegistry) { public void addResourceHandlers(@NotNull ResourceHandlerRegistry theRegistry) {
if (!theRegistry.hasMappingForPattern(CUSTOM_CONTENT + "/**")) { if (!theRegistry.hasMappingForPattern(CUSTOM_CONTENT + "/**")) {
try { try {
theRegistry.addResourceHandler(CUSTOM_CONTENT + "/**").addResourceLocations(new FileUrlResource(customContentPath)); theRegistry
.addResourceHandler(CUSTOM_CONTENT + "/**")
.addResourceLocations(new FileUrlResource(customContentPath));
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

View File

@@ -22,7 +22,10 @@ public class JobController {
} }
@RequestMapping(value = JobController.JOBS, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(value = JobController.JOBS, method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
public List<JobInstance> getAllJobs(@RequestParam(name = "pageStart") @Min(0) int pageStart, @RequestParam(name = "batchSize") int batchSize, @RequestParam(name = "jobStatus", required = false) StatusEnum jobStatus) { public List<JobInstance> getAllJobs(
@RequestParam(name = "pageStart") @Min(0) int pageStart,
@RequestParam(name = "batchSize") int batchSize,
@RequestParam(name = "jobStatus", required = false) StatusEnum jobStatus) {
JobInstanceFetchRequest jobInstanceFetchRequest = new JobInstanceFetchRequest(); JobInstanceFetchRequest jobInstanceFetchRequest = new JobInstanceFetchRequest();
jobInstanceFetchRequest.setPageStart(pageStart); jobInstanceFetchRequest.setPageStart(pageStart);
jobInstanceFetchRequest.setBatchSize(batchSize); jobInstanceFetchRequest.setBatchSize(batchSize);
@@ -32,7 +35,10 @@ public class JobController {
return theJobCoordinator.fetchAllJobInstances(jobInstanceFetchRequest).getContent(); return theJobCoordinator.fetchAllJobInstances(jobInstanceFetchRequest).getContent();
} }
@RequestMapping(value = JobController.JOBS, method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(
value = JobController.JOBS,
method = RequestMethod.DELETE,
produces = MediaType.APPLICATION_JSON_VALUE)
public JobOperationResultJson cancelInstance(@RequestParam(name = "instanceId") String instanceId) { public JobOperationResultJson cancelInstance(@RequestParam(name = "instanceId") String instanceId) {
return theJobCoordinator.cancelInstance(instanceId); return theJobCoordinator.cancelInstance(instanceId);
} }

View File

@@ -20,21 +20,19 @@ public class WebAppFilesConfigurer implements WebMvcConfigurer {
public static final String WEB_CONTENT = "web"; public static final String WEB_CONTENT = "web";
private String appContentPath; private String appContentPath;
public WebAppFilesConfigurer(AppProperties appProperties) { public WebAppFilesConfigurer(AppProperties appProperties) {
appContentPath = appProperties.getApp_content_path(); appContentPath = appProperties.getApp_content_path();
if (appContentPath.endsWith("/")) if (appContentPath.endsWith("/")) appContentPath = appContentPath.substring(0, appContentPath.lastIndexOf('/'));
appContentPath = appContentPath.substring(0, appContentPath.lastIndexOf('/'));
} }
@Override @Override
public void addResourceHandlers(@NotNull ResourceHandlerRegistry theRegistry) { public void addResourceHandlers(@NotNull ResourceHandlerRegistry theRegistry) {
if (!theRegistry.hasMappingForPattern(WEB_CONTENT + "/**")) { if (!theRegistry.hasMappingForPattern(WEB_CONTENT + "/**")) {
{ {
try { try {
theRegistry.addResourceHandler(WEB_CONTENT + "/**").addResourceLocations(new FileUrlResource(appContentPath)); theRegistry
.addResourceHandler(WEB_CONTENT + "/**")
.addResourceLocations(new FileUrlResource(appContentPath));
} catch (MalformedURLException e) { } catch (MalformedURLException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
@@ -47,10 +45,10 @@ public class WebAppFilesConfigurer implements WebMvcConfigurer {
String path = URI.create(appContentPath).getPath(); String path = URI.create(appContentPath).getPath();
String lastSegment = path.substring(path.lastIndexOf('/') + 1); String lastSegment = path.substring(path.lastIndexOf('/') + 1);
registry.addViewController(WEB_CONTENT + "/" + lastSegment).setViewName("redirect:" + lastSegment + "/index.html"); registry.addViewController(WEB_CONTENT + "/" + lastSegment)
.setViewName("redirect:" + lastSegment + "/index.html");
registry.addViewController(WEB_CONTENT + "/" + lastSegment + "/").setViewName("redirect:index.html"); registry.addViewController(WEB_CONTENT + "/" + lastSegment + "/").setViewName("redirect:index.html");
registry.setOrder(Ordered.HIGHEST_PRECEDENCE); registry.setOrder(Ordered.HIGHEST_PRECEDENCE);
} }
} }