public class ZConfig
extends java.lang.Object
Lets applications load, work with, and save configuration files. This is a minimal implementation of the ZeroMQ Property Language, which is a simple structured text format for configuration files.
Here is an example ZPL stream and corresponding config structure:
context iothreads = 1 verbose = 1 # Ask for a trace main type = zqueue # ZMQ_DEVICE type frontend option hwm = 1000 swap = 25000000 # 25MB bind = 'inproc://addr1' bind = 'ipc://addr2' backend bind = inproc://addr3
root Down = child | Across = next v context-->main | | | v | type=queue-->frontend-->backend | | | | | v | | bind=inproc://addr3 | v | option-->bind=inproc://addr1-->bind=ipc://addr2 | | | v | hwm=1000-->swap=25000000 v iothreads=1-->verbose=false
It can put and get values and save and load them to disk:
ZConfig conf = new ZConfig("root", null);
conf.put("/curve/public-key","abcdef");
String val = conf.get("/curve/public-key","fallback-defaultkey");
conf.save("test.cert");
ZConfig loaded = ZConfig.load("test.cert");
Modifier and Type | Class and Description |
---|---|
private static interface |
ZConfig.IVisitor |
static class |
ZConfig.ReadException |
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,ZConfig> |
children |
private java.util.List<java.lang.String> |
comments |
private static java.lang.String |
LEFT |
private java.lang.String |
name |
private static java.util.regex.Pattern |
PTRN_CONTAINER |
private static java.util.regex.Pattern |
PTRN_KEYVALUE |
private java.lang.String |
value |
Constructor and Description |
---|
ZConfig(java.lang.String name,
ZConfig parent) |
Modifier and Type | Method and Description |
---|---|
void |
addComment(java.lang.String comment)
add comment
|
private static ZConfig |
child(ZConfig parent,
java.util.regex.Matcher matcher,
int currentLevel,
java.lang.String currentLine,
java.util.concurrent.atomic.AtomicInteger lineNumber) |
private void |
fillValues(java.lang.String prefix,
java.util.Map<java.lang.String,java.lang.String> values) |
ZConfig |
getChild(java.lang.String name) |
java.lang.String |
getName() |
java.lang.String |
getValue(java.lang.String path) |
java.lang.String |
getValue(java.lang.String path,
java.lang.String defaultValue) |
java.util.Map<java.lang.String,java.lang.String> |
getValues() |
static ZConfig |
load(java.lang.String filename) |
private static ZConfig |
load(ZConfig parent,
java.util.List<java.lang.String> content,
int currentLevel,
java.util.concurrent.atomic.AtomicInteger lineNumber) |
boolean |
pathExists(java.lang.String path)
check if a value-path exists
|
ZConfig |
putValue(java.lang.String path,
java.lang.String value) |
void |
putValues(ZConfig src) |
java.io.File |
save(java.lang.String filename)
Saves the configuration to a file.
|
void |
save(java.io.Writer writer) |
private void |
visit(ZConfig startNode,
ZConfig.IVisitor handler,
int level) |
private static final java.lang.String LEFT
private static final java.util.regex.Pattern PTRN_CONTAINER
private static final java.util.regex.Pattern PTRN_KEYVALUE
private final java.lang.String name
private final java.util.Map<java.lang.String,ZConfig> children
private final java.util.List<java.lang.String> comments
private java.lang.String value
public ZConfig(java.lang.String name, ZConfig parent)
public ZConfig getChild(java.lang.String name)
public java.util.Map<java.lang.String,java.lang.String> getValues()
private void fillValues(java.lang.String prefix, java.util.Map<java.lang.String,java.lang.String> values)
public java.lang.String getName()
public java.lang.String getValue(java.lang.String path)
public java.lang.String getValue(java.lang.String path, java.lang.String defaultValue)
public boolean pathExists(java.lang.String path)
path
- public void addComment(java.lang.String comment)
comment
- public ZConfig putValue(java.lang.String path, java.lang.String value)
path
- value
- set value of config itempublic void putValues(ZConfig src)
private void visit(ZConfig startNode, ZConfig.IVisitor handler, int level) throws java.io.IOException
java.io.IOException
public java.io.File save(java.lang.String filename) throws java.io.IOException
This method will overwrite contents of existing file
filename
- the path of the file to save the configuration into, or "-" to dump it to standard outputjava.io.IOException
- if unable to save the file.public void save(java.io.Writer writer) throws java.io.IOException
java.io.IOException
public static ZConfig load(java.lang.String filename) throws java.io.IOException
java.io.IOException
private static ZConfig load(ZConfig parent, java.util.List<java.lang.String> content, int currentLevel, java.util.concurrent.atomic.AtomicInteger lineNumber)