...
We currently have the PersistableValueMap which is an easy way of modifying a resource. As we have modifications now as a first class feature, we should add an update(ValueMap props) method to the Resource interface. The change is persisted immediately.
We should deprecate the PersistableValueMap as a save() call saves the whole session and this might include changes made through any other means to the session.
Persisting Changes
In general, a call to one of the methods, modifying a resource as outlined above are persisted immediately. However, transactions will be supported as well.TBD
Transaction handling
As changes are persisted immediately, there might be some need for a transaction handling to control resource operations in a better way. Therefore the underlying resource providers should support JTA.
Resource Providers
A resource provider is mounted into the resource tree. In general, the providers are processed ordered by service ranking, highest first. A service provider gets a service property specifying the sub tree it is claiming to use. For example, a service provider might be mounted at /a/some/path. Everything below this path is processed by this resource resolver. However another resource provider might claim /a/some/path/and/down. So the longest matching path wins.
...