Details
Description
During startup, there may be incoming configuration changes in the packaged war files on the classpath W, as compared to the previously applied configuration baseline B. We want to apply only those WΔB differences to the repository R, even if that means R may not completely match W after processing. See the reference document below.
For example, imagine this series of events:
1. Developer creates a basic configuration and loads it, so that R and B both contain:
/A
/B
prop1: 1
prop2: 2
/C
prop3: 3
2. CMS Administrator makes a change to the /A/C/prop3 property, so R now contains:
/A
/B
prop1: 1
prop2: 2
/C
prop3: 7
and B still contains:
/A
/B
prop1: 1
prop2: 2
/C
prop3: 3
3. Developer makes a change to /A/B/prop1 so that W contains:
/A
/B
prop1: 4
prop2: 2
/C
prop3: 3
4. After bootstrap and WΔB -> R, R should contain:
/A
/B
prop1: 4
prop2: 2
/C
prop3: 7
The implementation should be able to operate on the fly by doing a coordinated tree walk over the ConfigurationNodes in B and W, and then apply any detected differences immediately to R using logic similar to ConfigurationPersistenceService.