Package org.apache.juneau.config.store
Class ConfigStore
java.lang.Object
org.apache.juneau.Context
org.apache.juneau.config.store.ConfigStore
- All Implemented Interfaces:
Closeable
,AutoCloseable
,AnnotationProvider
- Direct Known Subclasses:
ClasspathStore
,FileStore
,MemoryStore
,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)
- ConfigStore a config file.
Notes:
- This class is thread safe and reusable.
-
Nested Class Summary
-
Field Summary
Fields inherited from class org.apache.juneau.Context
CONTEXT_APPLY_FILTER
Fields inherited from interface org.apache.juneau.AnnotationProvider
DEFAULT, DISABLE_ANNOTATION_CACHING
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract boolean
Checks whether the configuration with the specified name exists in this store.Returns a map file containing the parsed contents of a configuration.abstract String
Returns the contents of the configuration file.register
(String name, ConfigStoreListener l) Registers a new listener on this store.protected String
resolveName
(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 String
Saves the contents of the configuration file if the underlying storage hasn't been modified.Methods inherited from class org.apache.juneau.Context
copy, createBuilder, createSession, firstAnnotation, firstAnnotation, firstAnnotation, firstAnnotation, firstDeclaredAnnotation, forEachAnnotation, forEachAnnotation, forEachAnnotation, forEachAnnotation, forEachDeclaredAnnotation, getSession, hasAnnotation, hasAnnotation, hasAnnotation, hasAnnotation, init, isDebug, lastAnnotation, lastAnnotation, lastAnnotation, lastAnnotation, lastDeclaredAnnotation, properties, toString
-
Constructor Details
-
ConfigStore
Constructor.- Parameters:
builder
- The builder for this object.
-
-
Method Details
-
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.
-
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.
-
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.
-
register
Registers a new listener on this store.- Parameters:
name
- The configuration name to listen for.l
- The new listener.- Returns:
- This object.
-
unregister
Unregisters a listener from this store.- Parameters:
name
- The configuration name to listen for.l
- The listener to unregister.- Returns:
- This object.
-
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.
-
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).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).contentLines
- The new contents.- Returns:
- This object.
-
resolveName
Subclasses can override this method to convert config names to internal forms.For example, the
FileStore
class 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.
-