mirror of
https://github.com/lightbend/config.git
synced 2025-03-29 13:30:24 +08:00
add some more API docs
This commit is contained in:
parent
84e37b3745
commit
2facd09341
@ -4,11 +4,33 @@ import java.util.concurrent.TimeUnit;
|
|||||||
|
|
||||||
import com.typesafe.config.impl.ConfigImpl;
|
import com.typesafe.config.impl.ConfigImpl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class holds some global static methods for the config package.
|
||||||
|
*/
|
||||||
public final class Config {
|
public final class Config {
|
||||||
|
/**
|
||||||
|
* Loads a configuration object.
|
||||||
|
*
|
||||||
|
* @param configConfig
|
||||||
|
* configuration for the configuration.
|
||||||
|
* @return a configuration object
|
||||||
|
*/
|
||||||
public static ConfigObject load(ConfigConfig configConfig) {
|
public static ConfigObject load(ConfigConfig configConfig) {
|
||||||
return ConfigImpl.loadConfig(configConfig);
|
return ConfigImpl.loadConfig(configConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a configuration for the given root path. The root path should be a
|
||||||
|
* short word that scopes the package being configured; typically it's the
|
||||||
|
* package name or something similar. System properties overriding values in
|
||||||
|
* the configuration will have to be prefixed with the root path. The root
|
||||||
|
* path may have periods in it if you like but other punctuation or
|
||||||
|
* whitespace will probably cause you headaches. Example root paths: "akka",
|
||||||
|
* "sbt", "jsoup", "heroku", "mongo", etc.
|
||||||
|
* @param rootPath
|
||||||
|
* the configuration "domain"
|
||||||
|
* @return configuration object for the requested root path
|
||||||
|
*/
|
||||||
public static ConfigObject load(String rootPath) {
|
public static ConfigObject load(String rootPath) {
|
||||||
return ConfigImpl.loadConfig(new ConfigConfig(rootPath));
|
return ConfigImpl.loadConfig(new ConfigConfig(rootPath));
|
||||||
}
|
}
|
||||||
|
@ -7,10 +7,22 @@ public final class ConfigConfig {
|
|||||||
|
|
||||||
private String rootPath;
|
private String rootPath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new configuration configuration.
|
||||||
|
*
|
||||||
|
* @param rootPath
|
||||||
|
* the root path as described in Config.load() docs
|
||||||
|
*/
|
||||||
public ConfigConfig(String rootPath) {
|
public ConfigConfig(String rootPath) {
|
||||||
this.rootPath = rootPath;
|
this.rootPath = rootPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the configured root path. This method would be used by code
|
||||||
|
* implementing a configuration backend; don't worry about it.
|
||||||
|
*
|
||||||
|
* @return the root path
|
||||||
|
*/
|
||||||
public String rootPath() {
|
public String rootPath() {
|
||||||
return rootPath;
|
return rootPath;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package com.typesafe.config;
|
package com.typesafe.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All exceptions thrown by the library are subclasses of ConfigException.
|
||||||
|
*/
|
||||||
public class ConfigException extends RuntimeException {
|
public class ConfigException extends RuntimeException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -20,6 +23,11 @@ public class ConfigException extends RuntimeException {
|
|||||||
this(message, null);
|
this(message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception indicating that the type of a value does not match the type you
|
||||||
|
* requested.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static class WrongType extends ConfigException {
|
public static class WrongType extends ConfigException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -89,6 +97,12 @@ public class ConfigException extends RuntimeException {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception indicating that a value was messed up, for example you may have
|
||||||
|
* asked for a duration and the value can't be sensibly parsed as a
|
||||||
|
* duration.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static class BadValue extends ConfigException {
|
public static class BadValue extends ConfigException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -149,6 +163,10 @@ public class ConfigException extends RuntimeException {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception indicating that there was an IO error.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static class IO extends ConfigException {
|
public static class IO extends ConfigException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -161,6 +179,10 @@ public class ConfigException extends RuntimeException {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Exception indicating that there was a parse error.
|
||||||
|
*
|
||||||
|
*/
|
||||||
public static class Parse extends ConfigException {
|
public static class Parse extends ConfigException {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
@ -4,16 +4,26 @@ import java.util.List;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Config is a read-only configuration object, which may have nested child
|
* A ConfigObject is a read-only configuration object, which may have nested
|
||||||
* objects. Implementations of Config should be immutable (at least from the
|
* child objects. Implementations of ConfigObject should be immutable (at least
|
||||||
* perspective of anyone using this interface).
|
* from the perspective of anyone using this interface).
|
||||||
*
|
*
|
||||||
* The getters all have the same semantics; they throw ConfigException.Missing
|
* The getters all have the same semantics; they throw ConfigException.Missing
|
||||||
* if the value is entirely unset, and ConfigException.WrongType if you ask for
|
* if the value is entirely unset, and ConfigException.WrongType if you ask for
|
||||||
* a type that the value can't be converted to. ConfigException.Null is a
|
* a type that the value can't be converted to. ConfigException.Null is a
|
||||||
* subclass of ConfigException.WrongType thrown if the value is null.
|
* subclass of ConfigException.WrongType thrown if the value is null. The "path"
|
||||||
*
|
* parameters for all the getters have periods between the key names, so the
|
||||||
* TODO add OrNull variants of all these getters?
|
* path "a.b.c" looks for key c in object b in object a in the root object.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* TODO If you need to look up a key with a period in its name, there isn't a
|
||||||
|
* way to do it right now.
|
||||||
|
*
|
||||||
|
* TODO add OrNull variants of all these getters? Or better to avoid convenience
|
||||||
|
* API for that?
|
||||||
|
*
|
||||||
|
* TODO should it implement Map<String, ? extends ConfigValue> with the mutators
|
||||||
|
* throwing ?
|
||||||
*/
|
*/
|
||||||
public interface ConfigObject extends ConfigValue {
|
public interface ConfigObject extends ConfigValue {
|
||||||
|
|
||||||
@ -31,8 +41,22 @@ public interface ConfigObject extends ConfigValue {
|
|||||||
|
|
||||||
ConfigObject getObject(String path);
|
ConfigObject getObject(String path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value at the path as an unwrapped Java boxed value (Boolean,
|
||||||
|
* Integer, Long, etc.)
|
||||||
|
*/
|
||||||
Object getAny(String path);
|
Object getAny(String path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the value at the path as a ConfigValue.
|
||||||
|
*
|
||||||
|
* TODO conceptually if we want to match a read-only subset of the
|
||||||
|
* Map<String, ? extends ConfigValue> interface, we would need to take a key
|
||||||
|
* instead of a path here and return null instead of throwing an exception.
|
||||||
|
*
|
||||||
|
* @param path
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
ConfigValue get(String path);
|
ConfigValue get(String path);
|
||||||
|
|
||||||
/** Get value as a size in bytes (parses special strings like "128M") */
|
/** Get value as a size in bytes (parses special strings like "128M") */
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
package com.typesafe.config;
|
package com.typesafe.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ConfigOrigin is used to track the origin (such as filename and line number)
|
||||||
|
* of a ConfigValue or other object. The origin is used in error messages.
|
||||||
|
*/
|
||||||
public interface ConfigOrigin {
|
public interface ConfigOrigin {
|
||||||
public String description();
|
public String description();
|
||||||
}
|
}
|
||||||
|
@ -2,15 +2,26 @@ package com.typesafe.config;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Interface implemented by any configuration value. From the perspective of
|
* Interface implemented by any configuration value. From the perspective of
|
||||||
* users of this interface, the object should be immutable.
|
* users of this interface, the object is immutable. It is therefore safe to use
|
||||||
|
* from multiple threads.
|
||||||
*/
|
*/
|
||||||
public interface ConfigValue {
|
public interface ConfigValue {
|
||||||
|
/**
|
||||||
|
* The origin of the value, for debugging and error messages.
|
||||||
|
*
|
||||||
|
* @return where the value came from
|
||||||
|
*/
|
||||||
ConfigOrigin origin();
|
ConfigOrigin origin();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of the value; matches the JSON type schema.
|
||||||
|
*
|
||||||
|
* @return value's type
|
||||||
|
*/
|
||||||
ConfigValueType valueType();
|
ConfigValueType valueType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the config value as a plain Java value, should be a String,
|
* Returns the config value as a plain Java boxed value, should be a String,
|
||||||
* Number, etc. matching the valueType() of the ConfigValue.
|
* Number, etc. matching the valueType() of the ConfigValue.
|
||||||
*/
|
*/
|
||||||
Object unwrapped();
|
Object unwrapped();
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package com.typesafe.config;
|
package com.typesafe.config;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The type of a configuration value. Value types follow the JSON type schema.
|
||||||
|
*/
|
||||||
public enum ConfigValueType {
|
public enum ConfigValueType {
|
||||||
OBJECT, LIST, NUMBER, BOOLEAN, NULL, STRING
|
OBJECT, LIST, NUMBER, BOOLEAN, NULL, STRING
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user