Package org.apache.juneau.config.store
Class ConfigStore
java.lang.Object
org.apache.juneau.marshall.Context
org.apache.juneau.config.store.ConfigStore
- All Implemented Interfaces:
Closeable,AutoCloseable
- Direct Known Subclasses:
ClasspathStore,FileStore,MemoryStore,ProfileConfigStore,SqlStore
Represents a storage location for configuration files.
Content stores require two methods to be implemented:
read(String)- Retrieve a config file.write(String,String,String)- Store a config file.
Notes:
- This class is thread safe and reusable.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classConfigStore.Builder<SELF extends ConfigStore.Builder<SELF>>Builder class. -
Field Summary
Fields inherited from class org.apache.juneau.marshall.Context
CONTEXT_APPLY_FILTER -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract booleanChecks whether the configuration with the specified name exists in this store.Returns a map file containing the parsed contents of a configuration.getMap(String name, ConfigFormat format) Returns a map file containing the parsed contents of a configuration.getNotifiedContents(String name, String written) Returns the contents that listeners will be notified with after the specified contents are written.abstract StringReturns the contents of the configuration file.register(String name, ConfigStoreListener l) Registers a new listener on this store.protected StringresolveName(String name) Subclasses can override this method to convert config names to internal forms.unregister(String name, ConfigStoreListener l) Unregisters a listener from this store.Called when the physical contents of a config file have changed.Convenience method for updating the contents of a file with lines.abstract StringSaves the contents of the configuration file if the underlying storage hasn't been modified.Methods inherited from class org.apache.juneau.marshall.Context
copy, createBuilder, createSession, getAnnotationProvider, getSession, init, isDebug, properties, toString
-
Constructor Details
-
ConfigStore
Constructor.- Parameters:
builder- The builder for this object.
Cannot benull .
-
-
Method Details
-
exists
Checks whether the configuration with the specified name exists in this store.- Parameters:
name- The config name.- Returns:
true if the configuration with the specified name exists in this store.
-
getMap
Returns a map file containing the parsed contents of a configuration.- Parameters:
name- The configuration name.- Returns:
- The parsed configuration.
Nevernull . - Throws:
IOException- Thrown by underlying stream.
-
getMap
Returns a map file containing the parsed contents of a configuration.- Parameters:
name- The configuration name.format- The configuration format.
Can benull (defaults toIniConfigFormat).- Returns:
- The parsed configuration.
- Throws:
IOException- Thrown by underlying stream.
-
read
Returns the contents of the configuration file.- Parameters:
name- The config file name.- Returns:
- The contents of the configuration file.
A blank string if the config does not exist.
Nevernull . - Throws:
IOException- Thrown by underlying stream.
-
register
Registers a new listener on this store.- Parameters:
name- The configuration name to listen for.
Cannot benull .l- The new listener.- Returns:
- This object.
-
unregister
Unregisters a listener from this store.- Parameters:
name- The configuration name to listen for.
Cannot benull .l- The listener to unregister.- Returns:
- This object.
-
update
Called when the physical contents of a config file have changed.Triggers calls to
ConfigStoreListener.onChange(String)on all registered listeners.- Parameters:
name- The config name (e.g. the filename without the extension).
Cannot benull .contents- The new contents.- Returns:
- This object.
-
update
Convenience method for updating the contents of a file with lines.- Parameters:
name- The config name (e.g. the filename without the extension).
Cannot benull .contentLines- The new contents.- Returns:
- This object.
-
write
public abstract String write(String name, String expectedContents, String newContents) throws IOException Saves the contents of the configuration file if the underlying storage hasn't been modified.- Parameters:
name- The config file name.expectedContents- The expected contents of the file.newContents- The new contents.- Returns:
- If
null , then we successfully stored the contents of the file.
Otherwise the contents of the file have changed and we return the new contents of the file. - Throws:
IOException- Thrown by underlying stream.
-
getNotifiedContents
Returns the contents that listeners will be notified with after the specified contents are written.Stores that notify listeners with text other than what was written (e.g. after merging in overlays) should override this method.
This is called before the write, so any processing that fails (e.g. merging unparseable written text) fails before anything is persisted.
- Parameters:
name- The config name.written- The contents being written.- Returns:
- The contents that listeners will receive. The default implementation returns
written . - Throws:
IOException- Thrown by underlying stream.
-
resolveName
Subclasses can override this method to convert config names to internal forms.For example, the
FileStoreclass can take in both"MyConfig" and"MyConfig.cfg" as names that both resolve to"MyConfig.cfg" .- Parameters:
name- The name to resolve.- Returns:
- The resolved name.
-