mirror of
https://github.com/lightbend/config.git
synced 2025-03-14 11:20:25 +08:00
Merge branch 'master' into ml-503-missing-getXList-methods
This commit is contained in:
commit
f2ae46d140
6
NEWS.md
6
NEWS.md
@ -10,7 +10,7 @@
|
||||
during resolution.
|
||||
- Config Beans now support `Set` collection.
|
||||
- a few other small bugfixes. All of the fixed issues can be found
|
||||
in the [milestone page](https://github.com/typesafehub/config/milestone/1?closed=1).
|
||||
in the [milestone page](https://github.com/lightbend/config/milestone/1?closed=1).
|
||||
|
||||
# 1.3.1: September 24, 2016
|
||||
|
||||
@ -222,7 +222,7 @@ Thank you to contributors with commits since v1.2.1 tag:
|
||||
- build jar using Java 1.6 (and enforce this in build)
|
||||
- change getDuration to return unboxed long instead of boxed
|
||||
- API documentation improvements
|
||||
http://typesafehub.github.io/config/latest/api/
|
||||
http://lightbend.github.io/config/latest/api/
|
||||
|
||||
# 1.1.0-9f31d6308e7ebbc3d7904b64ebb9f61f7e22a968: January 6, 2014
|
||||
|
||||
@ -240,7 +240,7 @@ Thank you to contributors with commits since v1.2.1 tag:
|
||||
- new API Config.getDuration() replaces getMilliseconds and
|
||||
getNanoseconds. (should it return `long` instead of `Long` even
|
||||
though it's been in git for a while? weigh in at
|
||||
https://github.com/typesafehub/config/issues/119 )
|
||||
https://github.com/lightbend/config/issues/119 )
|
||||
- new API ConfigResolveOptions.setAllowUnresolved lets you
|
||||
partially-resolve a Config
|
||||
- new API Config.isResolved lets you check on resolution status
|
||||
|
63
README.md
63
README.md
@ -1,11 +1,11 @@
|
||||
Configuration library for JVM languages.
|
||||
|
||||
[](https://maven-badges.herokuapp.com/maven-central/com.typesafe/config)
|
||||
[](https://travis-ci.org/typesafehub/config)
|
||||
[](https://travis-ci.org/lightbend/config)
|
||||
|
||||
If you have questions or are working on a pull request or just
|
||||
curious, please feel welcome to join the chat room:
|
||||
[](https://gitter.im/typesafehub/config?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://gitter.im/lightbend/config?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
## Overview
|
||||
|
||||
@ -88,16 +88,13 @@ to merge it in.
|
||||
- [Python port](#python-port)
|
||||
- [C++ port](#c-port)
|
||||
- [JavaScript port](#javascript-port)
|
||||
- [C# port](#c-port-1)
|
||||
- [Linting tool](#linting-tool)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
## Essential Information
|
||||
|
||||
### License
|
||||
|
||||
The license is Apache 2.0, see LICENSE-2.0.txt.
|
||||
|
||||
### Binary Releases
|
||||
|
||||
Version 1.2.1 and earlier were built for Java 6, while newer
|
||||
@ -122,15 +119,15 @@ Link for direct download if you don't use a dependency manager:
|
||||
### Release Notes
|
||||
|
||||
Please see NEWS.md in this directory,
|
||||
https://github.com/typesafehub/config/blob/master/NEWS.md
|
||||
https://github.com/lightbend/config/blob/master/NEWS.md
|
||||
|
||||
### API docs
|
||||
|
||||
- Online: http://typesafehub.github.com/config/latest/api/
|
||||
- Online: http://lightbend.github.io/config/latest/api/
|
||||
- also published in jar form
|
||||
- consider reading this README first for an intro
|
||||
- for questions about the `.conf` file format, read
|
||||
[HOCON.md](https://github.com/typesafehub/config/blob/master/HOCON.md)
|
||||
[HOCON.md](https://github.com/lightbend/config/blob/master/HOCON.md)
|
||||
in this directory
|
||||
|
||||
### Bugs and Patches
|
||||
@ -144,7 +141,7 @@ account - it takes 30 seconds. You can do this at
|
||||
http://www.typesafe.com/contribute/cla
|
||||
|
||||
Please see
|
||||
[CONTRIBUTING](https://github.com/typesafehub/config/blob/master/CONTRIBUTING.md)
|
||||
[CONTRIBUTING](https://github.com/lightbend/config/blob/master/CONTRIBUTING.md)
|
||||
for more including how to make a release.
|
||||
|
||||
### Build
|
||||
@ -165,7 +162,7 @@ Scala dependency.
|
||||
|
||||
### Longer Examples
|
||||
|
||||
See the examples in the `examples/` [directory](https://github.com/typesafehub/config/tree/master/examples).
|
||||
See the examples in the `examples/` [directory](https://github.com/lightbend/config/tree/master/examples).
|
||||
|
||||
You can run these from the sbt console with the commands `project
|
||||
config-simple-app-java` and then `run`.
|
||||
@ -189,7 +186,7 @@ Objects are immutable, so methods on `Config` which transform the
|
||||
configuration return a new `Config`. Other types such as
|
||||
`ConfigParseOptions`, `ConfigResolveOptions`, `ConfigObject`,
|
||||
etc. are also immutable. See the
|
||||
[API docs](http://typesafehub.github.com/config/latest/api/) for
|
||||
[API docs](http://lightbend.github.io/config/latest/api/) for
|
||||
details of course.
|
||||
|
||||
### Schemas and Validation
|
||||
@ -198,7 +195,7 @@ There isn't a schema language or anything like that. However, two
|
||||
suggested tools are:
|
||||
|
||||
- use the
|
||||
[checkValid() method](http://typesafehub.github.io/config/latest/api/com/typesafe/config/Config.html#checkValid-com.typesafe.config.Config-java.lang.String...-)
|
||||
[checkValid() method](http://lightbend.github.io/config/latest/api/com/typesafe/config/Config.html#checkValid-com.typesafe.config.Config-java.lang.String...-)
|
||||
- access your config through a Settings class with a field for
|
||||
each setting, and instantiate it on startup (immediately
|
||||
throwing an exception if any settings are missing)
|
||||
@ -435,7 +432,7 @@ values into multiple places in your code. You have been warned!
|
||||
### Understanding `Config` and `ConfigObject`
|
||||
|
||||
To read and modify configuration, you'll use the
|
||||
[Config](http://typesafehub.github.io/config/latest/api/com/typesafe/config/Config.html)
|
||||
[Config](http://lightbend.github.io/config/latest/api/com/typesafe/config/Config.html)
|
||||
interface. A `Config` looks at a JSON-equivalent data structure as
|
||||
a one-level map from paths to values. So if your JSON looks like
|
||||
this:
|
||||
@ -450,7 +447,7 @@ this:
|
||||
Using the `Config` interface, you could write
|
||||
`conf.getInt("foo.bar")`. The `foo.bar` string is called a _path
|
||||
expression_
|
||||
([HOCON.md](https://github.com/typesafehub/config/blob/master/HOCON.md)
|
||||
([HOCON.md](https://github.com/lightbend/config/blob/master/HOCON.md)
|
||||
has the syntax details for these expressions). Iterating over this
|
||||
`Config`, you would get two entries; `"foo.bar" : 42` and
|
||||
`"foo.baz" : 43`. When iterating a `Config` you will not find
|
||||
@ -463,7 +460,7 @@ skip `null` values.
|
||||
|
||||
You can also look at a `Config` in the way most JSON APIs would,
|
||||
through the
|
||||
[ConfigObject](http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigObject.html)
|
||||
[ConfigObject](http://lightbend.github.io/config/latest/api/com/typesafe/config/ConfigObject.html)
|
||||
interface. This interface represents an object node in the JSON
|
||||
tree. `ConfigObject` instances come in multi-level trees, and the
|
||||
keys do not have any syntax (they are just strings, not path
|
||||
@ -475,15 +472,15 @@ expressions). Iterating over the above example as a
|
||||
In `ConfigObject`, `null` values are visible (distinct from
|
||||
missing values), just as they are in JSON.
|
||||
|
||||
`ConfigObject` is a subtype of [ConfigValue](http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigValue.html), where the other
|
||||
`ConfigObject` is a subtype of [ConfigValue](http://lightbend.github.io/config/latest/api/com/typesafe/config/ConfigValue.html), where the other
|
||||
subtypes are the other JSON types (list, string, number, boolean, null).
|
||||
|
||||
`Config` and `ConfigObject` are two ways to look at the same
|
||||
internal data structure, and you can convert between them for free
|
||||
using
|
||||
[Config.root()](http://typesafehub.github.io/config/latest/api/com/typesafe/config/Config.html#root%28%29)
|
||||
[Config.root()](http://lightbend.github.io/config/latest/api/com/typesafe/config/Config.html#root%28%29)
|
||||
and
|
||||
[ConfigObject.toConfig()](http://typesafehub.github.io/config/latest/api/com/typesafe/config/ConfigObject.html#toConfig%28%29).
|
||||
[ConfigObject.toConfig()](http://lightbend.github.io/config/latest/api/com/typesafe/config/ConfigObject.html#toConfig%28%29).
|
||||
|
||||
### ConfigBeanFactory
|
||||
|
||||
@ -506,7 +503,7 @@ particular value manually).
|
||||
|
||||
The JSON superset is called "Human-Optimized Config Object
|
||||
Notation" or HOCON, and files use the suffix `.conf`. See
|
||||
[HOCON.md](https://github.com/typesafehub/config/blob/master/HOCON.md)
|
||||
[HOCON.md](https://github.com/lightbend/config/blob/master/HOCON.md)
|
||||
in this directory for more detail.
|
||||
|
||||
After processing a `.conf` file, the result is always just a JSON
|
||||
@ -771,7 +768,7 @@ version 1.2.1 and earlier will work with Java 6.
|
||||
Please use 1.2.1 if you need Java 6 support, though some people
|
||||
have expressed interest in a branch off of 1.3.x supporting
|
||||
Java 7. If you want to work on that branch you might bring it up
|
||||
on [chat](https://gitter.im/typesafehub/config). We can release a
|
||||
on [chat](https://gitter.im/lightbend/config). We can release a
|
||||
jar for Java 7 if someone(s) steps up to maintain the branch. The
|
||||
master branch does not use Java 8 "gratuitously" but some APIs
|
||||
that use Java 8 types will need to be removed.
|
||||
@ -853,10 +850,10 @@ format.
|
||||
#### Clojure wrappers for the Java library
|
||||
|
||||
* beamly-core.config https://github.com/beamly/beamly-core.config
|
||||
|
||||
|
||||
#### Kotlin wrappers for the Java library
|
||||
* config4k https://github.com/config4k/config4k
|
||||
|
||||
|
||||
#### Scala port
|
||||
|
||||
* SHocon https://github.com/unicredit/shocon (work with both Scala and Scala.Js)
|
||||
@ -878,9 +875,25 @@ format.
|
||||
* https://github.com/puppetlabs/cpp-hocon
|
||||
|
||||
#### JavaScript port
|
||||
|
||||
|
||||
* https://github.com/yellowblood/hocon-js (missing features, under development)
|
||||
|
||||
|
||||
#### C# port
|
||||
|
||||
* https://github.com/akkadotnet/HOCON
|
||||
|
||||
#### Linting tool
|
||||
|
||||
* A web based linting tool http://www.hoconlint.com/
|
||||
|
||||
# Maintanance notes
|
||||
|
||||
## License
|
||||
|
||||
The license is Apache 2.0, see LICENSE-2.0.txt.
|
||||
|
||||
## Maintained by
|
||||
|
||||
This project is maintained mostly by [@havocp](https://github.com/havocp) and [@akka-team](https://github.com/orgs/lightbend/teams/akka-team/members).
|
||||
|
||||
Feel free to ping above maintainers for code review or discussions. Pull requests are very welcome–thanks in advance!
|
||||
|
@ -14,11 +14,11 @@ scalacOptions in GlobalScope in Test := Seq("-unchecked", "-deprecation", "-feat
|
||||
scalaVersion in ThisBuild := "2.10.4"
|
||||
|
||||
val sonatype = new PublishToSonatype {
|
||||
def projectUrl = "https://github.com/typesafehub/config"
|
||||
def projectUrl = "https://github.com/lightbend/config"
|
||||
def developerId = "havocp"
|
||||
def developerName = "Havoc Pennington"
|
||||
def developerUrl = "http://ometer.com/"
|
||||
def scmUrl = "git://github.com/typesafehub/config.git"
|
||||
def scmUrl = "git://github.com/lightbend/config.git"
|
||||
}
|
||||
|
||||
lazy val commonSettings: Seq[Setting[_]] = Def.settings(
|
||||
|
@ -84,7 +84,7 @@ javacOptions in (Compile, doc) ++= Seq("-group", s"Public API (version ${version
|
||||
|
||||
javadocSourceBaseUrl := {
|
||||
for (gitHead <- com.typesafe.sbt.SbtGit.GitKeys.gitHeadCommit.value)
|
||||
yield s"https://github.com/typesafehub/config/blob/$gitHead/config/src/main/java"
|
||||
yield s"https://github.com/lightbend/config/blob/$gitHead/config/src/main/java"
|
||||
}
|
||||
|
||||
javaVersionPrefix in javaVersionCheck := Some("1.8")
|
||||
|
@ -36,7 +36,7 @@ import java.util.concurrent.TimeUnit;
|
||||
*
|
||||
* <p>
|
||||
* You can find an example app and library <a
|
||||
* href="https://github.com/typesafehub/config/tree/master/examples">on
|
||||
* href="https://github.com/lightbend/config/tree/master/examples">on
|
||||
* GitHub</a>. Also be sure to read the <a
|
||||
* href="package-summary.html#package_description">package overview</a> which
|
||||
* describes the big picture as shown in those examples.
|
||||
@ -56,7 +56,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* in a JSON object; it's just a string that's the key in a map. A "path" is a
|
||||
* parseable expression with a syntax and it refers to a series of keys. Path
|
||||
* expressions are described in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">spec for
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">spec for
|
||||
* Human-Optimized Config Object Notation</a>. In brief, a path is
|
||||
* period-separated so "a.b.c" looks for key c in object b in object a in the
|
||||
* root object. Sometimes double quotes are needed around special characters in
|
||||
@ -110,7 +110,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* <p>
|
||||
* <em>Substitutions</em> are the <code>${foo.bar}</code> syntax in config
|
||||
* files, described in the <a href=
|
||||
* "https://github.com/typesafehub/config/blob/master/HOCON.md#substitutions"
|
||||
* "https://github.com/lightbend/config/blob/master/HOCON.md#substitutions"
|
||||
* >specification</a>. Resolving substitutions replaces these references with real
|
||||
* values.
|
||||
*
|
||||
@ -189,7 +189,7 @@ public interface Config extends ConfigMergeable {
|
||||
/**
|
||||
* Returns a replacement config with all substitutions (the
|
||||
* <code>${foo.bar}</code> syntax, see <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>) resolved. Substitutions are looked up using this
|
||||
* <code>Config</code> as the root object, that is, a substitution
|
||||
* <code>${foo.bar}</code> will be replaced with the result of
|
||||
@ -670,7 +670,7 @@ public interface Config extends ConfigMergeable {
|
||||
* the value is already a number, then it's left alone; if it's a string,
|
||||
* it's parsed understanding unit suffixes such as "128K", as documented in
|
||||
* the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>.
|
||||
*
|
||||
* @param path
|
||||
@ -690,7 +690,7 @@ public interface Config extends ConfigMergeable {
|
||||
* the value is already a number, then it's left alone; if it's a string,
|
||||
* it's parsed understanding unit suffixes such as "128K", as documented in
|
||||
* the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>.
|
||||
*
|
||||
* @since 1.3.0
|
||||
@ -711,7 +711,7 @@ public interface Config extends ConfigMergeable {
|
||||
* Get value as a duration in milliseconds. If the value is already a
|
||||
* number, then it's left alone; if it's a string, it's parsed understanding
|
||||
* units suffixes like "10m" or "5ns" as documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>.
|
||||
*
|
||||
* @deprecated As of release 1.1, replaced by {@link #getDuration(String, TimeUnit)}
|
||||
@ -754,7 +754,7 @@ public interface Config extends ConfigMergeable {
|
||||
* number, then it's taken as milliseconds and then converted to the
|
||||
* requested TimeUnit; if it's a string, it's parsed understanding units
|
||||
* suffixes like "10m" or "5ns" as documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>.
|
||||
*
|
||||
* @since 1.2.0
|
||||
@ -778,7 +778,7 @@ public interface Config extends ConfigMergeable {
|
||||
* already a number, then it's taken as milliseconds; if it's
|
||||
* a string, it's parsed understanding units suffixes like
|
||||
* "10m" or "5ns" as documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>. This method never returns null.
|
||||
*
|
||||
* @since 1.3.0
|
||||
@ -800,7 +800,7 @@ public interface Config extends ConfigMergeable {
|
||||
* already a number, then it's taken as days; if it's
|
||||
* a string, it's parsed understanding units suffixes like
|
||||
* "10d" or "5w" as documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">the
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">the
|
||||
* spec</a>. This method never returns null.
|
||||
*
|
||||
* @since 1.3.2
|
||||
|
@ -28,7 +28,7 @@ import java.util.concurrent.Callable;
|
||||
* from a resource and nothing else.
|
||||
*
|
||||
* <p> You can find an example app and library <a
|
||||
* href="https://github.com/typesafehub/config/tree/master/examples">on
|
||||
* href="https://github.com/lightbend/config/tree/master/examples">on
|
||||
* GitHub</a>. Also be sure to read the <a
|
||||
* href="package-summary.html#package_description">package
|
||||
* overview</a> which describes the big picture as shown in those
|
||||
@ -570,7 +570,7 @@ public final class ConfigFactory {
|
||||
/**
|
||||
* Converts a Java {@link java.util.Properties} object to a
|
||||
* {@link ConfigObject} using the rules documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">HOCON
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">HOCON
|
||||
* spec</a>. The keys in the <code>Properties</code> object are split on the
|
||||
* period character '.' and treated as paths. The values will all end up as
|
||||
* string values. If you have both "a=foo" and "a.b=bar" in your properties
|
||||
|
@ -27,7 +27,7 @@ public interface ConfigMergeable {
|
||||
*
|
||||
* <p>
|
||||
* The semantics of merging are described in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">spec
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">spec
|
||||
* for HOCON</a>. Merging typically occurs when either the same object is
|
||||
* created twice in the same file, or two config files are both loaded. For
|
||||
* example:
|
||||
|
@ -6,7 +6,7 @@ package com.typesafe.config;
|
||||
/**
|
||||
* A set of options related to resolving substitutions. Substitutions use the
|
||||
* <code>${foo.bar}</code> syntax and are documented in the <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">HOCON</a>
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">HOCON</a>
|
||||
* spec.
|
||||
* <p>
|
||||
* Typically this class would be used with the method
|
||||
|
@ -5,7 +5,7 @@ package com.typesafe.config;
|
||||
|
||||
/**
|
||||
* The syntax of a character stream (<a href="http://json.org">JSON</a>, <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md">HOCON</a>
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md">HOCON</a>
|
||||
* aka ".conf", or <a href=
|
||||
* "http://download.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29"
|
||||
* >Java properties</a>).
|
||||
@ -21,7 +21,7 @@ public enum ConfigSyntax {
|
||||
JSON,
|
||||
/**
|
||||
* The JSON-superset <a
|
||||
* href="https://github.com/typesafehub/config/blob/master/HOCON.md"
|
||||
* href="https://github.com/lightbend/config/blob/master/HOCON.md"
|
||||
* >HOCON</a> format. Associated with the <code>.conf</code> file extension
|
||||
* and <code>application/hocon</code> Content-Type.
|
||||
*/
|
||||
|
@ -192,7 +192,7 @@ final class ConfigParser {
|
||||
|
||||
// we really should make this work, but for now throwing an
|
||||
// exception is better than producing an incorrect result.
|
||||
// See https://github.com/typesafehub/config/issues/160
|
||||
// See https://github.com/lightbend/config/issues/160
|
||||
if (arrayCount > 0 && obj.resolveStatus() != ResolveStatus.RESOLVED)
|
||||
throw parseError("Due to current limitations of the config parser, when an include statement is nested inside a list value, "
|
||||
+ "${} substitutions inside the included file cannot be resolved correctly. Either move the include outside of the list value or "
|
||||
@ -247,7 +247,7 @@ final class ConfigParser {
|
||||
// we really should make this work, but for now throwing
|
||||
// an exception is better than producing an incorrect
|
||||
// result. See
|
||||
// https://github.com/typesafehub/config/issues/160
|
||||
// https://github.com/lightbend/config/issues/160
|
||||
if (arrayCount > 0)
|
||||
throw parseError("Due to current limitations of the config parser, += does not work nested inside a list. "
|
||||
+ "+= expands to a ${} substitution and the path in ${} cannot currently refer to list elements. "
|
||||
|
@ -17,7 +17,7 @@ Please check out the {@link com.typesafe.config.Config public API} instead, unle
|
||||
you're interested in browsing implementation details. None of the ABI
|
||||
under <code>impl</code> has any guarantees; it will change whenever someone
|
||||
feels like changing it. If you feel you need access to something
|
||||
in <code>impl</code>, <a href="https://github.com/typesafehub/config/issues">please
|
||||
in <code>impl</code>, <a href="https://github.com/lightbend/config/issues">please
|
||||
file a feature request</a>.
|
||||
</p>
|
||||
|
||||
|
@ -9,14 +9,14 @@
|
||||
<body bgcolor="white">
|
||||
|
||||
<p>
|
||||
An API for loading and using configuration files, see <a href="https://github.com/typesafehub/config/">the project site</a>
|
||||
An API for loading and using configuration files, see <a href="https://github.com/lightbend/config/">the project site</a>
|
||||
for more information.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Typically you would load configuration with a static method from {@link com.typesafe.config.ConfigFactory} and then use
|
||||
it with methods in the {@link com.typesafe.config.Config} interface. Configuration may be in the form of JSON files,
|
||||
Java properties, or <a href="https://github.com/typesafehub/config/blob/master/HOCON.md">HOCON files</a>; you may also
|
||||
Java properties, or <a href="https://github.com/lightbend/config/blob/master/HOCON.md">HOCON files</a>; you may also
|
||||
build your own configuration in code or from your own file formats.
|
||||
</p>
|
||||
|
||||
@ -26,8 +26,8 @@ its configuration in "application.conf" on the classpath.
|
||||
If you use the default configuration from {@link com.typesafe.config.ConfigFactory#load()}
|
||||
there's no need to pass a configuration to your libraries
|
||||
and frameworks, as long as they all default to this same default, which they should.
|
||||
<br/><strong>Example application code:</strong> <a href="https://github.com/typesafehub/config/tree/master/examples/java/simple-app/src/main">Java</a> and <a href="https://github.com/typesafehub/config/tree/master/examples/scala/simple-app/src/main">Scala</a>.
|
||||
<br/>Showing a couple of more special-purpose features, <strong>a more complex example:</strong> <a href="https://github.com/typesafehub/config/tree/master/examples/java/complex-app/src/main">Java</a> and <a href="https://github.com/typesafehub/config/tree/master/examples/scala/complex-app/src/main">Scala</a>.
|
||||
<br/><strong>Example application code:</strong> <a href="https://github.com/lightbend/config/tree/master/examples/java/simple-app/src/main">Java</a> and <a href="https://github.com/lightbend/config/tree/master/examples/scala/simple-app/src/main">Scala</a>.
|
||||
<br/>Showing a couple of more special-purpose features, <strong>a more complex example:</strong> <a href="https://github.com/lightbend/config/tree/master/examples/java/complex-app/src/main">Java</a> and <a href="https://github.com/lightbend/config/tree/master/examples/scala/complex-app/src/main">Scala</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
@ -36,21 +36,21 @@ A library or framework should ship a file "reference.conf" in its jar, and allow
|
||||
call {@link com.typesafe.config.ConfigFactory#load()}
|
||||
to get the default one. Typically a library might offer two constructors, one with a <code>Config</code> parameter
|
||||
and one which uses {@link com.typesafe.config.ConfigFactory#load()}.
|
||||
<br/><strong>Example library code:</strong> <a href="https://github.com/typesafehub/config/tree/master/examples/java/simple-lib/src/main">Java</a> and <a href="https://github.com/typesafehub/config/tree/master/examples/scala/simple-lib/src/main">Scala</a>.
|
||||
<br/><strong>Example library code:</strong> <a href="https://github.com/lightbend/config/tree/master/examples/java/simple-lib/src/main">Java</a> and <a href="https://github.com/lightbend/config/tree/master/examples/scala/simple-lib/src/main">Scala</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Check out the full <a href="https://github.com/typesafehub/config/tree/master/examples">examples directory on GitHub</a>.
|
||||
Check out the full <a href="https://github.com/lightbend/config/tree/master/examples">examples directory on GitHub</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
What else to read:
|
||||
<ul>
|
||||
<li>The overview documentation for interface {@link com.typesafe.config.Config}.</li>
|
||||
<li>The <a href="https://github.com/typesafehub/config/blob/master/README.md">README</a> for the library.</li>
|
||||
<li>The <a href="https://github.com/lightbend/config/blob/master/README.md">README</a> for the library.</li>
|
||||
<li>If you want to use <code>.conf</code> files in addition to <code>.json</code> and <code>.properties</code>,
|
||||
see the <a href="https://github.com/typesafehub/config/blob/master/README.md">README</a> for some short examples
|
||||
and the full <a href="https://github.com/typesafehub/config/blob/master/HOCON.md">HOCON spec</a> for the long version.</li>
|
||||
see the <a href="https://github.com/lightbend/config/blob/master/README.md">README</a> for some short examples
|
||||
and the full <a href="https://github.com/lightbend/config/blob/master/HOCON.md">HOCON spec</a> for the long version.</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
||||
|
@ -10,8 +10,8 @@ package com.typesafe.config.parser;
|
||||
* Note: at present there is no way to obtain an instance of this interface, so
|
||||
* please ignore it. A future release will make syntax tree nodes available in
|
||||
* the public API. If you are interested in working on it, please see: <a
|
||||
* href="https://github.com/typesafehub/config/issues/300"
|
||||
* >https://github.com/typesafehub/config/issues/300</a>
|
||||
* href="https://github.com/lightbend/config/issues/300"
|
||||
* >https://github.com/lightbend/config/issues/300</a>
|
||||
*
|
||||
* <p>
|
||||
* Because this object is immutable, it is safe to use from multiple threads and
|
||||
|
@ -14,7 +14,7 @@ files. You do not want this package for everyday config in your app: see
|
||||
the <code>com.typesafe.config</code> package instead. You would use the raw
|
||||
parser if you're doing something like reading, modifying, and re-saving a config
|
||||
file. For info on the main config API this parser is a part of,
|
||||
see <a href="https://github.com/typesafehub/config/">the project site</a>.
|
||||
see <a href="https://github.com/lightbend/config/">the project site</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
@ -346,7 +346,7 @@ class ConcatenationTest extends TestUtils {
|
||||
}
|
||||
|
||||
// We would ideally make this case NOT throw an exception but we need to do some work
|
||||
// to get there, see https://github.com/typesafehub/config/issues/160
|
||||
// to get there, see https://github.com/lightbend/config/issues/160
|
||||
@Test
|
||||
def plusEqualsMultipleTimesNestedInArray() {
|
||||
val e = intercept[ConfigException.Parse] {
|
||||
@ -357,7 +357,7 @@ class ConcatenationTest extends TestUtils {
|
||||
}
|
||||
|
||||
// We would ideally make this case NOT throw an exception but we need to do some work
|
||||
// to get there, see https://github.com/typesafehub/config/issues/160
|
||||
// to get there, see https://github.com/lightbend/config/issues/160
|
||||
@Test
|
||||
def plusEqualsMultipleTimesNestedInPlusEquals() {
|
||||
val e = intercept[ConfigException.Parse] {
|
||||
@ -367,7 +367,7 @@ class ConcatenationTest extends TestUtils {
|
||||
assertTrue(e.getMessage.contains("limitation"))
|
||||
}
|
||||
|
||||
// from https://github.com/typesafehub/config/issues/177
|
||||
// from https://github.com/lightbend/config/issues/177
|
||||
@Test
|
||||
def arrayConcatenationInDoubleNestedDelayedMerge() {
|
||||
val unresolved = parseConfig("""d { x = [] }, c : ${d}, c { x += 1, x += 2 }""")
|
||||
@ -375,7 +375,7 @@ class ConcatenationTest extends TestUtils {
|
||||
assertEquals(Seq(1, 2), conf.getIntList("c.x").asScala)
|
||||
}
|
||||
|
||||
// from https://github.com/typesafehub/config/issues/177
|
||||
// from https://github.com/lightbend/config/issues/177
|
||||
@Test
|
||||
def arrayConcatenationAsPartOfDelayedMerge() {
|
||||
val unresolved = parseConfig(""" c { x: [], x : ${c.x}[1], x : ${c.x}[2] }""")
|
||||
@ -383,7 +383,7 @@ class ConcatenationTest extends TestUtils {
|
||||
assertEquals(Seq(1, 2), conf.getIntList("c.x").asScala)
|
||||
}
|
||||
|
||||
// from https://github.com/typesafehub/config/issues/177
|
||||
// from https://github.com/lightbend/config/issues/177
|
||||
@Test
|
||||
def arrayConcatenationInDoubleNestedDelayedMerge2() {
|
||||
val unresolved = parseConfig("""d { x = [] }, c : ${d}, c { x : ${c.x}[1], x : ${c.x}[2] }""")
|
||||
@ -391,7 +391,7 @@ class ConcatenationTest extends TestUtils {
|
||||
assertEquals(Seq(1, 2), conf.getIntList("c.x").asScala)
|
||||
}
|
||||
|
||||
// from https://github.com/typesafehub/config/issues/177
|
||||
// from https://github.com/lightbend/config/issues/177
|
||||
@Test
|
||||
def arrayConcatenationInTripleNestedDelayedMerge() {
|
||||
val unresolved = parseConfig("""{ r: { d.x=[] }, q: ${r}, q : { d { x = [] }, c : ${q.d}, c { x : ${q.c.x}[1], x : ${q.c.x}[2] } } }""")
|
||||
|
@ -280,7 +280,7 @@ class ConfigValueTest extends TestUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* Reproduces the issue <a href=https://github.com/typesafehub/config/issues/461>#461</a>.
|
||||
* Reproduces the issue <a href=https://github.com/lightbend/config/issues/461>#461</a>.
|
||||
* <p>
|
||||
* We use a custom de-/serializer that encodes String objects in a JDK-incompatible way. Encoding used here
|
||||
* is rather simplistic: a long indicating the length in bytes (JDK uses a variable length integer) followed
|
||||
|
@ -906,7 +906,7 @@ class PublicApiTest extends TestUtils {
|
||||
}
|
||||
|
||||
// We would ideally make this case NOT throw an exception but we need to do some work
|
||||
// to get there, see https://github.com/typesafehub/config/issues/160
|
||||
// to get there, see https://github.com/lightbend/config/issues/160
|
||||
@Test
|
||||
def detectIncludeFromList() {
|
||||
val e = intercept[ConfigException.Parse] {
|
||||
@ -1070,7 +1070,7 @@ class PublicApiTest extends TestUtils {
|
||||
|
||||
@Test
|
||||
def heuristicIncludeChecksClasspath(): Unit = {
|
||||
// from https://github.com/typesafehub/config/issues/188
|
||||
// from https://github.com/lightbend/config/issues/188
|
||||
withScratchDirectory("heuristicIncludeChecksClasspath") { dir =>
|
||||
val f = new File(dir, "foo.conf")
|
||||
writeFile(f, """
|
||||
|
@ -70,7 +70,7 @@ class UnitParserTest extends TestUtils {
|
||||
assertTrue(s"${e2.getMessage} was not the expected error message", e2.getMessage.contains("time unit 'seconds'"))
|
||||
}
|
||||
|
||||
// https://github.com/typesafehub/config/issues/117
|
||||
// https://github.com/lightbend/config/issues/117
|
||||
// this broke because "1d" is a valid double for parseDouble
|
||||
@Test
|
||||
def parseOneDayAsMilliseconds(): Unit = {
|
||||
|
@ -37,7 +37,7 @@ object LinkSourcePlugin extends AutoPlugin {
|
||||
|
||||
private def rewriteSourceLinks(dir: File, sourceBaseUrl: String, log: Logger): Unit = {
|
||||
// Convert <a href="../../../src-html/com/typesafe/config/Config.html#line.165"> to
|
||||
// "https://github.com/typesafehub/config/blob/v1.2.1/config/src/main/java/com/typesafe/config/Config.java#L165"
|
||||
// "https://github.com/lightbend/config/blob/v1.2.1/config/src/main/java/com/typesafe/config/Config.java#L165"
|
||||
// in all .html files found underneath dir
|
||||
val origRegex = "href=\".*src-html/([^\"]+)\"".r
|
||||
def listFiles(d: File): Seq[File] = IO.listFiles(d).toSeq.flatMap { f =>
|
||||
|
Loading…
Reference in New Issue
Block a user