class Poco::Util::PropertyFileConfiguration

Overview

This implementation of a Configuration reads properties from a Java-style properties file. More…

#include <PropertyFileConfiguration.h>

class PropertyFileConfiguration: public Poco::Util::MapConfiguration
{
public:
    // construction

    PropertyFileConfiguration();
    PropertyFileConfiguration(std::istream& istr);
    PropertyFileConfiguration(const std::string& path);

    // methods

    void
    load(std::istream& istr);

    void
    load(const std::string& path);

    void
    save(std::ostream& ostr) const;

    void
    save(const std::string& path) const;
};

Inherited Members

public:
    // typedefs

    typedef std::vector<std::string> Keys;

    // classes

    class KeyValue;

    // fields

    Poco::BasicEvent<KeyValue> propertyChanging;
    Poco::BasicEvent<const KeyValue> propertyChanged;
    Poco::BasicEvent<const std::string> propertyRemoving;
    Poco::BasicEvent<const std::string> propertyRemoved;

    // methods

    void
    duplicate() const;

    void
    release() const;

    int
    referenceCount() const;

    bool
    hasProperty(const std::string& key) const;

    bool
    hasOption(const std::string& key) const;

    bool
    has(const std::string& key) const;

    std::string
    getString(const std::string& key) const;

    std::string
    getString(
        const std::string& key,
        const std::string& defaultValue
        ) const;

    std::string
    getRawString(const std::string& key) const;

    std::string
    getRawString(
        const std::string& key,
        const std::string& defaultValue
        ) const;

    int
    getInt(const std::string& key) const;

    unsigned int
    getUInt(const std::string& key) const;

    int
    getInt(
        const std::string& key,
        int defaultValue
        ) const;

    unsigned int
    getUInt(
        const std::string& key,
        unsigned int defaultValue
        ) const;

    double
    getDouble(const std::string& key) const;

    double
    getDouble(
        const std::string& key,
        double defaultValue
        ) const;

    bool
    getBool(const std::string& key) const;

    bool
    getBool(
        const std::string& key,
        bool defaultValue
        ) const;

    virtual
    void
    setString(
        const std::string& key,
        const std::string& value
        );

    virtual
    void
    setInt(
        const std::string& key,
        int value
        );

    virtual
    void
    setUInt(
        const std::string& key,
        unsigned int value
        );

    virtual
    void
    setDouble(
        const std::string& key,
        double value
        );

    virtual
    void
    setBool(
        const std::string& key,
        bool value
        );

    void
    keys(Keys& range) const;

    void
    keys(
        const std::string& key,
        Keys& range
        ) const;

    const AbstractConfiguration*
    createView(const std::string& prefix) const;

    AbstractConfiguration*
    createView(const std::string& prefix);

    std::string
    expand(const std::string& value) const;

    void
    remove(const std::string& key);

    void
    enableEvents(bool enable = true);

    bool
    eventsEnabled() const;

    void
    copyTo(AbstractConfiguration& config);

    void
    clear();

protected:
    // typedefs

    typedef std::map<std::string, std::string> StringMap;
    typedef StringMap::const_iterator iterator;

    // methods

    virtual
    bool
    getRaw(
        const std::string& key,
        std::string& value
        ) const = 0;

    virtual
    void
    setRaw(
        const std::string& key,
        const std::string& value
        ) = 0;

    virtual
    void
    enumerate(
        const std::string& key,
        Keys& range
        ) const = 0;

    virtual
    void
    removeRaw(const std::string& key);

    void
    setRawWithEvent(
        const std::string& key,
        std::string value
        );

    static
    int
    parseInt(const std::string& value);

    static
    unsigned
    parseUInt(const std::string& value);

    static
    bool
    parseBool(const std::string& value);

    virtual
    bool
    getRaw(
        const std::string& key,
        std::string& value
        ) const;

    virtual
    void
    setRaw(
        const std::string& key,
        const std::string& value
        );

    virtual
    void
    enumerate(
        const std::string& key,
        Keys& range
        ) const;

    virtual
    void
    removeRaw(const std::string& key);

    iterator
    begin() const;

    iterator
    end() const;

Detailed Documentation

This implementation of a Configuration reads properties from a Java-style properties file.

The file syntax is implemented as follows.

- a line starting with a hash '#' or exclamation mark '!' is treated as a comment and ignored
- every other line denotes a property assignment in the form
  <key> = <value> or
  <key> : <value>

Keys and values may contain special characters represented by the following escape sequences:

- \t: tab (0x09)
- \n: line feed (0x0a)
- \r: carriage return (0x0d)
- \f: form feed (0x0c)

For every other sequence that starts with a backslash, the backslash is removed. Therefore, the sequence would just yield an ‘a’.

A value can spread across multiple lines if the last character in a line (the character immediately before the carriage return or line feed character) is a single backslash.

Property names are case sensitive. Leading and trailing whitespace is removed from both keys and values. A property name can neither contain a colon ‘:’ nor an equal sign ‘=’ character.

Construction

PropertyFileConfiguration()

Creates an empty PropertyFileConfiguration.

PropertyFileConfiguration(std::istream& istr)

Creates an PropertyFileConfiguration and loads the configuration data from the given stream, which must be in properties file format.

PropertyFileConfiguration(const std::string& path)

Creates an PropertyFileConfiguration and loads the configuration data from the given file, which must be in properties file format.

Methods

void
load(std::istream& istr)

Loads the configuration data from the given stream, which must be in properties file format.

void
load(const std::string& path)

Loads the configuration data from the given file, which must be in properties file format.

void
save(std::ostream& ostr) const

Writes the configuration data to the given stream.

The data is written as a sequence of statements in the form <key>:

separated by a newline character.

void
save(const std::string& path) const

Writes the configuration data to the given file.