... and one more thing :
- the stored DLNAResource.id field doesn't contain the whole ID path - for example 0$1$5$3 - just the last part of it, in this case, only '3'. And if the addChildInternal method is used to add to the internal list of children, then this field is automaticaly populated, with ensuring that every child id is different.
Here can you check, that how it's simplify things. Even better, the refreshChildren method is improved, split into two part: one is 'isRefreshNeeded()' which should check that is the underlyer objects changed, so refresh is needed, and into the 'refreshChildren()' method, which only role is to re-load the children objects. With these infrastructure, there is no need to restart ps3mediaserver to notice file system changes

(Except for changing the root paths ... )