Trait

org.ekrich.config

ConfigObject

Related Doc: package config

Permalink

trait ConfigObject extends ConfigValue with Map[String, ConfigValue]

Subtype of ConfigValue representing an object (AKA dictionary or map) value, as in JSON's curly brace { "a" : 42 } syntax.

An object may also be viewed as a Config by calling ConfigObject#toConfig.

ConfigObject implements java.util.Map so you can use it like a regular Java map. Or call #unwrapped to unwrap the map to a map with plain Java values rather than ConfigValue.

Like all ConfigValue subtypes, ConfigObject is immutable. This makes it threadsafe and you never have to create "defensive copies." The mutator methods from java.util.Map all throw java.lang.UnsupportedOperationException.

The ConfigValue#valueType method on an object returns ConfigValueType#OBJECT.

In most cases you want to use the Config interface rather than this one. Call #toConfig to convert a ConfigObject to a Config.

The API for a ConfigObject is in terms of keys, while the API for a Config is in terms of path expressions. Conceptually, ConfigObject is a tree of maps from keys to values, while a Config is a one-level map from paths to values.

Use ConfigUtil.joinPath(String*) and ConfigUtil.splitPath(String) to convert between path expressions and individual path elements (keys).

A ConfigObject may contain null values, which will have ConfigValue#valueType equal to ConfigValueType#NULL. If ConfigObject#get returns Java's null then the key was not present in the parsed file (or wherever this value tree came from). If get("key") returns a ConfigValue with type ConfigValueType#NULL then the key was set to null explicitly in the config file.

Do not implement interface ConfigObject; it should only be implemented by the config library. Arbitrary implementations will not work because the library internals assume a specific concrete implementation. Also, this interface is likely to grow new methods over time, so third-party implementations will break.

Linear Supertypes
Map[String, ConfigValue], ConfigValue, ConfigMergeable, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ConfigObject
  2. Map
  3. ConfigValue
  4. ConfigMergeable
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def atKey(key: String): Config

    Permalink

    Places the value inside a Config at the given key.

    Places the value inside a Config at the given key. See also ConfigValue#atPath.

    key

    key to store this value at.

    returns

    a Config instance containing this value at the given key.

    Definition Classes
    ConfigValue
  2. abstract def atPath(path: String): Config

    Permalink

    Places the value inside a Config at the given path.

    Places the value inside a Config at the given path. See also ConfigValue#atKey.

    path

    path to store this value at.

    returns

    a Config instance containing this value at the given path.

    Definition Classes
    ConfigValue
  3. abstract def clear(): Unit

    Permalink
    Definition Classes
    Map
  4. abstract def containsKey(arg0: Any): Boolean

    Permalink
    Definition Classes
    Map
  5. abstract def containsValue(arg0: Any): Boolean

    Permalink
    Definition Classes
    Map
  6. abstract def entrySet(): Set[Entry[String, ConfigValue]]

    Permalink
    Definition Classes
    Map
  7. abstract def get(key: Any): ConfigValue

    Permalink

    Gets a ConfigValue at the given key, or returns null if there is no value.

    Gets a ConfigValue at the given key, or returns null if there is no value. The returned ConfigValue may have ConfigValueType#NULL or any other type, and the passed-in key must be a key in this object (rather than a path expression).

    key

    key to look up

    returns

    the value at the key or null if none

    Definition Classes
    ConfigObject → Map
  8. abstract def isEmpty(): Boolean

    Permalink
    Definition Classes
    Map
  9. abstract def keySet(): Set[String]

    Permalink
    Definition Classes
    Map
  10. abstract def origin: ConfigOrigin

    Permalink

    The origin of the value (file, line number, etc.), for debugging and error messages.

    The origin of the value (file, line number, etc.), for debugging and error messages.

    returns

    where the value came from

    Definition Classes
    ConfigValue
  11. abstract def put(arg0: String, arg1: ConfigValue): ConfigValue

    Permalink
    Definition Classes
    Map
  12. abstract def putAll(arg0: Map[_ <: String, _ <: ConfigValue]): Unit

    Permalink
    Definition Classes
    Map
  13. abstract def remove(arg0: Any): ConfigValue

    Permalink
    Definition Classes
    Map
  14. abstract def render(options: ConfigRenderOptions): String

    Permalink

    Renders the config value to a string, using the provided options.

    Renders the config value to a string, using the provided options.

    If the config value has not been resolved (see Config.resolve()]]), it's possible that it can't be rendered as valid HOCON. In that case the rendering should still be useful for debugging but you might not be able to parse it. If the value has been resolved, it will always be parseable.

    If the config value has been resolved and the options disable all HOCON-specific features (such as comments), the rendering will be valid JSON. If you enable HOCON-only features such as comments, the rendering will not be valid JSON.

    options

    the rendering options

    returns

    the rendered value

    Definition Classes
    ConfigValue
  15. abstract def render: String

    Permalink

    Renders the config value as a HOCON string.

    Renders the config value as a HOCON string. This method is primarily intended for debugging, so it tries to add helpful comments and whitespace.

    If the config value has not been resolved (see Config.resolve()), it's possible that it can't be rendered as valid HOCON. In that case the rendering should still be useful for debugging but you might not be able to parse it. If the value has been resolved, it will always be parseable.

    This method is equivalent to render(ConfigRenderOptions.defaults()).

    returns

    the rendered value

    Definition Classes
    ConfigValue
  16. abstract def size(): Int

    Permalink
    Definition Classes
    Map
  17. abstract def toConfig: Config

    Permalink

    Converts this object to a Config instance, enabling you to use path expressions to find values in the object.

    Converts this object to a Config instance, enabling you to use path expressions to find values in the object. This is a constant-time operation (it is not proportional to the size of the object).

    returns

    a Config with this object as its root

  18. abstract def unwrapped: Map[String, AnyRef]

    Permalink

    Recursively unwraps the object, returning a map from String to whatever plain Java values are unwrapped from the object's values.

    Recursively unwraps the object, returning a map from String to whatever plain Java values are unwrapped from the object's values.

    returns

    a java.util.Map containing plain Java objects

    Definition Classes
    ConfigObjectConfigValue
  19. abstract def valueType: ConfigValueType

    Permalink

    The ConfigValueType of the value; matches the JSON type schema.

    The ConfigValueType of the value; matches the JSON type schema.

    returns

    value's type

    Definition Classes
    ConfigValue
  20. abstract def values(): Collection[ConfigValue]

    Permalink
    Definition Classes
    Map
  21. abstract def withFallback(other: ConfigMergeable): ConfigObject

    Permalink

    Returns a new value computed by merging this value with another, with keys in this value "winning" over the other one.

    Returns a new value computed by merging this value with another, with keys in this value "winning" over the other one.

    This associative operation may be used to combine configurations from multiple sources (such as multiple configuration files).

    The semantics of merging are described in the spec for HOCON. Merging typically occurs when either the same object is created twice in the same file, or two config files are both loaded. For example:

    foo = { a: 42 }
    foo = { b: 43 }

    Here, the two objects are merged as if you had written:

    foo = { a: 42, b: 43 }

    Only ConfigObject and Config instances do anything in this method (they need to merge the fallback keys into themselves). All other values just return the original value, since they automatically override any fallback. This means that objects do not merge "across" non-objects; if you write object.withFallback(nonObject).withFallback(otherObject), then otherObjectwill simply be ignored. This is an intentional part of how merging works, because non-objects such as strings and integers replace (rather than merging with) any prior value:

    foo = { a: 42 }
    foo = 10

    Here, the number 10 "wins" and the value of foo would be simply 10. Again, for details see the spec.

    other

    an object whose keys should be used as fallbacks, if the keys are not present in this one

    returns

    a new object (or the original one, if the fallback doesn't get used)

    Definition Classes
    ConfigObjectConfigValueConfigMergeable
  22. abstract def withOnlyKey(key: String): ConfigObject

    Permalink

    Clone the object with only the given key (and its children) retained; all sibling keys are removed.

    Clone the object with only the given key (and its children) retained; all sibling keys are removed.

    key

    key to keep

    returns

    a copy of the object minus all keys except the one specified

  23. abstract def withOrigin(origin: ConfigOrigin): ConfigObject

    Permalink

    Returns a ConfigValue based on this one, but with the given origin.

    Returns a ConfigValue based on this one, but with the given origin. This is useful when you are parsing a new format of file or setting comments for a single ConfigValue.

    origin

    the origin set on the returned value

    returns

    the new ConfigValue with the given origin

    Definition Classes
    ConfigObjectConfigValue
    Since

    1.3.0

  24. abstract def withValue(key: String, value: ConfigValue): ConfigObject

    Permalink

    Returns a ConfigObject based on this one, but with the given key set to the given value.

    Returns a ConfigObject based on this one, but with the given key set to the given value. Does not modify this instance (since it's immutable). If the key already has a value, that value is replaced. To remove a value, use ConfigObject#withoutKey.

    key

    key to add

    value

    value at the new key

    returns

    the new instance with the new map entry

  25. abstract def withoutKey(key: String): ConfigObject

    Permalink

    Clone the object with the given key removed.

    Clone the object with the given key removed.

    key

    key to remove

    returns

    a copy of the object minus the specified key

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. def compute(arg0: String, arg1: BiFunction[_ >: String, _ >: ConfigValue, _ <: ConfigValue]): ConfigValue

    Permalink
    Definition Classes
    Map
  7. def computeIfAbsent(arg0: String, arg1: Function[_ >: String, _ <: ConfigValue]): ConfigValue

    Permalink
    Definition Classes
    Map
  8. def computeIfPresent(arg0: String, arg1: BiFunction[_ >: String, _ >: ConfigValue, _ <: ConfigValue]): ConfigValue

    Permalink
    Definition Classes
    Map
  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. def forEach(arg0: BiConsumer[_ >: String, _ >: ConfigValue]): Unit

    Permalink
    Definition Classes
    Map
  13. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  14. def getOrDefault(arg0: Any, arg1: ConfigValue): ConfigValue

    Permalink
    Definition Classes
    Map
  15. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  16. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  17. def merge(arg0: String, arg1: ConfigValue, arg2: BiFunction[_ >: ConfigValue, _ >: ConfigValue, _ <: ConfigValue]): ConfigValue

    Permalink
    Definition Classes
    Map
  18. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  19. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  21. def putIfAbsent(arg0: String, arg1: ConfigValue): ConfigValue

    Permalink
    Definition Classes
    Map
  22. def remove(arg0: Any, arg1: Any): Boolean

    Permalink
    Definition Classes
    Map
  23. def replace(arg0: String, arg1: ConfigValue): ConfigValue

    Permalink
    Definition Classes
    Map
  24. def replace(arg0: String, arg1: ConfigValue, arg2: ConfigValue): Boolean

    Permalink
    Definition Classes
    Map
  25. def replaceAll(arg0: BiFunction[_ >: String, _ >: ConfigValue, _ <: ConfigValue]): Unit

    Permalink
    Definition Classes
    Map
  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  28. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from Map[String, ConfigValue]

Inherited from ConfigValue

Inherited from ConfigMergeable

Inherited from AnyRef

Inherited from Any

Ungrouped