You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@commons.apache.org by gg...@apache.org on 2024/03/20 22:19:06 UTC

svn commit: r1085948 [6/16] - in /websites/production/commons/content/proper/commons-configuration: ./ apidocs/ apidocs/org/apache/commons/configuration2/ apidocs/org/apache/commons/configuration2/ex/class-use/ apidocs/src-html/org/apache/commons/confi...

Modified: websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/MapConfiguration.html
==============================================================================
--- websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/MapConfiguration.html (original)
+++ websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/MapConfiguration.html Wed Mar 20 22:19:06 2024
@@ -113,7 +113,7 @@
 <span class="source-line-no">100</span><span id="line-100">     * @since 1.8</span>
 <span class="source-line-no">101</span><span id="line-101">     */</span>
 <span class="source-line-no">102</span><span id="line-102">    public MapConfiguration(final Properties props) {</span>
-<span class="source-line-no">103</span><span id="line-103">        map = convertPropertiesToMap(props);</span>
+<span class="source-line-no">103</span><span id="line-103">        map = toMap(props);</span>
 <span class="source-line-no">104</span><span id="line-104">    }</span>
 <span class="source-line-no">105</span><span id="line-105"></span>
 <span class="source-line-no">106</span><span id="line-106">    /**</span>
@@ -233,7 +233,7 @@
 <span class="source-line-no">220</span><span id="line-220">     * @return a newly created map with all string keys of the properties</span>
 <span class="source-line-no">221</span><span id="line-221">     */</span>
 <span class="source-line-no">222</span><span id="line-222">    @SuppressWarnings("unchecked")</span>
-<span class="source-line-no">223</span><span id="line-223">    private static Map&lt;String, Object&gt; convertPropertiesToMap(final Properties props) {</span>
+<span class="source-line-no">223</span><span id="line-223">    private static Map&lt;String, Object&gt; toMap(final Properties props) {</span>
 <span class="source-line-no">224</span><span id="line-224">        @SuppressWarnings("rawtypes")</span>
 <span class="source-line-no">225</span><span id="line-225">        final Map map = props;</span>
 <span class="source-line-no">226</span><span id="line-226">        return map;</span>

Modified: websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/SubsetConfiguration.html
==============================================================================
--- websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/SubsetConfiguration.html (original)
+++ websites/production/commons/content/proper/commons-configuration/apidocs/src-html/org/apache/commons/configuration2/SubsetConfiguration.html Wed Mar 20 22:19:06 2024
@@ -31,266 +31,263 @@
 <span class="source-line-no">018</span><span id="line-18">package org.apache.commons.configuration2;</span>
 <span class="source-line-no">019</span><span id="line-19"></span>
 <span class="source-line-no">020</span><span id="line-20">import java.util.Iterator;</span>
-<span class="source-line-no">021</span><span id="line-21"></span>
-<span class="source-line-no">022</span><span id="line-22">import org.apache.commons.configuration2.convert.ListDelimiterHandler;</span>
-<span class="source-line-no">023</span><span id="line-23">import org.apache.commons.lang3.StringUtils;</span>
-<span class="source-line-no">024</span><span id="line-24"></span>
-<span class="source-line-no">025</span><span id="line-25">/**</span>
-<span class="source-line-no">026</span><span id="line-26"> * &lt;p&gt;</span>
-<span class="source-line-no">027</span><span id="line-27"> * A subset of another configuration. The new Configuration object contains every key from the parent Configuration that</span>
-<span class="source-line-no">028</span><span id="line-28"> * starts with prefix. The prefix is removed from the keys in the subset.</span>
-<span class="source-line-no">029</span><span id="line-29"> * &lt;/p&gt;</span>
-<span class="source-line-no">030</span><span id="line-30"> * &lt;p&gt;</span>
-<span class="source-line-no">031</span><span id="line-31"> * It is usually not necessary to use this class directly. Instead the {@link Configuration#subset(String)} method</span>
-<span class="source-line-no">032</span><span id="line-32"> * should be used, which will return a correctly initialized instance.</span>
-<span class="source-line-no">033</span><span id="line-33"> * &lt;/p&gt;</span>
-<span class="source-line-no">034</span><span id="line-34"> */</span>
-<span class="source-line-no">035</span><span id="line-35">public class SubsetConfiguration extends AbstractConfiguration {</span>
-<span class="source-line-no">036</span><span id="line-36">    /** The parent configuration. */</span>
-<span class="source-line-no">037</span><span id="line-37">    protected Configuration parent;</span>
-<span class="source-line-no">038</span><span id="line-38"></span>
-<span class="source-line-no">039</span><span id="line-39">    /** The prefix used to select the properties. */</span>
-<span class="source-line-no">040</span><span id="line-40">    protected String prefix;</span>
-<span class="source-line-no">041</span><span id="line-41"></span>
-<span class="source-line-no">042</span><span id="line-42">    /** The prefix delimiter */</span>
-<span class="source-line-no">043</span><span id="line-43">    protected String delimiter;</span>
-<span class="source-line-no">044</span><span id="line-44"></span>
-<span class="source-line-no">045</span><span id="line-45">    /**</span>
-<span class="source-line-no">046</span><span id="line-46">     * Create a subset of the specified configuration</span>
-<span class="source-line-no">047</span><span id="line-47">     *</span>
-<span class="source-line-no">048</span><span id="line-48">     * @param parent The parent configuration (must not be &lt;b&gt;null&lt;/b&gt;)</span>
-<span class="source-line-no">049</span><span id="line-49">     * @param prefix The prefix used to select the properties</span>
-<span class="source-line-no">050</span><span id="line-50">     * @throws IllegalArgumentException if the parent configuration is &lt;b&gt;null&lt;/b&gt;</span>
-<span class="source-line-no">051</span><span id="line-51">     */</span>
-<span class="source-line-no">052</span><span id="line-52">    public SubsetConfiguration(final Configuration parent, final String prefix) {</span>
-<span class="source-line-no">053</span><span id="line-53">        this(parent, prefix, null);</span>
-<span class="source-line-no">054</span><span id="line-54">    }</span>
-<span class="source-line-no">055</span><span id="line-55"></span>
-<span class="source-line-no">056</span><span id="line-56">    /**</span>
-<span class="source-line-no">057</span><span id="line-57">     * Create a subset of the specified configuration</span>
-<span class="source-line-no">058</span><span id="line-58">     *</span>
-<span class="source-line-no">059</span><span id="line-59">     * @param parent The parent configuration (must not be &lt;b&gt;null&lt;/b&gt;)</span>
-<span class="source-line-no">060</span><span id="line-60">     * @param prefix The prefix used to select the properties</span>
-<span class="source-line-no">061</span><span id="line-61">     * @param delimiter The prefix delimiter</span>
-<span class="source-line-no">062</span><span id="line-62">     * @throws IllegalArgumentException if the parent configuration is &lt;b&gt;null&lt;/b&gt;</span>
-<span class="source-line-no">063</span><span id="line-63">     */</span>
-<span class="source-line-no">064</span><span id="line-64">    public SubsetConfiguration(final Configuration parent, final String prefix, final String delimiter) {</span>
-<span class="source-line-no">065</span><span id="line-65">        if (parent == null) {</span>
-<span class="source-line-no">066</span><span id="line-66">            throw new IllegalArgumentException("Parent configuration must not be null!");</span>
-<span class="source-line-no">067</span><span id="line-67">        }</span>
-<span class="source-line-no">068</span><span id="line-68"></span>
-<span class="source-line-no">069</span><span id="line-69">        this.parent = parent;</span>
-<span class="source-line-no">070</span><span id="line-70">        this.prefix = prefix;</span>
-<span class="source-line-no">071</span><span id="line-71">        this.delimiter = delimiter;</span>
-<span class="source-line-no">072</span><span id="line-72">        initInterpolator();</span>
-<span class="source-line-no">073</span><span id="line-73">    }</span>
-<span class="source-line-no">074</span><span id="line-74"></span>
-<span class="source-line-no">075</span><span id="line-75">    /**</span>
-<span class="source-line-no">076</span><span id="line-76">     * Gets the key in the parent configuration associated to the specified key in this subset.</span>
-<span class="source-line-no">077</span><span id="line-77">     *</span>
-<span class="source-line-no">078</span><span id="line-78">     * @param key The key in the subset.</span>
-<span class="source-line-no">079</span><span id="line-79">     * @return the key as to be used by the parent</span>
-<span class="source-line-no">080</span><span id="line-80">     */</span>
-<span class="source-line-no">081</span><span id="line-81">    protected String getParentKey(final String key) {</span>
-<span class="source-line-no">082</span><span id="line-82">        if (StringUtils.isEmpty(key)) {</span>
-<span class="source-line-no">083</span><span id="line-83">            return prefix;</span>
-<span class="source-line-no">084</span><span id="line-84">        }</span>
-<span class="source-line-no">085</span><span id="line-85">        return delimiter == null ? prefix + key : prefix + delimiter + key;</span>
-<span class="source-line-no">086</span><span id="line-86">    }</span>
-<span class="source-line-no">087</span><span id="line-87"></span>
-<span class="source-line-no">088</span><span id="line-88">    /**</span>
-<span class="source-line-no">089</span><span id="line-89">     * Gets the key in the subset configuration associated to the specified key in the parent configuration.</span>
-<span class="source-line-no">090</span><span id="line-90">     *</span>
-<span class="source-line-no">091</span><span id="line-91">     * @param key The key in the parent configuration.</span>
-<span class="source-line-no">092</span><span id="line-92">     * @return the key in the context of this subset configuration</span>
-<span class="source-line-no">093</span><span id="line-93">     */</span>
-<span class="source-line-no">094</span><span id="line-94">    protected String getChildKey(final String key) {</span>
-<span class="source-line-no">095</span><span id="line-95">        if (!key.startsWith(prefix)) {</span>
-<span class="source-line-no">096</span><span id="line-96">            throw new IllegalArgumentException("The parent key '" + key + "' is not in the subset.");</span>
-<span class="source-line-no">097</span><span id="line-97">        }</span>
-<span class="source-line-no">098</span><span id="line-98">        String modifiedKey = null;</span>
-<span class="source-line-no">099</span><span id="line-99">        if (key.length() == prefix.length()) {</span>
-<span class="source-line-no">100</span><span id="line-100">            modifiedKey = "";</span>
-<span class="source-line-no">101</span><span id="line-101">        } else {</span>
-<span class="source-line-no">102</span><span id="line-102">            final int i = prefix.length() + (delimiter != null ? delimiter.length() : 0);</span>
-<span class="source-line-no">103</span><span id="line-103">            modifiedKey = key.substring(i);</span>
-<span class="source-line-no">104</span><span id="line-104">        }</span>
+<span class="source-line-no">021</span><span id="line-21">import java.util.Objects;</span>
+<span class="source-line-no">022</span><span id="line-22"></span>
+<span class="source-line-no">023</span><span id="line-23">import org.apache.commons.configuration2.convert.ListDelimiterHandler;</span>
+<span class="source-line-no">024</span><span id="line-24">import org.apache.commons.lang3.StringUtils;</span>
+<span class="source-line-no">025</span><span id="line-25"></span>
+<span class="source-line-no">026</span><span id="line-26">/**</span>
+<span class="source-line-no">027</span><span id="line-27"> * &lt;p&gt;</span>
+<span class="source-line-no">028</span><span id="line-28"> * A subset of another configuration. The new Configuration object contains every key from the parent Configuration that</span>
+<span class="source-line-no">029</span><span id="line-29"> * starts with prefix. The prefix is removed from the keys in the subset.</span>
+<span class="source-line-no">030</span><span id="line-30"> * &lt;/p&gt;</span>
+<span class="source-line-no">031</span><span id="line-31"> * &lt;p&gt;</span>
+<span class="source-line-no">032</span><span id="line-32"> * It is usually not necessary to use this class directly. Instead the {@link Configuration#subset(String)} method</span>
+<span class="source-line-no">033</span><span id="line-33"> * should be used, which will return a correctly initialized instance.</span>
+<span class="source-line-no">034</span><span id="line-34"> * &lt;/p&gt;</span>
+<span class="source-line-no">035</span><span id="line-35"> */</span>
+<span class="source-line-no">036</span><span id="line-36">public class SubsetConfiguration extends AbstractConfiguration {</span>
+<span class="source-line-no">037</span><span id="line-37">    /** The parent configuration. */</span>
+<span class="source-line-no">038</span><span id="line-38">    protected Configuration parent;</span>
+<span class="source-line-no">039</span><span id="line-39"></span>
+<span class="source-line-no">040</span><span id="line-40">    /** The prefix used to select the properties. */</span>
+<span class="source-line-no">041</span><span id="line-41">    protected String prefix;</span>
+<span class="source-line-no">042</span><span id="line-42"></span>
+<span class="source-line-no">043</span><span id="line-43">    /** The prefix delimiter */</span>
+<span class="source-line-no">044</span><span id="line-44">    protected String delimiter;</span>
+<span class="source-line-no">045</span><span id="line-45"></span>
+<span class="source-line-no">046</span><span id="line-46">    /**</span>
+<span class="source-line-no">047</span><span id="line-47">     * Create a subset of the specified configuration</span>
+<span class="source-line-no">048</span><span id="line-48">     *</span>
+<span class="source-line-no">049</span><span id="line-49">     * @param parent The parent configuration (must not be &lt;b&gt;null&lt;/b&gt;)</span>
+<span class="source-line-no">050</span><span id="line-50">     * @param prefix The prefix used to select the properties</span>
+<span class="source-line-no">051</span><span id="line-51">     * @throws IllegalArgumentException if the parent configuration is &lt;b&gt;null&lt;/b&gt;</span>
+<span class="source-line-no">052</span><span id="line-52">     */</span>
+<span class="source-line-no">053</span><span id="line-53">    public SubsetConfiguration(final Configuration parent, final String prefix) {</span>
+<span class="source-line-no">054</span><span id="line-54">        this(parent, prefix, null);</span>
+<span class="source-line-no">055</span><span id="line-55">    }</span>
+<span class="source-line-no">056</span><span id="line-56"></span>
+<span class="source-line-no">057</span><span id="line-57">    /**</span>
+<span class="source-line-no">058</span><span id="line-58">     * Create a subset of the specified configuration</span>
+<span class="source-line-no">059</span><span id="line-59">     *</span>
+<span class="source-line-no">060</span><span id="line-60">     * @param parent The parent configuration (must not be &lt;b&gt;null&lt;/b&gt;)</span>
+<span class="source-line-no">061</span><span id="line-61">     * @param prefix The prefix used to select the properties</span>
+<span class="source-line-no">062</span><span id="line-62">     * @param delimiter The prefix delimiter</span>
+<span class="source-line-no">063</span><span id="line-63">     * @throws NullPointerException if the parent configuration is &lt;b&gt;null&lt;/b&gt;</span>
+<span class="source-line-no">064</span><span id="line-64">     */</span>
+<span class="source-line-no">065</span><span id="line-65">    public SubsetConfiguration(final Configuration parent, final String prefix, final String delimiter) {</span>
+<span class="source-line-no">066</span><span id="line-66">        this.parent = Objects.requireNonNull(parent, "parent");</span>
+<span class="source-line-no">067</span><span id="line-67">        this.prefix = prefix;</span>
+<span class="source-line-no">068</span><span id="line-68">        this.delimiter = delimiter;</span>
+<span class="source-line-no">069</span><span id="line-69">        initInterpolator();</span>
+<span class="source-line-no">070</span><span id="line-70">    }</span>
+<span class="source-line-no">071</span><span id="line-71"></span>
+<span class="source-line-no">072</span><span id="line-72">    /**</span>
+<span class="source-line-no">073</span><span id="line-73">     * Gets the key in the parent configuration associated to the specified key in this subset.</span>
+<span class="source-line-no">074</span><span id="line-74">     *</span>
+<span class="source-line-no">075</span><span id="line-75">     * @param key The key in the subset.</span>
+<span class="source-line-no">076</span><span id="line-76">     * @return the key as to be used by the parent</span>
+<span class="source-line-no">077</span><span id="line-77">     */</span>
+<span class="source-line-no">078</span><span id="line-78">    protected String getParentKey(final String key) {</span>
+<span class="source-line-no">079</span><span id="line-79">        if (StringUtils.isEmpty(key)) {</span>
+<span class="source-line-no">080</span><span id="line-80">            return prefix;</span>
+<span class="source-line-no">081</span><span id="line-81">        }</span>
+<span class="source-line-no">082</span><span id="line-82">        return delimiter == null ? prefix + key : prefix + delimiter + key;</span>
+<span class="source-line-no">083</span><span id="line-83">    }</span>
+<span class="source-line-no">084</span><span id="line-84"></span>
+<span class="source-line-no">085</span><span id="line-85">    /**</span>
+<span class="source-line-no">086</span><span id="line-86">     * Gets the key in the subset configuration associated to the specified key in the parent configuration.</span>
+<span class="source-line-no">087</span><span id="line-87">     *</span>
+<span class="source-line-no">088</span><span id="line-88">     * @param key The key in the parent configuration.</span>
+<span class="source-line-no">089</span><span id="line-89">     * @return the key in the context of this subset configuration</span>
+<span class="source-line-no">090</span><span id="line-90">     */</span>
+<span class="source-line-no">091</span><span id="line-91">    protected String getChildKey(final String key) {</span>
+<span class="source-line-no">092</span><span id="line-92">        if (!key.startsWith(prefix)) {</span>
+<span class="source-line-no">093</span><span id="line-93">            throw new IllegalArgumentException("The parent key '" + key + "' is not in the subset.");</span>
+<span class="source-line-no">094</span><span id="line-94">        }</span>
+<span class="source-line-no">095</span><span id="line-95">        String modifiedKey = null;</span>
+<span class="source-line-no">096</span><span id="line-96">        if (key.length() == prefix.length()) {</span>
+<span class="source-line-no">097</span><span id="line-97">            modifiedKey = "";</span>
+<span class="source-line-no">098</span><span id="line-98">        } else {</span>
+<span class="source-line-no">099</span><span id="line-99">            final int i = prefix.length() + (delimiter != null ? delimiter.length() : 0);</span>
+<span class="source-line-no">100</span><span id="line-100">            modifiedKey = key.substring(i);</span>
+<span class="source-line-no">101</span><span id="line-101">        }</span>
+<span class="source-line-no">102</span><span id="line-102"></span>
+<span class="source-line-no">103</span><span id="line-103">        return modifiedKey;</span>
+<span class="source-line-no">104</span><span id="line-104">    }</span>
 <span class="source-line-no">105</span><span id="line-105"></span>
-<span class="source-line-no">106</span><span id="line-106">        return modifiedKey;</span>
-<span class="source-line-no">107</span><span id="line-107">    }</span>
-<span class="source-line-no">108</span><span id="line-108"></span>
-<span class="source-line-no">109</span><span id="line-109">    /**</span>
-<span class="source-line-no">110</span><span id="line-110">     * Gets the parent configuration for this subset.</span>
-<span class="source-line-no">111</span><span id="line-111">     *</span>
-<span class="source-line-no">112</span><span id="line-112">     * @return the parent configuration</span>
-<span class="source-line-no">113</span><span id="line-113">     */</span>
-<span class="source-line-no">114</span><span id="line-114">    public Configuration getParent() {</span>
-<span class="source-line-no">115</span><span id="line-115">        return parent;</span>
-<span class="source-line-no">116</span><span id="line-116">    }</span>
-<span class="source-line-no">117</span><span id="line-117"></span>
-<span class="source-line-no">118</span><span id="line-118">    /**</span>
-<span class="source-line-no">119</span><span id="line-119">     * Gets the prefix used to select the properties in the parent configuration.</span>
-<span class="source-line-no">120</span><span id="line-120">     *</span>
-<span class="source-line-no">121</span><span id="line-121">     * @return the prefix used by this subset</span>
-<span class="source-line-no">122</span><span id="line-122">     */</span>
-<span class="source-line-no">123</span><span id="line-123">    public String getPrefix() {</span>
-<span class="source-line-no">124</span><span id="line-124">        return prefix;</span>
-<span class="source-line-no">125</span><span id="line-125">    }</span>
-<span class="source-line-no">126</span><span id="line-126"></span>
-<span class="source-line-no">127</span><span id="line-127">    /**</span>
-<span class="source-line-no">128</span><span id="line-128">     * Sets the prefix used to select the properties in the parent configuration.</span>
-<span class="source-line-no">129</span><span id="line-129">     *</span>
-<span class="source-line-no">130</span><span id="line-130">     * @param prefix the prefix</span>
-<span class="source-line-no">131</span><span id="line-131">     */</span>
-<span class="source-line-no">132</span><span id="line-132">    public void setPrefix(final String prefix) {</span>
-<span class="source-line-no">133</span><span id="line-133">        this.prefix = prefix;</span>
-<span class="source-line-no">134</span><span id="line-134">    }</span>
-<span class="source-line-no">135</span><span id="line-135"></span>
-<span class="source-line-no">136</span><span id="line-136">    @Override</span>
-<span class="source-line-no">137</span><span id="line-137">    public Configuration subset(final String prefix) {</span>
-<span class="source-line-no">138</span><span id="line-138">        return parent.subset(getParentKey(prefix));</span>
-<span class="source-line-no">139</span><span id="line-139">    }</span>
-<span class="source-line-no">140</span><span id="line-140"></span>
-<span class="source-line-no">141</span><span id="line-141">    @Override</span>
-<span class="source-line-no">142</span><span id="line-142">    protected boolean isEmptyInternal() {</span>
-<span class="source-line-no">143</span><span id="line-143">        return !getKeysInternal().hasNext();</span>
-<span class="source-line-no">144</span><span id="line-144">    }</span>
-<span class="source-line-no">145</span><span id="line-145"></span>
-<span class="source-line-no">146</span><span id="line-146">    @Override</span>
-<span class="source-line-no">147</span><span id="line-147">    protected boolean containsKeyInternal(final String key) {</span>
-<span class="source-line-no">148</span><span id="line-148">        return parent.containsKey(getParentKey(key));</span>
-<span class="source-line-no">149</span><span id="line-149">    }</span>
-<span class="source-line-no">150</span><span id="line-150"></span>
-<span class="source-line-no">151</span><span id="line-151">    @Override</span>
-<span class="source-line-no">152</span><span id="line-152">    public void addPropertyDirect(final String key, final Object value) {</span>
-<span class="source-line-no">153</span><span id="line-153">        parent.addProperty(getParentKey(key), value);</span>
-<span class="source-line-no">154</span><span id="line-154">    }</span>
-<span class="source-line-no">155</span><span id="line-155"></span>
-<span class="source-line-no">156</span><span id="line-156">    @Override</span>
-<span class="source-line-no">157</span><span id="line-157">    protected void clearPropertyDirect(final String key) {</span>
-<span class="source-line-no">158</span><span id="line-158">        parent.clearProperty(getParentKey(key));</span>
-<span class="source-line-no">159</span><span id="line-159">    }</span>
-<span class="source-line-no">160</span><span id="line-160"></span>
-<span class="source-line-no">161</span><span id="line-161">    @Override</span>
-<span class="source-line-no">162</span><span id="line-162">    protected Object getPropertyInternal(final String key) {</span>
-<span class="source-line-no">163</span><span id="line-163">        return parent.getProperty(getParentKey(key));</span>
-<span class="source-line-no">164</span><span id="line-164">    }</span>
-<span class="source-line-no">165</span><span id="line-165"></span>
-<span class="source-line-no">166</span><span id="line-166">    @Override</span>
-<span class="source-line-no">167</span><span id="line-167">    protected Iterator&lt;String&gt; getKeysInternal(final String prefix) {</span>
-<span class="source-line-no">168</span><span id="line-168">        return new SubsetIterator(parent.getKeys(getParentKey(prefix)));</span>
-<span class="source-line-no">169</span><span id="line-169">    }</span>
-<span class="source-line-no">170</span><span id="line-170"></span>
-<span class="source-line-no">171</span><span id="line-171">    @Override</span>
-<span class="source-line-no">172</span><span id="line-172">    protected Iterator&lt;String&gt; getKeysInternal() {</span>
-<span class="source-line-no">173</span><span id="line-173">        return new SubsetIterator(parent.getKeys(prefix, delimiter));</span>
-<span class="source-line-no">174</span><span id="line-174">    }</span>
-<span class="source-line-no">175</span><span id="line-175"></span>
-<span class="source-line-no">176</span><span id="line-176">    /**</span>
-<span class="source-line-no">177</span><span id="line-177">     * {@inheritDoc}</span>
-<span class="source-line-no">178</span><span id="line-178">     *</span>
-<span class="source-line-no">179</span><span id="line-179">     * Change the behavior of the parent configuration if it supports this feature.</span>
-<span class="source-line-no">180</span><span id="line-180">     */</span>
-<span class="source-line-no">181</span><span id="line-181">    @Override</span>
-<span class="source-line-no">182</span><span id="line-182">    public void setThrowExceptionOnMissing(final boolean throwExceptionOnMissing) {</span>
-<span class="source-line-no">183</span><span id="line-183">        if (parent instanceof AbstractConfiguration) {</span>
-<span class="source-line-no">184</span><span id="line-184">            ((AbstractConfiguration) parent).setThrowExceptionOnMissing(throwExceptionOnMissing);</span>
-<span class="source-line-no">185</span><span id="line-185">        } else {</span>
-<span class="source-line-no">186</span><span id="line-186">            super.setThrowExceptionOnMissing(throwExceptionOnMissing);</span>
-<span class="source-line-no">187</span><span id="line-187">        }</span>
-<span class="source-line-no">188</span><span id="line-188">    }</span>
-<span class="source-line-no">189</span><span id="line-189"></span>
-<span class="source-line-no">190</span><span id="line-190">    /**</span>
-<span class="source-line-no">191</span><span id="line-191">     * {@inheritDoc}</span>
-<span class="source-line-no">192</span><span id="line-192">     *</span>
-<span class="source-line-no">193</span><span id="line-193">     * The subset inherits this feature from its parent if it supports this feature.</span>
-<span class="source-line-no">194</span><span id="line-194">     */</span>
-<span class="source-line-no">195</span><span id="line-195">    @Override</span>
-<span class="source-line-no">196</span><span id="line-196">    public boolean isThrowExceptionOnMissing() {</span>
-<span class="source-line-no">197</span><span id="line-197">        if (parent instanceof AbstractConfiguration) {</span>
-<span class="source-line-no">198</span><span id="line-198">            return ((AbstractConfiguration) parent).isThrowExceptionOnMissing();</span>
-<span class="source-line-no">199</span><span id="line-199">        }</span>
-<span class="source-line-no">200</span><span id="line-200">        return super.isThrowExceptionOnMissing();</span>
-<span class="source-line-no">201</span><span id="line-201">    }</span>
-<span class="source-line-no">202</span><span id="line-202"></span>
-<span class="source-line-no">203</span><span id="line-203">    /**</span>
-<span class="source-line-no">204</span><span id="line-204">     * {@inheritDoc} If the parent configuration extends {@link AbstractConfiguration}, the list delimiter handler is</span>
-<span class="source-line-no">205</span><span id="line-205">     * obtained from there.</span>
-<span class="source-line-no">206</span><span id="line-206">     */</span>
-<span class="source-line-no">207</span><span id="line-207">    @Override</span>
-<span class="source-line-no">208</span><span id="line-208">    public ListDelimiterHandler getListDelimiterHandler() {</span>
-<span class="source-line-no">209</span><span id="line-209">        return parent instanceof AbstractConfiguration ? ((AbstractConfiguration) parent).getListDelimiterHandler() : super.getListDelimiterHandler();</span>
-<span class="source-line-no">210</span><span id="line-210">    }</span>
-<span class="source-line-no">211</span><span id="line-211"></span>
-<span class="source-line-no">212</span><span id="line-212">    /**</span>
-<span class="source-line-no">213</span><span id="line-213">     * {@inheritDoc} If the parent configuration extends {@link AbstractConfiguration}, the list delimiter handler is passed</span>
-<span class="source-line-no">214</span><span id="line-214">     * to the parent.</span>
-<span class="source-line-no">215</span><span id="line-215">     */</span>
-<span class="source-line-no">216</span><span id="line-216">    @Override</span>
-<span class="source-line-no">217</span><span id="line-217">    public void setListDelimiterHandler(final ListDelimiterHandler listDelimiterHandler) {</span>
-<span class="source-line-no">218</span><span id="line-218">        if (parent instanceof AbstractConfiguration) {</span>
-<span class="source-line-no">219</span><span id="line-219">            ((AbstractConfiguration) parent).setListDelimiterHandler(listDelimiterHandler);</span>
-<span class="source-line-no">220</span><span id="line-220">        } else {</span>
-<span class="source-line-no">221</span><span id="line-221">            super.setListDelimiterHandler(listDelimiterHandler);</span>
-<span class="source-line-no">222</span><span id="line-222">        }</span>
-<span class="source-line-no">223</span><span id="line-223">    }</span>
-<span class="source-line-no">224</span><span id="line-224"></span>
-<span class="source-line-no">225</span><span id="line-225">    /**</span>
-<span class="source-line-no">226</span><span id="line-226">     * Initializes the {@code ConfigurationInterpolator} for this sub configuration. This is a standard</span>
-<span class="source-line-no">227</span><span id="line-227">     * {@code ConfigurationInterpolator} which also references the {@code ConfigurationInterpolator} of the parent</span>
-<span class="source-line-no">228</span><span id="line-228">     * configuration.</span>
-<span class="source-line-no">229</span><span id="line-229">     */</span>
-<span class="source-line-no">230</span><span id="line-230">    private void initInterpolator() {</span>
-<span class="source-line-no">231</span><span id="line-231">        getInterpolator().setParentInterpolator(getParent().getInterpolator());</span>
-<span class="source-line-no">232</span><span id="line-232">    }</span>
-<span class="source-line-no">233</span><span id="line-233"></span>
-<span class="source-line-no">234</span><span id="line-234">    /**</span>
-<span class="source-line-no">235</span><span id="line-235">     * A specialized iterator to be returned by the {@code getKeys()} methods. This implementation wraps an iterator from</span>
-<span class="source-line-no">236</span><span id="line-236">     * the parent configuration. The keys returned by this iterator are correspondingly transformed.</span>
-<span class="source-line-no">237</span><span id="line-237">     */</span>
-<span class="source-line-no">238</span><span id="line-238">    private final class SubsetIterator implements Iterator&lt;String&gt; {</span>
-<span class="source-line-no">239</span><span id="line-239">        /** Stores the wrapped iterator. */</span>
-<span class="source-line-no">240</span><span id="line-240">        private final Iterator&lt;String&gt; parentIterator;</span>
-<span class="source-line-no">241</span><span id="line-241"></span>
-<span class="source-line-no">242</span><span id="line-242">        /**</span>
-<span class="source-line-no">243</span><span id="line-243">         * Creates a new instance of {@code SubsetIterator} and initializes it with the parent iterator.</span>
-<span class="source-line-no">244</span><span id="line-244">         *</span>
-<span class="source-line-no">245</span><span id="line-245">         * @param it the iterator of the parent configuration</span>
-<span class="source-line-no">246</span><span id="line-246">         */</span>
-<span class="source-line-no">247</span><span id="line-247">        public SubsetIterator(final Iterator&lt;String&gt; it) {</span>
-<span class="source-line-no">248</span><span id="line-248">            parentIterator = it;</span>
-<span class="source-line-no">249</span><span id="line-249">        }</span>
-<span class="source-line-no">250</span><span id="line-250"></span>
-<span class="source-line-no">251</span><span id="line-251">        /**</span>
-<span class="source-line-no">252</span><span id="line-252">         * Checks whether there are more elements. Delegates to the parent iterator.</span>
-<span class="source-line-no">253</span><span id="line-253">         *</span>
-<span class="source-line-no">254</span><span id="line-254">         * @return a flag whether there are more elements</span>
-<span class="source-line-no">255</span><span id="line-255">         */</span>
-<span class="source-line-no">256</span><span id="line-256">        @Override</span>
-<span class="source-line-no">257</span><span id="line-257">        public boolean hasNext() {</span>
-<span class="source-line-no">258</span><span id="line-258">            return parentIterator.hasNext();</span>
-<span class="source-line-no">259</span><span id="line-259">        }</span>
-<span class="source-line-no">260</span><span id="line-260"></span>
-<span class="source-line-no">261</span><span id="line-261">        /**</span>
-<span class="source-line-no">262</span><span id="line-262">         * Returns the next element in the iteration. This is the next key from the parent configuration, transformed to</span>
-<span class="source-line-no">263</span><span id="line-263">         * correspond to the point of view of this subset configuration.</span>
-<span class="source-line-no">264</span><span id="line-264">         *</span>
-<span class="source-line-no">265</span><span id="line-265">         * @return the next element</span>
-<span class="source-line-no">266</span><span id="line-266">         */</span>
-<span class="source-line-no">267</span><span id="line-267">        @Override</span>
-<span class="source-line-no">268</span><span id="line-268">        public String next() {</span>
-<span class="source-line-no">269</span><span id="line-269">            return getChildKey(parentIterator.next());</span>
-<span class="source-line-no">270</span><span id="line-270">        }</span>
-<span class="source-line-no">271</span><span id="line-271"></span>
-<span class="source-line-no">272</span><span id="line-272">        /**</span>
-<span class="source-line-no">273</span><span id="line-273">         * Removes the current element from the iteration. Delegates to the parent iterator.</span>
-<span class="source-line-no">274</span><span id="line-274">         */</span>
-<span class="source-line-no">275</span><span id="line-275">        @Override</span>
-<span class="source-line-no">276</span><span id="line-276">        public void remove() {</span>
-<span class="source-line-no">277</span><span id="line-277">            parentIterator.remove();</span>
-<span class="source-line-no">278</span><span id="line-278">        }</span>
-<span class="source-line-no">279</span><span id="line-279">    }</span>
-<span class="source-line-no">280</span><span id="line-280">}</span>
+<span class="source-line-no">106</span><span id="line-106">    /**</span>
+<span class="source-line-no">107</span><span id="line-107">     * Gets the parent configuration for this subset.</span>
+<span class="source-line-no">108</span><span id="line-108">     *</span>
+<span class="source-line-no">109</span><span id="line-109">     * @return the parent configuration</span>
+<span class="source-line-no">110</span><span id="line-110">     */</span>
+<span class="source-line-no">111</span><span id="line-111">    public Configuration getParent() {</span>
+<span class="source-line-no">112</span><span id="line-112">        return parent;</span>
+<span class="source-line-no">113</span><span id="line-113">    }</span>
+<span class="source-line-no">114</span><span id="line-114"></span>
+<span class="source-line-no">115</span><span id="line-115">    /**</span>
+<span class="source-line-no">116</span><span id="line-116">     * Gets the prefix used to select the properties in the parent configuration.</span>
+<span class="source-line-no">117</span><span id="line-117">     *</span>
+<span class="source-line-no">118</span><span id="line-118">     * @return the prefix used by this subset</span>
+<span class="source-line-no">119</span><span id="line-119">     */</span>
+<span class="source-line-no">120</span><span id="line-120">    public String getPrefix() {</span>
+<span class="source-line-no">121</span><span id="line-121">        return prefix;</span>
+<span class="source-line-no">122</span><span id="line-122">    }</span>
+<span class="source-line-no">123</span><span id="line-123"></span>
+<span class="source-line-no">124</span><span id="line-124">    /**</span>
+<span class="source-line-no">125</span><span id="line-125">     * Sets the prefix used to select the properties in the parent configuration.</span>
+<span class="source-line-no">126</span><span id="line-126">     *</span>
+<span class="source-line-no">127</span><span id="line-127">     * @param prefix the prefix</span>
+<span class="source-line-no">128</span><span id="line-128">     */</span>
+<span class="source-line-no">129</span><span id="line-129">    public void setPrefix(final String prefix) {</span>
+<span class="source-line-no">130</span><span id="line-130">        this.prefix = prefix;</span>
+<span class="source-line-no">131</span><span id="line-131">    }</span>
+<span class="source-line-no">132</span><span id="line-132"></span>
+<span class="source-line-no">133</span><span id="line-133">    @Override</span>
+<span class="source-line-no">134</span><span id="line-134">    public Configuration subset(final String prefix) {</span>
+<span class="source-line-no">135</span><span id="line-135">        return parent.subset(getParentKey(prefix));</span>
+<span class="source-line-no">136</span><span id="line-136">    }</span>
+<span class="source-line-no">137</span><span id="line-137"></span>
+<span class="source-line-no">138</span><span id="line-138">    @Override</span>
+<span class="source-line-no">139</span><span id="line-139">    protected boolean isEmptyInternal() {</span>
+<span class="source-line-no">140</span><span id="line-140">        return !getKeysInternal().hasNext();</span>
+<span class="source-line-no">141</span><span id="line-141">    }</span>
+<span class="source-line-no">142</span><span id="line-142"></span>
+<span class="source-line-no">143</span><span id="line-143">    @Override</span>
+<span class="source-line-no">144</span><span id="line-144">    protected boolean containsKeyInternal(final String key) {</span>
+<span class="source-line-no">145</span><span id="line-145">        return parent.containsKey(getParentKey(key));</span>
+<span class="source-line-no">146</span><span id="line-146">    }</span>
+<span class="source-line-no">147</span><span id="line-147"></span>
+<span class="source-line-no">148</span><span id="line-148">    @Override</span>
+<span class="source-line-no">149</span><span id="line-149">    public void addPropertyDirect(final String key, final Object value) {</span>
+<span class="source-line-no">150</span><span id="line-150">        parent.addProperty(getParentKey(key), value);</span>
+<span class="source-line-no">151</span><span id="line-151">    }</span>
+<span class="source-line-no">152</span><span id="line-152"></span>
+<span class="source-line-no">153</span><span id="line-153">    @Override</span>
+<span class="source-line-no">154</span><span id="line-154">    protected void clearPropertyDirect(final String key) {</span>
+<span class="source-line-no">155</span><span id="line-155">        parent.clearProperty(getParentKey(key));</span>
+<span class="source-line-no">156</span><span id="line-156">    }</span>
+<span class="source-line-no">157</span><span id="line-157"></span>
+<span class="source-line-no">158</span><span id="line-158">    @Override</span>
+<span class="source-line-no">159</span><span id="line-159">    protected Object getPropertyInternal(final String key) {</span>
+<span class="source-line-no">160</span><span id="line-160">        return parent.getProperty(getParentKey(key));</span>
+<span class="source-line-no">161</span><span id="line-161">    }</span>
+<span class="source-line-no">162</span><span id="line-162"></span>
+<span class="source-line-no">163</span><span id="line-163">    @Override</span>
+<span class="source-line-no">164</span><span id="line-164">    protected Iterator&lt;String&gt; getKeysInternal(final String prefix) {</span>
+<span class="source-line-no">165</span><span id="line-165">        return new SubsetIterator(parent.getKeys(getParentKey(prefix)));</span>
+<span class="source-line-no">166</span><span id="line-166">    }</span>
+<span class="source-line-no">167</span><span id="line-167"></span>
+<span class="source-line-no">168</span><span id="line-168">    @Override</span>
+<span class="source-line-no">169</span><span id="line-169">    protected Iterator&lt;String&gt; getKeysInternal() {</span>
+<span class="source-line-no">170</span><span id="line-170">        return new SubsetIterator(parent.getKeys(prefix, delimiter));</span>
+<span class="source-line-no">171</span><span id="line-171">    }</span>
+<span class="source-line-no">172</span><span id="line-172"></span>
+<span class="source-line-no">173</span><span id="line-173">    /**</span>
+<span class="source-line-no">174</span><span id="line-174">     * {@inheritDoc}</span>
+<span class="source-line-no">175</span><span id="line-175">     *</span>
+<span class="source-line-no">176</span><span id="line-176">     * Change the behavior of the parent configuration if it supports this feature.</span>
+<span class="source-line-no">177</span><span id="line-177">     */</span>
+<span class="source-line-no">178</span><span id="line-178">    @Override</span>
+<span class="source-line-no">179</span><span id="line-179">    public void setThrowExceptionOnMissing(final boolean throwExceptionOnMissing) {</span>
+<span class="source-line-no">180</span><span id="line-180">        if (parent instanceof AbstractConfiguration) {</span>
+<span class="source-line-no">181</span><span id="line-181">            ((AbstractConfiguration) parent).setThrowExceptionOnMissing(throwExceptionOnMissing);</span>
+<span class="source-line-no">182</span><span id="line-182">        } else {</span>
+<span class="source-line-no">183</span><span id="line-183">            super.setThrowExceptionOnMissing(throwExceptionOnMissing);</span>
+<span class="source-line-no">184</span><span id="line-184">        }</span>
+<span class="source-line-no">185</span><span id="line-185">    }</span>
+<span class="source-line-no">186</span><span id="line-186"></span>
+<span class="source-line-no">187</span><span id="line-187">    /**</span>
+<span class="source-line-no">188</span><span id="line-188">     * {@inheritDoc}</span>
+<span class="source-line-no">189</span><span id="line-189">     *</span>
+<span class="source-line-no">190</span><span id="line-190">     * The subset inherits this feature from its parent if it supports this feature.</span>
+<span class="source-line-no">191</span><span id="line-191">     */</span>
+<span class="source-line-no">192</span><span id="line-192">    @Override</span>
+<span class="source-line-no">193</span><span id="line-193">    public boolean isThrowExceptionOnMissing() {</span>
+<span class="source-line-no">194</span><span id="line-194">        if (parent instanceof AbstractConfiguration) {</span>
+<span class="source-line-no">195</span><span id="line-195">            return ((AbstractConfiguration) parent).isThrowExceptionOnMissing();</span>
+<span class="source-line-no">196</span><span id="line-196">        }</span>
+<span class="source-line-no">197</span><span id="line-197">        return super.isThrowExceptionOnMissing();</span>
+<span class="source-line-no">198</span><span id="line-198">    }</span>
+<span class="source-line-no">199</span><span id="line-199"></span>
+<span class="source-line-no">200</span><span id="line-200">    /**</span>
+<span class="source-line-no">201</span><span id="line-201">     * {@inheritDoc} If the parent configuration extends {@link AbstractConfiguration}, the list delimiter handler is</span>
+<span class="source-line-no">202</span><span id="line-202">     * obtained from there.</span>
+<span class="source-line-no">203</span><span id="line-203">     */</span>
+<span class="source-line-no">204</span><span id="line-204">    @Override</span>
+<span class="source-line-no">205</span><span id="line-205">    public ListDelimiterHandler getListDelimiterHandler() {</span>
+<span class="source-line-no">206</span><span id="line-206">        return parent instanceof AbstractConfiguration ? ((AbstractConfiguration) parent).getListDelimiterHandler() : super.getListDelimiterHandler();</span>
+<span class="source-line-no">207</span><span id="line-207">    }</span>
+<span class="source-line-no">208</span><span id="line-208"></span>
+<span class="source-line-no">209</span><span id="line-209">    /**</span>
+<span class="source-line-no">210</span><span id="line-210">     * {@inheritDoc} If the parent configuration extends {@link AbstractConfiguration}, the list delimiter handler is passed</span>
+<span class="source-line-no">211</span><span id="line-211">     * to the parent.</span>
+<span class="source-line-no">212</span><span id="line-212">     */</span>
+<span class="source-line-no">213</span><span id="line-213">    @Override</span>
+<span class="source-line-no">214</span><span id="line-214">    public void setListDelimiterHandler(final ListDelimiterHandler listDelimiterHandler) {</span>
+<span class="source-line-no">215</span><span id="line-215">        if (parent instanceof AbstractConfiguration) {</span>
+<span class="source-line-no">216</span><span id="line-216">            ((AbstractConfiguration) parent).setListDelimiterHandler(listDelimiterHandler);</span>
+<span class="source-line-no">217</span><span id="line-217">        } else {</span>
+<span class="source-line-no">218</span><span id="line-218">            super.setListDelimiterHandler(listDelimiterHandler);</span>
+<span class="source-line-no">219</span><span id="line-219">        }</span>
+<span class="source-line-no">220</span><span id="line-220">    }</span>
+<span class="source-line-no">221</span><span id="line-221"></span>
+<span class="source-line-no">222</span><span id="line-222">    /**</span>
+<span class="source-line-no">223</span><span id="line-223">     * Initializes the {@code ConfigurationInterpolator} for this sub configuration. This is a standard</span>
+<span class="source-line-no">224</span><span id="line-224">     * {@code ConfigurationInterpolator} which also references the {@code ConfigurationInterpolator} of the parent</span>
+<span class="source-line-no">225</span><span id="line-225">     * configuration.</span>
+<span class="source-line-no">226</span><span id="line-226">     */</span>
+<span class="source-line-no">227</span><span id="line-227">    private void initInterpolator() {</span>
+<span class="source-line-no">228</span><span id="line-228">        getInterpolator().setParentInterpolator(getParent().getInterpolator());</span>
+<span class="source-line-no">229</span><span id="line-229">    }</span>
+<span class="source-line-no">230</span><span id="line-230"></span>
+<span class="source-line-no">231</span><span id="line-231">    /**</span>
+<span class="source-line-no">232</span><span id="line-232">     * A specialized iterator to be returned by the {@code getKeys()} methods. This implementation wraps an iterator from</span>
+<span class="source-line-no">233</span><span id="line-233">     * the parent configuration. The keys returned by this iterator are correspondingly transformed.</span>
+<span class="source-line-no">234</span><span id="line-234">     */</span>
+<span class="source-line-no">235</span><span id="line-235">    private final class SubsetIterator implements Iterator&lt;String&gt; {</span>
+<span class="source-line-no">236</span><span id="line-236">        /** Stores the wrapped iterator. */</span>
+<span class="source-line-no">237</span><span id="line-237">        private final Iterator&lt;String&gt; parentIterator;</span>
+<span class="source-line-no">238</span><span id="line-238"></span>
+<span class="source-line-no">239</span><span id="line-239">        /**</span>
+<span class="source-line-no">240</span><span id="line-240">         * Creates a new instance of {@code SubsetIterator} and initializes it with the parent iterator.</span>
+<span class="source-line-no">241</span><span id="line-241">         *</span>
+<span class="source-line-no">242</span><span id="line-242">         * @param it the iterator of the parent configuration</span>
+<span class="source-line-no">243</span><span id="line-243">         */</span>
+<span class="source-line-no">244</span><span id="line-244">        public SubsetIterator(final Iterator&lt;String&gt; it) {</span>
+<span class="source-line-no">245</span><span id="line-245">            parentIterator = it;</span>
+<span class="source-line-no">246</span><span id="line-246">        }</span>
+<span class="source-line-no">247</span><span id="line-247"></span>
+<span class="source-line-no">248</span><span id="line-248">        /**</span>
+<span class="source-line-no">249</span><span id="line-249">         * Checks whether there are more elements. Delegates to the parent iterator.</span>
+<span class="source-line-no">250</span><span id="line-250">         *</span>
+<span class="source-line-no">251</span><span id="line-251">         * @return a flag whether there are more elements</span>
+<span class="source-line-no">252</span><span id="line-252">         */</span>
+<span class="source-line-no">253</span><span id="line-253">        @Override</span>
+<span class="source-line-no">254</span><span id="line-254">        public boolean hasNext() {</span>
+<span class="source-line-no">255</span><span id="line-255">            return parentIterator.hasNext();</span>
+<span class="source-line-no">256</span><span id="line-256">        }</span>
+<span class="source-line-no">257</span><span id="line-257"></span>
+<span class="source-line-no">258</span><span id="line-258">        /**</span>
+<span class="source-line-no">259</span><span id="line-259">         * Returns the next element in the iteration. This is the next key from the parent configuration, transformed to</span>
+<span class="source-line-no">260</span><span id="line-260">         * correspond to the point of view of this subset configuration.</span>
+<span class="source-line-no">261</span><span id="line-261">         *</span>
+<span class="source-line-no">262</span><span id="line-262">         * @return the next element</span>
+<span class="source-line-no">263</span><span id="line-263">         */</span>
+<span class="source-line-no">264</span><span id="line-264">        @Override</span>
+<span class="source-line-no">265</span><span id="line-265">        public String next() {</span>
+<span class="source-line-no">266</span><span id="line-266">            return getChildKey(parentIterator.next());</span>
+<span class="source-line-no">267</span><span id="line-267">        }</span>
+<span class="source-line-no">268</span><span id="line-268"></span>
+<span class="source-line-no">269</span><span id="line-269">        /**</span>
+<span class="source-line-no">270</span><span id="line-270">         * Removes the current element from the iteration. Delegates to the parent iterator.</span>
+<span class="source-line-no">271</span><span id="line-271">         */</span>
+<span class="source-line-no">272</span><span id="line-272">        @Override</span>
+<span class="source-line-no">273</span><span id="line-273">        public void remove() {</span>
+<span class="source-line-no">274</span><span id="line-274">            parentIterator.remove();</span>
+<span class="source-line-no">275</span><span id="line-275">        }</span>
+<span class="source-line-no">276</span><span id="line-276">    }</span>
+<span class="source-line-no">277</span><span id="line-277">}</span>