More work on subscriptions

This commit is contained in:
jamesagnew 2020-04-03 07:43:21 -04:00
parent 470063e8ab
commit 7c6024fa14
65 changed files with 240 additions and 81 deletions

View File

@ -271,7 +271,6 @@
<attach>false</attach> <attach>false</attach>
<descriptors> <descriptors>
<descriptor>${project.basedir}/src/assembly/hapi-fhir-standard-distribution.xml</descriptor> <descriptor>${project.basedir}/src/assembly/hapi-fhir-standard-distribution.xml</descriptor>
<descriptor>${project.basedir}/src/assembly/hapi-fhir-jpaserver-example.xml</descriptor>
<descriptor>${project.basedir}/src/assembly/hapi-fhir-android-distribution.xml</descriptor> <descriptor>${project.basedir}/src/assembly/hapi-fhir-android-distribution.xml</descriptor>
<descriptor>${project.basedir}/src/assembly/hapi-fhir-cli.xml</descriptor> <descriptor>${project.basedir}/src/assembly/hapi-fhir-cli.xml</descriptor>
</descriptors> </descriptors>

View File

@ -23,7 +23,7 @@ import java.util.TreeSet;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -10,7 +10,7 @@ import java.util.Collection;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -15,7 +15,7 @@ import java.util.List;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -12,7 +12,7 @@ import javax.servlet.http.HttpServletRequest;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -4,7 +4,7 @@ import javax.servlet.http.HttpServletRequest;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -4,7 +4,7 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletRequest;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -4,7 +4,7 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -6,7 +6,7 @@ import org.hl7.fhir.instance.model.api.IIdType;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.dao;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/* /*
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.model;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.api.svc;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR JPA API
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -32,6 +32,7 @@ import ca.uhn.fhir.jpa.search.cache.ISearchCacheSvc;
import ca.uhn.fhir.jpa.search.cache.ISearchResultCacheSvc; import ca.uhn.fhir.jpa.search.cache.ISearchResultCacheSvc;
import ca.uhn.fhir.jpa.search.reindex.IResourceReindexingSvc; import ca.uhn.fhir.jpa.search.reindex.IResourceReindexingSvc;
import ca.uhn.fhir.jpa.search.reindex.ResourceReindexingSvcImpl; import ca.uhn.fhir.jpa.search.reindex.ResourceReindexingSvcImpl;
import ca.uhn.fhir.jpa.searchparam.config.SearchParamConfig;
import ca.uhn.fhir.jpa.searchparam.registry.ISearchParamRegistry; import ca.uhn.fhir.jpa.searchparam.registry.ISearchParamRegistry;
import ca.uhn.fhir.jpa.searchparam.registry.SearchParamRegistryImpl; import ca.uhn.fhir.jpa.searchparam.registry.SearchParamRegistryImpl;
import ca.uhn.fhir.rest.api.server.RequestDetails; import ca.uhn.fhir.rest.api.server.RequestDetails;
@ -43,6 +44,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType; import org.springframework.context.annotation.FilterType;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Lazy; import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope; import org.springframework.context.annotation.Scope;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
@ -83,7 +85,12 @@ import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = WebSocketConfigurer.class), @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = WebSocketConfigurer.class),
@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*\\.test\\..*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*\\.test\\..*"),
@ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*Test.*"), @ComponentScan.Filter(type = FilterType.REGEX, pattern = ".*Test.*"),
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "ca.uhn.fhir.jpa.subscription.module.standalone.*")}) @ComponentScan.Filter(type = FilterType.REGEX, pattern = "ca.uhn.fhir.jpa.subscription.*"),
@ComponentScan.Filter(type = FilterType.REGEX, pattern = "ca.uhn.fhir.jpa.searchparam.*")
})
@Import({
SearchParamConfig.class
})
public abstract class BaseConfig { public abstract class BaseConfig {
public static final String JPA_VALIDATION_SUPPORT_CHAIN = "myJpaValidationSupportChain"; public static final String JPA_VALIDATION_SUPPORT_CHAIN = "myJpaValidationSupportChain";
@ -133,12 +140,6 @@ public abstract class BaseConfig {
return b; return b;
} }
@Bean
public ISearchParamRegistry searchParamRegistry() {
return new SearchParamRegistryImpl();
}
@Bean(name = "mySubscriptionTriggeringProvider") @Bean(name = "mySubscriptionTriggeringProvider")
@Lazy @Lazy
public SubscriptionTriggeringProvider subscriptionTriggeringProvider() { public SubscriptionTriggeringProvider subscriptionTriggeringProvider() {

View File

@ -124,11 +124,6 @@ public class BaseDstu2Config extends BaseConfig {
return searchDao; return searchDao;
} }
@Bean(autowire = Autowire.BY_TYPE)
public SearchParamExtractorDstu2 searchParamExtractor() {
return new SearchParamExtractorDstu2();
}
@Bean(name = "mySystemDaoDstu2", autowire = Autowire.BY_NAME) @Bean(name = "mySystemDaoDstu2", autowire = Autowire.BY_NAME)
public IFhirSystemDao<Bundle, MetaDt> systemDaoDstu2() { public IFhirSystemDao<Bundle, MetaDt> systemDaoDstu2() {
ca.uhn.fhir.jpa.dao.FhirSystemDaoDstu2 retVal = new ca.uhn.fhir.jpa.dao.FhirSystemDaoDstu2(); ca.uhn.fhir.jpa.dao.FhirSystemDaoDstu2 retVal = new ca.uhn.fhir.jpa.dao.FhirSystemDaoDstu2();

View File

@ -101,11 +101,6 @@ public class BaseDstu3Config extends BaseConfigDstu3Plus {
return new FulltextSearchSvcImpl(); return new FulltextSearchSvcImpl();
} }
@Bean
public SearchParamExtractorDstu3 searchParamExtractor() {
return new SearchParamExtractorDstu3();
}
@Bean(name = "mySystemDaoDstu3") @Bean(name = "mySystemDaoDstu3")
public IFhirSystemDao<Bundle, Meta> systemDaoDstu3() { public IFhirSystemDao<Bundle, Meta> systemDaoDstu3() {
return new ca.uhn.fhir.jpa.dao.dstu3.FhirSystemDaoDstu3(); return new ca.uhn.fhir.jpa.dao.dstu3.FhirSystemDaoDstu3();

View File

@ -103,11 +103,6 @@ public class BaseR4Config extends BaseConfigDstu3Plus {
return searchDao; return searchDao;
} }
@Bean(autowire = Autowire.BY_TYPE)
public SearchParamExtractorR4 searchParamExtractor() {
return new SearchParamExtractorR4();
}
@Bean(name = "mySystemDaoR4", autowire = Autowire.BY_NAME) @Bean(name = "mySystemDaoR4", autowire = Autowire.BY_NAME)
public IFhirSystemDao<Bundle, Meta> systemDaoR4() { public IFhirSystemDao<Bundle, Meta> systemDaoR4() {
ca.uhn.fhir.jpa.dao.r4.FhirSystemDaoR4 retVal = new ca.uhn.fhir.jpa.dao.r4.FhirSystemDaoR4(); ca.uhn.fhir.jpa.dao.r4.FhirSystemDaoR4 retVal = new ca.uhn.fhir.jpa.dao.r4.FhirSystemDaoR4();

View File

@ -103,11 +103,6 @@ public class BaseR5Config extends BaseConfigDstu3Plus {
return searchDao; return searchDao;
} }
@Bean(autowire = Autowire.BY_TYPE)
public SearchParamExtractorR5 searchParamExtractor() {
return new SearchParamExtractorR5();
}
@Bean(name = "mySystemDaoR5", autowire = Autowire.BY_NAME) @Bean(name = "mySystemDaoR5", autowire = Autowire.BY_NAME)
public IFhirSystemDao<Bundle, Meta> systemDaoR5() { public IFhirSystemDao<Bundle, Meta> systemDaoR5() {
ca.uhn.fhir.jpa.dao.r5.FhirSystemDaoR5 retVal = new ca.uhn.fhir.jpa.dao.r5.FhirSystemDaoR5(); ca.uhn.fhir.jpa.dao.r5.FhirSystemDaoR5 retVal = new ca.uhn.fhir.jpa.dao.r5.FhirSystemDaoR5();

View File

@ -96,6 +96,7 @@ public class PersistedJpaBundleProvider implements IBundleProvider {
@Autowired @Autowired
private ISearchCoordinatorSvc mySearchCoordinatorSvc; private ISearchCoordinatorSvc mySearchCoordinatorSvc;
@Autowired @Autowired
private ISearchCacheSvc mySearchCacheSvc;
/* /*
* Non autowired fields (will be different for every instance * Non autowired fields (will be different for every instance
@ -103,7 +104,6 @@ public class PersistedJpaBundleProvider implements IBundleProvider {
*/ */
private final RequestDetails myRequest; private final RequestDetails myRequest;
private ISearchCacheSvc mySearchCacheSvc;
private Search mySearchEntity; private Search mySearchEntity;
private String myUuid; private String myUuid;
private boolean myCacheHit; private boolean myCacheHit;

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.jpa.search; package ca.uhn.fhir.jpa.search;
/*-
* #%L
* HAPI FHIR JPA Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.jpa.config.BaseConfig; import ca.uhn.fhir.jpa.config.BaseConfig;
import ca.uhn.fhir.jpa.dao.ISearchBuilder; import ca.uhn.fhir.jpa.dao.ISearchBuilder;
import ca.uhn.fhir.jpa.entity.Search; import ca.uhn.fhir.jpa.entity.Search;

View File

@ -44,7 +44,6 @@ import java.util.List;
import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank;
@Service
public class MatchUrlService { public class MatchUrlService {
@Autowired @Autowired

View File

@ -21,22 +21,30 @@ package ca.uhn.fhir.jpa.searchparam.config;
*/ */
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.jpa.searchparam.MatchUrlService;
import ca.uhn.fhir.jpa.searchparam.extractor.IResourceLinkResolver;
import ca.uhn.fhir.jpa.searchparam.extractor.ISearchParamExtractor; import ca.uhn.fhir.jpa.searchparam.extractor.ISearchParamExtractor;
import ca.uhn.fhir.jpa.searchparam.extractor.ResourceLinkExtractor;
import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorDstu2; import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorDstu2;
import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorDstu3; import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorDstu3;
import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorR4; import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorR4;
import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorR5; import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorR5;
import ca.uhn.fhir.jpa.searchparam.extractor.SearchParamExtractorService;
import ca.uhn.fhir.jpa.searchparam.matcher.InMemoryResourceMatcher;
import ca.uhn.fhir.jpa.searchparam.matcher.IndexedSearchParamExtractor;
import ca.uhn.fhir.jpa.searchparam.matcher.InlineResourceLinkResolver;
import ca.uhn.fhir.jpa.searchparam.matcher.SearchParamMatcher;
import ca.uhn.fhir.jpa.searchparam.registry.ISearchParamRegistry; import ca.uhn.fhir.jpa.searchparam.registry.ISearchParamRegistry;
import ca.uhn.fhir.jpa.searchparam.registry.SearchParamRegistryImpl; import ca.uhn.fhir.jpa.searchparam.registry.SearchParamRegistryImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.EnableScheduling;
@Configuration @Configuration
@EnableScheduling @EnableScheduling
@ComponentScan(basePackages = {"ca.uhn.fhir.jpa.searchparam"})
public class SearchParamConfig { public class SearchParamConfig {
@Autowired @Autowired
@ -66,4 +74,40 @@ public class SearchParamConfig {
return new SearchParamRegistryImpl(); return new SearchParamRegistryImpl();
} }
@Bean
public MatchUrlService matchUrlService() {
return new MatchUrlService();
}
@Bean
public ResourceLinkExtractor resourceLinkExtractor() {
return new ResourceLinkExtractor();
}
@Bean
@Lazy
public SearchParamExtractorService searchParamExtractorService(){
return new SearchParamExtractorService();
}
@Bean
public IndexedSearchParamExtractor indexedSearchParamExtractor() {
return new IndexedSearchParamExtractor();
}
@Bean
public InlineResourceLinkResolver inlineResourceLinkResolver() {
return new InlineResourceLinkResolver();
}
@Bean
public InMemoryResourceMatcher InMemoryResourceMatcher() {
return new InMemoryResourceMatcher();
}
@Bean
public SearchParamMatcher SearchParamMatcher() {
return new SearchParamMatcher();
}
} }

View File

@ -46,7 +46,6 @@ import java.util.Map;
import static org.apache.commons.lang3.StringUtils.isBlank; import static org.apache.commons.lang3.StringUtils.isBlank;
import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank;
@Service
public class ResourceLinkExtractor { public class ResourceLinkExtractor {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ResourceLinkExtractor.class); private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(ResourceLinkExtractor.class);

View File

@ -36,8 +36,6 @@ import org.springframework.stereotype.Service;
import java.util.Collection; import java.util.Collection;
@Service
@Lazy
public class SearchParamExtractorService { public class SearchParamExtractorService {
private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(SearchParamExtractorService.class); private static final org.slf4j.Logger ourLog = org.slf4j.LoggerFactory.getLogger(SearchParamExtractorService.class);

View File

@ -50,7 +50,6 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@Service
public class InMemoryResourceMatcher { public class InMemoryResourceMatcher {
@Autowired @Autowired

View File

@ -30,7 +30,6 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service
public class IndexedSearchParamExtractor { public class IndexedSearchParamExtractor {
@Autowired @Autowired
private FhirContext myContext; private FhirContext myContext;

View File

@ -31,7 +31,6 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
import org.hl7.fhir.instance.model.api.IIdType; import org.hl7.fhir.instance.model.api.IIdType;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service
public class InlineResourceLinkResolver implements IResourceLinkResolver { public class InlineResourceLinkResolver implements IResourceLinkResolver {
@Override @Override

View File

@ -26,7 +26,6 @@ import org.hl7.fhir.instance.model.api.IBaseResource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service
public class SearchParamMatcher { public class SearchParamMatcher {
@Autowired @Autowired
private IndexedSearchParamExtractor myIndexedSearchParamExtractor; private IndexedSearchParamExtractor myIndexedSearchParamExtractor;

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.jpa.subscription.channel.config; package ca.uhn.fhir.jpa.subscription.channel.config;
/*-
* #%L
* HAPI FHIR Subscription Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.jpa.subscription.channel.queue.IQueueChannelFactory; import ca.uhn.fhir.jpa.subscription.channel.queue.IQueueChannelFactory;
import ca.uhn.fhir.jpa.subscription.channel.queue.LinkedBlockingQueueChannelFactory; import ca.uhn.fhir.jpa.subscription.channel.queue.LinkedBlockingQueueChannelFactory;
import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionChannelFactory; import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionChannelFactory;

View File

@ -1,11 +1,33 @@
package ca.uhn.fhir.jpa.subscription.process.config; package ca.uhn.fhir.jpa.subscription.process.config;
/*-
* #%L
* HAPI FHIR Subscription Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionChannelRegistry; import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionChannelRegistry;
import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryChannelNamer; import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryChannelNamer;
import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryHandlerFactory; import ca.uhn.fhir.jpa.subscription.channel.subscription.SubscriptionDeliveryHandlerFactory;
import ca.uhn.fhir.jpa.subscription.process.deliver.DaoResourceRetriever; import ca.uhn.fhir.jpa.subscription.process.deliver.DaoResourceRetriever;
import ca.uhn.fhir.jpa.subscription.process.deliver.IResourceRetriever; import ca.uhn.fhir.jpa.subscription.process.deliver.IResourceRetriever;
import ca.uhn.fhir.jpa.subscription.process.deliver.email.IEmailSender;
import ca.uhn.fhir.jpa.subscription.process.deliver.email.SubscriptionDeliveringEmailSubscriber;
import ca.uhn.fhir.jpa.subscription.process.deliver.resthook.SubscriptionDeliveringRestHookSubscriber; import ca.uhn.fhir.jpa.subscription.process.deliver.resthook.SubscriptionDeliveringRestHookSubscriber;
import ca.uhn.fhir.jpa.subscription.process.deliver.websocket.WebsocketConnectionValidator; import ca.uhn.fhir.jpa.subscription.process.deliver.websocket.WebsocketConnectionValidator;
import ca.uhn.fhir.jpa.subscription.process.matcher.matching.CompositeInMemoryDaoSubscriptionMatcher; import ca.uhn.fhir.jpa.subscription.process.matcher.matching.CompositeInMemoryDaoSubscriptionMatcher;
@ -117,6 +139,12 @@ public class SubscriptionProcessorConfig {
return new SubscriptionDeliveringRestHookSubscriber(); return new SubscriptionDeliveringRestHookSubscriber();
} }
@Bean
@Scope("prototype")
public SubscriptionDeliveringEmailSubscriber subscriptionDeliveringEmailSubscriber(IEmailSender theEmailSender) {
return new SubscriptionDeliveringEmailSubscriber(theEmailSender);
}
@Bean @Bean
public InMemorySubscriptionMatcher inMemorySubscriptionMatcher() { public InMemorySubscriptionMatcher inMemorySubscriptionMatcher() {
return new InMemorySubscriptionMatcher(); return new InMemorySubscriptionMatcher();

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.deliver;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -38,7 +38,6 @@ import java.util.List;
import static org.apache.commons.lang3.StringUtils.*; import static org.apache.commons.lang3.StringUtils.*;
@Component
@Scope("prototype") @Scope("prototype")
public class SubscriptionDeliveringEmailSubscriber extends BaseSubscriptionDeliverySubscriber { public class SubscriptionDeliveringEmailSubscriber extends BaseSubscriptionDeliverySubscriber {
private Logger ourLog = LoggerFactory.getLogger(SubscriptionDeliveringEmailSubscriber.class); private Logger ourLog = LoggerFactory.getLogger(SubscriptionDeliveringEmailSubscriber.class);

View File

@ -48,13 +48,19 @@ import java.util.*;
import static org.apache.commons.lang3.StringUtils.isNotBlank; import static org.apache.commons.lang3.StringUtils.isNotBlank;
@Component
@Scope("prototype") @Scope("prototype")
public class SubscriptionDeliveringRestHookSubscriber extends BaseSubscriptionDeliverySubscriber { public class SubscriptionDeliveringRestHookSubscriber extends BaseSubscriptionDeliverySubscriber {
@Autowired @Autowired
IResourceRetriever myResourceRetriever; IResourceRetriever myResourceRetriever;
private Logger ourLog = LoggerFactory.getLogger(SubscriptionDeliveringRestHookSubscriber.class); private Logger ourLog = LoggerFactory.getLogger(SubscriptionDeliveringRestHookSubscriber.class);
/**
* Constructor
*/
public SubscriptionDeliveringRestHookSubscriber() {
super();
}
protected void deliverPayload(ResourceDeliveryMessage theMsg, CanonicalSubscription theSubscription, EncodingEnum thePayloadType, IGenericClient theClient) { protected void deliverPayload(ResourceDeliveryMessage theMsg, CanonicalSubscription theSubscription, EncodingEnum thePayloadType, IGenericClient theClient) {
IBaseResource payloadResource = getAndMassagePayload(theMsg, theSubscription); IBaseResource payloadResource = getAndMassagePayload(theMsg, theSubscription);

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.matcher.matching;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.matcher.matching;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.matcher.matching;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.jpa.subscription.process.matcher.subscriber; package ca.uhn.fhir.jpa.subscription.process.matcher.subscriber;
/*-
* #%L
* HAPI FHIR Subscription Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.jpa.subscription.model.ResourceModifiedMessage; import ca.uhn.fhir.jpa.subscription.model.ResourceModifiedMessage;
import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum; import ca.uhn.fhir.model.dstu2.valueset.ResourceTypeEnum;

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.matcher.subscriber;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.matcher.subscriber;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.process.registry;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.jpa.subscription.submit.config; package ca.uhn.fhir.jpa.subscription.submit.config;
/*-
* #%L
* HAPI FHIR Subscription Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubscriptionMatcherInterceptor; import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubscriptionMatcherInterceptor;
import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubmitInterceptorLoader; import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubmitInterceptorLoader;
import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubscriptionValidatingInterceptor; import ca.uhn.fhir.jpa.subscription.submit.interceptor.SubscriptionValidatingInterceptor;

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.submit.interceptor;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -24,7 +24,7 @@ import javax.annotation.PostConstruct;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -1,5 +1,25 @@
package ca.uhn.fhir.jpa.subscription.submit.interceptor; package ca.uhn.fhir.jpa.subscription.submit.interceptor;
/*-
* #%L
* HAPI FHIR Subscription Server
* %%
* Copyright (C) 2014 - 2020 University Health Network
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import ca.uhn.fhir.context.FhirContext; import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.interceptor.api.Hook; import ca.uhn.fhir.interceptor.api.Hook;
import ca.uhn.fhir.interceptor.api.Interceptor; import ca.uhn.fhir.interceptor.api.Interceptor;

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.triggering;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -2,7 +2,7 @@ package ca.uhn.fhir.jpa.subscription.triggering;
/*- /*-
* #%L * #%L
* HAPI FHIR JPA Server * HAPI FHIR Subscription Server
* %% * %%
* Copyright (C) 2014 - 2020 University Health Network * Copyright (C) 2014 - 2020 University Health Network
* %% * %%

View File

@ -27,9 +27,13 @@ import ca.uhn.fhir.jpa.config.BaseJavaConfigDstu2;
import ca.uhn.fhir.jpa.config.BaseJavaConfigDstu3; import ca.uhn.fhir.jpa.config.BaseJavaConfigDstu3;
import ca.uhn.fhir.jpa.config.BaseJavaConfigR4; import ca.uhn.fhir.jpa.config.BaseJavaConfigR4;
import ca.uhn.fhir.jpa.api.config.DaoConfig; import ca.uhn.fhir.jpa.api.config.DaoConfig;
import ca.uhn.fhir.jpa.config.WebsocketDispatcherConfig;
import ca.uhn.fhir.jpa.model.entity.ModelConfig; import ca.uhn.fhir.jpa.model.entity.ModelConfig;
import ca.uhn.fhir.jpa.provider.BaseJpaProvider; import ca.uhn.fhir.jpa.provider.BaseJpaProvider;
import ca.uhn.fhir.jpa.provider.BaseJpaSystemProvider; import ca.uhn.fhir.jpa.provider.BaseJpaSystemProvider;
import ca.uhn.fhir.jpa.subscription.channel.config.SubscriptionChannelConfig;
import ca.uhn.fhir.jpa.subscription.process.config.SubscriptionProcessorConfig;
import ca.uhn.fhir.jpa.subscription.submit.config.SubscriptionSubmitterConfig;
import ca.uhn.fhir.okhttp.client.OkHttpRestfulClientFactory; import ca.uhn.fhir.okhttp.client.OkHttpRestfulClientFactory;
import ca.uhn.fhir.rest.client.apache.ApacheRestfulClientFactory; import ca.uhn.fhir.rest.client.apache.ApacheRestfulClientFactory;
import ca.uhn.fhir.rest.client.api.IClientInterceptor; import ca.uhn.fhir.rest.client.api.IClientInterceptor;
@ -58,6 +62,7 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.core.annotation.AnnotationAwareOrderComparator; import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -161,6 +166,11 @@ public class FhirAutoConfiguration {
@Configuration @Configuration
@EntityScan(basePackages = {"ca.uhn.fhir.jpa.entity", "ca.uhn.fhir.jpa.model.entity"}) @EntityScan(basePackages = {"ca.uhn.fhir.jpa.entity", "ca.uhn.fhir.jpa.model.entity"})
@Import({
SubscriptionChannelConfig.class,
SubscriptionProcessorConfig.class,
SubscriptionSubmitterConfig.class
})
static class FhirJpaDaoConfiguration { static class FhirJpaDaoConfiguration {
@Bean @Bean