<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT>    package org.apache.archiva.admin.repository.proxyconnector;<a name="line.1"></a>
<FONT color="green">002</FONT>    /*<a name="line.2"></a>
<FONT color="green">003</FONT>     * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
<FONT color="green">004</FONT>     * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
<FONT color="green">005</FONT>     * distributed with this work for additional information<a name="line.5"></a>
<FONT color="green">006</FONT>     * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
<FONT color="green">007</FONT>     * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
<FONT color="green">008</FONT>     * "License"); you may not use this file except in compliance<a name="line.8"></a>
<FONT color="green">009</FONT>     * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
<FONT color="green">010</FONT>     *<a name="line.10"></a>
<FONT color="green">011</FONT>     *   http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
<FONT color="green">012</FONT>     *<a name="line.12"></a>
<FONT color="green">013</FONT>     * Unless required by applicable law or agreed to in writing,<a name="line.13"></a>
<FONT color="green">014</FONT>     * software distributed under the License is distributed on an<a name="line.14"></a>
<FONT color="green">015</FONT>     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.15"></a>
<FONT color="green">016</FONT>     * KIND, either express or implied.  See the License for the<a name="line.16"></a>
<FONT color="green">017</FONT>     * specific language governing permissions and limitations<a name="line.17"></a>
<FONT color="green">018</FONT>     * under the License.<a name="line.18"></a>
<FONT color="green">019</FONT>     */<a name="line.19"></a>
<FONT color="green">020</FONT>    <a name="line.20"></a>
<FONT color="green">021</FONT>    import net.sf.beanlib.provider.replicator.BeanReplicator;<a name="line.21"></a>
<FONT color="green">022</FONT>    import org.apache.archiva.admin.model.AuditInformation;<a name="line.22"></a>
<FONT color="green">023</FONT>    import org.apache.archiva.admin.model.RepositoryAdminException;<a name="line.23"></a>
<FONT color="green">024</FONT>    import org.apache.archiva.admin.model.beans.ProxyConnector;<a name="line.24"></a>
<FONT color="green">025</FONT>    import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin;<a name="line.25"></a>
<FONT color="green">026</FONT>    import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin;<a name="line.26"></a>
<FONT color="green">027</FONT>    import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorOrderComparator;<a name="line.27"></a>
<FONT color="green">028</FONT>    import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin;<a name="line.28"></a>
<FONT color="green">029</FONT>    import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;<a name="line.29"></a>
<FONT color="green">030</FONT>    import org.apache.archiva.audit.AuditEvent;<a name="line.30"></a>
<FONT color="green">031</FONT>    import org.apache.archiva.configuration.Configuration;<a name="line.31"></a>
<FONT color="green">032</FONT>    import org.apache.archiva.configuration.ProxyConnectorConfiguration;<a name="line.32"></a>
<FONT color="green">033</FONT>    import org.apache.archiva.configuration.functors.ProxyConnectorSelectionPredicate;<a name="line.33"></a>
<FONT color="green">034</FONT>    import org.apache.commons.collections.CollectionUtils;<a name="line.34"></a>
<FONT color="green">035</FONT>    import org.apache.commons.lang.StringUtils;<a name="line.35"></a>
<FONT color="green">036</FONT>    import org.springframework.stereotype.Service;<a name="line.36"></a>
<FONT color="green">037</FONT>    <a name="line.37"></a>
<FONT color="green">038</FONT>    import javax.inject.Inject;<a name="line.38"></a>
<FONT color="green">039</FONT>    import java.util.ArrayList;<a name="line.39"></a>
<FONT color="green">040</FONT>    import java.util.Collections;<a name="line.40"></a>
<FONT color="green">041</FONT>    import java.util.HashMap;<a name="line.41"></a>
<FONT color="green">042</FONT>    import java.util.Iterator;<a name="line.42"></a>
<FONT color="green">043</FONT>    import java.util.List;<a name="line.43"></a>
<FONT color="green">044</FONT>    import java.util.Map;<a name="line.44"></a>
<FONT color="green">045</FONT>    <a name="line.45"></a>
<FONT color="green">046</FONT>    /**<a name="line.46"></a>
<FONT color="green">047</FONT>     * @author Olivier Lamy<a name="line.47"></a>
<FONT color="green">048</FONT>     * @since 1.4-M1<a name="line.48"></a>
<FONT color="green">049</FONT>     */<a name="line.49"></a>
<FONT color="green">050</FONT>    @Service ( "proxyConnectorAdmin#default" )<a name="line.50"></a>
<FONT color="green">051</FONT>    public class DefaultProxyConnectorAdmin<a name="line.51"></a>
<FONT color="green">052</FONT>        extends AbstractRepositoryAdmin<a name="line.52"></a>
<FONT color="green">053</FONT>        implements ProxyConnectorAdmin<a name="line.53"></a>
<FONT color="green">054</FONT>    {<a name="line.54"></a>
<FONT color="green">055</FONT>    <a name="line.55"></a>
<FONT color="green">056</FONT>        @Inject<a name="line.56"></a>
<FONT color="green">057</FONT>        private ManagedRepositoryAdmin managedRepositoryAdmin;<a name="line.57"></a>
<FONT color="green">058</FONT>    <a name="line.58"></a>
<FONT color="green">059</FONT>        @Inject<a name="line.59"></a>
<FONT color="green">060</FONT>        private RemoteRepositoryAdmin remoteRepositoryAdmin;<a name="line.60"></a>
<FONT color="green">061</FONT>    <a name="line.61"></a>
<FONT color="green">062</FONT>        public List&lt;ProxyConnector&gt; getProxyConnectors()<a name="line.62"></a>
<FONT color="green">063</FONT>            throws RepositoryAdminException<a name="line.63"></a>
<FONT color="green">064</FONT>        {<a name="line.64"></a>
<FONT color="green">065</FONT>            List&lt;ProxyConnectorConfiguration&gt; proxyConnectorConfigurations =<a name="line.65"></a>
<FONT color="green">066</FONT>                getArchivaConfiguration().getConfiguration().getProxyConnectors();<a name="line.66"></a>
<FONT color="green">067</FONT>            List&lt;ProxyConnector&gt; proxyConnectors = new ArrayList&lt;ProxyConnector&gt;( proxyConnectorConfigurations.size() );<a name="line.67"></a>
<FONT color="green">068</FONT>            for ( ProxyConnectorConfiguration configuration : proxyConnectorConfigurations )<a name="line.68"></a>
<FONT color="green">069</FONT>            {<a name="line.69"></a>
<FONT color="green">070</FONT>                proxyConnectors.add( getProxyConnector( configuration ) );<a name="line.70"></a>
<FONT color="green">071</FONT>            }<a name="line.71"></a>
<FONT color="green">072</FONT>            Collections.sort( proxyConnectors, ProxyConnectorOrderComparator.getInstance() );<a name="line.72"></a>
<FONT color="green">073</FONT>            return proxyConnectors;<a name="line.73"></a>
<FONT color="green">074</FONT>        }<a name="line.74"></a>
<FONT color="green">075</FONT>    <a name="line.75"></a>
<FONT color="green">076</FONT>        public ProxyConnector getProxyConnector( String sourceRepoId, String targetRepoId )<a name="line.76"></a>
<FONT color="green">077</FONT>            throws RepositoryAdminException<a name="line.77"></a>
<FONT color="green">078</FONT>        {<a name="line.78"></a>
<FONT color="green">079</FONT>            for ( ProxyConnector proxyConnector : getProxyConnectors() )<a name="line.79"></a>
<FONT color="green">080</FONT>            {<a name="line.80"></a>
<FONT color="green">081</FONT>                if ( StringUtils.equals( sourceRepoId, proxyConnector.getSourceRepoId() ) &amp;&amp; StringUtils.equals(<a name="line.81"></a>
<FONT color="green">082</FONT>                    targetRepoId, proxyConnector.getTargetRepoId() ) )<a name="line.82"></a>
<FONT color="green">083</FONT>                {<a name="line.83"></a>
<FONT color="green">084</FONT>                    return proxyConnector;<a name="line.84"></a>
<FONT color="green">085</FONT>                }<a name="line.85"></a>
<FONT color="green">086</FONT>            }<a name="line.86"></a>
<FONT color="green">087</FONT>            return null;<a name="line.87"></a>
<FONT color="green">088</FONT>        }<a name="line.88"></a>
<FONT color="green">089</FONT>    <a name="line.89"></a>
<FONT color="green">090</FONT>        public Boolean addProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation )<a name="line.90"></a>
<FONT color="green">091</FONT>            throws RepositoryAdminException<a name="line.91"></a>
<FONT color="green">092</FONT>        {<a name="line.92"></a>
<FONT color="green">093</FONT>            if ( getProxyConnector( proxyConnector.getSourceRepoId(), proxyConnector.getTargetRepoId() ) != null )<a name="line.93"></a>
<FONT color="green">094</FONT>            {<a name="line.94"></a>
<FONT color="green">095</FONT>                throw new RepositoryAdminException(<a name="line.95"></a>
<FONT color="green">096</FONT>                    "Unable to add proxy connector, as one already exists with source repository id ["<a name="line.96"></a>
<FONT color="green">097</FONT>                        + proxyConnector.getSourceRepoId() + "] and target repository id ["<a name="line.97"></a>
<FONT color="green">098</FONT>                        + proxyConnector.getTargetRepoId() + "]." );<a name="line.98"></a>
<FONT color="green">099</FONT>            }<a name="line.99"></a>
<FONT color="green">100</FONT>    <a name="line.100"></a>
<FONT color="green">101</FONT>            validateProxyConnector( proxyConnector );<a name="line.101"></a>
<FONT color="green">102</FONT>    <a name="line.102"></a>
<FONT color="green">103</FONT>            proxyConnector.setBlackListPatterns( unescapePatterns( proxyConnector.getBlackListPatterns() ) );<a name="line.103"></a>
<FONT color="green">104</FONT>            proxyConnector.setWhiteListPatterns( unescapePatterns( proxyConnector.getWhiteListPatterns() ) );<a name="line.104"></a>
<FONT color="green">105</FONT>    <a name="line.105"></a>
<FONT color="green">106</FONT>            Configuration configuration = getArchivaConfiguration().getConfiguration();<a name="line.106"></a>
<FONT color="green">107</FONT>    <a name="line.107"></a>
<FONT color="green">108</FONT>            ProxyConnectorConfiguration proxyConnectorConfiguration = getProxyConnectorConfiguration( proxyConnector );<a name="line.108"></a>
<FONT color="green">109</FONT>            configuration.addProxyConnector( proxyConnectorConfiguration );<a name="line.109"></a>
<FONT color="green">110</FONT>            saveConfiguration( configuration );<a name="line.110"></a>
<FONT color="green">111</FONT>            triggerAuditEvent( proxyConnector.getSourceRepoId() + "-" + proxyConnector.getTargetRepoId(), null,<a name="line.111"></a>
<FONT color="green">112</FONT>                               AuditEvent.ADD_PROXY_CONNECTOR, auditInformation );<a name="line.112"></a>
<FONT color="green">113</FONT>            return Boolean.TRUE;<a name="line.113"></a>
<FONT color="green">114</FONT>    <a name="line.114"></a>
<FONT color="green">115</FONT>        }<a name="line.115"></a>
<FONT color="green">116</FONT>    <a name="line.116"></a>
<FONT color="green">117</FONT>        // FIXME take care of proxyConnectorRules !<a name="line.117"></a>
<FONT color="green">118</FONT>        public Boolean deleteProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation )<a name="line.118"></a>
<FONT color="green">119</FONT>            throws RepositoryAdminException<a name="line.119"></a>
<FONT color="green">120</FONT>        {<a name="line.120"></a>
<FONT color="green">121</FONT>            Configuration configuration = getArchivaConfiguration().getConfiguration();<a name="line.121"></a>
<FONT color="green">122</FONT>            ProxyConnectorConfiguration proxyConnectorConfiguration =<a name="line.122"></a>
<FONT color="green">123</FONT>                findProxyConnector( proxyConnector.getSourceRepoId(), proxyConnector.getTargetRepoId(), configuration );<a name="line.123"></a>
<FONT color="green">124</FONT>            if ( proxyConnectorConfiguration == null )<a name="line.124"></a>
<FONT color="green">125</FONT>            {<a name="line.125"></a>
<FONT color="green">126</FONT>                throw new RepositoryAdminException(<a name="line.126"></a>
<FONT color="green">127</FONT>                    "unable to find ProxyConnector with source " + proxyConnector.getSourceRepoId() + " and target "<a name="line.127"></a>
<FONT color="green">128</FONT>                        + proxyConnector.getTargetRepoId() );<a name="line.128"></a>
<FONT color="green">129</FONT>            }<a name="line.129"></a>
<FONT color="green">130</FONT>            configuration.removeProxyConnector( proxyConnectorConfiguration );<a name="line.130"></a>
<FONT color="green">131</FONT>            saveConfiguration( configuration );<a name="line.131"></a>
<FONT color="green">132</FONT>            triggerAuditEvent( proxyConnector.getSourceRepoId() + "-" + proxyConnector.getTargetRepoId(), null,<a name="line.132"></a>
<FONT color="green">133</FONT>                               AuditEvent.DELETE_PROXY_CONNECTOR, auditInformation );<a name="line.133"></a>
<FONT color="green">134</FONT>            return Boolean.TRUE;<a name="line.134"></a>
<FONT color="green">135</FONT>        }<a name="line.135"></a>
<FONT color="green">136</FONT>    <a name="line.136"></a>
<FONT color="green">137</FONT>        // FIXME care take of proxyConnectorRules !<a name="line.137"></a>
<FONT color="green">138</FONT>        public Boolean updateProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation )<a name="line.138"></a>
<FONT color="green">139</FONT>            throws RepositoryAdminException<a name="line.139"></a>
<FONT color="green">140</FONT>        {<a name="line.140"></a>
<FONT color="green">141</FONT>            Configuration configuration = getArchivaConfiguration().getConfiguration();<a name="line.141"></a>
<FONT color="green">142</FONT>            ProxyConnectorConfiguration proxyConnectorConfiguration =<a name="line.142"></a>
<FONT color="green">143</FONT>                findProxyConnector( proxyConnector.getSourceRepoId(), proxyConnector.getTargetRepoId(), configuration );<a name="line.143"></a>
<FONT color="green">144</FONT>            configuration.removeProxyConnector( proxyConnectorConfiguration );<a name="line.144"></a>
<FONT color="green">145</FONT>            configuration.addProxyConnector( getProxyConnectorConfiguration( proxyConnector ) );<a name="line.145"></a>
<FONT color="green">146</FONT>            saveConfiguration( configuration );<a name="line.146"></a>
<FONT color="green">147</FONT>            triggerAuditEvent( proxyConnector.getSourceRepoId() + "-" + proxyConnector.getTargetRepoId(), null,<a name="line.147"></a>
<FONT color="green">148</FONT>                               AuditEvent.MODIFY_PROXY_CONNECTOR, auditInformation );<a name="line.148"></a>
<FONT color="green">149</FONT>            return Boolean.TRUE;<a name="line.149"></a>
<FONT color="green">150</FONT>        }<a name="line.150"></a>
<FONT color="green">151</FONT>    <a name="line.151"></a>
<FONT color="green">152</FONT>        protected List&lt;String&gt; unescapePatterns( List&lt;String&gt; patterns )<a name="line.152"></a>
<FONT color="green">153</FONT>        {<a name="line.153"></a>
<FONT color="green">154</FONT>            if ( patterns != null )<a name="line.154"></a>
<FONT color="green">155</FONT>            {<a name="line.155"></a>
<FONT color="green">156</FONT>                List&lt;String&gt; rawPatterns = new ArrayList&lt;String&gt;( patterns.size() );<a name="line.156"></a>
<FONT color="green">157</FONT>                for ( String pattern : patterns )<a name="line.157"></a>
<FONT color="green">158</FONT>                {<a name="line.158"></a>
<FONT color="green">159</FONT>                    rawPatterns.add( StringUtils.replace( pattern, "\\\\", "\\" ) );<a name="line.159"></a>
<FONT color="green">160</FONT>                }<a name="line.160"></a>
<FONT color="green">161</FONT>                return rawPatterns;<a name="line.161"></a>
<FONT color="green">162</FONT>            }<a name="line.162"></a>
<FONT color="green">163</FONT>    <a name="line.163"></a>
<FONT color="green">164</FONT>            return Collections.emptyList();<a name="line.164"></a>
<FONT color="green">165</FONT>        }<a name="line.165"></a>
<FONT color="green">166</FONT>    <a name="line.166"></a>
<FONT color="green">167</FONT>        public Map&lt;String, List&lt;ProxyConnector&gt;&gt; getProxyConnectorAsMap()<a name="line.167"></a>
<FONT color="green">168</FONT>            throws RepositoryAdminException<a name="line.168"></a>
<FONT color="green">169</FONT>        {<a name="line.169"></a>
<FONT color="green">170</FONT>            Map&lt;String, List&lt;ProxyConnector&gt;&gt; proxyConnectorMap = new HashMap&lt;String, java.util.List&lt;ProxyConnector&gt;&gt;();<a name="line.170"></a>
<FONT color="green">171</FONT>    <a name="line.171"></a>
<FONT color="green">172</FONT>            Iterator&lt;ProxyConnector&gt; it = getProxyConnectors().iterator();<a name="line.172"></a>
<FONT color="green">173</FONT>            while ( it.hasNext() )<a name="line.173"></a>
<FONT color="green">174</FONT>            {<a name="line.174"></a>
<FONT color="green">175</FONT>                ProxyConnector proxyConfig = it.next();<a name="line.175"></a>
<FONT color="green">176</FONT>                String key = proxyConfig.getSourceRepoId();<a name="line.176"></a>
<FONT color="green">177</FONT>    <a name="line.177"></a>
<FONT color="green">178</FONT>                List&lt;ProxyConnector&gt; connectors = proxyConnectorMap.get( key );<a name="line.178"></a>
<FONT color="green">179</FONT>                if ( connectors == null )<a name="line.179"></a>
<FONT color="green">180</FONT>                {<a name="line.180"></a>
<FONT color="green">181</FONT>                    connectors = new ArrayList&lt;ProxyConnector&gt;( 1 );<a name="line.181"></a>
<FONT color="green">182</FONT>                    proxyConnectorMap.put( key, connectors );<a name="line.182"></a>
<FONT color="green">183</FONT>                }<a name="line.183"></a>
<FONT color="green">184</FONT>    <a name="line.184"></a>
<FONT color="green">185</FONT>                connectors.add( proxyConfig );<a name="line.185"></a>
<FONT color="green">186</FONT>    <a name="line.186"></a>
<FONT color="green">187</FONT>                Collections.sort( connectors, ProxyConnectorOrderComparator.getInstance() );<a name="line.187"></a>
<FONT color="green">188</FONT>            }<a name="line.188"></a>
<FONT color="green">189</FONT>    <a name="line.189"></a>
<FONT color="green">190</FONT>            return proxyConnectorMap;<a name="line.190"></a>
<FONT color="green">191</FONT>        }<a name="line.191"></a>
<FONT color="green">192</FONT>    <a name="line.192"></a>
<FONT color="green">193</FONT>        private ProxyConnectorConfiguration findProxyConnector( String sourceId, String targetId,<a name="line.193"></a>
<FONT color="green">194</FONT>                                                                Configuration configuration )<a name="line.194"></a>
<FONT color="green">195</FONT>        {<a name="line.195"></a>
<FONT color="green">196</FONT>            if ( StringUtils.isBlank( sourceId ) )<a name="line.196"></a>
<FONT color="green">197</FONT>            {<a name="line.197"></a>
<FONT color="green">198</FONT>                return null;<a name="line.198"></a>
<FONT color="green">199</FONT>            }<a name="line.199"></a>
<FONT color="green">200</FONT>    <a name="line.200"></a>
<FONT color="green">201</FONT>            if ( StringUtils.isBlank( targetId ) )<a name="line.201"></a>
<FONT color="green">202</FONT>            {<a name="line.202"></a>
<FONT color="green">203</FONT>                return null;<a name="line.203"></a>
<FONT color="green">204</FONT>            }<a name="line.204"></a>
<FONT color="green">205</FONT>    <a name="line.205"></a>
<FONT color="green">206</FONT>            ProxyConnectorSelectionPredicate selectedProxy = new ProxyConnectorSelectionPredicate( sourceId, targetId );<a name="line.206"></a>
<FONT color="green">207</FONT>            return (ProxyConnectorConfiguration) CollectionUtils.find( configuration.getProxyConnectors(), selectedProxy );<a name="line.207"></a>
<FONT color="green">208</FONT>        }<a name="line.208"></a>
<FONT color="green">209</FONT>    <a name="line.209"></a>
<FONT color="green">210</FONT>        protected ProxyConnectorConfiguration getProxyConnectorConfiguration( ProxyConnector proxyConnector )<a name="line.210"></a>
<FONT color="green">211</FONT>        {<a name="line.211"></a>
<FONT color="green">212</FONT>            return proxyConnector == null<a name="line.212"></a>
<FONT color="green">213</FONT>                ? null<a name="line.213"></a>
<FONT color="green">214</FONT>                : new BeanReplicator().replicateBean( proxyConnector, ProxyConnectorConfiguration.class );<a name="line.214"></a>
<FONT color="green">215</FONT>        }<a name="line.215"></a>
<FONT color="green">216</FONT>    <a name="line.216"></a>
<FONT color="green">217</FONT>        protected ProxyConnector getProxyConnector( ProxyConnectorConfiguration proxyConnectorConfiguration )<a name="line.217"></a>
<FONT color="green">218</FONT>        {<a name="line.218"></a>
<FONT color="green">219</FONT>            return proxyConnectorConfiguration == null<a name="line.219"></a>
<FONT color="green">220</FONT>                ? null<a name="line.220"></a>
<FONT color="green">221</FONT>                : new BeanReplicator().replicateBean( proxyConnectorConfiguration, ProxyConnector.class );<a name="line.221"></a>
<FONT color="green">222</FONT>        }<a name="line.222"></a>
<FONT color="green">223</FONT>    <a name="line.223"></a>
<FONT color="green">224</FONT>        protected void validateProxyConnector( ProxyConnector proxyConnector )<a name="line.224"></a>
<FONT color="green">225</FONT>            throws RepositoryAdminException<a name="line.225"></a>
<FONT color="green">226</FONT>        {<a name="line.226"></a>
<FONT color="green">227</FONT>            // validate source a Managed target a Remote<a name="line.227"></a>
<FONT color="green">228</FONT>            if ( managedRepositoryAdmin.getManagedRepository( proxyConnector.getSourceRepoId() ) == null )<a name="line.228"></a>
<FONT color="green">229</FONT>            {<a name="line.229"></a>
<FONT color="green">230</FONT>                throw new RepositoryAdminException(<a name="line.230"></a>
<FONT color="green">231</FONT>                    "non valid ProxyConnector sourceRepo with id " + proxyConnector.getSourceRepoId()<a name="line.231"></a>
<FONT color="green">232</FONT>                        + " is not a ManagedRepository" );<a name="line.232"></a>
<FONT color="green">233</FONT>            }<a name="line.233"></a>
<FONT color="green">234</FONT>            if ( remoteRepositoryAdmin.getRemoteRepository( proxyConnector.getTargetRepoId() ) == null )<a name="line.234"></a>
<FONT color="green">235</FONT>            {<a name="line.235"></a>
<FONT color="green">236</FONT>                throw new RepositoryAdminException(<a name="line.236"></a>
<FONT color="green">237</FONT>                    "non valid ProxyConnector sourceRepo with id " + proxyConnector.getTargetRepoId()<a name="line.237"></a>
<FONT color="green">238</FONT>                        + " is not a RemoteRepository" );<a name="line.238"></a>
<FONT color="green">239</FONT>            }<a name="line.239"></a>
<FONT color="green">240</FONT>    <a name="line.240"></a>
<FONT color="green">241</FONT>            // FIXME validate NetworkProxyConfiguration too when available<a name="line.241"></a>
<FONT color="green">242</FONT>        }<a name="line.242"></a>
<FONT color="green">243</FONT>    }<a name="line.243"></a>




























































</PRE>
</BODY>
</HTML>