The {@link oaj.config.store.MemoryStore} class is simply an in-memory storage
location for configuration files.
There is no hard persistence and is used primarily for testing purposes.
However, the implementation provides a good idea on how stores work (especially the write method):
| public class MemoryStore extends ConfigStore {
|
| // Some methods ommitted.
|
| private final ConcurrentHashMap<String,String> cache = new ConcurrentHashMap<>();
|
| @Override /* ConfigStore */
| public synchronized String read(String name) {
| return emptyIfNull(cache.get(name));
| }
|
| @Override /* ConfigStore */
| public synchronized String write(String name, String expectedContents, String newContents) {
|
| // This is a no-op.
| if (isEquals(expectedContents, newContents))
| return null;
|
| String currentContents = read(name);
|
| if (expectedContents != null && ! isEquals(currentContents, expectedContents))
| return currentContents;
|
| update(name, newContents);
|
| // Success!
| return null;
| }
|
|
| @Override /* ConfigStore */
| public synchronized MemoryStore update(String name, String newContents) {
| cache.put(name, newContents);
| super.update(name, newContents); // Trigger any listeners.
| return this;
| }
| }