|
|
|
|
@@ -12,9 +12,9 @@ import ca.uhn.fhir.context.support.IValidationSupport;
|
|
|
|
|
import ca.uhn.fhir.interceptor.api.IInterceptorBroadcaster;
|
|
|
|
|
import ca.uhn.fhir.jpa.api.IDaoRegistry;
|
|
|
|
|
import ca.uhn.fhir.jpa.api.config.DaoConfig;
|
|
|
|
|
import ca.uhn.fhir.jpa.api.config.ThreadPoolFactoryConfig;
|
|
|
|
|
import ca.uhn.fhir.jpa.api.dao.DaoRegistry;
|
|
|
|
|
import ca.uhn.fhir.jpa.api.dao.IFhirSystemDao;
|
|
|
|
|
import ca.uhn.fhir.jpa.batch.config.NonPersistedBatchConfigurer;
|
|
|
|
|
import ca.uhn.fhir.jpa.binary.interceptor.BinaryStorageInterceptor;
|
|
|
|
|
import ca.uhn.fhir.jpa.binary.provider.BinaryAccessProvider;
|
|
|
|
|
import ca.uhn.fhir.jpa.bulk.export.provider.BulkDataExportProvider;
|
|
|
|
|
@@ -26,6 +26,8 @@ import ca.uhn.fhir.jpa.dao.IFulltextSearchSvc;
|
|
|
|
|
import ca.uhn.fhir.jpa.dao.mdm.MdmLinkDaoJpaImpl;
|
|
|
|
|
import ca.uhn.fhir.jpa.dao.search.HSearchSortHelperImpl;
|
|
|
|
|
import ca.uhn.fhir.jpa.dao.search.IHSearchSortHelper;
|
|
|
|
|
import ca.uhn.fhir.jpa.dao.tx.HapiTransactionService;
|
|
|
|
|
import ca.uhn.fhir.jpa.delete.ThreadSafeResourceDeleterSvc;
|
|
|
|
|
import ca.uhn.fhir.jpa.graphql.GraphQLProvider;
|
|
|
|
|
import ca.uhn.fhir.jpa.interceptor.CascadingDeleteInterceptor;
|
|
|
|
|
import ca.uhn.fhir.jpa.interceptor.validation.RepositoryValidatingInterceptor;
|
|
|
|
|
@@ -62,14 +64,10 @@ import ca.uhn.fhir.validation.ResultSeverityEnum;
|
|
|
|
|
import com.google.common.base.Strings;
|
|
|
|
|
import com.google.common.collect.ImmutableList;
|
|
|
|
|
import org.hl7.fhir.common.hapi.validation.support.CachingValidationSupport;
|
|
|
|
|
import org.springframework.batch.core.configuration.annotation.BatchConfigurer;
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
|
|
|
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
|
|
|
import org.springframework.context.annotation.Bean;
|
|
|
|
|
import org.springframework.context.annotation.Conditional;
|
|
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
import org.springframework.context.annotation.Primary;
|
|
|
|
|
import org.springframework.context.annotation.*;
|
|
|
|
|
import org.springframework.core.env.ConfigurableEnvironment;
|
|
|
|
|
import org.springframework.http.HttpHeaders;
|
|
|
|
|
import org.springframework.orm.jpa.JpaTransactionManager;
|
|
|
|
|
@@ -83,6 +81,9 @@ import java.util.*;
|
|
|
|
|
import static ca.uhn.fhir.jpa.starter.common.validation.IRepositoryValidationInterceptorFactory.ENABLE_REPOSITORY_VALIDATING_INTERCEPTOR;
|
|
|
|
|
|
|
|
|
|
@Configuration
|
|
|
|
|
@Import(
|
|
|
|
|
ThreadPoolFactoryConfig.class
|
|
|
|
|
)
|
|
|
|
|
public class StarterJpaConfig {
|
|
|
|
|
|
|
|
|
|
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(StarterJpaConfig.class);
|
|
|
|
|
@@ -103,10 +104,6 @@ public class StarterJpaConfig {
|
|
|
|
|
return ValidationSupportConfigUtil.newCachingValidationSupport(theJpaValidationSupportChain);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
|
public BatchConfigurer batchConfigurer() {
|
|
|
|
|
return new NonPersistedBatchConfigurer();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private ConfigurableEnvironment configurableEnvironment;
|
|
|
|
|
@@ -123,6 +120,7 @@ public class StarterJpaConfig {
|
|
|
|
|
return pagingProvider;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
|
public IResourceSupportedSvc resourceSupportedSvc(IDaoRegistry theDaoRegistry) {
|
|
|
|
|
return new DaoRegistryResourceSupportedSvc(theDaoRegistry);
|
|
|
|
|
@@ -150,7 +148,7 @@ public class StarterJpaConfig {
|
|
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
|
@Primary
|
|
|
|
|
public JpaTransactionManager hapiTransactionManager(EntityManagerFactory entityManagerFactory) {
|
|
|
|
|
public JpaTransactionManager transactionManager(EntityManagerFactory entityManagerFactory) {
|
|
|
|
|
JpaTransactionManager retVal = new JpaTransactionManager();
|
|
|
|
|
retVal.setEntityManagerFactory(entityManagerFactory);
|
|
|
|
|
return retVal;
|
|
|
|
|
@@ -246,7 +244,7 @@ public class StarterJpaConfig {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Bean
|
|
|
|
|
public RestfulServer restfulServer(IFhirSystemDao<?, ?> fhirSystemDao, AppProperties appProperties, DaoRegistry daoRegistry, Optional<MdmProviderLoader> mdmProviderProvider, IJpaSystemProvider jpaSystemProvider, ResourceProviderFactory resourceProviderFactory, DaoConfig daoConfig, ISearchParamRegistry searchParamRegistry, IValidationSupport theValidationSupport, DatabaseBackedPagingProvider databaseBackedPagingProvider, LoggingInterceptor loggingInterceptor, Optional<TerminologyUploaderProvider> terminologyUploaderProvider, Optional<SubscriptionTriggeringProvider> subscriptionTriggeringProvider, Optional<CorsInterceptor> corsInterceptor, IInterceptorBroadcaster interceptorBroadcaster, Optional<BinaryAccessProvider> binaryAccessProvider, BinaryStorageInterceptor binaryStorageInterceptor, IValidatorModule validatorModule, Optional<GraphQLProvider> graphQLProvider, BulkDataExportProvider bulkDataExportProvider, BulkDataImportProvider bulkDataImportProvider, ValueSetOperationProvider theValueSetOperationProvider, ReindexProvider reindexProvider, PartitionManagementProvider partitionManagementProvider, Optional<RepositoryValidatingInterceptor> repositoryValidatingInterceptor, IPackageInstallerSvc packageInstallerSvc) {
|
|
|
|
|
public RestfulServer restfulServer(IFhirSystemDao<?, ?> fhirSystemDao, AppProperties appProperties, DaoRegistry daoRegistry, Optional<MdmProviderLoader> mdmProviderProvider, IJpaSystemProvider jpaSystemProvider, ResourceProviderFactory resourceProviderFactory, DaoConfig daoConfig, ISearchParamRegistry searchParamRegistry, IValidationSupport theValidationSupport, DatabaseBackedPagingProvider databaseBackedPagingProvider, LoggingInterceptor loggingInterceptor, Optional<TerminologyUploaderProvider> terminologyUploaderProvider, Optional<SubscriptionTriggeringProvider> subscriptionTriggeringProvider, Optional<CorsInterceptor> corsInterceptor, IInterceptorBroadcaster interceptorBroadcaster, Optional<BinaryAccessProvider> binaryAccessProvider, BinaryStorageInterceptor binaryStorageInterceptor, IValidatorModule validatorModule, Optional<GraphQLProvider> graphQLProvider, BulkDataExportProvider bulkDataExportProvider, BulkDataImportProvider bulkDataImportProvider, ValueSetOperationProvider theValueSetOperationProvider, ReindexProvider reindexProvider, PartitionManagementProvider partitionManagementProvider, Optional<RepositoryValidatingInterceptor> repositoryValidatingInterceptor, IPackageInstallerSvc packageInstallerSvc, ThreadSafeResourceDeleterSvc theThreadSafeResourceDeleterSvc) {
|
|
|
|
|
RestfulServer fhirServer = new RestfulServer(fhirSystemDao.getContext());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -352,7 +350,7 @@ public class StarterJpaConfig {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (appProperties.getAllow_cascading_deletes()) {
|
|
|
|
|
CascadingDeleteInterceptor cascadingDeleteInterceptor = new CascadingDeleteInterceptor(fhirSystemDao.getContext(), daoRegistry, interceptorBroadcaster);
|
|
|
|
|
CascadingDeleteInterceptor cascadingDeleteInterceptor = new CascadingDeleteInterceptor(fhirSystemDao.getContext(), daoRegistry, interceptorBroadcaster, theThreadSafeResourceDeleterSvc);
|
|
|
|
|
fhirServer.registerInterceptor(cascadingDeleteInterceptor);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|