* Start work on validation rules interceptor
* Work on interceptor
* Add tests
* Work on validation interceptor
* Work on interceptor
* Test fix
* Documentation tweaks
* init rev
* fix build
* Tweaked the POM config settings and also added some dependency exclusions (commented out for now).
* More re-factoring of the CQL Unit Tests.
* Removed a LogMessages.html file and a minor Unit Test change.
* Unit Tests.
* added debug logging to troubleshoot the dao that has no name
* added debug logging to troubleshoot the dao that has no name
* workaround to get past null dao resourceName issue
* fix jsons to get test to pass. Test still fails with library id problem
* gitignore
* gitignore
* test passes! Woohoo!
* undo troubleshooting logging
* added timer and logging.
* added asserts and time multiple evaluations and measure the average
* readme
* adding explanations
* added more explanatory notes
* measure 2 patients
* move pom to use cqf snapshot
* roughed out cache
* roughed out cache
* Added code to VersionChangeCache class.
* added tests
* added polling test
* wrote init version
* wrote init version
* optimized versioncache
* worked on getting tests to pass
* redesigned interfaces
* all tests pass
* fixmes
* fixmes
* rename param
* Added Unit Tests.
* javadoc
* Fixed the 2-Patient Unit Test.
* More Unit Test work.
* make ResourceVersionMap immutable
* Fixed a Unit Test that was failing intermittently by adding a new way to refresh the cache.
* Use a new method called doRefreshAllCaches(0) to force a refresh and have all Listeners called immediately.
* Cleaned up IVersionChangeListenerRegistry interface to make methods more clear and resolved all Unit Tests.
* disabled tests
* disabled tests
* removed unused test method
* fixed refresh logic and added asserts
* moved cache so it can be used by searchparamregistry
* Updated the Cql Unit Tests to be properly configured for Dstu3 or R4.
* started rewriting SearchParamRegistryImpl to use new cache
added init method to listener interface
* added fixmes
* adding tests
* tests pass
* added tests
* Fixed the way CqlProviderFactory Autowires Beans so it can work with both Dstu3 and R4 contexts.
* moar tests
* fix test
* work tests
* reverting unneccessary refactors
* undo unneccessary import changes to reduce MR size
* undo unneccessary import changes to reduce MR size
* Unit Test fixes...more to come...
* add unregister
* fix tests
* Changed ResourceVersionCache to use a Map of Maps.
* searchparam test
* test passes
* resolved fixme
* fixmies
* strengthen test asserts
* More Unit Test changes and added some FIMXME items.
* changed from long to changeresult
* renamed VersionChange -> ResourceChange
* fixed delete bug
* organize imports
* fix test
* add update test
* add test reset function
* fix stack overflow
* fix startup race condition (might still be intermittent)
* found the problem. delete doesn't work because we can't look up the deleted resource to find out what its name is
* fixed regression
* abandoned idea of incrementally updating searchparam registry. Rebuilding every time--it doesn't change that often.
* fix test
* begin with failing test
* test passes
* fixmes and javadoc
* fix test
* fixme
* fix test
* whack-a-mole. Either subs pass or cql passes. Something's fishy with the FhirContext
* fix subscription test initialization
* fix method name
* Re-factored the CqlProvider Unit Tests.
* changed ResourceChange API
* add interface
* add interface
* fix test
* add schedule test
* add doc
* init rev
* FIXME
* modify FhirContext change
* change fhirContext.getResourceTypes to lazy load
* converted subscriptions
* converted subscriptions
* begin with failing test
* test passes
* fix test
* test coverage
* test coverage
* test coverage
* test coverage
* good coverage now
* pre-review cleanup. I think I found a bug.
* moved cache into listener entry
tests pass with fixmes
* fix test
* fix test
* fix test
* fixme
* FIXMEs
* merge cache and registry
* method reorg
* javadoc
* javadoc done. all FIXMEs resolved.
* change log
* changes needed by cdr
* spring config cleanup
* james feedback
* james feedback
* might not work. Try moving resourcechangeconfig into searchparam config
* merge ResourceChangeListenerRegistryConfig.java into SearchParamConfig
* fix test
* fix SubscriptionLoader
* fix SubscriptionLoader
* create ResourceVersionMap from resources
* added cache handle interface
* fix test
* javadoc
* fix test
* fix test
* James feedback: clone searchparametermap
* fix startup
* fix test
* fix test
* fix intermittent
* pre-review cleanup
* FIXME
* final FIXME yay!
* Address a couple of my own reviw comments
Co-authored-by: Kevin Dougan <kevin.dougan@smilecdr.com>
Co-authored-by: jamesagnew <jamesagnew@gmail.com>
* Add auto retry of transactions
* Experiment in Maven build
* Transaction autoretry
* Work on transaction retries
* Work on transaction retry
* Work on transaction retry
* Fix tests
* Avoid version conflicts
* Add changelog
* Resolve LGTM issue
* FIx transaction scope error
* Test fixes
* Test fix
* Test fixes
* Test fix
* Test fixes
* 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
* Terser should create correct Enumeration on create
* Start work
* Work on subscriptions
* Work on seed bundles
* Bundle transmission
* Add changelog
* Test fix
* Fix LGTM warning
* Start working on FHIRPatch
* More work on fhirpatch
* Work on FHIR Patch
* Add patch
* Test fixes
* Test fixes
* Get tests fixed
* Chnage to trigger a build
* Compile fix
* Dependency version fixes
* Test fix
* COmpile fix
* Try to fix build
* Test fix attempt
* Another build attempt
* Another build tweak
* Cleanup
* Work on multitenancy
* Work on multitenancy
* Work on multitenancy
* Add columns
* Work on multitenancy
* Work on muiltitenancy
* Work on multitenancy
* Work on uniques
* Work on multitenancy
* Work on multitenancy
* Work on multitenancy
* More work on multitenancy
* Work on multitenancy
* Multitenancy work
* Work on multitenancy
* Work on multitenancy
* Work on multitenancy
* Work on multitenancy
* Work on docs
* Work on multitenancy
* Work on docs
* DOcs work
* Tenancy docs
* Work on docs
* Finish docs
* Add changelog
* Rename config
* Add migration tasks
* Fix typo
* Migration fix
* One more migration fix
* A couple more migration fixes
* Docs cleanup
* Work on docs
* Bump boot version
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Work on review comments
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/partitioning.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/docs/server_jpa/schema.md
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/index/IdHelperService.java
Co-Authored-By: Ken Stevens <khstevens@gmail.com>
* Address review comments
* Compile fx
* Test fixes
* One more bugfix
* Update operation name
* Add one more constant
* Roll back a change that was causing test failures
* Test fixes
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* 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
* Start work on refactoring how PIDs work
* Some test fixes
* Test fixes
* Test fixes
* Restore accidentally deleted line
* One more tweak
* Rework resource link extraction
* Test fix
* Split out transaction processor
* Updates
* Test fix
* Test fixes
* Test fixes
* Clean up LGTM warning
* Fix compile failure
* One more test fix
* Fix LGTM issue
* Add spot for metadata
* Add test logging
* Remove testing code
* More test logging
* Add some test logging
* Attempty to fix intermittent test failure
* Improve exception tracking
* Work on simplifying search param registry
* Fix compile
* Fix compile errors
* Fix two test bugs
* Version bumps
* FIx build issues
* Address a few Semmle issues
* Work on tests
* Some test fixes
* Test fix
* Fix deletions
* Test fix
* Fix intermittent test failure
* One more dependency bump
* Add some test logging
* Remove bad import
* Add some tests
* Test updates
* Add some logging
* Add more test logging
* Work on some test logging
* Fix compile error
* Work on codecov
* Work on codecov
* Remove test debug messages
* Start working on subscription processor
* Work on new scheduler
* Test fixes
* Scheduler refactoring
* Fix test failure
* One more test fix
* Updates to scheduler
* More scheduler work
* Tests now all passing
* Ongoing work on export
* Ongoing scheduler work
* Ongoing testing
* Work on export task
* Sync master
* Ongoing work
* Bump xml patch version
* Work on provider
* Work on bulk
* Work on export scheduler
* More test fies
* More test fixes
* Compile fix
* Reduce logging
* Improve logging
* Reuse bulk export jobs
* Export provider
* Improve logging in bulk export
* Work on bulk export service
* One more bugfix
* Ongoing work on Bulk Data
* Add changelog
* Ongoing work on core structures suport
* Ongoing work on this merge
* Ongoing work to clean up structures
* Credit for #1179
* Address compile issues
* Latest changes
* Work on parallel execution
* Work on getting tests passing
* Add H2 to migrator
* Test fix
* Start working on cascading deleets
* WOrk on cascading deletes
* Work on cascading deletes
* Enable cascading deletes
* Cascade deletes almost working
* FIx test
* Test fix
* Make IBundle list interface more flexible
* Make matchResourceLinks visible
* Make matchResourceLinks visible
* Pull in-memory matching functionality out of subscription module into dedicated classes in searchparam module
* Added more accessors to version independent resource classes
* improved forcedid matching (needs to be verified by James)
filter out nulls from HashMapProvider.searchAll() (hopefully no tests depend on this)
* add AnyComposition
* cleanup of Any classes
* create searchparam config so people can use that module without using subscriptions
* create searchparam config so people can use that module without using subscriptions
* fix broken test
* added derivedFrom
* renamed daoRegistry.getResourceDaoIfExists to getResourceDaoOrNull
also added method to add a new dao to the registry and retrieve registered types
* TokenParam.equals
* add error check to searchable hashmap resource provider
* added support for R4
* add successor to measure
* delete conflict hook
start with failing test
* test passes.
hook is called.
* added delete conflict hook
all delete conflict tests pass
* added javadoc
* Performance test
* test bad interceptor case
* typo
* rename criteria matcher
* added support for multiple topics
* fix method name
* add effective period
* Temporarily excluding StressTest from build to try to get Travis under time limit
* change log
* review feedback
* review feedback
* review feedback
* move expunge out
* move to prototype
* turns parameters into fields
* cleanup control flow
* moved transactions outside of loops
* add expungeeverything
* moved daos out
* add expungeThreadCount
* add expungeBatchSize
* added partition runner to run in separate threads
* all done. just need to consolidate test code.
* Moar tests
* consolidated pointcutlatch into hapi-fhir-jpaserver-model
* final cleanup
* update javadoc
* change log
* failing test
* added delete
also @Transactional
* remove unused parameter
* fix compile
* race condition
(cherry picked from commit e1940d2fb20838859a205f2b96c833b0ce9f05eb)
# Conflicts:
# hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/dao/expunge/PartitionRunnerTest.java
* ja feedback
* ja feedback
* fix bug in websocket subscription (It wasn't destroying the channel when there are no subscribers)
* add support for removing channel. Also synchronize removal (there was a race condition between sync and queue)
* keep deprecated method for backwards compatibility
* make websocket endpoint configurable
* make websocket context path configurable
* make websocket context path configurable
* trying mvn clean test instead of mvn clean install to see if the build goes faster
* that didn't work at all. reverting.
* change log
* subscription loader now only pulls active subscriptions
only allow websocket connections to subscriptions of type websocket
* Added a "flag for deletion" to ActiveSubscription in the SubscriptionRegistry to handle the race condition of a scheduled sync overlapping with a subscription creation. We could have used a package-scoped semaphore or a pre-remove FHIR read, but this seemed like the safest, simplest and most performant way to handle it.
* ActiveSubscriptionCacheTest
* WebsocketConnectionValidatorTest
* fix compile error in jpa example
* might keep this
* might keep this
* undoing start in interface
* fixed bug that only supported resources with ResourceType/id prefixes
* added standalone subscription support for Dstu2. untested.
* failing test
* fixed cannonicalsubscription.equals for email
* final cleanup
* fix bug in ResourceIndexSearchParamQuantity
Move transaction boundary around SubscriptionMatcherInterceptor so it can be overridden in subclass
Lots of CRLF changes from a mvn -P DIST
* FIXME
* Avoid paging links when offset is artificially set very high
* Ongoing fixes
* Adding logging and clean up transaction processing
* Add changelog
* More work on queries
* Keep working on getting tests passing
* More test fixes
* More work on tests
* More test works
* One more test attempt
* Ongoing fixes
* One more change
* FIxes to search algorithm
* Add changelog
* Clean up for review
* Fixed NPE in token matcher when system is not null and value is null
* test opposite (null system not null value)
* added null protection to all matchers
* Address review comments
* Address broken test
* Trying to resolve DB ordering issues
* Starting work on this
* Working on narrative templates
* Work on new narrative system
* Account for some failing tests due to refactoring of narrative mode
* Another test fix
* More test fixes
* One more test fix
* Work on searches
* Address review comments
Squashed commit adding subscription debug logger
* Work on subscription debug logger
* Add subscription logging interceptor
* Remove unneeded variables
* A bit of cleanup
* Tweak the output logs a bit
* Address review comments
* Fixed a bug in standalone subscription subscriber: It was adding REQUESTED subscriptions to the active subscription registry. (Only ACTIVE subscriptions should be added.)
* Start work on this
* Work on interceptors
* Attempt fix
* Avoid environment dependency
* Test fixes
* One more test fix
* One more build tweak
* Lots of cleanup
* A bit more cleanup
* Still more cleanup
* Some test fixes
* Add legacy methods temporarily
* Don't auto-scan interceptor beans
* One more test fix
* rsolve merge conflicts
* Address review comments
SearchParamRegistry and SubscriptionRegistry now both poll retrying connection to the server. This will help in particular in the scenario where the subscriptions are managed in a standalone server that depends on a FHIR Server being available to pull search parameters and subscriptions from.
* Reorganizing packages and dependencies to support standalone subscription running within a CDR container where all hapi modules are on the classpath.
* EXPERIMENTAL: Moved Subscription registry out of interceptor and introduced ISubscriptionLoader that will be either a Database or FhirClient loader.
5 tests fail. Looks like we're getting too many matches--likely because there is now just one list of subscriptions instead of one list per interceptor.
* Created ActiveSubscription and moved cache bits into it
* Compiles. Next step is get app context to load.
* Application context loads. Now fix NullPointer.
* All subscription tests pass
* FIXME cleanup
* jpa-subscription tests
* fixed config so other module tests work
* MAJOR MILESTONE: All hapi-fhir tests pass.
updated READMEs in example projects
* Moved ExecutorQueue stuff out into its own class
* Organize Imports
* FIXME cleanup
* Null check -> Optional
* Add test and supporting code to validate SubscriptionConstants.EXT_SUBSCRIPTION_RESTHOOK_DELIVER_LATEST_VERSION behaviour
* Added SubscriptionCheckingSubscriber test that works without a database
* Moved a few beans to @ComponentScan
* Replaced use of beanFactory with concrete factory classes
* Switched test to use subscribablechannel
* Added SubscriptionLoaderFhirClientTest
* Undid changes that caused SearchParamProviderFhirClientTest to revert to the Database version. It's now calling the FhirClient version again. (oops)
* Confirm that our SubscriptionProviderFhirClient works with a live fhir client
* Organize imports
* Organize imports
* Register interceptors with DaoConfig instead of RestServer.
Also, Rename @VisibleForTesting methods with ForUnitTest
* Ready to go
* organize imports
* add processing queue
* Fixed interface implementation names
* Fix triggering service so it uses new subscriptionmatcherinterceptor
* fixed example
* Renamed "Database" classes to "Dao"
* Tightened up StoppableSubscriber API
* final code review
* processing -> matching naming change
* fix required by CDR
* oops
* Updated changes.xml
* Renamed subscriptioncheckingsubscriber to subscriptionmatchingsubscriber
* Renamed subscriptioncheckingsubscriber to subscriptionmatchingsubscriber
* CDR integration now works
* Changing subscribable channel abstraction layer in preparation for supporting more types of subscribable channels
* Add interface over both types of messages put on queues
* cosmetic change
* added subscription support for r4
* fixed again
* oops
* self code-review
* 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