* initial roughout of mdm clear batch job
* still roughing out classes
* finished first draft of reader
* most tests passing now
* all tests pass. now FIXMEs
* FIXMEs done. Time for regression.
* fix test
* changelog and docs
* fix test
* pre-review cleanup
* version bump
* move spring autowire deps for cdr
* move spring autowire deps for cdr
* finally got beans working phew
* rearrange method calls so persistence module can perform clear operation on its own
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa_mdm/mdm_operations.md
Co-authored-by: Tadgh <tadgh@cs.toronto.edu>
* review feedback
* review feedback
* Remove inheritance
* fix beans
Co-authored-by: Tadgh <tadgh@cs.toronto.edu>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* prepare to add $delete-expunge operation that will create a spring batch job
* Add operation
* Wire up jpa provider. Begin with failing test.
* Copy/paste bulk import job as a starting point.
FIXME with proposed design
* delete expunge job parameter validation with test
* implemented reader
stubbed processor, writer
* wip for master merge
* started implementing reader
* started implementing reader
* working with stubs
* happy path batch delete expunge is done
* Provider done but test not passing. Guessing batch infrastructure not running in that test.
* IT test works now
* add reader test
* Converted delete _expunge=true to use new batch job
* DeleteExpungeDaoTest passes
* Fix test
* Change batch size to integer
* rename search count to batch size
* Make delete expunge partition aware
* updated docs
* pre-review cleanup
* change log
* add partition id to SystemRequestDetails
* Make RequestPartitionId serializable
* Change delete expunge provider to use partition id instead of tenant name
* fix tests
* test pointcut gets called
* assert on pointcut calls
* Add resource type to STORAGE_PARTITION_SELECTED pointcut
* bump hapi-fhir version
move expunge provider parameters from JpaConstants to ProviderConstants
* bump hapi-fhir version
* copyrights
* restore deleteexpungeservice for mdm
* restore deleteexpungeservice for mdm
* fix test
* public constants
* convert instant to date
* Moved expunge constants to ProviderConstants
* final review
* disabling InMemoryResourceMatcherR5Test.testNowNextMinute() to see if I can get a clean test run
* fix tests
* fix tests
* fix tests
* fix tests
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* improve logging
* bump version
* version bump
* recovering from failed merge
* unzip RequestListJson per Gary's suggestion. I didn't want to do it at first, but as usual Gary was right.
* fix serialization
* Start work on OpenAPI
* Fixes
* Work on OpenAPI
* Cleanup
* Cleanup
* More swagger work
* Build fix
* More work
* More work
* Add documentation
* Docs fixes
* Add changelog
* License updates
* Add API
* Cleanup
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_plain/openapi.md
Co-authored-by: patrick-vachon-smilecdr <81274188+patrick-vachon-smilecdr@users.noreply.github.com>
* Work on scripts
* Add docs
* Compile fix
* Work on fixes
* Fix tests
* Test fix
* Test fix
* Build fix
* Tests
* Build fix
* Work on pipeline
* Version bump
* Test fix
* Version bump
* Test fix attempts
* Test fix
* Test fix
* Remove accidentally committed files
* Fixes
* Tets fixes
* Test fix
* Test fix
* Test fix
* Test fixes
* Test fixes
* Test fixes
* License header updates
* test fix
* Test fixes
* Test fix
* Test fixes
* Test fix
* Checkstyle bump
Co-authored-by: patrick-vachon-smilecdr <81274188+patrick-vachon-smilecdr@users.noreply.github.com>
* Start work on bul;k import
* Work on bulk import
* Have batch working
* Working
* Working
* More work
* More work on bulk export
* Address fixmes
* License header updates
* Test fixes
* License header updates
* Test fix
* Test fix
* Version bumps
* Work on config
* Test cleanup
* One more version bump
* Version bump
* CLeanup
* A few additions
* Test fixes
* Test fix
* Test fix
* Migration fix
* Test fix
* Test fix
* Search param service cleanup
* Work on collapsing search param
* Search param cleanup
* Work on build
* Test fix
* Test fixes
* Ongoing work
* Test fix
* Compile fix
* Test fixes
* Test fix
* Test fix
* License header updates
* Remove fixme
* Cleanup
* Cleanup
* Work on junit
* Work on junit 5
* Work on junit 5
* Bump errorprone vcersion
* Work on tests
* Junit 5 tweaks
* Fixes
* Work on tests
* Work on junit5
* Work on tests
* Test fixes
* Work on junit5
* Test work
* Get junit5 working
* Test fix
* Work on tests
* WOrk on tests
* Work on tests
* fixes
* Compile fix
* One more tweak
* Compile fix
* Add changelog
* Fix compile error
* Compile fix
* Validation enhancements
* Work on validation api reworking
* Keep working on validation API
* Keep working on new term API
* Work on validation api
* Ongoing work on validation
* Work on integrating validation
* Work on validation API
* Add to validation API
* Work on validation
* Work on API
* Work on validation
* Work on validation API
* Work on validation API
* Work on validation api
* Work on validation API
* Work on validation api
* Validation API changes
* Work on API
* More work on validationo API
* Work on validation API
* FIxes
* WOrk on validation api
* Work on validation API
* Tests passing!
* More cleanup
* More validation API changes
* Fix intermittent test failure
* Package reorg
* Validation API work
* Work on doocumentation
* Work on API
* More work on new validation API
* Fix errorprone-reported error
* Test fixes
* Documentation updates
* Documentation tweaks
* Work on API
* Bean name adjustments
* Build fixes
* Some test fixes
* Fix expunge issue when no tags present
* Add changelog
* Try to clean up POMs that are failing CI
* Rework dependencies
* Roll back change that did not work
* Fixed a bug in standalone subscription subscriber: It was adding REQUESTED subscriptions to the active subscription registry. (Only ACTIVE subscriptions should be added.)
* Reorganizing packages and dependencies to support standalone subscription running within a CDR container where all hapi modules are on the classpath.
Moved Subscription registry out of interceptor and introduced SubscriptionLoader
* Created ActiveSubscription and moved cache bits into it
* Moved ExecutorQueue stuff out into its own class
* Add test and supporting code to validate SubscriptionConstants.EXT_SUBSCRIPTION_RESTHOOK_DELIVER_LATEST_VERSION behaviour
* Added SubscriptionCheckingSubscriber
* Moved a few beans to @ComponentScan
* Replaced use of beanFactory with concrete factory classes
* Switched test to use subscribablechannel
* Added SubscriptionLoaderFhirClientTest
* Confirm that our SubscriptionProviderFhirClient works with a live fhir client
* Register interceptors with DaoConfig instead of RestServer.
Also, Rename @VisibleForTesting methods with ForUnitTest
* Fix triggering service so it uses new subscriptionmatcherinterceptor
* Renamed "Database" classes to "Dao"
* processing -> matching naming change
* Initial refactoring to move database matcher out into its own class
* MAJOR REFACTOR: Pulled indexing code out of BaseHapiFhirDao into a new class ResourceIndexedSearchParams
* Moved calculateHashes
* Replaced @Bean definitions in BaseConfig.java with @ComponentScan
Annotated bean classes with either @Service (if it's stateless) or @Component (if it's stateful). It doesn't really matter which annotation is used, but it's helpful to see at a glance whether a bean is stateful or stateless.
* Move services out of BaseHapiFhirDao
Moved services required by ResourceIndexedSearchParams out of BaseHapiFhirDao and into new classes called LogicalReferenceHelper, IdHelperService, MatchUrlService, and DaoProvider.
Converted SearchBuilder into Prototype Bean
Mark Spring components that depend on daos and entitymanagers with @Lazy so they aren't picked up by hapi-fhir-spring-boot-autoconfigure.
* Added SubscriptionMatcherInMemory
Moved static data out of BaseHapiFhirDao into ResourceMetaParams
Moved translateMatchUrl methods out of BaseHapiFhirDao into MatchUrlService bean
Simplified SubscriptionMatcherInMemory to not depend on entity or dao
Turned all subscribers into prototype beans
* Moved searchParam method out to mySearchParamProvider
Also removed dao and contest parameters from of myMatchUrlService methods
Moved code out of SearchBuilder into SearchParameterMap.clean() so it can be used by inMemoryMatcher
Introduced a new composite subscription matcher that tries to match in memory and if it finds a parameter in the criteria it doesn't support, it falls back to the database matcher.
* Added support for references
Also fixed a small bug in SearchParameterMap that was missing the ";" after "_has" when creating a normalized query from search params.
* Finished implementing all tests from FhirResourceDaoR4SearchNoFtTest
* Make in-memory matcher configurable, disabled by default
* Validate Subscription criteria when they're submitted
Send HTTP 422 UnprocessableEntityException if the criteria fail validation.
* fixed Sonar "Blocker" issues.
* Don't reload the resource before sending it out
Since we can always force a reload using restHookDetails.isDeliverLatestVersion
* Added tests to cover Custom Search param.
* Split ResourceIndexedSearchParam into separate state and service classes
* Cleaned up SearchBuilder.
Removed uses of myCallingDao as an injection mechanism.
Left // FIXME KHS cookie crumbs to clean up
* Reduced dependencies on BaseHapiFhirDao
Removed methods from IDao interface that were used for injection
* Updated change log
Provides spring-boot-starter with auto-configurations for Rest server,
Jpa server, FHIR Validation and clients.
Default configurations overridable by configuration properties and
rest-server customizer.