org.ekrich.config.impl

Type members

Classlikes

abstract class AbstractConfigNode extends ConfigNode
Companion
class
Companion
object

Trying very hard to avoid a parent reference in config values; when you have a tree like this, the availability of parent() tends to result in a lot of improperly-factored and non-modular code. Please don't add parent().

Trying very hard to avoid a parent reference in config values; when you have a tree like this, the availability of parent() tends to result in a lot of improperly-factored and non-modular code. Please don't add parent().

Companion
class
abstract class AbstractConfigValue extends ConfigValue with MergeableValue
Companion
object
object BadMap

A terrible Map that isn't as expensive as HashMap to copy and add one item to. Please write something real if you see this and get cranky.

A terrible Map that isn't as expensive as HashMap to copy and add one item to. Please write something real if you see this and get cranky.

Companion
class
final class BadMap[K, V]
Companion
object

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

@SerialVersionUID(2L)
final class ConfigBoolean(origin: ConfigOrigin, val value: Boolean) extends AbstractConfigValue with Serializable

A ConfigConcatenation represents a list of values to be concatenated (see the spec). It only has to exist if at least one value is an unresolved substitution, otherwise we could go ahead and collapse the list into a single value.

A ConfigConcatenation represents a list of values to be concatenated (see the spec). It only has to exist if at least one value is an unresolved substitution, otherwise we could go ahead and collapse the list into a single value.

Right now this is always a list of strings and ${} references, but in the future should support a list of ConfigList. We may also support concatenations of objects, but ConfigDelayedMerge should be used for that since a concat of objects really will merge, not concatenate.

Companion
class
final class ConfigConcatenation(_origin: ConfigOrigin, val pieces: List[AbstractConfigValue]) extends AbstractConfigValue with Unmergeable with Container
Companion
object

The issue here is that we want to first merge our stack of config files, and then we want to evaluate substitutions. But if two substitutions both expand to an object, we might need to merge those two objects. Thus, we can't ever "override" a substitution when we do a merge; instead we have to save the stack of values that should be merged, and resolve the merge when we evaluate substitutions.

The issue here is that we want to first merge our stack of config files, and then we want to evaluate substitutions. But if two substitutions both expand to an object, we might need to merge those two objects. Thus, we can't ever "override" a substitution when we do a merge; instead we have to save the stack of values that should be merged, and resolve the merge when we evaluate substitutions.

Companion
class
Companion
object
@SerialVersionUID(2L)
final class ConfigDouble(origin: ConfigOrigin, val value: Double, originalText: String) extends ConfigNumber with Serializable
object ConfigImpl

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package.

@SerialVersionUID(2L)
final class ConfigInt(origin: ConfigOrigin, val value: Int, originalText: String) extends ConfigNumber with Serializable
@SerialVersionUID(2L)
final class ConfigLong(origin: ConfigOrigin, val value: Long, originalText: String) extends ConfigNumber with Serializable
final class ConfigNodeComment(val comment: Token) extends ConfigNodeSingleToken
abstract class ConfigNodeComplexValue(_children: Collection[AbstractConfigNode]) extends AbstractConfigNodeValue
final class ConfigNodeField(_children: Collection[AbstractConfigNode]) extends AbstractConfigNode
final class ConfigNodeInclude(val children: Collection[AbstractConfigNode], val kind: ConfigIncludeKind, val isRequired: Boolean) extends AbstractConfigNode
@SerialVersionUID(2L)
final class ConfigNull(origin: ConfigOrigin) extends AbstractConfigValue with Serializable

This exists because sometimes null is not the same as missing. Specifically, if a value is set to null we can give a better error message (indicating where it was set to null) in case someone asks for the value. Also, null overrides values set "earlier" in the search path, while missing values do not.

This exists because sometimes null is not the same as missing. Specifically, if a value is set to null we can give a better error message (indicating where it was set to null) in case someone asks for the value. Also, null overrides values set "earlier" in the search path, while missing values do not.

@SerialVersionUID(2L)
object ConfigNumber
Companion
class
@SerialVersionUID(2L)
abstract class ConfigNumber(_origin: ConfigOrigin, val originalText: String) extends AbstractConfigValue with Serializable
Companion
object
object ConfigParser
final class ConfigReference(_origin: ConfigOrigin, val expression: SubstitutionExpression, val prefixLength: Int) extends AbstractConfigValue with Unmergeable

ConfigReference replaces ConfigReference (the older class kept for back compat) and represents the ${} substitution syntax. It can resolve to any kind of value.

ConfigReference replaces ConfigReference (the older class kept for back compat) and represents the ${} substitution syntax. It can resolve to any kind of value.

@SerialVersionUID(2L)
object ConfigString
Companion
class
@SerialVersionUID(2L)
abstract class ConfigString(origin: ConfigOrigin, val value: String) extends AbstractConfigValue with Serializable
Companion
object
trait Container extends ConfigValue

An AbstractConfigValue which contains other values. Java has no way to express "this has to be an AbstractConfigValue also" other than making AbstractConfigValue an interface which would be aggravating. But we can say we are a ConfigValue.

An AbstractConfigValue which contains other values. Java has no way to express "this has to be an AbstractConfigValue also" other than making AbstractConfigValue an interface which would be aggravating. But we can say we are a ConfigValue.

Default automatic type transformations.

Default automatic type transformations.

enum FromMapMode extends Enum[FromMapMode]
final class MemoKey

The key used to memoize already-traversed nodes when resolving substitutions

The key used to memoize already-traversed nodes when resolving substitutions

enum MemoryUnit(val prefix: String, val powerOf: Int, val power: Int) extends Enum[MemoryUnit]
enum OriginType extends Enum[OriginType]
object Parseable

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package. The point of this class is to avoid "propagating" each overload on "thing which can be parsed" through multiple interfaces. Most interfaces can have just one overload that takes a Parseable. Also it's used as an abstract "resource handle" in the ConfigIncluder interface.

Internal implementation detail, not ABI stable, do not touch. For use only by the [[org.ekrich.config]] package. The point of this class is to avoid "propagating" each overload on "thing which can be parsed" through multiple interfaces. Most interfaces can have just one overload that takes a Parseable. Also it's used as an abstract "resource handle" in the ConfigIncluder interface.

Companion
class
abstract class Parseable extends ConfigParseable
Companion
object
object Path
Companion
class
final class Path(val first: String, val remainder: Path)
Companion
object
final class PathBuilder
object PathParser
class PlatformClassLoader(cl: ClassLoader) extends ClassLoaderLike

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js

class PlatformThread(thread: Thread) extends ThreadLike

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js

class PlatformUri(uri: URI) extends UriLike

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js

Implemented by a merge stack (ConfigDelayedMerge, ConfigDelayedMergeObject) that replaces itself during substitution resolution in order to implement "look backwards only" semantics.

Implemented by a merge stack (ConfigDelayedMerge, ConfigDelayedMergeObject) that replaces itself during substitution resolution in order to implement "look backwards only" semantics.

final class ResolveMemos

This exists because we have to memoize resolved substitutions as we go through the config tree; otherwise we could end up creating multiple copies of values or whole trees of values as we follow chains of substitutions.

This exists because we have to memoize resolved substitutions as we go through the config tree; otherwise we could end up creating multiple copies of values or whole trees of values as we follow chains of substitutions.

Companion
class
final class ResolveResult[V <: AbstractConfigValue](val context: ResolveContext, val value: V)
Companion
object

This class is the source for values for a substitution like ${foo}.

This class is the source for values for a substitution like ${foo}.

Companion
class
final class ResolveSource(val root: AbstractConfigObject, val pathFromRoot: Node[Container])
Companion
object
enum ResolveStatus extends Enum[ResolveStatus]

Status of substitution resolution.

Status of substitution resolution.

Companion
object
Companion
class
@SerialVersionUID(1L)

Deliberately shoving all the serialization code into this class instead of doing it OO-style with each subclass. Seems better to have it all in one place. This class implements a lame serialization format that supports skipping unknown fields, so it's moderately more extensible than the default Java serialization format.

Deliberately shoving all the serialization code into this class instead of doing it OO-style with each subclass. Seems better to have it all in one place. This class implements a lame serialization format that supports skipping unknown fields, so it's moderately more extensible than the default Java serialization format.

Companion
class
@SerialVersionUID(1L)
class SerializedConfigValue() extends AbstractConfigValue with Externalizable
Companion
object
enum SerializedField extends Enum[SerializedField]
Companion
object
Companion
class
enum SerializedValueType(val configType: ConfigValueType) extends Enum[SerializedValueType]
Companion
object
Companion
class
@SerialVersionUID(1L)
object SimpleConfig

One thing to keep in mind in the future: as Collection-like APIs are added here, including iterators or size() or anything, they should be consistent with a one-level java.util.Map from paths to non-null values. Null values are not "in" the map.

One thing to keep in mind in the future: as Collection-like APIs are added here, including iterators or size() or anything, they should be consistent with a one-level java.util.Map from paths to non-null values. Null values are not "in" the map.

Companion
class
@SerialVersionUID(1L)
final class SimpleConfig extends Config with MergeableValue with Serializable
Companion
object
@SerialVersionUID(2L)
Companion
class
@SerialVersionUID(2L)
final class SimpleConfigList(_origin: ConfigOrigin, val value: List[AbstractConfigValue], status: ResolveStatus) extends AbstractConfigValue with ConfigList with Container with Serializable
Companion
object
@SerialVersionUID(2L)
Companion
class
@SerialVersionUID(2L)
final class SimpleConfigObject(_origin: ConfigOrigin, val value: Map[String, AbstractConfigValue], val status: ResolveStatus, val ignoresFallbacks: Boolean) extends AbstractConfigObject with Serializable
Companion
object
Companion
class
final class SimpleConfigOrigin extends ConfigOrigin
Companion
object
Companion
class
Companion
object
final class SubstitutionExpression(val path: Path, val optional: Boolean)
trait ThreadLike

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js

object Token
Companion
class
class Token
Companion
object
enum TokenType extends Enum[TokenType]
object Tokenizer
object Tokens

Interface that tags a ConfigValue that is not mergeable until after substitutions are resolved. Basically these are special ConfigValue that never appear in a resolved tree, like ConfigSubstitution and [[ConfigDelayedMerge]].

Interface that tags a ConfigValue that is not mergeable until after substitutions are resolved. Basically these are special ConfigValue that never appear in a resolved tree, like ConfigSubstitution and [[ConfigDelayedMerge]].

trait UriLike

To workaround missing implementation in Scala.js

To workaround missing implementation in Scala.js