<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>ConfigurationRegistryReader xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../../apidocs/org/apache/archiva/configuration/io/registry/ConfigurationRegistryReader.html">View Javadoc</a></div><pre>

<a class="jxr_linenumber" name="1" href="#1">1</a>   
<a class="jxr_linenumber" name="2" href="#2">2</a>   <strong class="jxr_keyword">package</strong> org.apache.archiva.configuration.io.registry;
<a class="jxr_linenumber" name="3" href="#3">3</a>   
<a class="jxr_linenumber" name="4" href="#4">4</a>   <strong class="jxr_keyword">import</strong> org.apache.archiva.redback.components.registry.Registry;
<a class="jxr_linenumber" name="5" href="#5">5</a>   
<a class="jxr_linenumber" name="6" href="#6">6</a>   <em class="jxr_comment">// Util imports</em>
<a class="jxr_linenumber" name="7" href="#7">7</a>   <strong class="jxr_keyword">import</strong> java.util.*;
<a class="jxr_linenumber" name="8" href="#8">8</a>   
<a class="jxr_linenumber" name="9" href="#9">9</a>   <em class="jxr_comment">// Model class imports</em>
<a class="jxr_linenumber" name="10" href="#10">10</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.Configuration;
<a class="jxr_linenumber" name="11" href="#11">11</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.AbstractRepositoryConfiguration;
<a class="jxr_linenumber" name="12" href="#12">12</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.RemoteRepositoryConfiguration;
<a class="jxr_linenumber" name="13" href="#13">13</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ManagedRepositoryConfiguration;
<a class="jxr_linenumber" name="14" href="#14">14</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.V1RepositoryConfiguration;
<a class="jxr_linenumber" name="15" href="#15">15</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.LegacyArtifactPath;
<a class="jxr_linenumber" name="16" href="#16">16</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.RepositoryGroupConfiguration;
<a class="jxr_linenumber" name="17" href="#17">17</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.AbstractRepositoryConnectorConfiguration;
<a class="jxr_linenumber" name="18" href="#18">18</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ProxyConnectorRuleConfiguration;
<a class="jxr_linenumber" name="19" href="#19">19</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ProxyConnectorConfiguration;
<a class="jxr_linenumber" name="20" href="#20">20</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.SyncConnectorConfiguration;
<a class="jxr_linenumber" name="21" href="#21">21</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.NetworkProxyConfiguration;
<a class="jxr_linenumber" name="22" href="#22">22</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.RepositoryScanningConfiguration;
<a class="jxr_linenumber" name="23" href="#23">23</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.FileType;
<a class="jxr_linenumber" name="24" href="#24">24</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.OrganisationInformation;
<a class="jxr_linenumber" name="25" href="#25">25</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.WebappConfiguration;
<a class="jxr_linenumber" name="26" href="#26">26</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.UserInterfaceOptions;
<a class="jxr_linenumber" name="27" href="#27">27</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.NetworkConfiguration;
<a class="jxr_linenumber" name="28" href="#28">28</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.ArchivaRuntimeConfiguration;
<a class="jxr_linenumber" name="29" href="#29">29</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.RedbackRuntimeConfiguration;
<a class="jxr_linenumber" name="30" href="#30">30</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.LdapConfiguration;
<a class="jxr_linenumber" name="31" href="#31">31</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.CacheConfiguration;
<a class="jxr_linenumber" name="32" href="#32">32</a>  <strong class="jxr_keyword">import</strong> org.apache.archiva.configuration.LdapGroupMapping;
<a class="jxr_linenumber" name="33" href="#33">33</a>  
<a class="jxr_linenumber" name="34" href="#34">34</a>  
<a class="jxr_linenumber" name="35" href="#35">35</a>  
<a class="jxr_linenumber" name="36" href="#36">36</a>  
<a class="jxr_linenumber" name="37" href="#37">37</a>  <em class="jxr_javadoccomment">/**</em>
<a class="jxr_linenumber" name="38" href="#38">38</a>  <em class="jxr_javadoccomment"> * Generate Redback Registry input mechanism for model 'Configuration'.</em>
<a class="jxr_linenumber" name="39" href="#39">39</a>  <em class="jxr_javadoccomment"> */</em>
<a class="jxr_linenumber" name="40" href="#40">40</a>  <strong class="jxr_keyword">public</strong> <strong class="jxr_keyword">class</strong> <a href="../../../../../../org/apache/archiva/configuration/io/registry/ConfigurationRegistryReader.html">ConfigurationRegistryReader</a>
<a class="jxr_linenumber" name="41" href="#41">41</a>  {
<a class="jxr_linenumber" name="42" href="#42">42</a>      <strong class="jxr_keyword">public</strong> <a href="../../../../../../org/apache/archiva/configuration/Configuration.html">Configuration</a> read( Registry registry )
<a class="jxr_linenumber" name="43" href="#43">43</a>      {
<a class="jxr_linenumber" name="44" href="#44">44</a>          <strong class="jxr_keyword">return</strong> readConfiguration( <span class="jxr_string">""</span>, registry );
<a class="jxr_linenumber" name="45" href="#45">45</a>      }
<a class="jxr_linenumber" name="46" href="#46">46</a>  
<a class="jxr_linenumber" name="47" href="#47">47</a>      <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/Configuration.html">Configuration</a> readConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="48" href="#48">48</a>      {
<a class="jxr_linenumber" name="49" href="#49">49</a>          <a href="../../../../../../org/apache/archiva/configuration/Configuration.html">Configuration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/Configuration.html">Configuration</a>();
<a class="jxr_linenumber" name="50" href="#50">50</a>  
<a class="jxr_linenumber" name="51" href="#51">51</a>      <em class="jxr_comment">//String version = registry.getString( prefix + "version", value.getVersion() );</em>
<a class="jxr_linenumber" name="52" href="#52">52</a>  
<a class="jxr_linenumber" name="53" href="#53">53</a>      List&lt;String&gt; versionList = registry.getList( prefix + <span class="jxr_string">"version"</span> );
<a class="jxr_linenumber" name="54" href="#54">54</a>      String version = value.getVersion();
<a class="jxr_linenumber" name="55" href="#55">55</a>      <strong class="jxr_keyword">if</strong> (versionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !versionList.isEmpty() )
<a class="jxr_linenumber" name="56" href="#56">56</a>      {
<a class="jxr_linenumber" name="57" href="#57">57</a>          StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="58" href="#58">58</a>          <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = versionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="59" href="#59">59</a>          {
<a class="jxr_linenumber" name="60" href="#60">60</a>              sb.append( versionList.get( i ) );
<a class="jxr_linenumber" name="61" href="#61">61</a>              <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="62" href="#62">62</a>              {
<a class="jxr_linenumber" name="63" href="#63">63</a>                  sb.append( ',' );
<a class="jxr_linenumber" name="64" href="#64">64</a>              }
<a class="jxr_linenumber" name="65" href="#65">65</a>          }
<a class="jxr_linenumber" name="66" href="#66">66</a>          version = sb.toString();
<a class="jxr_linenumber" name="67" href="#67">67</a>      }
<a class="jxr_linenumber" name="68" href="#68">68</a>  
<a class="jxr_linenumber" name="69" href="#69">69</a>          value.setVersion( version );
<a class="jxr_linenumber" name="70" href="#70">70</a>          java.util.List repositories = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;V1RepositoryConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="71" href="#71">71</a>          List repositoriesSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"repositories.repository"</span> );
<a class="jxr_linenumber" name="72" href="#72">72</a>          <strong class="jxr_keyword">for</strong> ( Iterator i = repositoriesSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="73" href="#73">73</a>          {
<a class="jxr_linenumber" name="74" href="#74">74</a>              <a href="../../../../../../org/apache/archiva/configuration/V1RepositoryConfiguration.html">V1RepositoryConfiguration</a> v = readV1RepositoryConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="75" href="#75">75</a>              repositories.add( v );
<a class="jxr_linenumber" name="76" href="#76">76</a>          }
<a class="jxr_linenumber" name="77" href="#77">77</a>          value.setRepositories( repositories );
<a class="jxr_linenumber" name="78" href="#78">78</a>          java.util.List repositoryGroups = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;RepositoryGroupConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="79" href="#79">79</a>          List repositoryGroupsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"repositoryGroups.repositoryGroup"</span> );
<a class="jxr_linenumber" name="80" href="#80">80</a>          <strong class="jxr_keyword">for</strong> ( Iterator i = repositoryGroupsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="81" href="#81">81</a>          {
<a class="jxr_linenumber" name="82" href="#82">82</a>              <a href="../../../../../../org/apache/archiva/configuration/RepositoryGroupConfiguration.html">RepositoryGroupConfiguration</a> v = readRepositoryGroupConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="83" href="#83">83</a>              repositoryGroups.add( v );
<a class="jxr_linenumber" name="84" href="#84">84</a>          }
<a class="jxr_linenumber" name="85" href="#85">85</a>          value.setRepositoryGroups( repositoryGroups );
<a class="jxr_linenumber" name="86" href="#86">86</a>          java.util.List managedRepositories = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;ManagedRepositoryConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="87" href="#87">87</a>          List managedRepositoriesSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"managedRepositories.managedRepository"</span> );
<a class="jxr_linenumber" name="88" href="#88">88</a>          <strong class="jxr_keyword">for</strong> ( Iterator i = managedRepositoriesSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="89" href="#89">89</a>          {
<a class="jxr_linenumber" name="90" href="#90">90</a>              <a href="../../../../../../org/apache/archiva/configuration/ManagedRepositoryConfiguration.html">ManagedRepositoryConfiguration</a> v = readManagedRepositoryConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="91" href="#91">91</a>              managedRepositories.add( v );
<a class="jxr_linenumber" name="92" href="#92">92</a>          }
<a class="jxr_linenumber" name="93" href="#93">93</a>          value.setManagedRepositories( managedRepositories );
<a class="jxr_linenumber" name="94" href="#94">94</a>          java.util.List remoteRepositories = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;RemoteRepositoryConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="95" href="#95">95</a>          List remoteRepositoriesSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"remoteRepositories.remoteRepository"</span> );
<a class="jxr_linenumber" name="96" href="#96">96</a>          <strong class="jxr_keyword">for</strong> ( Iterator i = remoteRepositoriesSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="97" href="#97">97</a>          {
<a class="jxr_linenumber" name="98" href="#98">98</a>              <a href="../../../../../../org/apache/archiva/configuration/RemoteRepositoryConfiguration.html">RemoteRepositoryConfiguration</a> v = readRemoteRepositoryConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="99" href="#99">99</a>              remoteRepositories.add( v );
<a class="jxr_linenumber" name="100" href="#100">100</a>         }
<a class="jxr_linenumber" name="101" href="#101">101</a>         value.setRemoteRepositories( remoteRepositories );
<a class="jxr_linenumber" name="102" href="#102">102</a>         java.util.List proxyConnectors = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;ProxyConnectorConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="103" href="#103">103</a>         List proxyConnectorsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"proxyConnectors.proxyConnector"</span> );
<a class="jxr_linenumber" name="104" href="#104">104</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = proxyConnectorsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="105" href="#105">105</a>         {
<a class="jxr_linenumber" name="106" href="#106">106</a>             <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorConfiguration.html">ProxyConnectorConfiguration</a> v = readProxyConnectorConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="107" href="#107">107</a>             proxyConnectors.add( v );
<a class="jxr_linenumber" name="108" href="#108">108</a>         }
<a class="jxr_linenumber" name="109" href="#109">109</a>         value.setProxyConnectors( proxyConnectors );
<a class="jxr_linenumber" name="110" href="#110">110</a>         java.util.List networkProxies = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;NetworkProxyConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="111" href="#111">111</a>         List networkProxiesSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"networkProxies.networkProxy"</span> );
<a class="jxr_linenumber" name="112" href="#112">112</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = networkProxiesSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="113" href="#113">113</a>         {
<a class="jxr_linenumber" name="114" href="#114">114</a>             <a href="../../../../../../org/apache/archiva/configuration/NetworkProxyConfiguration.html">NetworkProxyConfiguration</a> v = readNetworkProxyConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="115" href="#115">115</a>             networkProxies.add( v );
<a class="jxr_linenumber" name="116" href="#116">116</a>         }
<a class="jxr_linenumber" name="117" href="#117">117</a>         value.setNetworkProxies( networkProxies );
<a class="jxr_linenumber" name="118" href="#118">118</a>         java.util.List legacyArtifactPaths = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;LegacyArtifactPath&gt;*/</em>();</em>
<a class="jxr_linenumber" name="119" href="#119">119</a>         List legacyArtifactPathsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"legacyArtifactPaths.legacyArtifactPath"</span> );
<a class="jxr_linenumber" name="120" href="#120">120</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = legacyArtifactPathsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="121" href="#121">121</a>         {
<a class="jxr_linenumber" name="122" href="#122">122</a>             <a href="../../../../../../org/apache/archiva/configuration/LegacyArtifactPath.html">LegacyArtifactPath</a> v = readLegacyArtifactPath( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="123" href="#123">123</a>             legacyArtifactPaths.add( v );
<a class="jxr_linenumber" name="124" href="#124">124</a>         }
<a class="jxr_linenumber" name="125" href="#125">125</a>         value.setLegacyArtifactPaths( legacyArtifactPaths );
<a class="jxr_linenumber" name="126" href="#126">126</a>         <a href="../../../../../../org/apache/archiva/configuration/RepositoryScanningConfiguration.html">RepositoryScanningConfiguration</a> repositoryScanning = readRepositoryScanningConfiguration( prefix + <span class="jxr_string">"repositoryScanning."</span>, registry );
<a class="jxr_linenumber" name="127" href="#127">127</a>         value.setRepositoryScanning( repositoryScanning );
<a class="jxr_linenumber" name="128" href="#128">128</a>         <a href="../../../../../../org/apache/archiva/configuration/WebappConfiguration.html">WebappConfiguration</a> webapp = readWebappConfiguration( prefix + <span class="jxr_string">"webapp."</span>, registry );
<a class="jxr_linenumber" name="129" href="#129">129</a>         value.setWebapp( webapp );
<a class="jxr_linenumber" name="130" href="#130">130</a>         <a href="../../../../../../org/apache/archiva/configuration/OrganisationInformation.html">OrganisationInformation</a> organisationInfo = readOrganisationInformation( prefix + <span class="jxr_string">"organisationInfo."</span>, registry );
<a class="jxr_linenumber" name="131" href="#131">131</a>         value.setOrganisationInfo( organisationInfo );
<a class="jxr_linenumber" name="132" href="#132">132</a>         <a href="../../../../../../org/apache/archiva/configuration/NetworkConfiguration.html">NetworkConfiguration</a> networkConfiguration = readNetworkConfiguration( prefix + <span class="jxr_string">"networkConfiguration."</span>, registry );
<a class="jxr_linenumber" name="133" href="#133">133</a>         value.setNetworkConfiguration( networkConfiguration );
<a class="jxr_linenumber" name="134" href="#134">134</a>         <a href="../../../../../../org/apache/archiva/configuration/RedbackRuntimeConfiguration.html">RedbackRuntimeConfiguration</a> redbackRuntimeConfiguration = readRedbackRuntimeConfiguration( prefix + <span class="jxr_string">"redbackRuntimeConfiguration."</span>, registry );
<a class="jxr_linenumber" name="135" href="#135">135</a>         value.setRedbackRuntimeConfiguration( redbackRuntimeConfiguration );
<a class="jxr_linenumber" name="136" href="#136">136</a>         <a href="../../../../../../org/apache/archiva/configuration/ArchivaRuntimeConfiguration.html">ArchivaRuntimeConfiguration</a> archivaRuntimeConfiguration = readArchivaRuntimeConfiguration( prefix + <span class="jxr_string">"archivaRuntimeConfiguration."</span>, registry );
<a class="jxr_linenumber" name="137" href="#137">137</a>         value.setArchivaRuntimeConfiguration( archivaRuntimeConfiguration );
<a class="jxr_linenumber" name="138" href="#138">138</a>         java.util.List proxyConnectorRuleConfigurations = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;ProxyConnectorRuleConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="139" href="#139">139</a>         List proxyConnectorRuleConfigurationsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"proxyConnectorRuleConfigurations.proxyConnectorRuleConfiguration"</span> );
<a class="jxr_linenumber" name="140" href="#140">140</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = proxyConnectorRuleConfigurationsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="141" href="#141">141</a>         {
<a class="jxr_linenumber" name="142" href="#142">142</a>             <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorRuleConfiguration.html">ProxyConnectorRuleConfiguration</a> v = readProxyConnectorRuleConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="143" href="#143">143</a>             proxyConnectorRuleConfigurations.add( v );
<a class="jxr_linenumber" name="144" href="#144">144</a>         }
<a class="jxr_linenumber" name="145" href="#145">145</a>         value.setProxyConnectorRuleConfigurations( proxyConnectorRuleConfigurations );
<a class="jxr_linenumber" name="146" href="#146">146</a> 
<a class="jxr_linenumber" name="147" href="#147">147</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="148" href="#148">148</a>     }
<a class="jxr_linenumber" name="149" href="#149">149</a>     
<a class="jxr_linenumber" name="150" href="#150">150</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConfiguration.html">AbstractRepositoryConfiguration</a> readAbstractRepositoryConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="151" href="#151">151</a>     {
<a class="jxr_linenumber" name="152" href="#152">152</a>         <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConfiguration.html">AbstractRepositoryConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConfiguration.html">AbstractRepositoryConfiguration</a>();
<a class="jxr_linenumber" name="153" href="#153">153</a> 
<a class="jxr_linenumber" name="154" href="#154">154</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="155" href="#155">155</a> 
<a class="jxr_linenumber" name="156" href="#156">156</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="157" href="#157">157</a>     String id = value.getId();
<a class="jxr_linenumber" name="158" href="#158">158</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="159" href="#159">159</a>     {
<a class="jxr_linenumber" name="160" href="#160">160</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="161" href="#161">161</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="162" href="#162">162</a>         {
<a class="jxr_linenumber" name="163" href="#163">163</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="164" href="#164">164</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="165" href="#165">165</a>             {
<a class="jxr_linenumber" name="166" href="#166">166</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="167" href="#167">167</a>             }
<a class="jxr_linenumber" name="168" href="#168">168</a>         }
<a class="jxr_linenumber" name="169" href="#169">169</a>         id = sb.toString();
<a class="jxr_linenumber" name="170" href="#170">170</a>     }
<a class="jxr_linenumber" name="171" href="#171">171</a> 
<a class="jxr_linenumber" name="172" href="#172">172</a>         value.setId( id );
<a class="jxr_linenumber" name="173" href="#173">173</a>     <em class="jxr_comment">//String name = registry.getString( prefix + "name", value.getName() );</em>
<a class="jxr_linenumber" name="174" href="#174">174</a> 
<a class="jxr_linenumber" name="175" href="#175">175</a>     List&lt;String&gt; nameList = registry.getList( prefix + <span class="jxr_string">"name"</span> );
<a class="jxr_linenumber" name="176" href="#176">176</a>     String name = value.getName();
<a class="jxr_linenumber" name="177" href="#177">177</a>     <strong class="jxr_keyword">if</strong> (nameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !nameList.isEmpty() )
<a class="jxr_linenumber" name="178" href="#178">178</a>     {
<a class="jxr_linenumber" name="179" href="#179">179</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="180" href="#180">180</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = nameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="181" href="#181">181</a>         {
<a class="jxr_linenumber" name="182" href="#182">182</a>             sb.append( nameList.get( i ) );
<a class="jxr_linenumber" name="183" href="#183">183</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="184" href="#184">184</a>             {
<a class="jxr_linenumber" name="185" href="#185">185</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="186" href="#186">186</a>             }
<a class="jxr_linenumber" name="187" href="#187">187</a>         }
<a class="jxr_linenumber" name="188" href="#188">188</a>         name = sb.toString();
<a class="jxr_linenumber" name="189" href="#189">189</a>     }
<a class="jxr_linenumber" name="190" href="#190">190</a> 
<a class="jxr_linenumber" name="191" href="#191">191</a>         value.setName( name );
<a class="jxr_linenumber" name="192" href="#192">192</a>     <em class="jxr_comment">//String layout = registry.getString( prefix + "layout", value.getLayout() );</em>
<a class="jxr_linenumber" name="193" href="#193">193</a> 
<a class="jxr_linenumber" name="194" href="#194">194</a>     List&lt;String&gt; layoutList = registry.getList( prefix + <span class="jxr_string">"layout"</span> );
<a class="jxr_linenumber" name="195" href="#195">195</a>     String layout = value.getLayout();
<a class="jxr_linenumber" name="196" href="#196">196</a>     <strong class="jxr_keyword">if</strong> (layoutList != <strong class="jxr_keyword">null</strong> &amp;&amp; !layoutList.isEmpty() )
<a class="jxr_linenumber" name="197" href="#197">197</a>     {
<a class="jxr_linenumber" name="198" href="#198">198</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="199" href="#199">199</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = layoutList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="200" href="#200">200</a>         {
<a class="jxr_linenumber" name="201" href="#201">201</a>             sb.append( layoutList.get( i ) );
<a class="jxr_linenumber" name="202" href="#202">202</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="203" href="#203">203</a>             {
<a class="jxr_linenumber" name="204" href="#204">204</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="205" href="#205">205</a>             }
<a class="jxr_linenumber" name="206" href="#206">206</a>         }
<a class="jxr_linenumber" name="207" href="#207">207</a>         layout = sb.toString();
<a class="jxr_linenumber" name="208" href="#208">208</a>     }
<a class="jxr_linenumber" name="209" href="#209">209</a> 
<a class="jxr_linenumber" name="210" href="#210">210</a>         value.setLayout( layout );
<a class="jxr_linenumber" name="211" href="#211">211</a>     <em class="jxr_comment">//String indexDir = registry.getString( prefix + "indexDir", value.getIndexDir() );</em>
<a class="jxr_linenumber" name="212" href="#212">212</a> 
<a class="jxr_linenumber" name="213" href="#213">213</a>     List&lt;String&gt; indexDirList = registry.getList( prefix + <span class="jxr_string">"indexDir"</span> );
<a class="jxr_linenumber" name="214" href="#214">214</a>     String indexDir = value.getIndexDir();
<a class="jxr_linenumber" name="215" href="#215">215</a>     <strong class="jxr_keyword">if</strong> (indexDirList != <strong class="jxr_keyword">null</strong> &amp;&amp; !indexDirList.isEmpty() )
<a class="jxr_linenumber" name="216" href="#216">216</a>     {
<a class="jxr_linenumber" name="217" href="#217">217</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="218" href="#218">218</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = indexDirList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="219" href="#219">219</a>         {
<a class="jxr_linenumber" name="220" href="#220">220</a>             sb.append( indexDirList.get( i ) );
<a class="jxr_linenumber" name="221" href="#221">221</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="222" href="#222">222</a>             {
<a class="jxr_linenumber" name="223" href="#223">223</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="224" href="#224">224</a>             }
<a class="jxr_linenumber" name="225" href="#225">225</a>         }
<a class="jxr_linenumber" name="226" href="#226">226</a>         indexDir = sb.toString();
<a class="jxr_linenumber" name="227" href="#227">227</a>     }
<a class="jxr_linenumber" name="228" href="#228">228</a> 
<a class="jxr_linenumber" name="229" href="#229">229</a>         value.setIndexDir( indexDir );
<a class="jxr_linenumber" name="230" href="#230">230</a>     <em class="jxr_comment">//String description = registry.getString( prefix + "description", value.getDescription() );</em>
<a class="jxr_linenumber" name="231" href="#231">231</a> 
<a class="jxr_linenumber" name="232" href="#232">232</a>     List&lt;String&gt; descriptionList = registry.getList( prefix + <span class="jxr_string">"description"</span> );
<a class="jxr_linenumber" name="233" href="#233">233</a>     String description = value.getDescription();
<a class="jxr_linenumber" name="234" href="#234">234</a>     <strong class="jxr_keyword">if</strong> (descriptionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !descriptionList.isEmpty() )
<a class="jxr_linenumber" name="235" href="#235">235</a>     {
<a class="jxr_linenumber" name="236" href="#236">236</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="237" href="#237">237</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = descriptionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="238" href="#238">238</a>         {
<a class="jxr_linenumber" name="239" href="#239">239</a>             sb.append( descriptionList.get( i ) );
<a class="jxr_linenumber" name="240" href="#240">240</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="241" href="#241">241</a>             {
<a class="jxr_linenumber" name="242" href="#242">242</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="243" href="#243">243</a>             }
<a class="jxr_linenumber" name="244" href="#244">244</a>         }
<a class="jxr_linenumber" name="245" href="#245">245</a>         description = sb.toString();
<a class="jxr_linenumber" name="246" href="#246">246</a>     }
<a class="jxr_linenumber" name="247" href="#247">247</a> 
<a class="jxr_linenumber" name="248" href="#248">248</a>         value.setDescription( description );
<a class="jxr_linenumber" name="249" href="#249">249</a> 
<a class="jxr_linenumber" name="250" href="#250">250</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="251" href="#251">251</a>     }
<a class="jxr_linenumber" name="252" href="#252">252</a>     
<a class="jxr_linenumber" name="253" href="#253">253</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/RemoteRepositoryConfiguration.html">RemoteRepositoryConfiguration</a> readRemoteRepositoryConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="254" href="#254">254</a>     {
<a class="jxr_linenumber" name="255" href="#255">255</a>         <a href="../../../../../../org/apache/archiva/configuration/RemoteRepositoryConfiguration.html">RemoteRepositoryConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/RemoteRepositoryConfiguration.html">RemoteRepositoryConfiguration</a>();
<a class="jxr_linenumber" name="256" href="#256">256</a> 
<a class="jxr_linenumber" name="257" href="#257">257</a>     <em class="jxr_comment">//String url = registry.getString( prefix + "url", value.getUrl() );</em>
<a class="jxr_linenumber" name="258" href="#258">258</a> 
<a class="jxr_linenumber" name="259" href="#259">259</a>     List&lt;String&gt; urlList = registry.getList( prefix + <span class="jxr_string">"url"</span> );
<a class="jxr_linenumber" name="260" href="#260">260</a>     String url = value.getUrl();
<a class="jxr_linenumber" name="261" href="#261">261</a>     <strong class="jxr_keyword">if</strong> (urlList != <strong class="jxr_keyword">null</strong> &amp;&amp; !urlList.isEmpty() )
<a class="jxr_linenumber" name="262" href="#262">262</a>     {
<a class="jxr_linenumber" name="263" href="#263">263</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="264" href="#264">264</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = urlList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="265" href="#265">265</a>         {
<a class="jxr_linenumber" name="266" href="#266">266</a>             sb.append( urlList.get( i ) );
<a class="jxr_linenumber" name="267" href="#267">267</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="268" href="#268">268</a>             {
<a class="jxr_linenumber" name="269" href="#269">269</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="270" href="#270">270</a>             }
<a class="jxr_linenumber" name="271" href="#271">271</a>         }
<a class="jxr_linenumber" name="272" href="#272">272</a>         url = sb.toString();
<a class="jxr_linenumber" name="273" href="#273">273</a>     }
<a class="jxr_linenumber" name="274" href="#274">274</a> 
<a class="jxr_linenumber" name="275" href="#275">275</a>         value.setUrl( url );
<a class="jxr_linenumber" name="276" href="#276">276</a>     <em class="jxr_comment">//String username = registry.getString( prefix + "username", value.getUsername() );</em>
<a class="jxr_linenumber" name="277" href="#277">277</a> 
<a class="jxr_linenumber" name="278" href="#278">278</a>     List&lt;String&gt; usernameList = registry.getList( prefix + <span class="jxr_string">"username"</span> );
<a class="jxr_linenumber" name="279" href="#279">279</a>     String username = value.getUsername();
<a class="jxr_linenumber" name="280" href="#280">280</a>     <strong class="jxr_keyword">if</strong> (usernameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !usernameList.isEmpty() )
<a class="jxr_linenumber" name="281" href="#281">281</a>     {
<a class="jxr_linenumber" name="282" href="#282">282</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="283" href="#283">283</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = usernameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="284" href="#284">284</a>         {
<a class="jxr_linenumber" name="285" href="#285">285</a>             sb.append( usernameList.get( i ) );
<a class="jxr_linenumber" name="286" href="#286">286</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="287" href="#287">287</a>             {
<a class="jxr_linenumber" name="288" href="#288">288</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="289" href="#289">289</a>             }
<a class="jxr_linenumber" name="290" href="#290">290</a>         }
<a class="jxr_linenumber" name="291" href="#291">291</a>         username = sb.toString();
<a class="jxr_linenumber" name="292" href="#292">292</a>     }
<a class="jxr_linenumber" name="293" href="#293">293</a> 
<a class="jxr_linenumber" name="294" href="#294">294</a>         value.setUsername( username );
<a class="jxr_linenumber" name="295" href="#295">295</a>     <em class="jxr_comment">//String password = registry.getString( prefix + "password", value.getPassword() );</em>
<a class="jxr_linenumber" name="296" href="#296">296</a> 
<a class="jxr_linenumber" name="297" href="#297">297</a>     List&lt;String&gt; passwordList = registry.getList( prefix + <span class="jxr_string">"password"</span> );
<a class="jxr_linenumber" name="298" href="#298">298</a>     String password = value.getPassword();
<a class="jxr_linenumber" name="299" href="#299">299</a>     <strong class="jxr_keyword">if</strong> (passwordList != <strong class="jxr_keyword">null</strong> &amp;&amp; !passwordList.isEmpty() )
<a class="jxr_linenumber" name="300" href="#300">300</a>     {
<a class="jxr_linenumber" name="301" href="#301">301</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="302" href="#302">302</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = passwordList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="303" href="#303">303</a>         {
<a class="jxr_linenumber" name="304" href="#304">304</a>             sb.append( passwordList.get( i ) );
<a class="jxr_linenumber" name="305" href="#305">305</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="306" href="#306">306</a>             {
<a class="jxr_linenumber" name="307" href="#307">307</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="308" href="#308">308</a>             }
<a class="jxr_linenumber" name="309" href="#309">309</a>         }
<a class="jxr_linenumber" name="310" href="#310">310</a>         password = sb.toString();
<a class="jxr_linenumber" name="311" href="#311">311</a>     }
<a class="jxr_linenumber" name="312" href="#312">312</a> 
<a class="jxr_linenumber" name="313" href="#313">313</a>         value.setPassword( password );
<a class="jxr_linenumber" name="314" href="#314">314</a>     <strong class="jxr_keyword">int</strong> timeout = registry.getInt( prefix + <span class="jxr_string">"timeout"</span>, value.getTimeout() );
<a class="jxr_linenumber" name="315" href="#315">315</a>         value.setTimeout( timeout );
<a class="jxr_linenumber" name="316" href="#316">316</a>     <em class="jxr_comment">//String refreshCronExpression = registry.getString( prefix + "refreshCronExpression", value.getRefreshCronExpression() );</em>
<a class="jxr_linenumber" name="317" href="#317">317</a> 
<a class="jxr_linenumber" name="318" href="#318">318</a>     List&lt;String&gt; refreshCronExpressionList = registry.getList( prefix + <span class="jxr_string">"refreshCronExpression"</span> );
<a class="jxr_linenumber" name="319" href="#319">319</a>     String refreshCronExpression = value.getRefreshCronExpression();
<a class="jxr_linenumber" name="320" href="#320">320</a>     <strong class="jxr_keyword">if</strong> (refreshCronExpressionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !refreshCronExpressionList.isEmpty() )
<a class="jxr_linenumber" name="321" href="#321">321</a>     {
<a class="jxr_linenumber" name="322" href="#322">322</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="323" href="#323">323</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = refreshCronExpressionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="324" href="#324">324</a>         {
<a class="jxr_linenumber" name="325" href="#325">325</a>             sb.append( refreshCronExpressionList.get( i ) );
<a class="jxr_linenumber" name="326" href="#326">326</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="327" href="#327">327</a>             {
<a class="jxr_linenumber" name="328" href="#328">328</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="329" href="#329">329</a>             }
<a class="jxr_linenumber" name="330" href="#330">330</a>         }
<a class="jxr_linenumber" name="331" href="#331">331</a>         refreshCronExpression = sb.toString();
<a class="jxr_linenumber" name="332" href="#332">332</a>     }
<a class="jxr_linenumber" name="333" href="#333">333</a> 
<a class="jxr_linenumber" name="334" href="#334">334</a>         value.setRefreshCronExpression( refreshCronExpression );
<a class="jxr_linenumber" name="335" href="#335">335</a>         <strong class="jxr_keyword">boolean</strong> downloadRemoteIndex = registry.getBoolean( prefix + <span class="jxr_string">"downloadRemoteIndex"</span>, value.isDownloadRemoteIndex() );
<a class="jxr_linenumber" name="336" href="#336">336</a>         value.setDownloadRemoteIndex( downloadRemoteIndex );
<a class="jxr_linenumber" name="337" href="#337">337</a>     <em class="jxr_comment">//String remoteIndexUrl = registry.getString( prefix + "remoteIndexUrl", value.getRemoteIndexUrl() );</em>
<a class="jxr_linenumber" name="338" href="#338">338</a> 
<a class="jxr_linenumber" name="339" href="#339">339</a>     List&lt;String&gt; remoteIndexUrlList = registry.getList( prefix + <span class="jxr_string">"remoteIndexUrl"</span> );
<a class="jxr_linenumber" name="340" href="#340">340</a>     String remoteIndexUrl = value.getRemoteIndexUrl();
<a class="jxr_linenumber" name="341" href="#341">341</a>     <strong class="jxr_keyword">if</strong> (remoteIndexUrlList != <strong class="jxr_keyword">null</strong> &amp;&amp; !remoteIndexUrlList.isEmpty() )
<a class="jxr_linenumber" name="342" href="#342">342</a>     {
<a class="jxr_linenumber" name="343" href="#343">343</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="344" href="#344">344</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = remoteIndexUrlList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="345" href="#345">345</a>         {
<a class="jxr_linenumber" name="346" href="#346">346</a>             sb.append( remoteIndexUrlList.get( i ) );
<a class="jxr_linenumber" name="347" href="#347">347</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="348" href="#348">348</a>             {
<a class="jxr_linenumber" name="349" href="#349">349</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="350" href="#350">350</a>             }
<a class="jxr_linenumber" name="351" href="#351">351</a>         }
<a class="jxr_linenumber" name="352" href="#352">352</a>         remoteIndexUrl = sb.toString();
<a class="jxr_linenumber" name="353" href="#353">353</a>     }
<a class="jxr_linenumber" name="354" href="#354">354</a> 
<a class="jxr_linenumber" name="355" href="#355">355</a>         value.setRemoteIndexUrl( remoteIndexUrl );
<a class="jxr_linenumber" name="356" href="#356">356</a>     <em class="jxr_comment">//String remoteDownloadNetworkProxyId = registry.getString( prefix + "remoteDownloadNetworkProxyId", value.getRemoteDownloadNetworkProxyId() );</em>
<a class="jxr_linenumber" name="357" href="#357">357</a> 
<a class="jxr_linenumber" name="358" href="#358">358</a>     List&lt;String&gt; remoteDownloadNetworkProxyIdList = registry.getList( prefix + <span class="jxr_string">"remoteDownloadNetworkProxyId"</span> );
<a class="jxr_linenumber" name="359" href="#359">359</a>     String remoteDownloadNetworkProxyId = value.getRemoteDownloadNetworkProxyId();
<a class="jxr_linenumber" name="360" href="#360">360</a>     <strong class="jxr_keyword">if</strong> (remoteDownloadNetworkProxyIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !remoteDownloadNetworkProxyIdList.isEmpty() )
<a class="jxr_linenumber" name="361" href="#361">361</a>     {
<a class="jxr_linenumber" name="362" href="#362">362</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="363" href="#363">363</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = remoteDownloadNetworkProxyIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="364" href="#364">364</a>         {
<a class="jxr_linenumber" name="365" href="#365">365</a>             sb.append( remoteDownloadNetworkProxyIdList.get( i ) );
<a class="jxr_linenumber" name="366" href="#366">366</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="367" href="#367">367</a>             {
<a class="jxr_linenumber" name="368" href="#368">368</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="369" href="#369">369</a>             }
<a class="jxr_linenumber" name="370" href="#370">370</a>         }
<a class="jxr_linenumber" name="371" href="#371">371</a>         remoteDownloadNetworkProxyId = sb.toString();
<a class="jxr_linenumber" name="372" href="#372">372</a>     }
<a class="jxr_linenumber" name="373" href="#373">373</a> 
<a class="jxr_linenumber" name="374" href="#374">374</a>         value.setRemoteDownloadNetworkProxyId( remoteDownloadNetworkProxyId );
<a class="jxr_linenumber" name="375" href="#375">375</a>     <strong class="jxr_keyword">int</strong> remoteDownloadTimeout = registry.getInt( prefix + <span class="jxr_string">"remoteDownloadTimeout"</span>, value.getRemoteDownloadTimeout() );
<a class="jxr_linenumber" name="376" href="#376">376</a>         value.setRemoteDownloadTimeout( remoteDownloadTimeout );
<a class="jxr_linenumber" name="377" href="#377">377</a>         <strong class="jxr_keyword">boolean</strong> downloadRemoteIndexOnStartup = registry.getBoolean( prefix + <span class="jxr_string">"downloadRemoteIndexOnStartup"</span>, value.isDownloadRemoteIndexOnStartup() );
<a class="jxr_linenumber" name="378" href="#378">378</a>         value.setDownloadRemoteIndexOnStartup( downloadRemoteIndexOnStartup );
<a class="jxr_linenumber" name="379" href="#379">379</a>         java.util.Map extraParameters = registry.getProperties( prefix + <span class="jxr_string">"extraParameters"</span> );
<a class="jxr_linenumber" name="380" href="#380">380</a>         value.setExtraParameters( extraParameters );
<a class="jxr_linenumber" name="381" href="#381">381</a>         java.util.Map extraHeaders = registry.getProperties( prefix + <span class="jxr_string">"extraHeaders"</span> );
<a class="jxr_linenumber" name="382" href="#382">382</a>         value.setExtraHeaders( extraHeaders );
<a class="jxr_linenumber" name="383" href="#383">383</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="384" href="#384">384</a> 
<a class="jxr_linenumber" name="385" href="#385">385</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="386" href="#386">386</a>     String id = value.getId();
<a class="jxr_linenumber" name="387" href="#387">387</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="388" href="#388">388</a>     {
<a class="jxr_linenumber" name="389" href="#389">389</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="390" href="#390">390</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="391" href="#391">391</a>         {
<a class="jxr_linenumber" name="392" href="#392">392</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="393" href="#393">393</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="394" href="#394">394</a>             {
<a class="jxr_linenumber" name="395" href="#395">395</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="396" href="#396">396</a>             }
<a class="jxr_linenumber" name="397" href="#397">397</a>         }
<a class="jxr_linenumber" name="398" href="#398">398</a>         id = sb.toString();
<a class="jxr_linenumber" name="399" href="#399">399</a>     }
<a class="jxr_linenumber" name="400" href="#400">400</a> 
<a class="jxr_linenumber" name="401" href="#401">401</a>         value.setId( id );
<a class="jxr_linenumber" name="402" href="#402">402</a>     <em class="jxr_comment">//String name = registry.getString( prefix + "name", value.getName() );</em>
<a class="jxr_linenumber" name="403" href="#403">403</a> 
<a class="jxr_linenumber" name="404" href="#404">404</a>     List&lt;String&gt; nameList = registry.getList( prefix + <span class="jxr_string">"name"</span> );
<a class="jxr_linenumber" name="405" href="#405">405</a>     String name = value.getName();
<a class="jxr_linenumber" name="406" href="#406">406</a>     <strong class="jxr_keyword">if</strong> (nameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !nameList.isEmpty() )
<a class="jxr_linenumber" name="407" href="#407">407</a>     {
<a class="jxr_linenumber" name="408" href="#408">408</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="409" href="#409">409</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = nameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="410" href="#410">410</a>         {
<a class="jxr_linenumber" name="411" href="#411">411</a>             sb.append( nameList.get( i ) );
<a class="jxr_linenumber" name="412" href="#412">412</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="413" href="#413">413</a>             {
<a class="jxr_linenumber" name="414" href="#414">414</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="415" href="#415">415</a>             }
<a class="jxr_linenumber" name="416" href="#416">416</a>         }
<a class="jxr_linenumber" name="417" href="#417">417</a>         name = sb.toString();
<a class="jxr_linenumber" name="418" href="#418">418</a>     }
<a class="jxr_linenumber" name="419" href="#419">419</a> 
<a class="jxr_linenumber" name="420" href="#420">420</a>         value.setName( name );
<a class="jxr_linenumber" name="421" href="#421">421</a>     <em class="jxr_comment">//String layout = registry.getString( prefix + "layout", value.getLayout() );</em>
<a class="jxr_linenumber" name="422" href="#422">422</a> 
<a class="jxr_linenumber" name="423" href="#423">423</a>     List&lt;String&gt; layoutList = registry.getList( prefix + <span class="jxr_string">"layout"</span> );
<a class="jxr_linenumber" name="424" href="#424">424</a>     String layout = value.getLayout();
<a class="jxr_linenumber" name="425" href="#425">425</a>     <strong class="jxr_keyword">if</strong> (layoutList != <strong class="jxr_keyword">null</strong> &amp;&amp; !layoutList.isEmpty() )
<a class="jxr_linenumber" name="426" href="#426">426</a>     {
<a class="jxr_linenumber" name="427" href="#427">427</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="428" href="#428">428</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = layoutList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="429" href="#429">429</a>         {
<a class="jxr_linenumber" name="430" href="#430">430</a>             sb.append( layoutList.get( i ) );
<a class="jxr_linenumber" name="431" href="#431">431</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="432" href="#432">432</a>             {
<a class="jxr_linenumber" name="433" href="#433">433</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="434" href="#434">434</a>             }
<a class="jxr_linenumber" name="435" href="#435">435</a>         }
<a class="jxr_linenumber" name="436" href="#436">436</a>         layout = sb.toString();
<a class="jxr_linenumber" name="437" href="#437">437</a>     }
<a class="jxr_linenumber" name="438" href="#438">438</a> 
<a class="jxr_linenumber" name="439" href="#439">439</a>         value.setLayout( layout );
<a class="jxr_linenumber" name="440" href="#440">440</a>     <em class="jxr_comment">//String indexDir = registry.getString( prefix + "indexDir", value.getIndexDir() );</em>
<a class="jxr_linenumber" name="441" href="#441">441</a> 
<a class="jxr_linenumber" name="442" href="#442">442</a>     List&lt;String&gt; indexDirList = registry.getList( prefix + <span class="jxr_string">"indexDir"</span> );
<a class="jxr_linenumber" name="443" href="#443">443</a>     String indexDir = value.getIndexDir();
<a class="jxr_linenumber" name="444" href="#444">444</a>     <strong class="jxr_keyword">if</strong> (indexDirList != <strong class="jxr_keyword">null</strong> &amp;&amp; !indexDirList.isEmpty() )
<a class="jxr_linenumber" name="445" href="#445">445</a>     {
<a class="jxr_linenumber" name="446" href="#446">446</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="447" href="#447">447</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = indexDirList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="448" href="#448">448</a>         {
<a class="jxr_linenumber" name="449" href="#449">449</a>             sb.append( indexDirList.get( i ) );
<a class="jxr_linenumber" name="450" href="#450">450</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="451" href="#451">451</a>             {
<a class="jxr_linenumber" name="452" href="#452">452</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="453" href="#453">453</a>             }
<a class="jxr_linenumber" name="454" href="#454">454</a>         }
<a class="jxr_linenumber" name="455" href="#455">455</a>         indexDir = sb.toString();
<a class="jxr_linenumber" name="456" href="#456">456</a>     }
<a class="jxr_linenumber" name="457" href="#457">457</a> 
<a class="jxr_linenumber" name="458" href="#458">458</a>         value.setIndexDir( indexDir );
<a class="jxr_linenumber" name="459" href="#459">459</a>     <em class="jxr_comment">//String description = registry.getString( prefix + "description", value.getDescription() );</em>
<a class="jxr_linenumber" name="460" href="#460">460</a> 
<a class="jxr_linenumber" name="461" href="#461">461</a>     List&lt;String&gt; descriptionList = registry.getList( prefix + <span class="jxr_string">"description"</span> );
<a class="jxr_linenumber" name="462" href="#462">462</a>     String description = value.getDescription();
<a class="jxr_linenumber" name="463" href="#463">463</a>     <strong class="jxr_keyword">if</strong> (descriptionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !descriptionList.isEmpty() )
<a class="jxr_linenumber" name="464" href="#464">464</a>     {
<a class="jxr_linenumber" name="465" href="#465">465</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="466" href="#466">466</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = descriptionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="467" href="#467">467</a>         {
<a class="jxr_linenumber" name="468" href="#468">468</a>             sb.append( descriptionList.get( i ) );
<a class="jxr_linenumber" name="469" href="#469">469</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="470" href="#470">470</a>             {
<a class="jxr_linenumber" name="471" href="#471">471</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="472" href="#472">472</a>             }
<a class="jxr_linenumber" name="473" href="#473">473</a>         }
<a class="jxr_linenumber" name="474" href="#474">474</a>         description = sb.toString();
<a class="jxr_linenumber" name="475" href="#475">475</a>     }
<a class="jxr_linenumber" name="476" href="#476">476</a> 
<a class="jxr_linenumber" name="477" href="#477">477</a>         value.setDescription( description );
<a class="jxr_linenumber" name="478" href="#478">478</a> 
<a class="jxr_linenumber" name="479" href="#479">479</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="480" href="#480">480</a>     }
<a class="jxr_linenumber" name="481" href="#481">481</a>     
<a class="jxr_linenumber" name="482" href="#482">482</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/ManagedRepositoryConfiguration.html">ManagedRepositoryConfiguration</a> readManagedRepositoryConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="483" href="#483">483</a>     {
<a class="jxr_linenumber" name="484" href="#484">484</a>         <a href="../../../../../../org/apache/archiva/configuration/ManagedRepositoryConfiguration.html">ManagedRepositoryConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/ManagedRepositoryConfiguration.html">ManagedRepositoryConfiguration</a>();
<a class="jxr_linenumber" name="485" href="#485">485</a> 
<a class="jxr_linenumber" name="486" href="#486">486</a>     <em class="jxr_comment">//String location = registry.getString( prefix + "location", value.getLocation() );</em>
<a class="jxr_linenumber" name="487" href="#487">487</a> 
<a class="jxr_linenumber" name="488" href="#488">488</a>     List&lt;String&gt; locationList = registry.getList( prefix + <span class="jxr_string">"location"</span> );
<a class="jxr_linenumber" name="489" href="#489">489</a>     String location = value.getLocation();
<a class="jxr_linenumber" name="490" href="#490">490</a>     <strong class="jxr_keyword">if</strong> (locationList != <strong class="jxr_keyword">null</strong> &amp;&amp; !locationList.isEmpty() )
<a class="jxr_linenumber" name="491" href="#491">491</a>     {
<a class="jxr_linenumber" name="492" href="#492">492</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="493" href="#493">493</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = locationList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="494" href="#494">494</a>         {
<a class="jxr_linenumber" name="495" href="#495">495</a>             sb.append( locationList.get( i ) );
<a class="jxr_linenumber" name="496" href="#496">496</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="497" href="#497">497</a>             {
<a class="jxr_linenumber" name="498" href="#498">498</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="499" href="#499">499</a>             }
<a class="jxr_linenumber" name="500" href="#500">500</a>         }
<a class="jxr_linenumber" name="501" href="#501">501</a>         location = sb.toString();
<a class="jxr_linenumber" name="502" href="#502">502</a>     }
<a class="jxr_linenumber" name="503" href="#503">503</a> 
<a class="jxr_linenumber" name="504" href="#504">504</a>         value.setLocation( location );
<a class="jxr_linenumber" name="505" href="#505">505</a>         <strong class="jxr_keyword">boolean</strong> releases = registry.getBoolean( prefix + <span class="jxr_string">"releases"</span>, value.isReleases() );
<a class="jxr_linenumber" name="506" href="#506">506</a>         value.setReleases( releases );
<a class="jxr_linenumber" name="507" href="#507">507</a>         <strong class="jxr_keyword">boolean</strong> blockRedeployments = registry.getBoolean( prefix + <span class="jxr_string">"blockRedeployments"</span>, value.isBlockRedeployments() );
<a class="jxr_linenumber" name="508" href="#508">508</a>         value.setBlockRedeployments( blockRedeployments );
<a class="jxr_linenumber" name="509" href="#509">509</a>         <strong class="jxr_keyword">boolean</strong> snapshots = registry.getBoolean( prefix + <span class="jxr_string">"snapshots"</span>, value.isSnapshots() );
<a class="jxr_linenumber" name="510" href="#510">510</a>         value.setSnapshots( snapshots );
<a class="jxr_linenumber" name="511" href="#511">511</a>         <strong class="jxr_keyword">boolean</strong> scanned = registry.getBoolean( prefix + <span class="jxr_string">"scanned"</span>, value.isScanned() );
<a class="jxr_linenumber" name="512" href="#512">512</a>         value.setScanned( scanned );
<a class="jxr_linenumber" name="513" href="#513">513</a>     <em class="jxr_comment">//String refreshCronExpression = registry.getString( prefix + "refreshCronExpression", value.getRefreshCronExpression() );</em>
<a class="jxr_linenumber" name="514" href="#514">514</a> 
<a class="jxr_linenumber" name="515" href="#515">515</a>     List&lt;String&gt; refreshCronExpressionList = registry.getList( prefix + <span class="jxr_string">"refreshCronExpression"</span> );
<a class="jxr_linenumber" name="516" href="#516">516</a>     String refreshCronExpression = value.getRefreshCronExpression();
<a class="jxr_linenumber" name="517" href="#517">517</a>     <strong class="jxr_keyword">if</strong> (refreshCronExpressionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !refreshCronExpressionList.isEmpty() )
<a class="jxr_linenumber" name="518" href="#518">518</a>     {
<a class="jxr_linenumber" name="519" href="#519">519</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="520" href="#520">520</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = refreshCronExpressionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="521" href="#521">521</a>         {
<a class="jxr_linenumber" name="522" href="#522">522</a>             sb.append( refreshCronExpressionList.get( i ) );
<a class="jxr_linenumber" name="523" href="#523">523</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="524" href="#524">524</a>             {
<a class="jxr_linenumber" name="525" href="#525">525</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="526" href="#526">526</a>             }
<a class="jxr_linenumber" name="527" href="#527">527</a>         }
<a class="jxr_linenumber" name="528" href="#528">528</a>         refreshCronExpression = sb.toString();
<a class="jxr_linenumber" name="529" href="#529">529</a>     }
<a class="jxr_linenumber" name="530" href="#530">530</a> 
<a class="jxr_linenumber" name="531" href="#531">531</a>         value.setRefreshCronExpression( refreshCronExpression );
<a class="jxr_linenumber" name="532" href="#532">532</a>     <strong class="jxr_keyword">int</strong> retentionCount = registry.getInt( prefix + <span class="jxr_string">"retentionCount"</span>, value.getRetentionCount() );
<a class="jxr_linenumber" name="533" href="#533">533</a>         value.setRetentionCount( retentionCount );
<a class="jxr_linenumber" name="534" href="#534">534</a>     <strong class="jxr_keyword">int</strong> daysOlder = registry.getInt( prefix + <span class="jxr_string">"daysOlder"</span>, value.getDaysOlder() );
<a class="jxr_linenumber" name="535" href="#535">535</a>         value.setDaysOlder( daysOlder );
<a class="jxr_linenumber" name="536" href="#536">536</a>         <strong class="jxr_keyword">boolean</strong> deleteReleasedSnapshots = registry.getBoolean( prefix + <span class="jxr_string">"deleteReleasedSnapshots"</span>, value.isDeleteReleasedSnapshots() );
<a class="jxr_linenumber" name="537" href="#537">537</a>         value.setDeleteReleasedSnapshots( deleteReleasedSnapshots );
<a class="jxr_linenumber" name="538" href="#538">538</a>         <strong class="jxr_keyword">boolean</strong> skipPackedIndexCreation = registry.getBoolean( prefix + <span class="jxr_string">"skipPackedIndexCreation"</span>, value.isSkipPackedIndexCreation() );
<a class="jxr_linenumber" name="539" href="#539">539</a>         value.setSkipPackedIndexCreation( skipPackedIndexCreation );
<a class="jxr_linenumber" name="540" href="#540">540</a>         <strong class="jxr_keyword">boolean</strong> stageRepoNeeded = registry.getBoolean( prefix + <span class="jxr_string">"stageRepoNeeded"</span>, value.isStageRepoNeeded() );
<a class="jxr_linenumber" name="541" href="#541">541</a>         value.setStageRepoNeeded( stageRepoNeeded );
<a class="jxr_linenumber" name="542" href="#542">542</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="543" href="#543">543</a> 
<a class="jxr_linenumber" name="544" href="#544">544</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="545" href="#545">545</a>     String id = value.getId();
<a class="jxr_linenumber" name="546" href="#546">546</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="547" href="#547">547</a>     {
<a class="jxr_linenumber" name="548" href="#548">548</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="549" href="#549">549</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="550" href="#550">550</a>         {
<a class="jxr_linenumber" name="551" href="#551">551</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="552" href="#552">552</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="553" href="#553">553</a>             {
<a class="jxr_linenumber" name="554" href="#554">554</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="555" href="#555">555</a>             }
<a class="jxr_linenumber" name="556" href="#556">556</a>         }
<a class="jxr_linenumber" name="557" href="#557">557</a>         id = sb.toString();
<a class="jxr_linenumber" name="558" href="#558">558</a>     }
<a class="jxr_linenumber" name="559" href="#559">559</a> 
<a class="jxr_linenumber" name="560" href="#560">560</a>         value.setId( id );
<a class="jxr_linenumber" name="561" href="#561">561</a>     <em class="jxr_comment">//String name = registry.getString( prefix + "name", value.getName() );</em>
<a class="jxr_linenumber" name="562" href="#562">562</a> 
<a class="jxr_linenumber" name="563" href="#563">563</a>     List&lt;String&gt; nameList = registry.getList( prefix + <span class="jxr_string">"name"</span> );
<a class="jxr_linenumber" name="564" href="#564">564</a>     String name = value.getName();
<a class="jxr_linenumber" name="565" href="#565">565</a>     <strong class="jxr_keyword">if</strong> (nameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !nameList.isEmpty() )
<a class="jxr_linenumber" name="566" href="#566">566</a>     {
<a class="jxr_linenumber" name="567" href="#567">567</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="568" href="#568">568</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = nameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="569" href="#569">569</a>         {
<a class="jxr_linenumber" name="570" href="#570">570</a>             sb.append( nameList.get( i ) );
<a class="jxr_linenumber" name="571" href="#571">571</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="572" href="#572">572</a>             {
<a class="jxr_linenumber" name="573" href="#573">573</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="574" href="#574">574</a>             }
<a class="jxr_linenumber" name="575" href="#575">575</a>         }
<a class="jxr_linenumber" name="576" href="#576">576</a>         name = sb.toString();
<a class="jxr_linenumber" name="577" href="#577">577</a>     }
<a class="jxr_linenumber" name="578" href="#578">578</a> 
<a class="jxr_linenumber" name="579" href="#579">579</a>         value.setName( name );
<a class="jxr_linenumber" name="580" href="#580">580</a>     <em class="jxr_comment">//String layout = registry.getString( prefix + "layout", value.getLayout() );</em>
<a class="jxr_linenumber" name="581" href="#581">581</a> 
<a class="jxr_linenumber" name="582" href="#582">582</a>     List&lt;String&gt; layoutList = registry.getList( prefix + <span class="jxr_string">"layout"</span> );
<a class="jxr_linenumber" name="583" href="#583">583</a>     String layout = value.getLayout();
<a class="jxr_linenumber" name="584" href="#584">584</a>     <strong class="jxr_keyword">if</strong> (layoutList != <strong class="jxr_keyword">null</strong> &amp;&amp; !layoutList.isEmpty() )
<a class="jxr_linenumber" name="585" href="#585">585</a>     {
<a class="jxr_linenumber" name="586" href="#586">586</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="587" href="#587">587</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = layoutList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="588" href="#588">588</a>         {
<a class="jxr_linenumber" name="589" href="#589">589</a>             sb.append( layoutList.get( i ) );
<a class="jxr_linenumber" name="590" href="#590">590</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="591" href="#591">591</a>             {
<a class="jxr_linenumber" name="592" href="#592">592</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="593" href="#593">593</a>             }
<a class="jxr_linenumber" name="594" href="#594">594</a>         }
<a class="jxr_linenumber" name="595" href="#595">595</a>         layout = sb.toString();
<a class="jxr_linenumber" name="596" href="#596">596</a>     }
<a class="jxr_linenumber" name="597" href="#597">597</a> 
<a class="jxr_linenumber" name="598" href="#598">598</a>         value.setLayout( layout );
<a class="jxr_linenumber" name="599" href="#599">599</a>     <em class="jxr_comment">//String indexDir = registry.getString( prefix + "indexDir", value.getIndexDir() );</em>
<a class="jxr_linenumber" name="600" href="#600">600</a> 
<a class="jxr_linenumber" name="601" href="#601">601</a>     List&lt;String&gt; indexDirList = registry.getList( prefix + <span class="jxr_string">"indexDir"</span> );
<a class="jxr_linenumber" name="602" href="#602">602</a>     String indexDir = value.getIndexDir();
<a class="jxr_linenumber" name="603" href="#603">603</a>     <strong class="jxr_keyword">if</strong> (indexDirList != <strong class="jxr_keyword">null</strong> &amp;&amp; !indexDirList.isEmpty() )
<a class="jxr_linenumber" name="604" href="#604">604</a>     {
<a class="jxr_linenumber" name="605" href="#605">605</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="606" href="#606">606</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = indexDirList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="607" href="#607">607</a>         {
<a class="jxr_linenumber" name="608" href="#608">608</a>             sb.append( indexDirList.get( i ) );
<a class="jxr_linenumber" name="609" href="#609">609</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="610" href="#610">610</a>             {
<a class="jxr_linenumber" name="611" href="#611">611</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="612" href="#612">612</a>             }
<a class="jxr_linenumber" name="613" href="#613">613</a>         }
<a class="jxr_linenumber" name="614" href="#614">614</a>         indexDir = sb.toString();
<a class="jxr_linenumber" name="615" href="#615">615</a>     }
<a class="jxr_linenumber" name="616" href="#616">616</a> 
<a class="jxr_linenumber" name="617" href="#617">617</a>         value.setIndexDir( indexDir );
<a class="jxr_linenumber" name="618" href="#618">618</a>     <em class="jxr_comment">//String description = registry.getString( prefix + "description", value.getDescription() );</em>
<a class="jxr_linenumber" name="619" href="#619">619</a> 
<a class="jxr_linenumber" name="620" href="#620">620</a>     List&lt;String&gt; descriptionList = registry.getList( prefix + <span class="jxr_string">"description"</span> );
<a class="jxr_linenumber" name="621" href="#621">621</a>     String description = value.getDescription();
<a class="jxr_linenumber" name="622" href="#622">622</a>     <strong class="jxr_keyword">if</strong> (descriptionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !descriptionList.isEmpty() )
<a class="jxr_linenumber" name="623" href="#623">623</a>     {
<a class="jxr_linenumber" name="624" href="#624">624</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="625" href="#625">625</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = descriptionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="626" href="#626">626</a>         {
<a class="jxr_linenumber" name="627" href="#627">627</a>             sb.append( descriptionList.get( i ) );
<a class="jxr_linenumber" name="628" href="#628">628</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="629" href="#629">629</a>             {
<a class="jxr_linenumber" name="630" href="#630">630</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="631" href="#631">631</a>             }
<a class="jxr_linenumber" name="632" href="#632">632</a>         }
<a class="jxr_linenumber" name="633" href="#633">633</a>         description = sb.toString();
<a class="jxr_linenumber" name="634" href="#634">634</a>     }
<a class="jxr_linenumber" name="635" href="#635">635</a> 
<a class="jxr_linenumber" name="636" href="#636">636</a>         value.setDescription( description );
<a class="jxr_linenumber" name="637" href="#637">637</a> 
<a class="jxr_linenumber" name="638" href="#638">638</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="639" href="#639">639</a>     }
<a class="jxr_linenumber" name="640" href="#640">640</a>     
<a class="jxr_linenumber" name="641" href="#641">641</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/V1RepositoryConfiguration.html">V1RepositoryConfiguration</a> readV1RepositoryConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="642" href="#642">642</a>     {
<a class="jxr_linenumber" name="643" href="#643">643</a>         <a href="../../../../../../org/apache/archiva/configuration/V1RepositoryConfiguration.html">V1RepositoryConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/V1RepositoryConfiguration.html">V1RepositoryConfiguration</a>();
<a class="jxr_linenumber" name="644" href="#644">644</a> 
<a class="jxr_linenumber" name="645" href="#645">645</a>     <em class="jxr_comment">//String url = registry.getString( prefix + "url", value.getUrl() );</em>
<a class="jxr_linenumber" name="646" href="#646">646</a> 
<a class="jxr_linenumber" name="647" href="#647">647</a>     List&lt;String&gt; urlList = registry.getList( prefix + <span class="jxr_string">"url"</span> );
<a class="jxr_linenumber" name="648" href="#648">648</a>     String url = value.getUrl();
<a class="jxr_linenumber" name="649" href="#649">649</a>     <strong class="jxr_keyword">if</strong> (urlList != <strong class="jxr_keyword">null</strong> &amp;&amp; !urlList.isEmpty() )
<a class="jxr_linenumber" name="650" href="#650">650</a>     {
<a class="jxr_linenumber" name="651" href="#651">651</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="652" href="#652">652</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = urlList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="653" href="#653">653</a>         {
<a class="jxr_linenumber" name="654" href="#654">654</a>             sb.append( urlList.get( i ) );
<a class="jxr_linenumber" name="655" href="#655">655</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="656" href="#656">656</a>             {
<a class="jxr_linenumber" name="657" href="#657">657</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="658" href="#658">658</a>             }
<a class="jxr_linenumber" name="659" href="#659">659</a>         }
<a class="jxr_linenumber" name="660" href="#660">660</a>         url = sb.toString();
<a class="jxr_linenumber" name="661" href="#661">661</a>     }
<a class="jxr_linenumber" name="662" href="#662">662</a> 
<a class="jxr_linenumber" name="663" href="#663">663</a>         value.setUrl( url );
<a class="jxr_linenumber" name="664" href="#664">664</a>         <strong class="jxr_keyword">boolean</strong> indexed = registry.getBoolean( prefix + <span class="jxr_string">"indexed"</span>, value.isIndexed() );
<a class="jxr_linenumber" name="665" href="#665">665</a>         value.setIndexed( indexed );
<a class="jxr_linenumber" name="666" href="#666">666</a>     <em class="jxr_comment">//String location = registry.getString( prefix + "location", value.getLocation() );</em>
<a class="jxr_linenumber" name="667" href="#667">667</a> 
<a class="jxr_linenumber" name="668" href="#668">668</a>     List&lt;String&gt; locationList = registry.getList( prefix + <span class="jxr_string">"location"</span> );
<a class="jxr_linenumber" name="669" href="#669">669</a>     String location = value.getLocation();
<a class="jxr_linenumber" name="670" href="#670">670</a>     <strong class="jxr_keyword">if</strong> (locationList != <strong class="jxr_keyword">null</strong> &amp;&amp; !locationList.isEmpty() )
<a class="jxr_linenumber" name="671" href="#671">671</a>     {
<a class="jxr_linenumber" name="672" href="#672">672</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="673" href="#673">673</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = locationList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="674" href="#674">674</a>         {
<a class="jxr_linenumber" name="675" href="#675">675</a>             sb.append( locationList.get( i ) );
<a class="jxr_linenumber" name="676" href="#676">676</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="677" href="#677">677</a>             {
<a class="jxr_linenumber" name="678" href="#678">678</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="679" href="#679">679</a>             }
<a class="jxr_linenumber" name="680" href="#680">680</a>         }
<a class="jxr_linenumber" name="681" href="#681">681</a>         location = sb.toString();
<a class="jxr_linenumber" name="682" href="#682">682</a>     }
<a class="jxr_linenumber" name="683" href="#683">683</a> 
<a class="jxr_linenumber" name="684" href="#684">684</a>         value.setLocation( location );
<a class="jxr_linenumber" name="685" href="#685">685</a>         <strong class="jxr_keyword">boolean</strong> releases = registry.getBoolean( prefix + <span class="jxr_string">"releases"</span>, value.isReleases() );
<a class="jxr_linenumber" name="686" href="#686">686</a>         value.setReleases( releases );
<a class="jxr_linenumber" name="687" href="#687">687</a>         <strong class="jxr_keyword">boolean</strong> blockRedeployments = registry.getBoolean( prefix + <span class="jxr_string">"blockRedeployments"</span>, value.isBlockRedeployments() );
<a class="jxr_linenumber" name="688" href="#688">688</a>         value.setBlockRedeployments( blockRedeployments );
<a class="jxr_linenumber" name="689" href="#689">689</a>         <strong class="jxr_keyword">boolean</strong> snapshots = registry.getBoolean( prefix + <span class="jxr_string">"snapshots"</span>, value.isSnapshots() );
<a class="jxr_linenumber" name="690" href="#690">690</a>         value.setSnapshots( snapshots );
<a class="jxr_linenumber" name="691" href="#691">691</a>         <strong class="jxr_keyword">boolean</strong> scanned = registry.getBoolean( prefix + <span class="jxr_string">"scanned"</span>, value.isScanned() );
<a class="jxr_linenumber" name="692" href="#692">692</a>         value.setScanned( scanned );
<a class="jxr_linenumber" name="693" href="#693">693</a>     <em class="jxr_comment">//String refreshCronExpression = registry.getString( prefix + "refreshCronExpression", value.getRefreshCronExpression() );</em>
<a class="jxr_linenumber" name="694" href="#694">694</a> 
<a class="jxr_linenumber" name="695" href="#695">695</a>     List&lt;String&gt; refreshCronExpressionList = registry.getList( prefix + <span class="jxr_string">"refreshCronExpression"</span> );
<a class="jxr_linenumber" name="696" href="#696">696</a>     String refreshCronExpression = value.getRefreshCronExpression();
<a class="jxr_linenumber" name="697" href="#697">697</a>     <strong class="jxr_keyword">if</strong> (refreshCronExpressionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !refreshCronExpressionList.isEmpty() )
<a class="jxr_linenumber" name="698" href="#698">698</a>     {
<a class="jxr_linenumber" name="699" href="#699">699</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="700" href="#700">700</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = refreshCronExpressionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="701" href="#701">701</a>         {
<a class="jxr_linenumber" name="702" href="#702">702</a>             sb.append( refreshCronExpressionList.get( i ) );
<a class="jxr_linenumber" name="703" href="#703">703</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="704" href="#704">704</a>             {
<a class="jxr_linenumber" name="705" href="#705">705</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="706" href="#706">706</a>             }
<a class="jxr_linenumber" name="707" href="#707">707</a>         }
<a class="jxr_linenumber" name="708" href="#708">708</a>         refreshCronExpression = sb.toString();
<a class="jxr_linenumber" name="709" href="#709">709</a>     }
<a class="jxr_linenumber" name="710" href="#710">710</a> 
<a class="jxr_linenumber" name="711" href="#711">711</a>         value.setRefreshCronExpression( refreshCronExpression );
<a class="jxr_linenumber" name="712" href="#712">712</a>     <strong class="jxr_keyword">int</strong> retentionCount = registry.getInt( prefix + <span class="jxr_string">"retentionCount"</span>, value.getRetentionCount() );
<a class="jxr_linenumber" name="713" href="#713">713</a>         value.setRetentionCount( retentionCount );
<a class="jxr_linenumber" name="714" href="#714">714</a>     <strong class="jxr_keyword">int</strong> daysOlder = registry.getInt( prefix + <span class="jxr_string">"daysOlder"</span>, value.getDaysOlder() );
<a class="jxr_linenumber" name="715" href="#715">715</a>         value.setDaysOlder( daysOlder );
<a class="jxr_linenumber" name="716" href="#716">716</a>         <strong class="jxr_keyword">boolean</strong> deleteReleasedSnapshots = registry.getBoolean( prefix + <span class="jxr_string">"deleteReleasedSnapshots"</span>, value.isDeleteReleasedSnapshots() );
<a class="jxr_linenumber" name="717" href="#717">717</a>         value.setDeleteReleasedSnapshots( deleteReleasedSnapshots );
<a class="jxr_linenumber" name="718" href="#718">718</a>         <strong class="jxr_keyword">boolean</strong> skipPackedIndexCreation = registry.getBoolean( prefix + <span class="jxr_string">"skipPackedIndexCreation"</span>, value.isSkipPackedIndexCreation() );
<a class="jxr_linenumber" name="719" href="#719">719</a>         value.setSkipPackedIndexCreation( skipPackedIndexCreation );
<a class="jxr_linenumber" name="720" href="#720">720</a>         <strong class="jxr_keyword">boolean</strong> stageRepoNeeded = registry.getBoolean( prefix + <span class="jxr_string">"stageRepoNeeded"</span>, value.isStageRepoNeeded() );
<a class="jxr_linenumber" name="721" href="#721">721</a>         value.setStageRepoNeeded( stageRepoNeeded );
<a class="jxr_linenumber" name="722" href="#722">722</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="723" href="#723">723</a> 
<a class="jxr_linenumber" name="724" href="#724">724</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="725" href="#725">725</a>     String id = value.getId();
<a class="jxr_linenumber" name="726" href="#726">726</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="727" href="#727">727</a>     {
<a class="jxr_linenumber" name="728" href="#728">728</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="729" href="#729">729</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="730" href="#730">730</a>         {
<a class="jxr_linenumber" name="731" href="#731">731</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="732" href="#732">732</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="733" href="#733">733</a>             {
<a class="jxr_linenumber" name="734" href="#734">734</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="735" href="#735">735</a>             }
<a class="jxr_linenumber" name="736" href="#736">736</a>         }
<a class="jxr_linenumber" name="737" href="#737">737</a>         id = sb.toString();
<a class="jxr_linenumber" name="738" href="#738">738</a>     }
<a class="jxr_linenumber" name="739" href="#739">739</a> 
<a class="jxr_linenumber" name="740" href="#740">740</a>         value.setId( id );
<a class="jxr_linenumber" name="741" href="#741">741</a>     <em class="jxr_comment">//String name = registry.getString( prefix + "name", value.getName() );</em>
<a class="jxr_linenumber" name="742" href="#742">742</a> 
<a class="jxr_linenumber" name="743" href="#743">743</a>     List&lt;String&gt; nameList = registry.getList( prefix + <span class="jxr_string">"name"</span> );
<a class="jxr_linenumber" name="744" href="#744">744</a>     String name = value.getName();
<a class="jxr_linenumber" name="745" href="#745">745</a>     <strong class="jxr_keyword">if</strong> (nameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !nameList.isEmpty() )
<a class="jxr_linenumber" name="746" href="#746">746</a>     {
<a class="jxr_linenumber" name="747" href="#747">747</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="748" href="#748">748</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = nameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="749" href="#749">749</a>         {
<a class="jxr_linenumber" name="750" href="#750">750</a>             sb.append( nameList.get( i ) );
<a class="jxr_linenumber" name="751" href="#751">751</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="752" href="#752">752</a>             {
<a class="jxr_linenumber" name="753" href="#753">753</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="754" href="#754">754</a>             }
<a class="jxr_linenumber" name="755" href="#755">755</a>         }
<a class="jxr_linenumber" name="756" href="#756">756</a>         name = sb.toString();
<a class="jxr_linenumber" name="757" href="#757">757</a>     }
<a class="jxr_linenumber" name="758" href="#758">758</a> 
<a class="jxr_linenumber" name="759" href="#759">759</a>         value.setName( name );
<a class="jxr_linenumber" name="760" href="#760">760</a>     <em class="jxr_comment">//String layout = registry.getString( prefix + "layout", value.getLayout() );</em>
<a class="jxr_linenumber" name="761" href="#761">761</a> 
<a class="jxr_linenumber" name="762" href="#762">762</a>     List&lt;String&gt; layoutList = registry.getList( prefix + <span class="jxr_string">"layout"</span> );
<a class="jxr_linenumber" name="763" href="#763">763</a>     String layout = value.getLayout();
<a class="jxr_linenumber" name="764" href="#764">764</a>     <strong class="jxr_keyword">if</strong> (layoutList != <strong class="jxr_keyword">null</strong> &amp;&amp; !layoutList.isEmpty() )
<a class="jxr_linenumber" name="765" href="#765">765</a>     {
<a class="jxr_linenumber" name="766" href="#766">766</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="767" href="#767">767</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = layoutList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="768" href="#768">768</a>         {
<a class="jxr_linenumber" name="769" href="#769">769</a>             sb.append( layoutList.get( i ) );
<a class="jxr_linenumber" name="770" href="#770">770</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="771" href="#771">771</a>             {
<a class="jxr_linenumber" name="772" href="#772">772</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="773" href="#773">773</a>             }
<a class="jxr_linenumber" name="774" href="#774">774</a>         }
<a class="jxr_linenumber" name="775" href="#775">775</a>         layout = sb.toString();
<a class="jxr_linenumber" name="776" href="#776">776</a>     }
<a class="jxr_linenumber" name="777" href="#777">777</a> 
<a class="jxr_linenumber" name="778" href="#778">778</a>         value.setLayout( layout );
<a class="jxr_linenumber" name="779" href="#779">779</a>     <em class="jxr_comment">//String indexDir = registry.getString( prefix + "indexDir", value.getIndexDir() );</em>
<a class="jxr_linenumber" name="780" href="#780">780</a> 
<a class="jxr_linenumber" name="781" href="#781">781</a>     List&lt;String&gt; indexDirList = registry.getList( prefix + <span class="jxr_string">"indexDir"</span> );
<a class="jxr_linenumber" name="782" href="#782">782</a>     String indexDir = value.getIndexDir();
<a class="jxr_linenumber" name="783" href="#783">783</a>     <strong class="jxr_keyword">if</strong> (indexDirList != <strong class="jxr_keyword">null</strong> &amp;&amp; !indexDirList.isEmpty() )
<a class="jxr_linenumber" name="784" href="#784">784</a>     {
<a class="jxr_linenumber" name="785" href="#785">785</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="786" href="#786">786</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = indexDirList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="787" href="#787">787</a>         {
<a class="jxr_linenumber" name="788" href="#788">788</a>             sb.append( indexDirList.get( i ) );
<a class="jxr_linenumber" name="789" href="#789">789</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="790" href="#790">790</a>             {
<a class="jxr_linenumber" name="791" href="#791">791</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="792" href="#792">792</a>             }
<a class="jxr_linenumber" name="793" href="#793">793</a>         }
<a class="jxr_linenumber" name="794" href="#794">794</a>         indexDir = sb.toString();
<a class="jxr_linenumber" name="795" href="#795">795</a>     }
<a class="jxr_linenumber" name="796" href="#796">796</a> 
<a class="jxr_linenumber" name="797" href="#797">797</a>         value.setIndexDir( indexDir );
<a class="jxr_linenumber" name="798" href="#798">798</a>     <em class="jxr_comment">//String description = registry.getString( prefix + "description", value.getDescription() );</em>
<a class="jxr_linenumber" name="799" href="#799">799</a> 
<a class="jxr_linenumber" name="800" href="#800">800</a>     List&lt;String&gt; descriptionList = registry.getList( prefix + <span class="jxr_string">"description"</span> );
<a class="jxr_linenumber" name="801" href="#801">801</a>     String description = value.getDescription();
<a class="jxr_linenumber" name="802" href="#802">802</a>     <strong class="jxr_keyword">if</strong> (descriptionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !descriptionList.isEmpty() )
<a class="jxr_linenumber" name="803" href="#803">803</a>     {
<a class="jxr_linenumber" name="804" href="#804">804</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="805" href="#805">805</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = descriptionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="806" href="#806">806</a>         {
<a class="jxr_linenumber" name="807" href="#807">807</a>             sb.append( descriptionList.get( i ) );
<a class="jxr_linenumber" name="808" href="#808">808</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="809" href="#809">809</a>             {
<a class="jxr_linenumber" name="810" href="#810">810</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="811" href="#811">811</a>             }
<a class="jxr_linenumber" name="812" href="#812">812</a>         }
<a class="jxr_linenumber" name="813" href="#813">813</a>         description = sb.toString();
<a class="jxr_linenumber" name="814" href="#814">814</a>     }
<a class="jxr_linenumber" name="815" href="#815">815</a> 
<a class="jxr_linenumber" name="816" href="#816">816</a>         value.setDescription( description );
<a class="jxr_linenumber" name="817" href="#817">817</a> 
<a class="jxr_linenumber" name="818" href="#818">818</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="819" href="#819">819</a>     }
<a class="jxr_linenumber" name="820" href="#820">820</a>     
<a class="jxr_linenumber" name="821" href="#821">821</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/LegacyArtifactPath.html">LegacyArtifactPath</a> readLegacyArtifactPath( String prefix, Registry registry )
<a class="jxr_linenumber" name="822" href="#822">822</a>     {
<a class="jxr_linenumber" name="823" href="#823">823</a>         <a href="../../../../../../org/apache/archiva/configuration/LegacyArtifactPath.html">LegacyArtifactPath</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/LegacyArtifactPath.html">LegacyArtifactPath</a>();
<a class="jxr_linenumber" name="824" href="#824">824</a> 
<a class="jxr_linenumber" name="825" href="#825">825</a>     <em class="jxr_comment">//String path = registry.getString( prefix + "path", value.getPath() );</em>
<a class="jxr_linenumber" name="826" href="#826">826</a> 
<a class="jxr_linenumber" name="827" href="#827">827</a>     List&lt;String&gt; pathList = registry.getList( prefix + <span class="jxr_string">"path"</span> );
<a class="jxr_linenumber" name="828" href="#828">828</a>     String path = value.getPath();
<a class="jxr_linenumber" name="829" href="#829">829</a>     <strong class="jxr_keyword">if</strong> (pathList != <strong class="jxr_keyword">null</strong> &amp;&amp; !pathList.isEmpty() )
<a class="jxr_linenumber" name="830" href="#830">830</a>     {
<a class="jxr_linenumber" name="831" href="#831">831</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="832" href="#832">832</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = pathList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="833" href="#833">833</a>         {
<a class="jxr_linenumber" name="834" href="#834">834</a>             sb.append( pathList.get( i ) );
<a class="jxr_linenumber" name="835" href="#835">835</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="836" href="#836">836</a>             {
<a class="jxr_linenumber" name="837" href="#837">837</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="838" href="#838">838</a>             }
<a class="jxr_linenumber" name="839" href="#839">839</a>         }
<a class="jxr_linenumber" name="840" href="#840">840</a>         path = sb.toString();
<a class="jxr_linenumber" name="841" href="#841">841</a>     }
<a class="jxr_linenumber" name="842" href="#842">842</a> 
<a class="jxr_linenumber" name="843" href="#843">843</a>         value.setPath( path );
<a class="jxr_linenumber" name="844" href="#844">844</a>     <em class="jxr_comment">//String artifact = registry.getString( prefix + "artifact", value.getArtifact() );</em>
<a class="jxr_linenumber" name="845" href="#845">845</a> 
<a class="jxr_linenumber" name="846" href="#846">846</a>     List&lt;String&gt; artifactList = registry.getList( prefix + <span class="jxr_string">"artifact"</span> );
<a class="jxr_linenumber" name="847" href="#847">847</a>     String artifact = value.getArtifact();
<a class="jxr_linenumber" name="848" href="#848">848</a>     <strong class="jxr_keyword">if</strong> (artifactList != <strong class="jxr_keyword">null</strong> &amp;&amp; !artifactList.isEmpty() )
<a class="jxr_linenumber" name="849" href="#849">849</a>     {
<a class="jxr_linenumber" name="850" href="#850">850</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="851" href="#851">851</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = artifactList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="852" href="#852">852</a>         {
<a class="jxr_linenumber" name="853" href="#853">853</a>             sb.append( artifactList.get( i ) );
<a class="jxr_linenumber" name="854" href="#854">854</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="855" href="#855">855</a>             {
<a class="jxr_linenumber" name="856" href="#856">856</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="857" href="#857">857</a>             }
<a class="jxr_linenumber" name="858" href="#858">858</a>         }
<a class="jxr_linenumber" name="859" href="#859">859</a>         artifact = sb.toString();
<a class="jxr_linenumber" name="860" href="#860">860</a>     }
<a class="jxr_linenumber" name="861" href="#861">861</a> 
<a class="jxr_linenumber" name="862" href="#862">862</a>         value.setArtifact( artifact );
<a class="jxr_linenumber" name="863" href="#863">863</a> 
<a class="jxr_linenumber" name="864" href="#864">864</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="865" href="#865">865</a>     }
<a class="jxr_linenumber" name="866" href="#866">866</a>     
<a class="jxr_linenumber" name="867" href="#867">867</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/RepositoryGroupConfiguration.html">RepositoryGroupConfiguration</a> readRepositoryGroupConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="868" href="#868">868</a>     {
<a class="jxr_linenumber" name="869" href="#869">869</a>         <a href="../../../../../../org/apache/archiva/configuration/RepositoryGroupConfiguration.html">RepositoryGroupConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/RepositoryGroupConfiguration.html">RepositoryGroupConfiguration</a>();
<a class="jxr_linenumber" name="870" href="#870">870</a> 
<a class="jxr_linenumber" name="871" href="#871">871</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="872" href="#872">872</a> 
<a class="jxr_linenumber" name="873" href="#873">873</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="874" href="#874">874</a>     String id = value.getId();
<a class="jxr_linenumber" name="875" href="#875">875</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="876" href="#876">876</a>     {
<a class="jxr_linenumber" name="877" href="#877">877</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="878" href="#878">878</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="879" href="#879">879</a>         {
<a class="jxr_linenumber" name="880" href="#880">880</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="881" href="#881">881</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="882" href="#882">882</a>             {
<a class="jxr_linenumber" name="883" href="#883">883</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="884" href="#884">884</a>             }
<a class="jxr_linenumber" name="885" href="#885">885</a>         }
<a class="jxr_linenumber" name="886" href="#886">886</a>         id = sb.toString();
<a class="jxr_linenumber" name="887" href="#887">887</a>     }
<a class="jxr_linenumber" name="888" href="#888">888</a> 
<a class="jxr_linenumber" name="889" href="#889">889</a>         value.setId( id );
<a class="jxr_linenumber" name="890" href="#890">890</a>     <em class="jxr_comment">//String mergedIndexPath = registry.getString( prefix + "mergedIndexPath", value.getMergedIndexPath() );</em>
<a class="jxr_linenumber" name="891" href="#891">891</a> 
<a class="jxr_linenumber" name="892" href="#892">892</a>     List&lt;String&gt; mergedIndexPathList = registry.getList( prefix + <span class="jxr_string">"mergedIndexPath"</span> );
<a class="jxr_linenumber" name="893" href="#893">893</a>     String mergedIndexPath = value.getMergedIndexPath();
<a class="jxr_linenumber" name="894" href="#894">894</a>     <strong class="jxr_keyword">if</strong> (mergedIndexPathList != <strong class="jxr_keyword">null</strong> &amp;&amp; !mergedIndexPathList.isEmpty() )
<a class="jxr_linenumber" name="895" href="#895">895</a>     {
<a class="jxr_linenumber" name="896" href="#896">896</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="897" href="#897">897</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = mergedIndexPathList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="898" href="#898">898</a>         {
<a class="jxr_linenumber" name="899" href="#899">899</a>             sb.append( mergedIndexPathList.get( i ) );
<a class="jxr_linenumber" name="900" href="#900">900</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="901" href="#901">901</a>             {
<a class="jxr_linenumber" name="902" href="#902">902</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="903" href="#903">903</a>             }
<a class="jxr_linenumber" name="904" href="#904">904</a>         }
<a class="jxr_linenumber" name="905" href="#905">905</a>         mergedIndexPath = sb.toString();
<a class="jxr_linenumber" name="906" href="#906">906</a>     }
<a class="jxr_linenumber" name="907" href="#907">907</a> 
<a class="jxr_linenumber" name="908" href="#908">908</a>         value.setMergedIndexPath( mergedIndexPath );
<a class="jxr_linenumber" name="909" href="#909">909</a>     <strong class="jxr_keyword">int</strong> mergedIndexTtl = registry.getInt( prefix + <span class="jxr_string">"mergedIndexTtl"</span>, value.getMergedIndexTtl() );
<a class="jxr_linenumber" name="910" href="#910">910</a>         value.setMergedIndexTtl( mergedIndexTtl );
<a class="jxr_linenumber" name="911" href="#911">911</a>         java.util.List repositories = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="912" href="#912">912</a>         repositories.addAll( registry.getList( prefix + <span class="jxr_string">"repositories.repository"</span> ) );
<a class="jxr_linenumber" name="913" href="#913">913</a>         value.setRepositories( repositories );
<a class="jxr_linenumber" name="914" href="#914">914</a> 
<a class="jxr_linenumber" name="915" href="#915">915</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="916" href="#916">916</a>     }
<a class="jxr_linenumber" name="917" href="#917">917</a>     
<a class="jxr_linenumber" name="918" href="#918">918</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConnectorConfiguration.html">AbstractRepositoryConnectorConfiguration</a> readAbstractRepositoryConnectorConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="919" href="#919">919</a>     {
<a class="jxr_linenumber" name="920" href="#920">920</a>         <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConnectorConfiguration.html">AbstractRepositoryConnectorConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/AbstractRepositoryConnectorConfiguration.html">AbstractRepositoryConnectorConfiguration</a>();
<a class="jxr_linenumber" name="921" href="#921">921</a> 
<a class="jxr_linenumber" name="922" href="#922">922</a>     <em class="jxr_comment">//String sourceRepoId = registry.getString( prefix + "sourceRepoId", value.getSourceRepoId() );</em>
<a class="jxr_linenumber" name="923" href="#923">923</a> 
<a class="jxr_linenumber" name="924" href="#924">924</a>     List&lt;String&gt; sourceRepoIdList = registry.getList( prefix + <span class="jxr_string">"sourceRepoId"</span> );
<a class="jxr_linenumber" name="925" href="#925">925</a>     String sourceRepoId = value.getSourceRepoId();
<a class="jxr_linenumber" name="926" href="#926">926</a>     <strong class="jxr_keyword">if</strong> (sourceRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !sourceRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="927" href="#927">927</a>     {
<a class="jxr_linenumber" name="928" href="#928">928</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="929" href="#929">929</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = sourceRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="930" href="#930">930</a>         {
<a class="jxr_linenumber" name="931" href="#931">931</a>             sb.append( sourceRepoIdList.get( i ) );
<a class="jxr_linenumber" name="932" href="#932">932</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="933" href="#933">933</a>             {
<a class="jxr_linenumber" name="934" href="#934">934</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="935" href="#935">935</a>             }
<a class="jxr_linenumber" name="936" href="#936">936</a>         }
<a class="jxr_linenumber" name="937" href="#937">937</a>         sourceRepoId = sb.toString();
<a class="jxr_linenumber" name="938" href="#938">938</a>     }
<a class="jxr_linenumber" name="939" href="#939">939</a> 
<a class="jxr_linenumber" name="940" href="#940">940</a>         value.setSourceRepoId( sourceRepoId );
<a class="jxr_linenumber" name="941" href="#941">941</a>     <em class="jxr_comment">//String targetRepoId = registry.getString( prefix + "targetRepoId", value.getTargetRepoId() );</em>
<a class="jxr_linenumber" name="942" href="#942">942</a> 
<a class="jxr_linenumber" name="943" href="#943">943</a>     List&lt;String&gt; targetRepoIdList = registry.getList( prefix + <span class="jxr_string">"targetRepoId"</span> );
<a class="jxr_linenumber" name="944" href="#944">944</a>     String targetRepoId = value.getTargetRepoId();
<a class="jxr_linenumber" name="945" href="#945">945</a>     <strong class="jxr_keyword">if</strong> (targetRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !targetRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="946" href="#946">946</a>     {
<a class="jxr_linenumber" name="947" href="#947">947</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="948" href="#948">948</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = targetRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="949" href="#949">949</a>         {
<a class="jxr_linenumber" name="950" href="#950">950</a>             sb.append( targetRepoIdList.get( i ) );
<a class="jxr_linenumber" name="951" href="#951">951</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="952" href="#952">952</a>             {
<a class="jxr_linenumber" name="953" href="#953">953</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="954" href="#954">954</a>             }
<a class="jxr_linenumber" name="955" href="#955">955</a>         }
<a class="jxr_linenumber" name="956" href="#956">956</a>         targetRepoId = sb.toString();
<a class="jxr_linenumber" name="957" href="#957">957</a>     }
<a class="jxr_linenumber" name="958" href="#958">958</a> 
<a class="jxr_linenumber" name="959" href="#959">959</a>         value.setTargetRepoId( targetRepoId );
<a class="jxr_linenumber" name="960" href="#960">960</a>     <em class="jxr_comment">//String proxyId = registry.getString( prefix + "proxyId", value.getProxyId() );</em>
<a class="jxr_linenumber" name="961" href="#961">961</a> 
<a class="jxr_linenumber" name="962" href="#962">962</a>     List&lt;String&gt; proxyIdList = registry.getList( prefix + <span class="jxr_string">"proxyId"</span> );
<a class="jxr_linenumber" name="963" href="#963">963</a>     String proxyId = value.getProxyId();
<a class="jxr_linenumber" name="964" href="#964">964</a>     <strong class="jxr_keyword">if</strong> (proxyIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !proxyIdList.isEmpty() )
<a class="jxr_linenumber" name="965" href="#965">965</a>     {
<a class="jxr_linenumber" name="966" href="#966">966</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="967" href="#967">967</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = proxyIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="968" href="#968">968</a>         {
<a class="jxr_linenumber" name="969" href="#969">969</a>             sb.append( proxyIdList.get( i ) );
<a class="jxr_linenumber" name="970" href="#970">970</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="971" href="#971">971</a>             {
<a class="jxr_linenumber" name="972" href="#972">972</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="973" href="#973">973</a>             }
<a class="jxr_linenumber" name="974" href="#974">974</a>         }
<a class="jxr_linenumber" name="975" href="#975">975</a>         proxyId = sb.toString();
<a class="jxr_linenumber" name="976" href="#976">976</a>     }
<a class="jxr_linenumber" name="977" href="#977">977</a> 
<a class="jxr_linenumber" name="978" href="#978">978</a>         value.setProxyId( proxyId );
<a class="jxr_linenumber" name="979" href="#979">979</a>         java.util.List blackListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="980" href="#980">980</a>         blackListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"blackListPatterns.blackListPattern"</span> ) );
<a class="jxr_linenumber" name="981" href="#981">981</a>         value.setBlackListPatterns( blackListPatterns );
<a class="jxr_linenumber" name="982" href="#982">982</a>         java.util.List whiteListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="983" href="#983">983</a>         whiteListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"whiteListPatterns.whiteListPattern"</span> ) );
<a class="jxr_linenumber" name="984" href="#984">984</a>         value.setWhiteListPatterns( whiteListPatterns );
<a class="jxr_linenumber" name="985" href="#985">985</a>         java.util.Map policies = registry.getProperties( prefix + <span class="jxr_string">"policies"</span> );
<a class="jxr_linenumber" name="986" href="#986">986</a>         value.setPolicies( policies );
<a class="jxr_linenumber" name="987" href="#987">987</a>         java.util.Map properties = registry.getProperties( prefix + <span class="jxr_string">"properties"</span> );
<a class="jxr_linenumber" name="988" href="#988">988</a>         value.setProperties( properties );
<a class="jxr_linenumber" name="989" href="#989">989</a>         <strong class="jxr_keyword">boolean</strong> disabled = registry.getBoolean( prefix + <span class="jxr_string">"disabled"</span>, value.isDisabled() );
<a class="jxr_linenumber" name="990" href="#990">990</a>         value.setDisabled( disabled );
<a class="jxr_linenumber" name="991" href="#991">991</a> 
<a class="jxr_linenumber" name="992" href="#992">992</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="993" href="#993">993</a>     }
<a class="jxr_linenumber" name="994" href="#994">994</a>     
<a class="jxr_linenumber" name="995" href="#995">995</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorRuleConfiguration.html">ProxyConnectorRuleConfiguration</a> readProxyConnectorRuleConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="996" href="#996">996</a>     {
<a class="jxr_linenumber" name="997" href="#997">997</a>         <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorRuleConfiguration.html">ProxyConnectorRuleConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorRuleConfiguration.html">ProxyConnectorRuleConfiguration</a>();
<a class="jxr_linenumber" name="998" href="#998">998</a> 
<a class="jxr_linenumber" name="999" href="#999">999</a>     <em class="jxr_comment">//String ruleType = registry.getString( prefix + "ruleType", value.getRuleType() );</em>
<a class="jxr_linenumber" name="1000" href="#1000">1000</a> 
<a class="jxr_linenumber" name="1001" href="#1001">1001</a>     List&lt;String&gt; ruleTypeList = registry.getList( prefix + <span class="jxr_string">"ruleType"</span> );
<a class="jxr_linenumber" name="1002" href="#1002">1002</a>     String ruleType = value.getRuleType();
<a class="jxr_linenumber" name="1003" href="#1003">1003</a>     <strong class="jxr_keyword">if</strong> (ruleTypeList != <strong class="jxr_keyword">null</strong> &amp;&amp; !ruleTypeList.isEmpty() )
<a class="jxr_linenumber" name="1004" href="#1004">1004</a>     {
<a class="jxr_linenumber" name="1005" href="#1005">1005</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1006" href="#1006">1006</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = ruleTypeList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1007" href="#1007">1007</a>         {
<a class="jxr_linenumber" name="1008" href="#1008">1008</a>             sb.append( ruleTypeList.get( i ) );
<a class="jxr_linenumber" name="1009" href="#1009">1009</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1010" href="#1010">1010</a>             {
<a class="jxr_linenumber" name="1011" href="#1011">1011</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1012" href="#1012">1012</a>             }
<a class="jxr_linenumber" name="1013" href="#1013">1013</a>         }
<a class="jxr_linenumber" name="1014" href="#1014">1014</a>         ruleType = sb.toString();
<a class="jxr_linenumber" name="1015" href="#1015">1015</a>     }
<a class="jxr_linenumber" name="1016" href="#1016">1016</a> 
<a class="jxr_linenumber" name="1017" href="#1017">1017</a>         value.setRuleType( ruleType );
<a class="jxr_linenumber" name="1018" href="#1018">1018</a>     <em class="jxr_comment">//String pattern = registry.getString( prefix + "pattern", value.getPattern() );</em>
<a class="jxr_linenumber" name="1019" href="#1019">1019</a> 
<a class="jxr_linenumber" name="1020" href="#1020">1020</a>     List&lt;String&gt; patternList = registry.getList( prefix + <span class="jxr_string">"pattern"</span> );
<a class="jxr_linenumber" name="1021" href="#1021">1021</a>     String pattern = value.getPattern();
<a class="jxr_linenumber" name="1022" href="#1022">1022</a>     <strong class="jxr_keyword">if</strong> (patternList != <strong class="jxr_keyword">null</strong> &amp;&amp; !patternList.isEmpty() )
<a class="jxr_linenumber" name="1023" href="#1023">1023</a>     {
<a class="jxr_linenumber" name="1024" href="#1024">1024</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1025" href="#1025">1025</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = patternList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1026" href="#1026">1026</a>         {
<a class="jxr_linenumber" name="1027" href="#1027">1027</a>             sb.append( patternList.get( i ) );
<a class="jxr_linenumber" name="1028" href="#1028">1028</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1029" href="#1029">1029</a>             {
<a class="jxr_linenumber" name="1030" href="#1030">1030</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1031" href="#1031">1031</a>             }
<a class="jxr_linenumber" name="1032" href="#1032">1032</a>         }
<a class="jxr_linenumber" name="1033" href="#1033">1033</a>         pattern = sb.toString();
<a class="jxr_linenumber" name="1034" href="#1034">1034</a>     }
<a class="jxr_linenumber" name="1035" href="#1035">1035</a> 
<a class="jxr_linenumber" name="1036" href="#1036">1036</a>         value.setPattern( pattern );
<a class="jxr_linenumber" name="1037" href="#1037">1037</a>         java.util.List proxyConnectors = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;ProxyConnectorConfiguration&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1038" href="#1038">1038</a>         List proxyConnectorsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"proxyConnectors.proxyConnector"</span> );
<a class="jxr_linenumber" name="1039" href="#1039">1039</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = proxyConnectorsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="1040" href="#1040">1040</a>         {
<a class="jxr_linenumber" name="1041" href="#1041">1041</a>             <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorConfiguration.html">ProxyConnectorConfiguration</a> v = readProxyConnectorConfiguration( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="1042" href="#1042">1042</a>             proxyConnectors.add( v );
<a class="jxr_linenumber" name="1043" href="#1043">1043</a>         }
<a class="jxr_linenumber" name="1044" href="#1044">1044</a>         value.setProxyConnectors( proxyConnectors );
<a class="jxr_linenumber" name="1045" href="#1045">1045</a> 
<a class="jxr_linenumber" name="1046" href="#1046">1046</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1047" href="#1047">1047</a>     }
<a class="jxr_linenumber" name="1048" href="#1048">1048</a>     
<a class="jxr_linenumber" name="1049" href="#1049">1049</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorConfiguration.html">ProxyConnectorConfiguration</a> readProxyConnectorConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1050" href="#1050">1050</a>     {
<a class="jxr_linenumber" name="1051" href="#1051">1051</a>         <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorConfiguration.html">ProxyConnectorConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/ProxyConnectorConfiguration.html">ProxyConnectorConfiguration</a>();
<a class="jxr_linenumber" name="1052" href="#1052">1052</a> 
<a class="jxr_linenumber" name="1053" href="#1053">1053</a>     <strong class="jxr_keyword">int</strong> order = registry.getInt( prefix + <span class="jxr_string">"order"</span>, value.getOrder() );
<a class="jxr_linenumber" name="1054" href="#1054">1054</a>         value.setOrder( order );
<a class="jxr_linenumber" name="1055" href="#1055">1055</a>     <em class="jxr_comment">//String sourceRepoId = registry.getString( prefix + "sourceRepoId", value.getSourceRepoId() );</em>
<a class="jxr_linenumber" name="1056" href="#1056">1056</a> 
<a class="jxr_linenumber" name="1057" href="#1057">1057</a>     List&lt;String&gt; sourceRepoIdList = registry.getList( prefix + <span class="jxr_string">"sourceRepoId"</span> );
<a class="jxr_linenumber" name="1058" href="#1058">1058</a>     String sourceRepoId = value.getSourceRepoId();
<a class="jxr_linenumber" name="1059" href="#1059">1059</a>     <strong class="jxr_keyword">if</strong> (sourceRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !sourceRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="1060" href="#1060">1060</a>     {
<a class="jxr_linenumber" name="1061" href="#1061">1061</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1062" href="#1062">1062</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = sourceRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1063" href="#1063">1063</a>         {
<a class="jxr_linenumber" name="1064" href="#1064">1064</a>             sb.append( sourceRepoIdList.get( i ) );
<a class="jxr_linenumber" name="1065" href="#1065">1065</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1066" href="#1066">1066</a>             {
<a class="jxr_linenumber" name="1067" href="#1067">1067</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1068" href="#1068">1068</a>             }
<a class="jxr_linenumber" name="1069" href="#1069">1069</a>         }
<a class="jxr_linenumber" name="1070" href="#1070">1070</a>         sourceRepoId = sb.toString();
<a class="jxr_linenumber" name="1071" href="#1071">1071</a>     }
<a class="jxr_linenumber" name="1072" href="#1072">1072</a> 
<a class="jxr_linenumber" name="1073" href="#1073">1073</a>         value.setSourceRepoId( sourceRepoId );
<a class="jxr_linenumber" name="1074" href="#1074">1074</a>     <em class="jxr_comment">//String targetRepoId = registry.getString( prefix + "targetRepoId", value.getTargetRepoId() );</em>
<a class="jxr_linenumber" name="1075" href="#1075">1075</a> 
<a class="jxr_linenumber" name="1076" href="#1076">1076</a>     List&lt;String&gt; targetRepoIdList = registry.getList( prefix + <span class="jxr_string">"targetRepoId"</span> );
<a class="jxr_linenumber" name="1077" href="#1077">1077</a>     String targetRepoId = value.getTargetRepoId();
<a class="jxr_linenumber" name="1078" href="#1078">1078</a>     <strong class="jxr_keyword">if</strong> (targetRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !targetRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="1079" href="#1079">1079</a>     {
<a class="jxr_linenumber" name="1080" href="#1080">1080</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1081" href="#1081">1081</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = targetRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1082" href="#1082">1082</a>         {
<a class="jxr_linenumber" name="1083" href="#1083">1083</a>             sb.append( targetRepoIdList.get( i ) );
<a class="jxr_linenumber" name="1084" href="#1084">1084</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1085" href="#1085">1085</a>             {
<a class="jxr_linenumber" name="1086" href="#1086">1086</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1087" href="#1087">1087</a>             }
<a class="jxr_linenumber" name="1088" href="#1088">1088</a>         }
<a class="jxr_linenumber" name="1089" href="#1089">1089</a>         targetRepoId = sb.toString();
<a class="jxr_linenumber" name="1090" href="#1090">1090</a>     }
<a class="jxr_linenumber" name="1091" href="#1091">1091</a> 
<a class="jxr_linenumber" name="1092" href="#1092">1092</a>         value.setTargetRepoId( targetRepoId );
<a class="jxr_linenumber" name="1093" href="#1093">1093</a>     <em class="jxr_comment">//String proxyId = registry.getString( prefix + "proxyId", value.getProxyId() );</em>
<a class="jxr_linenumber" name="1094" href="#1094">1094</a> 
<a class="jxr_linenumber" name="1095" href="#1095">1095</a>     List&lt;String&gt; proxyIdList = registry.getList( prefix + <span class="jxr_string">"proxyId"</span> );
<a class="jxr_linenumber" name="1096" href="#1096">1096</a>     String proxyId = value.getProxyId();
<a class="jxr_linenumber" name="1097" href="#1097">1097</a>     <strong class="jxr_keyword">if</strong> (proxyIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !proxyIdList.isEmpty() )
<a class="jxr_linenumber" name="1098" href="#1098">1098</a>     {
<a class="jxr_linenumber" name="1099" href="#1099">1099</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1100" href="#1100">1100</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = proxyIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1101" href="#1101">1101</a>         {
<a class="jxr_linenumber" name="1102" href="#1102">1102</a>             sb.append( proxyIdList.get( i ) );
<a class="jxr_linenumber" name="1103" href="#1103">1103</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1104" href="#1104">1104</a>             {
<a class="jxr_linenumber" name="1105" href="#1105">1105</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1106" href="#1106">1106</a>             }
<a class="jxr_linenumber" name="1107" href="#1107">1107</a>         }
<a class="jxr_linenumber" name="1108" href="#1108">1108</a>         proxyId = sb.toString();
<a class="jxr_linenumber" name="1109" href="#1109">1109</a>     }
<a class="jxr_linenumber" name="1110" href="#1110">1110</a> 
<a class="jxr_linenumber" name="1111" href="#1111">1111</a>         value.setProxyId( proxyId );
<a class="jxr_linenumber" name="1112" href="#1112">1112</a>         java.util.List blackListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1113" href="#1113">1113</a>         blackListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"blackListPatterns.blackListPattern"</span> ) );
<a class="jxr_linenumber" name="1114" href="#1114">1114</a>         value.setBlackListPatterns( blackListPatterns );
<a class="jxr_linenumber" name="1115" href="#1115">1115</a>         java.util.List whiteListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1116" href="#1116">1116</a>         whiteListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"whiteListPatterns.whiteListPattern"</span> ) );
<a class="jxr_linenumber" name="1117" href="#1117">1117</a>         value.setWhiteListPatterns( whiteListPatterns );
<a class="jxr_linenumber" name="1118" href="#1118">1118</a>         java.util.Map policies = registry.getProperties( prefix + <span class="jxr_string">"policies"</span> );
<a class="jxr_linenumber" name="1119" href="#1119">1119</a>         value.setPolicies( policies );
<a class="jxr_linenumber" name="1120" href="#1120">1120</a>         java.util.Map properties = registry.getProperties( prefix + <span class="jxr_string">"properties"</span> );
<a class="jxr_linenumber" name="1121" href="#1121">1121</a>         value.setProperties( properties );
<a class="jxr_linenumber" name="1122" href="#1122">1122</a>         <strong class="jxr_keyword">boolean</strong> disabled = registry.getBoolean( prefix + <span class="jxr_string">"disabled"</span>, value.isDisabled() );
<a class="jxr_linenumber" name="1123" href="#1123">1123</a>         value.setDisabled( disabled );
<a class="jxr_linenumber" name="1124" href="#1124">1124</a> 
<a class="jxr_linenumber" name="1125" href="#1125">1125</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1126" href="#1126">1126</a>     }
<a class="jxr_linenumber" name="1127" href="#1127">1127</a>     
<a class="jxr_linenumber" name="1128" href="#1128">1128</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/SyncConnectorConfiguration.html">SyncConnectorConfiguration</a> readSyncConnectorConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1129" href="#1129">1129</a>     {
<a class="jxr_linenumber" name="1130" href="#1130">1130</a>         <a href="../../../../../../org/apache/archiva/configuration/SyncConnectorConfiguration.html">SyncConnectorConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/SyncConnectorConfiguration.html">SyncConnectorConfiguration</a>();
<a class="jxr_linenumber" name="1131" href="#1131">1131</a> 
<a class="jxr_linenumber" name="1132" href="#1132">1132</a>     <em class="jxr_comment">//String cronExpression = registry.getString( prefix + "cronExpression", value.getCronExpression() );</em>
<a class="jxr_linenumber" name="1133" href="#1133">1133</a> 
<a class="jxr_linenumber" name="1134" href="#1134">1134</a>     List&lt;String&gt; cronExpressionList = registry.getList( prefix + <span class="jxr_string">"cronExpression"</span> );
<a class="jxr_linenumber" name="1135" href="#1135">1135</a>     String cronExpression = value.getCronExpression();
<a class="jxr_linenumber" name="1136" href="#1136">1136</a>     <strong class="jxr_keyword">if</strong> (cronExpressionList != <strong class="jxr_keyword">null</strong> &amp;&amp; !cronExpressionList.isEmpty() )
<a class="jxr_linenumber" name="1137" href="#1137">1137</a>     {
<a class="jxr_linenumber" name="1138" href="#1138">1138</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1139" href="#1139">1139</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = cronExpressionList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1140" href="#1140">1140</a>         {
<a class="jxr_linenumber" name="1141" href="#1141">1141</a>             sb.append( cronExpressionList.get( i ) );
<a class="jxr_linenumber" name="1142" href="#1142">1142</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1143" href="#1143">1143</a>             {
<a class="jxr_linenumber" name="1144" href="#1144">1144</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1145" href="#1145">1145</a>             }
<a class="jxr_linenumber" name="1146" href="#1146">1146</a>         }
<a class="jxr_linenumber" name="1147" href="#1147">1147</a>         cronExpression = sb.toString();
<a class="jxr_linenumber" name="1148" href="#1148">1148</a>     }
<a class="jxr_linenumber" name="1149" href="#1149">1149</a> 
<a class="jxr_linenumber" name="1150" href="#1150">1150</a>         value.setCronExpression( cronExpression );
<a class="jxr_linenumber" name="1151" href="#1151">1151</a>     <em class="jxr_comment">//String method = registry.getString( prefix + "method", value.getMethod() );</em>
<a class="jxr_linenumber" name="1152" href="#1152">1152</a> 
<a class="jxr_linenumber" name="1153" href="#1153">1153</a>     List&lt;String&gt; methodList = registry.getList( prefix + <span class="jxr_string">"method"</span> );
<a class="jxr_linenumber" name="1154" href="#1154">1154</a>     String method = value.getMethod();
<a class="jxr_linenumber" name="1155" href="#1155">1155</a>     <strong class="jxr_keyword">if</strong> (methodList != <strong class="jxr_keyword">null</strong> &amp;&amp; !methodList.isEmpty() )
<a class="jxr_linenumber" name="1156" href="#1156">1156</a>     {
<a class="jxr_linenumber" name="1157" href="#1157">1157</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1158" href="#1158">1158</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = methodList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1159" href="#1159">1159</a>         {
<a class="jxr_linenumber" name="1160" href="#1160">1160</a>             sb.append( methodList.get( i ) );
<a class="jxr_linenumber" name="1161" href="#1161">1161</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1162" href="#1162">1162</a>             {
<a class="jxr_linenumber" name="1163" href="#1163">1163</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1164" href="#1164">1164</a>             }
<a class="jxr_linenumber" name="1165" href="#1165">1165</a>         }
<a class="jxr_linenumber" name="1166" href="#1166">1166</a>         method = sb.toString();
<a class="jxr_linenumber" name="1167" href="#1167">1167</a>     }
<a class="jxr_linenumber" name="1168" href="#1168">1168</a> 
<a class="jxr_linenumber" name="1169" href="#1169">1169</a>         value.setMethod( method );
<a class="jxr_linenumber" name="1170" href="#1170">1170</a>     <em class="jxr_comment">//String sourceRepoId = registry.getString( prefix + "sourceRepoId", value.getSourceRepoId() );</em>
<a class="jxr_linenumber" name="1171" href="#1171">1171</a> 
<a class="jxr_linenumber" name="1172" href="#1172">1172</a>     List&lt;String&gt; sourceRepoIdList = registry.getList( prefix + <span class="jxr_string">"sourceRepoId"</span> );
<a class="jxr_linenumber" name="1173" href="#1173">1173</a>     String sourceRepoId = value.getSourceRepoId();
<a class="jxr_linenumber" name="1174" href="#1174">1174</a>     <strong class="jxr_keyword">if</strong> (sourceRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !sourceRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="1175" href="#1175">1175</a>     {
<a class="jxr_linenumber" name="1176" href="#1176">1176</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1177" href="#1177">1177</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = sourceRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1178" href="#1178">1178</a>         {
<a class="jxr_linenumber" name="1179" href="#1179">1179</a>             sb.append( sourceRepoIdList.get( i ) );
<a class="jxr_linenumber" name="1180" href="#1180">1180</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1181" href="#1181">1181</a>             {
<a class="jxr_linenumber" name="1182" href="#1182">1182</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1183" href="#1183">1183</a>             }
<a class="jxr_linenumber" name="1184" href="#1184">1184</a>         }
<a class="jxr_linenumber" name="1185" href="#1185">1185</a>         sourceRepoId = sb.toString();
<a class="jxr_linenumber" name="1186" href="#1186">1186</a>     }
<a class="jxr_linenumber" name="1187" href="#1187">1187</a> 
<a class="jxr_linenumber" name="1188" href="#1188">1188</a>         value.setSourceRepoId( sourceRepoId );
<a class="jxr_linenumber" name="1189" href="#1189">1189</a>     <em class="jxr_comment">//String targetRepoId = registry.getString( prefix + "targetRepoId", value.getTargetRepoId() );</em>
<a class="jxr_linenumber" name="1190" href="#1190">1190</a> 
<a class="jxr_linenumber" name="1191" href="#1191">1191</a>     List&lt;String&gt; targetRepoIdList = registry.getList( prefix + <span class="jxr_string">"targetRepoId"</span> );
<a class="jxr_linenumber" name="1192" href="#1192">1192</a>     String targetRepoId = value.getTargetRepoId();
<a class="jxr_linenumber" name="1193" href="#1193">1193</a>     <strong class="jxr_keyword">if</strong> (targetRepoIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !targetRepoIdList.isEmpty() )
<a class="jxr_linenumber" name="1194" href="#1194">1194</a>     {
<a class="jxr_linenumber" name="1195" href="#1195">1195</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1196" href="#1196">1196</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = targetRepoIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1197" href="#1197">1197</a>         {
<a class="jxr_linenumber" name="1198" href="#1198">1198</a>             sb.append( targetRepoIdList.get( i ) );
<a class="jxr_linenumber" name="1199" href="#1199">1199</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1200" href="#1200">1200</a>             {
<a class="jxr_linenumber" name="1201" href="#1201">1201</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1202" href="#1202">1202</a>             }
<a class="jxr_linenumber" name="1203" href="#1203">1203</a>         }
<a class="jxr_linenumber" name="1204" href="#1204">1204</a>         targetRepoId = sb.toString();
<a class="jxr_linenumber" name="1205" href="#1205">1205</a>     }
<a class="jxr_linenumber" name="1206" href="#1206">1206</a> 
<a class="jxr_linenumber" name="1207" href="#1207">1207</a>         value.setTargetRepoId( targetRepoId );
<a class="jxr_linenumber" name="1208" href="#1208">1208</a>     <em class="jxr_comment">//String proxyId = registry.getString( prefix + "proxyId", value.getProxyId() );</em>
<a class="jxr_linenumber" name="1209" href="#1209">1209</a> 
<a class="jxr_linenumber" name="1210" href="#1210">1210</a>     List&lt;String&gt; proxyIdList = registry.getList( prefix + <span class="jxr_string">"proxyId"</span> );
<a class="jxr_linenumber" name="1211" href="#1211">1211</a>     String proxyId = value.getProxyId();
<a class="jxr_linenumber" name="1212" href="#1212">1212</a>     <strong class="jxr_keyword">if</strong> (proxyIdList != <strong class="jxr_keyword">null</strong> &amp;&amp; !proxyIdList.isEmpty() )
<a class="jxr_linenumber" name="1213" href="#1213">1213</a>     {
<a class="jxr_linenumber" name="1214" href="#1214">1214</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1215" href="#1215">1215</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = proxyIdList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1216" href="#1216">1216</a>         {
<a class="jxr_linenumber" name="1217" href="#1217">1217</a>             sb.append( proxyIdList.get( i ) );
<a class="jxr_linenumber" name="1218" href="#1218">1218</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1219" href="#1219">1219</a>             {
<a class="jxr_linenumber" name="1220" href="#1220">1220</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1221" href="#1221">1221</a>             }
<a class="jxr_linenumber" name="1222" href="#1222">1222</a>         }
<a class="jxr_linenumber" name="1223" href="#1223">1223</a>         proxyId = sb.toString();
<a class="jxr_linenumber" name="1224" href="#1224">1224</a>     }
<a class="jxr_linenumber" name="1225" href="#1225">1225</a> 
<a class="jxr_linenumber" name="1226" href="#1226">1226</a>         value.setProxyId( proxyId );
<a class="jxr_linenumber" name="1227" href="#1227">1227</a>         java.util.List blackListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1228" href="#1228">1228</a>         blackListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"blackListPatterns.blackListPattern"</span> ) );
<a class="jxr_linenumber" name="1229" href="#1229">1229</a>         value.setBlackListPatterns( blackListPatterns );
<a class="jxr_linenumber" name="1230" href="#1230">1230</a>         java.util.List whiteListPatterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1231" href="#1231">1231</a>         whiteListPatterns.addAll( registry.getList( prefix + <span class="jxr_string">"whiteListPatterns.whiteListPattern"</span> ) );
<a class="jxr_linenumber" name="1232" href="#1232">1232</a>         value.setWhiteListPatterns( whiteListPatterns );
<a class="jxr_linenumber" name="1233" href="#1233">1233</a>         java.util.Map policies = registry.getProperties( prefix + <span class="jxr_string">"policies"</span> );
<a class="jxr_linenumber" name="1234" href="#1234">1234</a>         value.setPolicies( policies );
<a class="jxr_linenumber" name="1235" href="#1235">1235</a>         java.util.Map properties = registry.getProperties( prefix + <span class="jxr_string">"properties"</span> );
<a class="jxr_linenumber" name="1236" href="#1236">1236</a>         value.setProperties( properties );
<a class="jxr_linenumber" name="1237" href="#1237">1237</a>         <strong class="jxr_keyword">boolean</strong> disabled = registry.getBoolean( prefix + <span class="jxr_string">"disabled"</span>, value.isDisabled() );
<a class="jxr_linenumber" name="1238" href="#1238">1238</a>         value.setDisabled( disabled );
<a class="jxr_linenumber" name="1239" href="#1239">1239</a> 
<a class="jxr_linenumber" name="1240" href="#1240">1240</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1241" href="#1241">1241</a>     }
<a class="jxr_linenumber" name="1242" href="#1242">1242</a>     
<a class="jxr_linenumber" name="1243" href="#1243">1243</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/NetworkProxyConfiguration.html">NetworkProxyConfiguration</a> readNetworkProxyConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1244" href="#1244">1244</a>     {
<a class="jxr_linenumber" name="1245" href="#1245">1245</a>         <a href="../../../../../../org/apache/archiva/configuration/NetworkProxyConfiguration.html">NetworkProxyConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/NetworkProxyConfiguration.html">NetworkProxyConfiguration</a>();
<a class="jxr_linenumber" name="1246" href="#1246">1246</a> 
<a class="jxr_linenumber" name="1247" href="#1247">1247</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="1248" href="#1248">1248</a> 
<a class="jxr_linenumber" name="1249" href="#1249">1249</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="1250" href="#1250">1250</a>     String id = value.getId();
<a class="jxr_linenumber" name="1251" href="#1251">1251</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="1252" href="#1252">1252</a>     {
<a class="jxr_linenumber" name="1253" href="#1253">1253</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1254" href="#1254">1254</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1255" href="#1255">1255</a>         {
<a class="jxr_linenumber" name="1256" href="#1256">1256</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="1257" href="#1257">1257</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1258" href="#1258">1258</a>             {
<a class="jxr_linenumber" name="1259" href="#1259">1259</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1260" href="#1260">1260</a>             }
<a class="jxr_linenumber" name="1261" href="#1261">1261</a>         }
<a class="jxr_linenumber" name="1262" href="#1262">1262</a>         id = sb.toString();
<a class="jxr_linenumber" name="1263" href="#1263">1263</a>     }
<a class="jxr_linenumber" name="1264" href="#1264">1264</a> 
<a class="jxr_linenumber" name="1265" href="#1265">1265</a>         value.setId( id );
<a class="jxr_linenumber" name="1266" href="#1266">1266</a>     <em class="jxr_comment">//String protocol = registry.getString( prefix + "protocol", value.getProtocol() );</em>
<a class="jxr_linenumber" name="1267" href="#1267">1267</a> 
<a class="jxr_linenumber" name="1268" href="#1268">1268</a>     List&lt;String&gt; protocolList = registry.getList( prefix + <span class="jxr_string">"protocol"</span> );
<a class="jxr_linenumber" name="1269" href="#1269">1269</a>     String protocol = value.getProtocol();
<a class="jxr_linenumber" name="1270" href="#1270">1270</a>     <strong class="jxr_keyword">if</strong> (protocolList != <strong class="jxr_keyword">null</strong> &amp;&amp; !protocolList.isEmpty() )
<a class="jxr_linenumber" name="1271" href="#1271">1271</a>     {
<a class="jxr_linenumber" name="1272" href="#1272">1272</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1273" href="#1273">1273</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = protocolList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1274" href="#1274">1274</a>         {
<a class="jxr_linenumber" name="1275" href="#1275">1275</a>             sb.append( protocolList.get( i ) );
<a class="jxr_linenumber" name="1276" href="#1276">1276</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1277" href="#1277">1277</a>             {
<a class="jxr_linenumber" name="1278" href="#1278">1278</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1279" href="#1279">1279</a>             }
<a class="jxr_linenumber" name="1280" href="#1280">1280</a>         }
<a class="jxr_linenumber" name="1281" href="#1281">1281</a>         protocol = sb.toString();
<a class="jxr_linenumber" name="1282" href="#1282">1282</a>     }
<a class="jxr_linenumber" name="1283" href="#1283">1283</a> 
<a class="jxr_linenumber" name="1284" href="#1284">1284</a>         value.setProtocol( protocol );
<a class="jxr_linenumber" name="1285" href="#1285">1285</a>     <em class="jxr_comment">//String host = registry.getString( prefix + "host", value.getHost() );</em>
<a class="jxr_linenumber" name="1286" href="#1286">1286</a> 
<a class="jxr_linenumber" name="1287" href="#1287">1287</a>     List&lt;String&gt; hostList = registry.getList( prefix + <span class="jxr_string">"host"</span> );
<a class="jxr_linenumber" name="1288" href="#1288">1288</a>     String host = value.getHost();
<a class="jxr_linenumber" name="1289" href="#1289">1289</a>     <strong class="jxr_keyword">if</strong> (hostList != <strong class="jxr_keyword">null</strong> &amp;&amp; !hostList.isEmpty() )
<a class="jxr_linenumber" name="1290" href="#1290">1290</a>     {
<a class="jxr_linenumber" name="1291" href="#1291">1291</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1292" href="#1292">1292</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = hostList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1293" href="#1293">1293</a>         {
<a class="jxr_linenumber" name="1294" href="#1294">1294</a>             sb.append( hostList.get( i ) );
<a class="jxr_linenumber" name="1295" href="#1295">1295</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1296" href="#1296">1296</a>             {
<a class="jxr_linenumber" name="1297" href="#1297">1297</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1298" href="#1298">1298</a>             }
<a class="jxr_linenumber" name="1299" href="#1299">1299</a>         }
<a class="jxr_linenumber" name="1300" href="#1300">1300</a>         host = sb.toString();
<a class="jxr_linenumber" name="1301" href="#1301">1301</a>     }
<a class="jxr_linenumber" name="1302" href="#1302">1302</a> 
<a class="jxr_linenumber" name="1303" href="#1303">1303</a>         value.setHost( host );
<a class="jxr_linenumber" name="1304" href="#1304">1304</a>     <strong class="jxr_keyword">int</strong> port = registry.getInt( prefix + <span class="jxr_string">"port"</span>, value.getPort() );
<a class="jxr_linenumber" name="1305" href="#1305">1305</a>         value.setPort( port );
<a class="jxr_linenumber" name="1306" href="#1306">1306</a>     <em class="jxr_comment">//String username = registry.getString( prefix + "username", value.getUsername() );</em>
<a class="jxr_linenumber" name="1307" href="#1307">1307</a> 
<a class="jxr_linenumber" name="1308" href="#1308">1308</a>     List&lt;String&gt; usernameList = registry.getList( prefix + <span class="jxr_string">"username"</span> );
<a class="jxr_linenumber" name="1309" href="#1309">1309</a>     String username = value.getUsername();
<a class="jxr_linenumber" name="1310" href="#1310">1310</a>     <strong class="jxr_keyword">if</strong> (usernameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !usernameList.isEmpty() )
<a class="jxr_linenumber" name="1311" href="#1311">1311</a>     {
<a class="jxr_linenumber" name="1312" href="#1312">1312</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1313" href="#1313">1313</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = usernameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1314" href="#1314">1314</a>         {
<a class="jxr_linenumber" name="1315" href="#1315">1315</a>             sb.append( usernameList.get( i ) );
<a class="jxr_linenumber" name="1316" href="#1316">1316</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1317" href="#1317">1317</a>             {
<a class="jxr_linenumber" name="1318" href="#1318">1318</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1319" href="#1319">1319</a>             }
<a class="jxr_linenumber" name="1320" href="#1320">1320</a>         }
<a class="jxr_linenumber" name="1321" href="#1321">1321</a>         username = sb.toString();
<a class="jxr_linenumber" name="1322" href="#1322">1322</a>     }
<a class="jxr_linenumber" name="1323" href="#1323">1323</a> 
<a class="jxr_linenumber" name="1324" href="#1324">1324</a>         value.setUsername( username );
<a class="jxr_linenumber" name="1325" href="#1325">1325</a>     <em class="jxr_comment">//String password = registry.getString( prefix + "password", value.getPassword() );</em>
<a class="jxr_linenumber" name="1326" href="#1326">1326</a> 
<a class="jxr_linenumber" name="1327" href="#1327">1327</a>     List&lt;String&gt; passwordList = registry.getList( prefix + <span class="jxr_string">"password"</span> );
<a class="jxr_linenumber" name="1328" href="#1328">1328</a>     String password = value.getPassword();
<a class="jxr_linenumber" name="1329" href="#1329">1329</a>     <strong class="jxr_keyword">if</strong> (passwordList != <strong class="jxr_keyword">null</strong> &amp;&amp; !passwordList.isEmpty() )
<a class="jxr_linenumber" name="1330" href="#1330">1330</a>     {
<a class="jxr_linenumber" name="1331" href="#1331">1331</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1332" href="#1332">1332</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = passwordList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1333" href="#1333">1333</a>         {
<a class="jxr_linenumber" name="1334" href="#1334">1334</a>             sb.append( passwordList.get( i ) );
<a class="jxr_linenumber" name="1335" href="#1335">1335</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1336" href="#1336">1336</a>             {
<a class="jxr_linenumber" name="1337" href="#1337">1337</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1338" href="#1338">1338</a>             }
<a class="jxr_linenumber" name="1339" href="#1339">1339</a>         }
<a class="jxr_linenumber" name="1340" href="#1340">1340</a>         password = sb.toString();
<a class="jxr_linenumber" name="1341" href="#1341">1341</a>     }
<a class="jxr_linenumber" name="1342" href="#1342">1342</a> 
<a class="jxr_linenumber" name="1343" href="#1343">1343</a>         value.setPassword( password );
<a class="jxr_linenumber" name="1344" href="#1344">1344</a>         <strong class="jxr_keyword">boolean</strong> useNtlm = registry.getBoolean( prefix + <span class="jxr_string">"useNtlm"</span>, value.isUseNtlm() );
<a class="jxr_linenumber" name="1345" href="#1345">1345</a>         value.setUseNtlm( useNtlm );
<a class="jxr_linenumber" name="1346" href="#1346">1346</a> 
<a class="jxr_linenumber" name="1347" href="#1347">1347</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1348" href="#1348">1348</a>     }
<a class="jxr_linenumber" name="1349" href="#1349">1349</a>     
<a class="jxr_linenumber" name="1350" href="#1350">1350</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/RepositoryScanningConfiguration.html">RepositoryScanningConfiguration</a> readRepositoryScanningConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1351" href="#1351">1351</a>     {
<a class="jxr_linenumber" name="1352" href="#1352">1352</a>         <a href="../../../../../../org/apache/archiva/configuration/RepositoryScanningConfiguration.html">RepositoryScanningConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/RepositoryScanningConfiguration.html">RepositoryScanningConfiguration</a>();
<a class="jxr_linenumber" name="1353" href="#1353">1353</a> 
<a class="jxr_linenumber" name="1354" href="#1354">1354</a>         java.util.List fileTypes = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;FileType&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1355" href="#1355">1355</a>         List fileTypesSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"fileTypes.fileType"</span> );
<a class="jxr_linenumber" name="1356" href="#1356">1356</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = fileTypesSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="1357" href="#1357">1357</a>         {
<a class="jxr_linenumber" name="1358" href="#1358">1358</a>             <a href="../../../../../../org/apache/archiva/configuration/FileType.html">FileType</a> v = readFileType( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="1359" href="#1359">1359</a>             fileTypes.add( v );
<a class="jxr_linenumber" name="1360" href="#1360">1360</a>         }
<a class="jxr_linenumber" name="1361" href="#1361">1361</a>         value.setFileTypes( fileTypes );
<a class="jxr_linenumber" name="1362" href="#1362">1362</a>         java.util.List knownContentConsumers = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1363" href="#1363">1363</a>         knownContentConsumers.addAll( registry.getList( prefix + <span class="jxr_string">"knownContentConsumers.knownContentConsumer"</span> ) );
<a class="jxr_linenumber" name="1364" href="#1364">1364</a>         value.setKnownContentConsumers( knownContentConsumers );
<a class="jxr_linenumber" name="1365" href="#1365">1365</a>         java.util.List invalidContentConsumers = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1366" href="#1366">1366</a>         invalidContentConsumers.addAll( registry.getList( prefix + <span class="jxr_string">"invalidContentConsumers.invalidContentConsumer"</span> ) );
<a class="jxr_linenumber" name="1367" href="#1367">1367</a>         value.setInvalidContentConsumers( invalidContentConsumers );
<a class="jxr_linenumber" name="1368" href="#1368">1368</a> 
<a class="jxr_linenumber" name="1369" href="#1369">1369</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1370" href="#1370">1370</a>     }
<a class="jxr_linenumber" name="1371" href="#1371">1371</a>     
<a class="jxr_linenumber" name="1372" href="#1372">1372</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/FileType.html">FileType</a> readFileType( String prefix, Registry registry )
<a class="jxr_linenumber" name="1373" href="#1373">1373</a>     {
<a class="jxr_linenumber" name="1374" href="#1374">1374</a>         <a href="../../../../../../org/apache/archiva/configuration/FileType.html">FileType</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/FileType.html">FileType</a>();
<a class="jxr_linenumber" name="1375" href="#1375">1375</a> 
<a class="jxr_linenumber" name="1376" href="#1376">1376</a>     <em class="jxr_comment">//String id = registry.getString( prefix + "id", value.getId() );</em>
<a class="jxr_linenumber" name="1377" href="#1377">1377</a> 
<a class="jxr_linenumber" name="1378" href="#1378">1378</a>     List&lt;String&gt; idList = registry.getList( prefix + <span class="jxr_string">"id"</span> );
<a class="jxr_linenumber" name="1379" href="#1379">1379</a>     String id = value.getId();
<a class="jxr_linenumber" name="1380" href="#1380">1380</a>     <strong class="jxr_keyword">if</strong> (idList != <strong class="jxr_keyword">null</strong> &amp;&amp; !idList.isEmpty() )
<a class="jxr_linenumber" name="1381" href="#1381">1381</a>     {
<a class="jxr_linenumber" name="1382" href="#1382">1382</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1383" href="#1383">1383</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = idList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1384" href="#1384">1384</a>         {
<a class="jxr_linenumber" name="1385" href="#1385">1385</a>             sb.append( idList.get( i ) );
<a class="jxr_linenumber" name="1386" href="#1386">1386</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1387" href="#1387">1387</a>             {
<a class="jxr_linenumber" name="1388" href="#1388">1388</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1389" href="#1389">1389</a>             }
<a class="jxr_linenumber" name="1390" href="#1390">1390</a>         }
<a class="jxr_linenumber" name="1391" href="#1391">1391</a>         id = sb.toString();
<a class="jxr_linenumber" name="1392" href="#1392">1392</a>     }
<a class="jxr_linenumber" name="1393" href="#1393">1393</a> 
<a class="jxr_linenumber" name="1394" href="#1394">1394</a>         value.setId( id );
<a class="jxr_linenumber" name="1395" href="#1395">1395</a>         java.util.List patterns = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1396" href="#1396">1396</a>         patterns.addAll( registry.getList( prefix + <span class="jxr_string">"patterns.pattern"</span> ) );
<a class="jxr_linenumber" name="1397" href="#1397">1397</a>         value.setPatterns( patterns );
<a class="jxr_linenumber" name="1398" href="#1398">1398</a> 
<a class="jxr_linenumber" name="1399" href="#1399">1399</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1400" href="#1400">1400</a>     }
<a class="jxr_linenumber" name="1401" href="#1401">1401</a>     
<a class="jxr_linenumber" name="1402" href="#1402">1402</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/OrganisationInformation.html">OrganisationInformation</a> readOrganisationInformation( String prefix, Registry registry )
<a class="jxr_linenumber" name="1403" href="#1403">1403</a>     {
<a class="jxr_linenumber" name="1404" href="#1404">1404</a>         <a href="../../../../../../org/apache/archiva/configuration/OrganisationInformation.html">OrganisationInformation</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/OrganisationInformation.html">OrganisationInformation</a>();
<a class="jxr_linenumber" name="1405" href="#1405">1405</a> 
<a class="jxr_linenumber" name="1406" href="#1406">1406</a>     <em class="jxr_comment">//String name = registry.getString( prefix + "name", value.getName() );</em>
<a class="jxr_linenumber" name="1407" href="#1407">1407</a> 
<a class="jxr_linenumber" name="1408" href="#1408">1408</a>     List&lt;String&gt; nameList = registry.getList( prefix + <span class="jxr_string">"name"</span> );
<a class="jxr_linenumber" name="1409" href="#1409">1409</a>     String name = value.getName();
<a class="jxr_linenumber" name="1410" href="#1410">1410</a>     <strong class="jxr_keyword">if</strong> (nameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !nameList.isEmpty() )
<a class="jxr_linenumber" name="1411" href="#1411">1411</a>     {
<a class="jxr_linenumber" name="1412" href="#1412">1412</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1413" href="#1413">1413</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = nameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1414" href="#1414">1414</a>         {
<a class="jxr_linenumber" name="1415" href="#1415">1415</a>             sb.append( nameList.get( i ) );
<a class="jxr_linenumber" name="1416" href="#1416">1416</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1417" href="#1417">1417</a>             {
<a class="jxr_linenumber" name="1418" href="#1418">1418</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1419" href="#1419">1419</a>             }
<a class="jxr_linenumber" name="1420" href="#1420">1420</a>         }
<a class="jxr_linenumber" name="1421" href="#1421">1421</a>         name = sb.toString();
<a class="jxr_linenumber" name="1422" href="#1422">1422</a>     }
<a class="jxr_linenumber" name="1423" href="#1423">1423</a> 
<a class="jxr_linenumber" name="1424" href="#1424">1424</a>         value.setName( name );
<a class="jxr_linenumber" name="1425" href="#1425">1425</a>     <em class="jxr_comment">//String url = registry.getString( prefix + "url", value.getUrl() );</em>
<a class="jxr_linenumber" name="1426" href="#1426">1426</a> 
<a class="jxr_linenumber" name="1427" href="#1427">1427</a>     List&lt;String&gt; urlList = registry.getList( prefix + <span class="jxr_string">"url"</span> );
<a class="jxr_linenumber" name="1428" href="#1428">1428</a>     String url = value.getUrl();
<a class="jxr_linenumber" name="1429" href="#1429">1429</a>     <strong class="jxr_keyword">if</strong> (urlList != <strong class="jxr_keyword">null</strong> &amp;&amp; !urlList.isEmpty() )
<a class="jxr_linenumber" name="1430" href="#1430">1430</a>     {
<a class="jxr_linenumber" name="1431" href="#1431">1431</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1432" href="#1432">1432</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = urlList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1433" href="#1433">1433</a>         {
<a class="jxr_linenumber" name="1434" href="#1434">1434</a>             sb.append( urlList.get( i ) );
<a class="jxr_linenumber" name="1435" href="#1435">1435</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1436" href="#1436">1436</a>             {
<a class="jxr_linenumber" name="1437" href="#1437">1437</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1438" href="#1438">1438</a>             }
<a class="jxr_linenumber" name="1439" href="#1439">1439</a>         }
<a class="jxr_linenumber" name="1440" href="#1440">1440</a>         url = sb.toString();
<a class="jxr_linenumber" name="1441" href="#1441">1441</a>     }
<a class="jxr_linenumber" name="1442" href="#1442">1442</a> 
<a class="jxr_linenumber" name="1443" href="#1443">1443</a>         value.setUrl( url );
<a class="jxr_linenumber" name="1444" href="#1444">1444</a>     <em class="jxr_comment">//String logoLocation = registry.getString( prefix + "logoLocation", value.getLogoLocation() );</em>
<a class="jxr_linenumber" name="1445" href="#1445">1445</a> 
<a class="jxr_linenumber" name="1446" href="#1446">1446</a>     List&lt;String&gt; logoLocationList = registry.getList( prefix + <span class="jxr_string">"logoLocation"</span> );
<a class="jxr_linenumber" name="1447" href="#1447">1447</a>     String logoLocation = value.getLogoLocation();
<a class="jxr_linenumber" name="1448" href="#1448">1448</a>     <strong class="jxr_keyword">if</strong> (logoLocationList != <strong class="jxr_keyword">null</strong> &amp;&amp; !logoLocationList.isEmpty() )
<a class="jxr_linenumber" name="1449" href="#1449">1449</a>     {
<a class="jxr_linenumber" name="1450" href="#1450">1450</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1451" href="#1451">1451</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = logoLocationList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1452" href="#1452">1452</a>         {
<a class="jxr_linenumber" name="1453" href="#1453">1453</a>             sb.append( logoLocationList.get( i ) );
<a class="jxr_linenumber" name="1454" href="#1454">1454</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1455" href="#1455">1455</a>             {
<a class="jxr_linenumber" name="1456" href="#1456">1456</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1457" href="#1457">1457</a>             }
<a class="jxr_linenumber" name="1458" href="#1458">1458</a>         }
<a class="jxr_linenumber" name="1459" href="#1459">1459</a>         logoLocation = sb.toString();
<a class="jxr_linenumber" name="1460" href="#1460">1460</a>     }
<a class="jxr_linenumber" name="1461" href="#1461">1461</a> 
<a class="jxr_linenumber" name="1462" href="#1462">1462</a>         value.setLogoLocation( logoLocation );
<a class="jxr_linenumber" name="1463" href="#1463">1463</a> 
<a class="jxr_linenumber" name="1464" href="#1464">1464</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1465" href="#1465">1465</a>     }
<a class="jxr_linenumber" name="1466" href="#1466">1466</a>     
<a class="jxr_linenumber" name="1467" href="#1467">1467</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/WebappConfiguration.html">WebappConfiguration</a> readWebappConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1468" href="#1468">1468</a>     {
<a class="jxr_linenumber" name="1469" href="#1469">1469</a>         <a href="../../../../../../org/apache/archiva/configuration/WebappConfiguration.html">WebappConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/WebappConfiguration.html">WebappConfiguration</a>();
<a class="jxr_linenumber" name="1470" href="#1470">1470</a> 
<a class="jxr_linenumber" name="1471" href="#1471">1471</a>         <a href="../../../../../../org/apache/archiva/configuration/UserInterfaceOptions.html">UserInterfaceOptions</a> ui = readUserInterfaceOptions( prefix + <span class="jxr_string">"ui."</span>, registry );
<a class="jxr_linenumber" name="1472" href="#1472">1472</a>         value.setUi( ui );
<a class="jxr_linenumber" name="1473" href="#1473">1473</a> 
<a class="jxr_linenumber" name="1474" href="#1474">1474</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1475" href="#1475">1475</a>     }
<a class="jxr_linenumber" name="1476" href="#1476">1476</a>     
<a class="jxr_linenumber" name="1477" href="#1477">1477</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/UserInterfaceOptions.html">UserInterfaceOptions</a> readUserInterfaceOptions( String prefix, Registry registry )
<a class="jxr_linenumber" name="1478" href="#1478">1478</a>     {
<a class="jxr_linenumber" name="1479" href="#1479">1479</a>         <a href="../../../../../../org/apache/archiva/configuration/UserInterfaceOptions.html">UserInterfaceOptions</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/UserInterfaceOptions.html">UserInterfaceOptions</a>();
<a class="jxr_linenumber" name="1480" href="#1480">1480</a> 
<a class="jxr_linenumber" name="1481" href="#1481">1481</a>         <strong class="jxr_keyword">boolean</strong> showFindArtifacts = registry.getBoolean( prefix + <span class="jxr_string">"showFindArtifacts"</span>, value.isShowFindArtifacts() );
<a class="jxr_linenumber" name="1482" href="#1482">1482</a>         value.setShowFindArtifacts( showFindArtifacts );
<a class="jxr_linenumber" name="1483" href="#1483">1483</a>         <strong class="jxr_keyword">boolean</strong> appletFindEnabled = registry.getBoolean( prefix + <span class="jxr_string">"appletFindEnabled"</span>, value.isAppletFindEnabled() );
<a class="jxr_linenumber" name="1484" href="#1484">1484</a>         value.setAppletFindEnabled( appletFindEnabled );
<a class="jxr_linenumber" name="1485" href="#1485">1485</a>         <strong class="jxr_keyword">boolean</strong> disableEasterEggs = registry.getBoolean( prefix + <span class="jxr_string">"disableEasterEggs"</span>, value.isDisableEasterEggs() );
<a class="jxr_linenumber" name="1486" href="#1486">1486</a>         value.setDisableEasterEggs( disableEasterEggs );
<a class="jxr_linenumber" name="1487" href="#1487">1487</a>     <em class="jxr_comment">//String applicationUrl = registry.getString( prefix + "applicationUrl", value.getApplicationUrl() );</em>
<a class="jxr_linenumber" name="1488" href="#1488">1488</a> 
<a class="jxr_linenumber" name="1489" href="#1489">1489</a>     List&lt;String&gt; applicationUrlList = registry.getList( prefix + <span class="jxr_string">"applicationUrl"</span> );
<a class="jxr_linenumber" name="1490" href="#1490">1490</a>     String applicationUrl = value.getApplicationUrl();
<a class="jxr_linenumber" name="1491" href="#1491">1491</a>     <strong class="jxr_keyword">if</strong> (applicationUrlList != <strong class="jxr_keyword">null</strong> &amp;&amp; !applicationUrlList.isEmpty() )
<a class="jxr_linenumber" name="1492" href="#1492">1492</a>     {
<a class="jxr_linenumber" name="1493" href="#1493">1493</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1494" href="#1494">1494</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = applicationUrlList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1495" href="#1495">1495</a>         {
<a class="jxr_linenumber" name="1496" href="#1496">1496</a>             sb.append( applicationUrlList.get( i ) );
<a class="jxr_linenumber" name="1497" href="#1497">1497</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1498" href="#1498">1498</a>             {
<a class="jxr_linenumber" name="1499" href="#1499">1499</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1500" href="#1500">1500</a>             }
<a class="jxr_linenumber" name="1501" href="#1501">1501</a>         }
<a class="jxr_linenumber" name="1502" href="#1502">1502</a>         applicationUrl = sb.toString();
<a class="jxr_linenumber" name="1503" href="#1503">1503</a>     }
<a class="jxr_linenumber" name="1504" href="#1504">1504</a> 
<a class="jxr_linenumber" name="1505" href="#1505">1505</a>         value.setApplicationUrl( applicationUrl );
<a class="jxr_linenumber" name="1506" href="#1506">1506</a>         <strong class="jxr_keyword">boolean</strong> disableRegistration = registry.getBoolean( prefix + <span class="jxr_string">"disableRegistration"</span>, value.isDisableRegistration() );
<a class="jxr_linenumber" name="1507" href="#1507">1507</a>         value.setDisableRegistration( disableRegistration );
<a class="jxr_linenumber" name="1508" href="#1508">1508</a> 
<a class="jxr_linenumber" name="1509" href="#1509">1509</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1510" href="#1510">1510</a>     }
<a class="jxr_linenumber" name="1511" href="#1511">1511</a>     
<a class="jxr_linenumber" name="1512" href="#1512">1512</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/NetworkConfiguration.html">NetworkConfiguration</a> readNetworkConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1513" href="#1513">1513</a>     {
<a class="jxr_linenumber" name="1514" href="#1514">1514</a>         <a href="../../../../../../org/apache/archiva/configuration/NetworkConfiguration.html">NetworkConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/NetworkConfiguration.html">NetworkConfiguration</a>();
<a class="jxr_linenumber" name="1515" href="#1515">1515</a> 
<a class="jxr_linenumber" name="1516" href="#1516">1516</a>     <strong class="jxr_keyword">int</strong> maxTotal = registry.getInt( prefix + <span class="jxr_string">"maxTotal"</span>, value.getMaxTotal() );
<a class="jxr_linenumber" name="1517" href="#1517">1517</a>         value.setMaxTotal( maxTotal );
<a class="jxr_linenumber" name="1518" href="#1518">1518</a>     <strong class="jxr_keyword">int</strong> maxTotalPerHost = registry.getInt( prefix + <span class="jxr_string">"maxTotalPerHost"</span>, value.getMaxTotalPerHost() );
<a class="jxr_linenumber" name="1519" href="#1519">1519</a>         value.setMaxTotalPerHost( maxTotalPerHost );
<a class="jxr_linenumber" name="1520" href="#1520">1520</a>         <strong class="jxr_keyword">boolean</strong> usePooling = registry.getBoolean( prefix + <span class="jxr_string">"usePooling"</span>, value.isUsePooling() );
<a class="jxr_linenumber" name="1521" href="#1521">1521</a>         value.setUsePooling( usePooling );
<a class="jxr_linenumber" name="1522" href="#1522">1522</a> 
<a class="jxr_linenumber" name="1523" href="#1523">1523</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1524" href="#1524">1524</a>     }
<a class="jxr_linenumber" name="1525" href="#1525">1525</a>     
<a class="jxr_linenumber" name="1526" href="#1526">1526</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/ArchivaRuntimeConfiguration.html">ArchivaRuntimeConfiguration</a> readArchivaRuntimeConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1527" href="#1527">1527</a>     {
<a class="jxr_linenumber" name="1528" href="#1528">1528</a>         <a href="../../../../../../org/apache/archiva/configuration/ArchivaRuntimeConfiguration.html">ArchivaRuntimeConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/ArchivaRuntimeConfiguration.html">ArchivaRuntimeConfiguration</a>();
<a class="jxr_linenumber" name="1529" href="#1529">1529</a> 
<a class="jxr_linenumber" name="1530" href="#1530">1530</a>         <a href="../../../../../../org/apache/archiva/configuration/CacheConfiguration.html">CacheConfiguration</a> urlFailureCacheConfiguration = readCacheConfiguration( prefix + <span class="jxr_string">"urlFailureCacheConfiguration."</span>, registry );
<a class="jxr_linenumber" name="1531" href="#1531">1531</a>         value.setUrlFailureCacheConfiguration( urlFailureCacheConfiguration );
<a class="jxr_linenumber" name="1532" href="#1532">1532</a> 
<a class="jxr_linenumber" name="1533" href="#1533">1533</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1534" href="#1534">1534</a>     }
<a class="jxr_linenumber" name="1535" href="#1535">1535</a>     
<a class="jxr_linenumber" name="1536" href="#1536">1536</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/RedbackRuntimeConfiguration.html">RedbackRuntimeConfiguration</a> readRedbackRuntimeConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1537" href="#1537">1537</a>     {
<a class="jxr_linenumber" name="1538" href="#1538">1538</a>         <a href="../../../../../../org/apache/archiva/configuration/RedbackRuntimeConfiguration.html">RedbackRuntimeConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/RedbackRuntimeConfiguration.html">RedbackRuntimeConfiguration</a>();
<a class="jxr_linenumber" name="1539" href="#1539">1539</a> 
<a class="jxr_linenumber" name="1540" href="#1540">1540</a>         <strong class="jxr_keyword">boolean</strong> migratedFromRedbackConfiguration = registry.getBoolean( prefix + <span class="jxr_string">"migratedFromRedbackConfiguration"</span>, value.isMigratedFromRedbackConfiguration() );
<a class="jxr_linenumber" name="1541" href="#1541">1541</a>         value.setMigratedFromRedbackConfiguration( migratedFromRedbackConfiguration );
<a class="jxr_linenumber" name="1542" href="#1542">1542</a>         java.util.List userManagerImpls = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1543" href="#1543">1543</a>         userManagerImpls.addAll( registry.getList( prefix + <span class="jxr_string">"userManagerImpls.userManagerImpl"</span> ) );
<a class="jxr_linenumber" name="1544" href="#1544">1544</a>         value.setUserManagerImpls( userManagerImpls );
<a class="jxr_linenumber" name="1545" href="#1545">1545</a>         java.util.List rbacManagerImpls = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1546" href="#1546">1546</a>         rbacManagerImpls.addAll( registry.getList( prefix + <span class="jxr_string">"rbacManagerImpls.rbacManagerImpl"</span> ) );
<a class="jxr_linenumber" name="1547" href="#1547">1547</a>         value.setRbacManagerImpls( rbacManagerImpls );
<a class="jxr_linenumber" name="1548" href="#1548">1548</a>         <a href="../../../../../../org/apache/archiva/configuration/LdapConfiguration.html">LdapConfiguration</a> ldapConfiguration = readLdapConfiguration( prefix + <span class="jxr_string">"ldapConfiguration."</span>, registry );
<a class="jxr_linenumber" name="1549" href="#1549">1549</a>         value.setLdapConfiguration( ldapConfiguration );
<a class="jxr_linenumber" name="1550" href="#1550">1550</a>         java.util.List ldapGroupMappings = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;LdapGroupMapping&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1551" href="#1551">1551</a>         List ldapGroupMappingsSubsets = registry.getSubsetList( prefix + <span class="jxr_string">"ldapGroupMappings.ldapGroupMapping"</span> );
<a class="jxr_linenumber" name="1552" href="#1552">1552</a>         <strong class="jxr_keyword">for</strong> ( Iterator i = ldapGroupMappingsSubsets.iterator(); i.hasNext(); )
<a class="jxr_linenumber" name="1553" href="#1553">1553</a>         {
<a class="jxr_linenumber" name="1554" href="#1554">1554</a>             <a href="../../../../../../org/apache/archiva/configuration/LdapGroupMapping.html">LdapGroupMapping</a> v = readLdapGroupMapping( <span class="jxr_string">""</span>, (Registry) i.next() );
<a class="jxr_linenumber" name="1555" href="#1555">1555</a>             ldapGroupMappings.add( v );
<a class="jxr_linenumber" name="1556" href="#1556">1556</a>         }
<a class="jxr_linenumber" name="1557" href="#1557">1557</a>         value.setLdapGroupMappings( ldapGroupMappings );
<a class="jxr_linenumber" name="1558" href="#1558">1558</a>         java.util.Map configurationProperties = registry.getProperties( prefix + <span class="jxr_string">"configurationProperties"</span> );
<a class="jxr_linenumber" name="1559" href="#1559">1559</a>         value.setConfigurationProperties( configurationProperties );
<a class="jxr_linenumber" name="1560" href="#1560">1560</a>         <strong class="jxr_keyword">boolean</strong> useUsersCache = registry.getBoolean( prefix + <span class="jxr_string">"useUsersCache"</span>, value.isUseUsersCache() );
<a class="jxr_linenumber" name="1561" href="#1561">1561</a>         value.setUseUsersCache( useUsersCache );
<a class="jxr_linenumber" name="1562" href="#1562">1562</a>         <a href="../../../../../../org/apache/archiva/configuration/CacheConfiguration.html">CacheConfiguration</a> usersCacheConfiguration = readCacheConfiguration( prefix + <span class="jxr_string">"usersCacheConfiguration."</span>, registry );
<a class="jxr_linenumber" name="1563" href="#1563">1563</a>         value.setUsersCacheConfiguration( usersCacheConfiguration );
<a class="jxr_linenumber" name="1564" href="#1564">1564</a> 
<a class="jxr_linenumber" name="1565" href="#1565">1565</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1566" href="#1566">1566</a>     }
<a class="jxr_linenumber" name="1567" href="#1567">1567</a>     
<a class="jxr_linenumber" name="1568" href="#1568">1568</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/LdapConfiguration.html">LdapConfiguration</a> readLdapConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1569" href="#1569">1569</a>     {
<a class="jxr_linenumber" name="1570" href="#1570">1570</a>         <a href="../../../../../../org/apache/archiva/configuration/LdapConfiguration.html">LdapConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/LdapConfiguration.html">LdapConfiguration</a>();
<a class="jxr_linenumber" name="1571" href="#1571">1571</a> 
<a class="jxr_linenumber" name="1572" href="#1572">1572</a>     <em class="jxr_comment">//String hostName = registry.getString( prefix + "hostName", value.getHostName() );</em>
<a class="jxr_linenumber" name="1573" href="#1573">1573</a> 
<a class="jxr_linenumber" name="1574" href="#1574">1574</a>     List&lt;String&gt; hostNameList = registry.getList( prefix + <span class="jxr_string">"hostName"</span> );
<a class="jxr_linenumber" name="1575" href="#1575">1575</a>     String hostName = value.getHostName();
<a class="jxr_linenumber" name="1576" href="#1576">1576</a>     <strong class="jxr_keyword">if</strong> (hostNameList != <strong class="jxr_keyword">null</strong> &amp;&amp; !hostNameList.isEmpty() )
<a class="jxr_linenumber" name="1577" href="#1577">1577</a>     {
<a class="jxr_linenumber" name="1578" href="#1578">1578</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1579" href="#1579">1579</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = hostNameList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1580" href="#1580">1580</a>         {
<a class="jxr_linenumber" name="1581" href="#1581">1581</a>             sb.append( hostNameList.get( i ) );
<a class="jxr_linenumber" name="1582" href="#1582">1582</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1583" href="#1583">1583</a>             {
<a class="jxr_linenumber" name="1584" href="#1584">1584</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1585" href="#1585">1585</a>             }
<a class="jxr_linenumber" name="1586" href="#1586">1586</a>         }
<a class="jxr_linenumber" name="1587" href="#1587">1587</a>         hostName = sb.toString();
<a class="jxr_linenumber" name="1588" href="#1588">1588</a>     }
<a class="jxr_linenumber" name="1589" href="#1589">1589</a> 
<a class="jxr_linenumber" name="1590" href="#1590">1590</a>         value.setHostName( hostName );
<a class="jxr_linenumber" name="1591" href="#1591">1591</a>     <strong class="jxr_keyword">int</strong> port = registry.getInt( prefix + <span class="jxr_string">"port"</span>, value.getPort() );
<a class="jxr_linenumber" name="1592" href="#1592">1592</a>         value.setPort( port );
<a class="jxr_linenumber" name="1593" href="#1593">1593</a>         <strong class="jxr_keyword">boolean</strong> ssl = registry.getBoolean( prefix + <span class="jxr_string">"ssl"</span>, value.isSsl() );
<a class="jxr_linenumber" name="1594" href="#1594">1594</a>         value.setSsl( ssl );
<a class="jxr_linenumber" name="1595" href="#1595">1595</a>     <em class="jxr_comment">//String baseDn = registry.getString( prefix + "baseDn", value.getBaseDn() );</em>
<a class="jxr_linenumber" name="1596" href="#1596">1596</a> 
<a class="jxr_linenumber" name="1597" href="#1597">1597</a>     List&lt;String&gt; baseDnList = registry.getList( prefix + <span class="jxr_string">"baseDn"</span> );
<a class="jxr_linenumber" name="1598" href="#1598">1598</a>     String baseDn = value.getBaseDn();
<a class="jxr_linenumber" name="1599" href="#1599">1599</a>     <strong class="jxr_keyword">if</strong> (baseDnList != <strong class="jxr_keyword">null</strong> &amp;&amp; !baseDnList.isEmpty() )
<a class="jxr_linenumber" name="1600" href="#1600">1600</a>     {
<a class="jxr_linenumber" name="1601" href="#1601">1601</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1602" href="#1602">1602</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = baseDnList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1603" href="#1603">1603</a>         {
<a class="jxr_linenumber" name="1604" href="#1604">1604</a>             sb.append( baseDnList.get( i ) );
<a class="jxr_linenumber" name="1605" href="#1605">1605</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1606" href="#1606">1606</a>             {
<a class="jxr_linenumber" name="1607" href="#1607">1607</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1608" href="#1608">1608</a>             }
<a class="jxr_linenumber" name="1609" href="#1609">1609</a>         }
<a class="jxr_linenumber" name="1610" href="#1610">1610</a>         baseDn = sb.toString();
<a class="jxr_linenumber" name="1611" href="#1611">1611</a>     }
<a class="jxr_linenumber" name="1612" href="#1612">1612</a> 
<a class="jxr_linenumber" name="1613" href="#1613">1613</a>         value.setBaseDn( baseDn );
<a class="jxr_linenumber" name="1614" href="#1614">1614</a>     <em class="jxr_comment">//String baseGroupsDn = registry.getString( prefix + "baseGroupsDn", value.getBaseGroupsDn() );</em>
<a class="jxr_linenumber" name="1615" href="#1615">1615</a> 
<a class="jxr_linenumber" name="1616" href="#1616">1616</a>     List&lt;String&gt; baseGroupsDnList = registry.getList( prefix + <span class="jxr_string">"baseGroupsDn"</span> );
<a class="jxr_linenumber" name="1617" href="#1617">1617</a>     String baseGroupsDn = value.getBaseGroupsDn();
<a class="jxr_linenumber" name="1618" href="#1618">1618</a>     <strong class="jxr_keyword">if</strong> (baseGroupsDnList != <strong class="jxr_keyword">null</strong> &amp;&amp; !baseGroupsDnList.isEmpty() )
<a class="jxr_linenumber" name="1619" href="#1619">1619</a>     {
<a class="jxr_linenumber" name="1620" href="#1620">1620</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1621" href="#1621">1621</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = baseGroupsDnList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1622" href="#1622">1622</a>         {
<a class="jxr_linenumber" name="1623" href="#1623">1623</a>             sb.append( baseGroupsDnList.get( i ) );
<a class="jxr_linenumber" name="1624" href="#1624">1624</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1625" href="#1625">1625</a>             {
<a class="jxr_linenumber" name="1626" href="#1626">1626</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1627" href="#1627">1627</a>             }
<a class="jxr_linenumber" name="1628" href="#1628">1628</a>         }
<a class="jxr_linenumber" name="1629" href="#1629">1629</a>         baseGroupsDn = sb.toString();
<a class="jxr_linenumber" name="1630" href="#1630">1630</a>     }
<a class="jxr_linenumber" name="1631" href="#1631">1631</a> 
<a class="jxr_linenumber" name="1632" href="#1632">1632</a>         value.setBaseGroupsDn( baseGroupsDn );
<a class="jxr_linenumber" name="1633" href="#1633">1633</a>     <em class="jxr_comment">//String contextFactory = registry.getString( prefix + "contextFactory", value.getContextFactory() );</em>
<a class="jxr_linenumber" name="1634" href="#1634">1634</a> 
<a class="jxr_linenumber" name="1635" href="#1635">1635</a>     List&lt;String&gt; contextFactoryList = registry.getList( prefix + <span class="jxr_string">"contextFactory"</span> );
<a class="jxr_linenumber" name="1636" href="#1636">1636</a>     String contextFactory = value.getContextFactory();
<a class="jxr_linenumber" name="1637" href="#1637">1637</a>     <strong class="jxr_keyword">if</strong> (contextFactoryList != <strong class="jxr_keyword">null</strong> &amp;&amp; !contextFactoryList.isEmpty() )
<a class="jxr_linenumber" name="1638" href="#1638">1638</a>     {
<a class="jxr_linenumber" name="1639" href="#1639">1639</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1640" href="#1640">1640</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = contextFactoryList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1641" href="#1641">1641</a>         {
<a class="jxr_linenumber" name="1642" href="#1642">1642</a>             sb.append( contextFactoryList.get( i ) );
<a class="jxr_linenumber" name="1643" href="#1643">1643</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1644" href="#1644">1644</a>             {
<a class="jxr_linenumber" name="1645" href="#1645">1645</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1646" href="#1646">1646</a>             }
<a class="jxr_linenumber" name="1647" href="#1647">1647</a>         }
<a class="jxr_linenumber" name="1648" href="#1648">1648</a>         contextFactory = sb.toString();
<a class="jxr_linenumber" name="1649" href="#1649">1649</a>     }
<a class="jxr_linenumber" name="1650" href="#1650">1650</a> 
<a class="jxr_linenumber" name="1651" href="#1651">1651</a>         value.setContextFactory( contextFactory );
<a class="jxr_linenumber" name="1652" href="#1652">1652</a>     <em class="jxr_comment">//String bindDn = registry.getString( prefix + "bindDn", value.getBindDn() );</em>
<a class="jxr_linenumber" name="1653" href="#1653">1653</a> 
<a class="jxr_linenumber" name="1654" href="#1654">1654</a>     List&lt;String&gt; bindDnList = registry.getList( prefix + <span class="jxr_string">"bindDn"</span> );
<a class="jxr_linenumber" name="1655" href="#1655">1655</a>     String bindDn = value.getBindDn();
<a class="jxr_linenumber" name="1656" href="#1656">1656</a>     <strong class="jxr_keyword">if</strong> (bindDnList != <strong class="jxr_keyword">null</strong> &amp;&amp; !bindDnList.isEmpty() )
<a class="jxr_linenumber" name="1657" href="#1657">1657</a>     {
<a class="jxr_linenumber" name="1658" href="#1658">1658</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1659" href="#1659">1659</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = bindDnList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1660" href="#1660">1660</a>         {
<a class="jxr_linenumber" name="1661" href="#1661">1661</a>             sb.append( bindDnList.get( i ) );
<a class="jxr_linenumber" name="1662" href="#1662">1662</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1663" href="#1663">1663</a>             {
<a class="jxr_linenumber" name="1664" href="#1664">1664</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1665" href="#1665">1665</a>             }
<a class="jxr_linenumber" name="1666" href="#1666">1666</a>         }
<a class="jxr_linenumber" name="1667" href="#1667">1667</a>         bindDn = sb.toString();
<a class="jxr_linenumber" name="1668" href="#1668">1668</a>     }
<a class="jxr_linenumber" name="1669" href="#1669">1669</a> 
<a class="jxr_linenumber" name="1670" href="#1670">1670</a>         value.setBindDn( bindDn );
<a class="jxr_linenumber" name="1671" href="#1671">1671</a>     <em class="jxr_comment">//String password = registry.getString( prefix + "password", value.getPassword() );</em>
<a class="jxr_linenumber" name="1672" href="#1672">1672</a> 
<a class="jxr_linenumber" name="1673" href="#1673">1673</a>     List&lt;String&gt; passwordList = registry.getList( prefix + <span class="jxr_string">"password"</span> );
<a class="jxr_linenumber" name="1674" href="#1674">1674</a>     String password = value.getPassword();
<a class="jxr_linenumber" name="1675" href="#1675">1675</a>     <strong class="jxr_keyword">if</strong> (passwordList != <strong class="jxr_keyword">null</strong> &amp;&amp; !passwordList.isEmpty() )
<a class="jxr_linenumber" name="1676" href="#1676">1676</a>     {
<a class="jxr_linenumber" name="1677" href="#1677">1677</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1678" href="#1678">1678</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = passwordList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1679" href="#1679">1679</a>         {
<a class="jxr_linenumber" name="1680" href="#1680">1680</a>             sb.append( passwordList.get( i ) );
<a class="jxr_linenumber" name="1681" href="#1681">1681</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1682" href="#1682">1682</a>             {
<a class="jxr_linenumber" name="1683" href="#1683">1683</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1684" href="#1684">1684</a>             }
<a class="jxr_linenumber" name="1685" href="#1685">1685</a>         }
<a class="jxr_linenumber" name="1686" href="#1686">1686</a>         password = sb.toString();
<a class="jxr_linenumber" name="1687" href="#1687">1687</a>     }
<a class="jxr_linenumber" name="1688" href="#1688">1688</a> 
<a class="jxr_linenumber" name="1689" href="#1689">1689</a>         value.setPassword( password );
<a class="jxr_linenumber" name="1690" href="#1690">1690</a>     <em class="jxr_comment">//String authenticationMethod = registry.getString( prefix + "authenticationMethod", value.getAuthenticationMethod() );</em>
<a class="jxr_linenumber" name="1691" href="#1691">1691</a> 
<a class="jxr_linenumber" name="1692" href="#1692">1692</a>     List&lt;String&gt; authenticationMethodList = registry.getList( prefix + <span class="jxr_string">"authenticationMethod"</span> );
<a class="jxr_linenumber" name="1693" href="#1693">1693</a>     String authenticationMethod = value.getAuthenticationMethod();
<a class="jxr_linenumber" name="1694" href="#1694">1694</a>     <strong class="jxr_keyword">if</strong> (authenticationMethodList != <strong class="jxr_keyword">null</strong> &amp;&amp; !authenticationMethodList.isEmpty() )
<a class="jxr_linenumber" name="1695" href="#1695">1695</a>     {
<a class="jxr_linenumber" name="1696" href="#1696">1696</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1697" href="#1697">1697</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = authenticationMethodList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1698" href="#1698">1698</a>         {
<a class="jxr_linenumber" name="1699" href="#1699">1699</a>             sb.append( authenticationMethodList.get( i ) );
<a class="jxr_linenumber" name="1700" href="#1700">1700</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1701" href="#1701">1701</a>             {
<a class="jxr_linenumber" name="1702" href="#1702">1702</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1703" href="#1703">1703</a>             }
<a class="jxr_linenumber" name="1704" href="#1704">1704</a>         }
<a class="jxr_linenumber" name="1705" href="#1705">1705</a>         authenticationMethod = sb.toString();
<a class="jxr_linenumber" name="1706" href="#1706">1706</a>     }
<a class="jxr_linenumber" name="1707" href="#1707">1707</a> 
<a class="jxr_linenumber" name="1708" href="#1708">1708</a>         value.setAuthenticationMethod( authenticationMethod );
<a class="jxr_linenumber" name="1709" href="#1709">1709</a>         <strong class="jxr_keyword">boolean</strong> bindAuthenticatorEnabled = registry.getBoolean( prefix + <span class="jxr_string">"bindAuthenticatorEnabled"</span>, value.isBindAuthenticatorEnabled() );
<a class="jxr_linenumber" name="1710" href="#1710">1710</a>         value.setBindAuthenticatorEnabled( bindAuthenticatorEnabled );
<a class="jxr_linenumber" name="1711" href="#1711">1711</a>         <strong class="jxr_keyword">boolean</strong> writable = registry.getBoolean( prefix + <span class="jxr_string">"writable"</span>, value.isWritable() );
<a class="jxr_linenumber" name="1712" href="#1712">1712</a>         value.setWritable( writable );
<a class="jxr_linenumber" name="1713" href="#1713">1713</a>         <strong class="jxr_keyword">boolean</strong> useRoleNameAsGroup = registry.getBoolean( prefix + <span class="jxr_string">"useRoleNameAsGroup"</span>, value.isUseRoleNameAsGroup() );
<a class="jxr_linenumber" name="1714" href="#1714">1714</a>         value.setUseRoleNameAsGroup( useRoleNameAsGroup );
<a class="jxr_linenumber" name="1715" href="#1715">1715</a>         java.util.Map extraProperties = registry.getProperties( prefix + <span class="jxr_string">"extraProperties"</span> );
<a class="jxr_linenumber" name="1716" href="#1716">1716</a>         value.setExtraProperties( extraProperties );
<a class="jxr_linenumber" name="1717" href="#1717">1717</a> 
<a class="jxr_linenumber" name="1718" href="#1718">1718</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1719" href="#1719">1719</a>     }
<a class="jxr_linenumber" name="1720" href="#1720">1720</a>     
<a class="jxr_linenumber" name="1721" href="#1721">1721</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/CacheConfiguration.html">CacheConfiguration</a> readCacheConfiguration( String prefix, Registry registry )
<a class="jxr_linenumber" name="1722" href="#1722">1722</a>     {
<a class="jxr_linenumber" name="1723" href="#1723">1723</a>         <a href="../../../../../../org/apache/archiva/configuration/CacheConfiguration.html">CacheConfiguration</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/CacheConfiguration.html">CacheConfiguration</a>();
<a class="jxr_linenumber" name="1724" href="#1724">1724</a> 
<a class="jxr_linenumber" name="1725" href="#1725">1725</a>     <strong class="jxr_keyword">int</strong> timeToIdleSeconds = registry.getInt( prefix + <span class="jxr_string">"timeToIdleSeconds"</span>, value.getTimeToIdleSeconds() );
<a class="jxr_linenumber" name="1726" href="#1726">1726</a>         value.setTimeToIdleSeconds( timeToIdleSeconds );
<a class="jxr_linenumber" name="1727" href="#1727">1727</a>     <strong class="jxr_keyword">int</strong> timeToLiveSeconds = registry.getInt( prefix + <span class="jxr_string">"timeToLiveSeconds"</span>, value.getTimeToLiveSeconds() );
<a class="jxr_linenumber" name="1728" href="#1728">1728</a>         value.setTimeToLiveSeconds( timeToLiveSeconds );
<a class="jxr_linenumber" name="1729" href="#1729">1729</a>     <strong class="jxr_keyword">int</strong> maxElementsInMemory = registry.getInt( prefix + <span class="jxr_string">"maxElementsInMemory"</span>, value.getMaxElementsInMemory() );
<a class="jxr_linenumber" name="1730" href="#1730">1730</a>         value.setMaxElementsInMemory( maxElementsInMemory );
<a class="jxr_linenumber" name="1731" href="#1731">1731</a>     <strong class="jxr_keyword">int</strong> maxElementsOnDisk = registry.getInt( prefix + <span class="jxr_string">"maxElementsOnDisk"</span>, value.getMaxElementsOnDisk() );
<a class="jxr_linenumber" name="1732" href="#1732">1732</a>         value.setMaxElementsOnDisk( maxElementsOnDisk );
<a class="jxr_linenumber" name="1733" href="#1733">1733</a> 
<a class="jxr_linenumber" name="1734" href="#1734">1734</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1735" href="#1735">1735</a>     }
<a class="jxr_linenumber" name="1736" href="#1736">1736</a>     
<a class="jxr_linenumber" name="1737" href="#1737">1737</a>     <strong class="jxr_keyword">private</strong> <a href="../../../../../../org/apache/archiva/configuration/LdapGroupMapping.html">LdapGroupMapping</a> readLdapGroupMapping( String prefix, Registry registry )
<a class="jxr_linenumber" name="1738" href="#1738">1738</a>     {
<a class="jxr_linenumber" name="1739" href="#1739">1739</a>         <a href="../../../../../../org/apache/archiva/configuration/LdapGroupMapping.html">LdapGroupMapping</a> value = <strong class="jxr_keyword">new</strong> <a href="../../../../../../org/apache/archiva/configuration/LdapGroupMapping.html">LdapGroupMapping</a>();
<a class="jxr_linenumber" name="1740" href="#1740">1740</a> 
<a class="jxr_linenumber" name="1741" href="#1741">1741</a>     <em class="jxr_comment">//String group = registry.getString( prefix + "group", value.getGroup() );</em>
<a class="jxr_linenumber" name="1742" href="#1742">1742</a> 
<a class="jxr_linenumber" name="1743" href="#1743">1743</a>     List&lt;String&gt; groupList = registry.getList( prefix + <span class="jxr_string">"group"</span> );
<a class="jxr_linenumber" name="1744" href="#1744">1744</a>     String group = value.getGroup();
<a class="jxr_linenumber" name="1745" href="#1745">1745</a>     <strong class="jxr_keyword">if</strong> (groupList != <strong class="jxr_keyword">null</strong> &amp;&amp; !groupList.isEmpty() )
<a class="jxr_linenumber" name="1746" href="#1746">1746</a>     {
<a class="jxr_linenumber" name="1747" href="#1747">1747</a>         StringBuilder sb = <strong class="jxr_keyword">new</strong> StringBuilder(  );
<a class="jxr_linenumber" name="1748" href="#1748">1748</a>         <strong class="jxr_keyword">for</strong> (<strong class="jxr_keyword">int</strong> i = 0,size = groupList.size();i&lt;size;i++)
<a class="jxr_linenumber" name="1749" href="#1749">1749</a>         {
<a class="jxr_linenumber" name="1750" href="#1750">1750</a>             sb.append( groupList.get( i ) );
<a class="jxr_linenumber" name="1751" href="#1751">1751</a>             <strong class="jxr_keyword">if</strong> (i&lt;size - 1)
<a class="jxr_linenumber" name="1752" href="#1752">1752</a>             {
<a class="jxr_linenumber" name="1753" href="#1753">1753</a>                 sb.append( ',' );
<a class="jxr_linenumber" name="1754" href="#1754">1754</a>             }
<a class="jxr_linenumber" name="1755" href="#1755">1755</a>         }
<a class="jxr_linenumber" name="1756" href="#1756">1756</a>         group = sb.toString();
<a class="jxr_linenumber" name="1757" href="#1757">1757</a>     }
<a class="jxr_linenumber" name="1758" href="#1758">1758</a> 
<a class="jxr_linenumber" name="1759" href="#1759">1759</a>         value.setGroup( group );
<a class="jxr_linenumber" name="1760" href="#1760">1760</a>         java.util.List roleNames = <strong class="jxr_keyword">new</strong> java.util.ArrayList<em class="jxr_comment">/*<em class="jxr_comment">&lt;String&gt;*/</em>();</em>
<a class="jxr_linenumber" name="1761" href="#1761">1761</a>         roleNames.addAll( registry.getList( prefix + <span class="jxr_string">"roleNames.roleName"</span> ) );
<a class="jxr_linenumber" name="1762" href="#1762">1762</a>         value.setRoleNames( roleNames );
<a class="jxr_linenumber" name="1763" href="#1763">1763</a> 
<a class="jxr_linenumber" name="1764" href="#1764">1764</a>         <strong class="jxr_keyword">return</strong> value;
<a class="jxr_linenumber" name="1765" href="#1765">1765</a>     }
<a class="jxr_linenumber" name="1766" href="#1766">1766</a>     
<a class="jxr_linenumber" name="1767" href="#1767">1767</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>
