Package groovy.util

Class ConfigObject

  • All Implemented Interfaces:
    GroovyObject, Writable, Cloneable, Map

    public class ConfigObject
    extends GroovyObjectSupport
    implements Writable, Map, Cloneable
    A ConfigObject at a simple level is a Map that creates configuration entries (other ConfigObjects) when referencing them. This means that navigating to foo.bar.stuff will not return null but nested ConfigObjects which are of course empty maps The Groovy truth can be used to check for the existence of "real" entries.
    Since:
    1.5
    • Constructor Detail

      • ConfigObject

        public ConfigObject​(URL file)
      • ConfigObject

        public ConfigObject()
    • Method Detail

      • getConfigFile

        public URL getConfigFile()
      • setConfigFile

        public void setConfigFile​(URL configFile)
      • writeTo

        public Writer writeTo​(Writer outArg)
                       throws IOException
        Writes this config object into a String serialized representation which can later be parsed back using the parse() method
        Specified by:
        writeTo in interface Writable
        Parameters:
        outArg - the Writer to which this Writable should output its data.
        Returns:
        the Writer that was passed
        Throws:
        IOException - if an error occurred while outputting data to the writer
        See Also:
        Writable.writeTo(java.io.Writer)
      • getProperty

        public Object getProperty​(String name)
        Overrides the default getProperty implementation to create nested ConfigObject instances on demand for non-existent keys
        Specified by:
        getProperty in interface GroovyObject
        Overrides:
        getProperty in class GroovyObjectSupport
        Parameters:
        name - the name of the property of interest
        Returns:
        the given property
      • flatten

        public Map flatten()
        A ConfigObject is a tree structure consisting of nested maps. This flattens the maps into a single level structure like a properties file
      • flatten

        public Map flatten​(Map target)
        Flattens this ConfigObject populating the results into the target Map
        See Also:
        flatten()
      • merge

        public Map merge​(ConfigObject other)
        Merges the given map with this ConfigObject overriding any matching configuration entries in this ConfigObject
        Parameters:
        other - The ConfigObject to merge with
        Returns:
        The result of the merge
      • toProperties

        public Properties toProperties()
        Converts this ConfigObject into a the java.util.Properties format, flattening the tree structure beforehand
        Returns:
        A java.util.Properties instance
      • toProperties

        public Properties toProperties​(String prefix)
        Converts this ConfigObject ino the java.util.Properties format, flatten the tree and prefixing all entries with the given prefix
        Parameters:
        prefix - The prefix to append before property entries
        Returns:
        A java.util.Properties instance
      • size

        public int size()
        Specified by:
        size in interface Map
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface Map
      • containsKey

        public boolean containsKey​(Object key)
        Specified by:
        containsKey in interface Map
      • containsValue

        public boolean containsValue​(Object value)
        Specified by:
        containsValue in interface Map
      • putAll

        public void putAll​(Map m)
        Specified by:
        putAll in interface Map
      • clear

        public void clear()
        Specified by:
        clear in interface Map
      • keySet

        public Set keySet()
        Specified by:
        keySet in interface Map
      • entrySet

        public Set entrySet()
        Specified by:
        entrySet in interface Map
      • clone

        public ConfigObject clone()
        Returns a shallow copy of this ConfigObject, keys and configuration entries are not cloned.
        Overrides:
        clone in class Object
        Returns:
        a shallow copy of this ConfigObject
      • isSet

        public Boolean isSet​(String option)
        Checks if a config option is set. Example usage:
         def config = new ConfigSlurper().parse("foo { password='' }")
         assert config.foo.isSet('password')
         assert config.foo.isSet('username') == false
         
        The check works only for options one block below the current block. E.g. config.isSet('foo.password') will always return false.
        Parameters:
        option - The name of the option
        Returns:
        true if the option is set false otherwise
        Since:
        2.3.0
      • prettyPrint

        public String prettyPrint()