<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="de">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>package org.apache.archiva.admin.model.beans;<a name="line.1"></a>
<span class="sourceLineNo">002</span><a name="line.2"></a>
<span class="sourceLineNo">003</span>/*<a name="line.3"></a>
<span class="sourceLineNo">004</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.4"></a>
<span class="sourceLineNo">005</span> * or more contributor license agreements.  See the NOTICE file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * distributed with this work for additional information<a name="line.6"></a>
<span class="sourceLineNo">007</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.7"></a>
<span class="sourceLineNo">008</span> * to you under the Apache License, Version 2.0 (the<a name="line.8"></a>
<span class="sourceLineNo">009</span> * "License"); you may not use this file except in compliance<a name="line.9"></a>
<span class="sourceLineNo">010</span> * with the License.  You may obtain a copy of the License at<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> *   http://www.apache.org/licenses/LICENSE-2.0<a name="line.12"></a>
<span class="sourceLineNo">013</span> *<a name="line.13"></a>
<span class="sourceLineNo">014</span> * Unless required by applicable law or agreed to in writing,<a name="line.14"></a>
<span class="sourceLineNo">015</span> * software distributed under the License is distributed on an<a name="line.15"></a>
<span class="sourceLineNo">016</span> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.16"></a>
<span class="sourceLineNo">017</span> * KIND, either express or implied.  See the License for the<a name="line.17"></a>
<span class="sourceLineNo">018</span> * specific language governing permissions and limitations<a name="line.18"></a>
<span class="sourceLineNo">019</span> * under the License.<a name="line.19"></a>
<span class="sourceLineNo">020</span> */<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.commons.lang3.StringUtils;<a name="line.22"></a>
<span class="sourceLineNo">023</span><a name="line.23"></a>
<span class="sourceLineNo">024</span>import javax.xml.bind.annotation.XmlRootElement;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import java.io.Serializable;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.util.ArrayList;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.HashMap;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import java.util.Locale;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import java.util.Map;<a name="line.30"></a>
<span class="sourceLineNo">031</span><a name="line.31"></a>
<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
<span class="sourceLineNo">033</span> * @author Olivier Lamy<a name="line.33"></a>
<span class="sourceLineNo">034</span> * @since 1.4-M1<a name="line.34"></a>
<span class="sourceLineNo">035</span> */<a name="line.35"></a>
<span class="sourceLineNo">036</span>@XmlRootElement (name = "remoteRepository")<a name="line.36"></a>
<span class="sourceLineNo">037</span>public class RemoteRepository<a name="line.37"></a>
<span class="sourceLineNo">038</span>    extends AbstractRepository<a name="line.38"></a>
<span class="sourceLineNo">039</span>    implements Serializable<a name="line.39"></a>
<span class="sourceLineNo">040</span>{<a name="line.40"></a>
<span class="sourceLineNo">041</span><a name="line.41"></a>
<span class="sourceLineNo">042</span>    private String url;<a name="line.42"></a>
<span class="sourceLineNo">043</span><a name="line.43"></a>
<span class="sourceLineNo">044</span>    private String userName;<a name="line.44"></a>
<span class="sourceLineNo">045</span><a name="line.45"></a>
<span class="sourceLineNo">046</span>    private String password;<a name="line.46"></a>
<span class="sourceLineNo">047</span><a name="line.47"></a>
<span class="sourceLineNo">048</span>    private int timeout = 60;<a name="line.48"></a>
<span class="sourceLineNo">049</span><a name="line.49"></a>
<span class="sourceLineNo">050</span>    /**<a name="line.50"></a>
<span class="sourceLineNo">051</span>     * @since 2.2.3<a name="line.51"></a>
<span class="sourceLineNo">052</span>     * The path to use for checking availability of the remote repository<a name="line.52"></a>
<span class="sourceLineNo">053</span>     */<a name="line.53"></a>
<span class="sourceLineNo">054</span>    private String checkPath;<a name="line.54"></a>
<span class="sourceLineNo">055</span><a name="line.55"></a>
<span class="sourceLineNo">056</span>    /**<a name="line.56"></a>
<span class="sourceLineNo">057</span>     * Activate download of remote index if remoteIndexUrl is set too.<a name="line.57"></a>
<span class="sourceLineNo">058</span>     */<a name="line.58"></a>
<span class="sourceLineNo">059</span>    private boolean downloadRemoteIndex = false;<a name="line.59"></a>
<span class="sourceLineNo">060</span><a name="line.60"></a>
<span class="sourceLineNo">061</span>    /**<a name="line.61"></a>
<span class="sourceLineNo">062</span>     * Remote Index Url : if not starting with http will be relative to the remote repository url.<a name="line.62"></a>
<span class="sourceLineNo">063</span>     */<a name="line.63"></a>
<span class="sourceLineNo">064</span>    private String remoteIndexUrl = ".index";<a name="line.64"></a>
<span class="sourceLineNo">065</span><a name="line.65"></a>
<span class="sourceLineNo">066</span>    private String remoteDownloadNetworkProxyId;<a name="line.66"></a>
<span class="sourceLineNo">067</span><a name="line.67"></a>
<span class="sourceLineNo">068</span>    /**<a name="line.68"></a>
<span class="sourceLineNo">069</span>     * default model value daily : every sunday at 8H00<a name="line.69"></a>
<span class="sourceLineNo">070</span>     */<a name="line.70"></a>
<span class="sourceLineNo">071</span>    private String cronExpression = "0 0 08 ? * SUN";<a name="line.71"></a>
<span class="sourceLineNo">072</span><a name="line.72"></a>
<span class="sourceLineNo">073</span>    private int remoteDownloadTimeout = 300;<a name="line.73"></a>
<span class="sourceLineNo">074</span><a name="line.74"></a>
<span class="sourceLineNo">075</span>    /**<a name="line.75"></a>
<span class="sourceLineNo">076</span>     * @since 1.4-M2<a name="line.76"></a>
<span class="sourceLineNo">077</span>     */<a name="line.77"></a>
<span class="sourceLineNo">078</span>    private boolean downloadRemoteIndexOnStartup = false;<a name="line.78"></a>
<span class="sourceLineNo">079</span><a name="line.79"></a>
<span class="sourceLineNo">080</span>    /**<a name="line.80"></a>
<span class="sourceLineNo">081</span>     * extraParameters.<a name="line.81"></a>
<span class="sourceLineNo">082</span>     *<a name="line.82"></a>
<span class="sourceLineNo">083</span>     * @since 1.4-M4<a name="line.83"></a>
<span class="sourceLineNo">084</span>     */<a name="line.84"></a>
<span class="sourceLineNo">085</span>    private Map&lt;String, String&gt; extraParameters;<a name="line.85"></a>
<span class="sourceLineNo">086</span><a name="line.86"></a>
<span class="sourceLineNo">087</span>    /**<a name="line.87"></a>
<span class="sourceLineNo">088</span>     * field to ease json mapping wrapper on &lt;code&gt;extraParameters&lt;/code&gt; field<a name="line.88"></a>
<span class="sourceLineNo">089</span>     *<a name="line.89"></a>
<span class="sourceLineNo">090</span>     * @since 1.4-M4<a name="line.90"></a>
<span class="sourceLineNo">091</span>     */<a name="line.91"></a>
<span class="sourceLineNo">092</span>    private List&lt;PropertyEntry&gt; extraParametersEntries;<a name="line.92"></a>
<span class="sourceLineNo">093</span><a name="line.93"></a>
<span class="sourceLineNo">094</span>    /**<a name="line.94"></a>
<span class="sourceLineNo">095</span>     * extraHeaders.<a name="line.95"></a>
<span class="sourceLineNo">096</span>     *<a name="line.96"></a>
<span class="sourceLineNo">097</span>     * @since 1.4-M4<a name="line.97"></a>
<span class="sourceLineNo">098</span>     */<a name="line.98"></a>
<span class="sourceLineNo">099</span>    private Map&lt;String, String&gt; extraHeaders;<a name="line.99"></a>
<span class="sourceLineNo">100</span><a name="line.100"></a>
<span class="sourceLineNo">101</span>    /**<a name="line.101"></a>
<span class="sourceLineNo">102</span>     * field to ease json mapping wrapper on &lt;code&gt;extraHeaders&lt;/code&gt; field<a name="line.102"></a>
<span class="sourceLineNo">103</span>     *<a name="line.103"></a>
<span class="sourceLineNo">104</span>     * @since 1.4-M4<a name="line.104"></a>
<span class="sourceLineNo">105</span>     */<a name="line.105"></a>
<span class="sourceLineNo">106</span>    private List&lt;PropertyEntry&gt; extraHeadersEntries;<a name="line.106"></a>
<span class="sourceLineNo">107</span><a name="line.107"></a>
<span class="sourceLineNo">108</span>    public RemoteRepository() {<a name="line.108"></a>
<span class="sourceLineNo">109</span>        super(Locale.getDefault());<a name="line.109"></a>
<span class="sourceLineNo">110</span>    }<a name="line.110"></a>
<span class="sourceLineNo">111</span><a name="line.111"></a>
<span class="sourceLineNo">112</span>    public RemoteRepository(Locale locale)<a name="line.112"></a>
<span class="sourceLineNo">113</span>    {<a name="line.113"></a>
<span class="sourceLineNo">114</span>        super(locale);<a name="line.114"></a>
<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
<span class="sourceLineNo">116</span><a name="line.116"></a>
<span class="sourceLineNo">117</span>    public RemoteRepository( Locale locale, String id, String name, String url, String layout )<a name="line.117"></a>
<span class="sourceLineNo">118</span>    {<a name="line.118"></a>
<span class="sourceLineNo">119</span>        super( locale, id, name, layout );<a name="line.119"></a>
<span class="sourceLineNo">120</span>        this.url = url;<a name="line.120"></a>
<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
<span class="sourceLineNo">122</span><a name="line.122"></a>
<span class="sourceLineNo">123</span>    public RemoteRepository( Locale locale, String id, String name, String url, String layout, String userName, String password,<a name="line.123"></a>
<span class="sourceLineNo">124</span>                             int timeout )<a name="line.124"></a>
<span class="sourceLineNo">125</span>    {<a name="line.125"></a>
<span class="sourceLineNo">126</span>        super( locale, id, name, layout );<a name="line.126"></a>
<span class="sourceLineNo">127</span>        this.url = StringUtils.stripEnd(url,"/");<a name="line.127"></a>
<span class="sourceLineNo">128</span>        this.userName = userName;<a name="line.128"></a>
<span class="sourceLineNo">129</span>        this.password = password;<a name="line.129"></a>
<span class="sourceLineNo">130</span>        this.timeout = timeout;<a name="line.130"></a>
<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
<span class="sourceLineNo">132</span><a name="line.132"></a>
<span class="sourceLineNo">133</span>    /**<a name="line.133"></a>
<span class="sourceLineNo">134</span>     * @since 1.4-M3<a name="line.134"></a>
<span class="sourceLineNo">135</span>     */<a name="line.135"></a>
<span class="sourceLineNo">136</span>    public RemoteRepository( Locale locale, String id, String name, String url, String layout, String userName, String password,<a name="line.136"></a>
<span class="sourceLineNo">137</span>                             int timeout, String description )<a name="line.137"></a>
<span class="sourceLineNo">138</span>    {<a name="line.138"></a>
<span class="sourceLineNo">139</span>        this( locale, id, name, url, layout, userName, password, timeout );<a name="line.139"></a>
<span class="sourceLineNo">140</span>        setDescription( description );<a name="line.140"></a>
<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
<span class="sourceLineNo">142</span><a name="line.142"></a>
<span class="sourceLineNo">143</span>    public String getUrl()<a name="line.143"></a>
<span class="sourceLineNo">144</span>    {<a name="line.144"></a>
<span class="sourceLineNo">145</span>        return url;<a name="line.145"></a>
<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
<span class="sourceLineNo">147</span><a name="line.147"></a>
<span class="sourceLineNo">148</span>    public void setUrl( String url )<a name="line.148"></a>
<span class="sourceLineNo">149</span>    {<a name="line.149"></a>
<span class="sourceLineNo">150</span>        this.url = StringUtils.stripEnd(url,"/");<a name="line.150"></a>
<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
<span class="sourceLineNo">152</span><a name="line.152"></a>
<span class="sourceLineNo">153</span>    public String getUserName()<a name="line.153"></a>
<span class="sourceLineNo">154</span>    {<a name="line.154"></a>
<span class="sourceLineNo">155</span>        return userName;<a name="line.155"></a>
<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
<span class="sourceLineNo">157</span><a name="line.157"></a>
<span class="sourceLineNo">158</span>    public void setUserName( String userName )<a name="line.158"></a>
<span class="sourceLineNo">159</span>    {<a name="line.159"></a>
<span class="sourceLineNo">160</span>        this.userName = userName;<a name="line.160"></a>
<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
<span class="sourceLineNo">162</span><a name="line.162"></a>
<span class="sourceLineNo">163</span>    public String getPassword()<a name="line.163"></a>
<span class="sourceLineNo">164</span>    {<a name="line.164"></a>
<span class="sourceLineNo">165</span>        return password;<a name="line.165"></a>
<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
<span class="sourceLineNo">167</span><a name="line.167"></a>
<span class="sourceLineNo">168</span>    public void setPassword( String password )<a name="line.168"></a>
<span class="sourceLineNo">169</span>    {<a name="line.169"></a>
<span class="sourceLineNo">170</span>        this.password = password;<a name="line.170"></a>
<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
<span class="sourceLineNo">172</span><a name="line.172"></a>
<span class="sourceLineNo">173</span>    public int getTimeout()<a name="line.173"></a>
<span class="sourceLineNo">174</span>    {<a name="line.174"></a>
<span class="sourceLineNo">175</span>        return timeout;<a name="line.175"></a>
<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
<span class="sourceLineNo">177</span><a name="line.177"></a>
<span class="sourceLineNo">178</span>    public void setTimeout( int timeout )<a name="line.178"></a>
<span class="sourceLineNo">179</span>    {<a name="line.179"></a>
<span class="sourceLineNo">180</span>        this.timeout = timeout;<a name="line.180"></a>
<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
<span class="sourceLineNo">182</span><a name="line.182"></a>
<span class="sourceLineNo">183</span>    public boolean isDownloadRemoteIndex()<a name="line.183"></a>
<span class="sourceLineNo">184</span>    {<a name="line.184"></a>
<span class="sourceLineNo">185</span>        return downloadRemoteIndex;<a name="line.185"></a>
<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
<span class="sourceLineNo">187</span><a name="line.187"></a>
<span class="sourceLineNo">188</span>    public void setDownloadRemoteIndex( boolean downloadRemoteIndex )<a name="line.188"></a>
<span class="sourceLineNo">189</span>    {<a name="line.189"></a>
<span class="sourceLineNo">190</span>        this.downloadRemoteIndex = downloadRemoteIndex;<a name="line.190"></a>
<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
<span class="sourceLineNo">192</span><a name="line.192"></a>
<span class="sourceLineNo">193</span>    public String getRemoteIndexUrl()<a name="line.193"></a>
<span class="sourceLineNo">194</span>    {<a name="line.194"></a>
<span class="sourceLineNo">195</span>        return remoteIndexUrl;<a name="line.195"></a>
<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
<span class="sourceLineNo">197</span><a name="line.197"></a>
<span class="sourceLineNo">198</span>    public void setRemoteIndexUrl( String remoteIndexUrl )<a name="line.198"></a>
<span class="sourceLineNo">199</span>    {<a name="line.199"></a>
<span class="sourceLineNo">200</span>        this.remoteIndexUrl = remoteIndexUrl;<a name="line.200"></a>
<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
<span class="sourceLineNo">202</span><a name="line.202"></a>
<span class="sourceLineNo">203</span>    public String getRemoteDownloadNetworkProxyId()<a name="line.203"></a>
<span class="sourceLineNo">204</span>    {<a name="line.204"></a>
<span class="sourceLineNo">205</span>        return remoteDownloadNetworkProxyId;<a name="line.205"></a>
<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
<span class="sourceLineNo">207</span><a name="line.207"></a>
<span class="sourceLineNo">208</span>    public void setRemoteDownloadNetworkProxyId( String remoteDownloadNetworkProxyId )<a name="line.208"></a>
<span class="sourceLineNo">209</span>    {<a name="line.209"></a>
<span class="sourceLineNo">210</span>        this.remoteDownloadNetworkProxyId = remoteDownloadNetworkProxyId;<a name="line.210"></a>
<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
<span class="sourceLineNo">212</span><a name="line.212"></a>
<span class="sourceLineNo">213</span>    public String getCronExpression()<a name="line.213"></a>
<span class="sourceLineNo">214</span>    {<a name="line.214"></a>
<span class="sourceLineNo">215</span>        return cronExpression;<a name="line.215"></a>
<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
<span class="sourceLineNo">217</span><a name="line.217"></a>
<span class="sourceLineNo">218</span>    public void setCronExpression( String cronExpression )<a name="line.218"></a>
<span class="sourceLineNo">219</span>    {<a name="line.219"></a>
<span class="sourceLineNo">220</span>        this.cronExpression = cronExpression;<a name="line.220"></a>
<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
<span class="sourceLineNo">222</span><a name="line.222"></a>
<span class="sourceLineNo">223</span>    public int getRemoteDownloadTimeout()<a name="line.223"></a>
<span class="sourceLineNo">224</span>    {<a name="line.224"></a>
<span class="sourceLineNo">225</span>        return remoteDownloadTimeout;<a name="line.225"></a>
<span class="sourceLineNo">226</span>    }<a name="line.226"></a>
<span class="sourceLineNo">227</span><a name="line.227"></a>
<span class="sourceLineNo">228</span>    public void setRemoteDownloadTimeout( int remoteDownloadTimeout )<a name="line.228"></a>
<span class="sourceLineNo">229</span>    {<a name="line.229"></a>
<span class="sourceLineNo">230</span>        this.remoteDownloadTimeout = remoteDownloadTimeout;<a name="line.230"></a>
<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
<span class="sourceLineNo">232</span><a name="line.232"></a>
<span class="sourceLineNo">233</span>    public boolean isDownloadRemoteIndexOnStartup()<a name="line.233"></a>
<span class="sourceLineNo">234</span>    {<a name="line.234"></a>
<span class="sourceLineNo">235</span>        return downloadRemoteIndexOnStartup;<a name="line.235"></a>
<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
<span class="sourceLineNo">237</span><a name="line.237"></a>
<span class="sourceLineNo">238</span>    public void setDownloadRemoteIndexOnStartup( boolean downloadRemoteIndexOnStartup )<a name="line.238"></a>
<span class="sourceLineNo">239</span>    {<a name="line.239"></a>
<span class="sourceLineNo">240</span>        this.downloadRemoteIndexOnStartup = downloadRemoteIndexOnStartup;<a name="line.240"></a>
<span class="sourceLineNo">241</span>    }<a name="line.241"></a>
<span class="sourceLineNo">242</span><a name="line.242"></a>
<span class="sourceLineNo">243</span>    public Map&lt;String, String&gt; getExtraParameters()<a name="line.243"></a>
<span class="sourceLineNo">244</span>    {<a name="line.244"></a>
<span class="sourceLineNo">245</span>        if ( this.extraParameters == null )<a name="line.245"></a>
<span class="sourceLineNo">246</span>        {<a name="line.246"></a>
<span class="sourceLineNo">247</span>            this.extraParameters = new HashMap&lt;&gt;();<a name="line.247"></a>
<span class="sourceLineNo">248</span>        }<a name="line.248"></a>
<span class="sourceLineNo">249</span>        return extraParameters;<a name="line.249"></a>
<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
<span class="sourceLineNo">251</span><a name="line.251"></a>
<span class="sourceLineNo">252</span>    public void setExtraParameters( Map&lt;String, String&gt; extraParameters )<a name="line.252"></a>
<span class="sourceLineNo">253</span>    {<a name="line.253"></a>
<span class="sourceLineNo">254</span>        this.extraParameters = extraParameters;<a name="line.254"></a>
<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
<span class="sourceLineNo">256</span><a name="line.256"></a>
<span class="sourceLineNo">257</span>    public void addExtraParameter( String key, String value )<a name="line.257"></a>
<span class="sourceLineNo">258</span>    {<a name="line.258"></a>
<span class="sourceLineNo">259</span>        getExtraParameters().put( key, value );<a name="line.259"></a>
<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
<span class="sourceLineNo">261</span><a name="line.261"></a>
<span class="sourceLineNo">262</span>    public List&lt;PropertyEntry&gt; getExtraParametersEntries()<a name="line.262"></a>
<span class="sourceLineNo">263</span>    {<a name="line.263"></a>
<span class="sourceLineNo">264</span>        this.extraParametersEntries = new ArrayList&lt;&gt;();<a name="line.264"></a>
<span class="sourceLineNo">265</span>        for ( Map.Entry&lt;String, String&gt; entry : getExtraParameters().entrySet() )<a name="line.265"></a>
<span class="sourceLineNo">266</span>        {<a name="line.266"></a>
<span class="sourceLineNo">267</span>            this.extraParametersEntries.add( new PropertyEntry( entry.getKey(), entry.getValue() ) );<a name="line.267"></a>
<span class="sourceLineNo">268</span>        }<a name="line.268"></a>
<span class="sourceLineNo">269</span>        return this.extraParametersEntries;<a name="line.269"></a>
<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
<span class="sourceLineNo">271</span><a name="line.271"></a>
<span class="sourceLineNo">272</span>    public void setExtraParametersEntries( List&lt;PropertyEntry&gt; extraParametersEntries )<a name="line.272"></a>
<span class="sourceLineNo">273</span>    {<a name="line.273"></a>
<span class="sourceLineNo">274</span>        if ( extraParametersEntries == null )<a name="line.274"></a>
<span class="sourceLineNo">275</span>        {<a name="line.275"></a>
<span class="sourceLineNo">276</span>            return;<a name="line.276"></a>
<span class="sourceLineNo">277</span>        }<a name="line.277"></a>
<span class="sourceLineNo">278</span><a name="line.278"></a>
<span class="sourceLineNo">279</span>        this.extraParametersEntries = extraParametersEntries;<a name="line.279"></a>
<span class="sourceLineNo">280</span>        for ( PropertyEntry propertyEntry : extraParametersEntries )<a name="line.280"></a>
<span class="sourceLineNo">281</span>        {<a name="line.281"></a>
<span class="sourceLineNo">282</span>            this.addExtraParameter( propertyEntry.getKey(), propertyEntry.getValue() );<a name="line.282"></a>
<span class="sourceLineNo">283</span>        }<a name="line.283"></a>
<span class="sourceLineNo">284</span>    }<a name="line.284"></a>
<span class="sourceLineNo">285</span><a name="line.285"></a>
<span class="sourceLineNo">286</span>    public Map&lt;String, String&gt; getExtraHeaders()<a name="line.286"></a>
<span class="sourceLineNo">287</span>    {<a name="line.287"></a>
<span class="sourceLineNo">288</span>        if ( this.extraHeaders == null )<a name="line.288"></a>
<span class="sourceLineNo">289</span>        {<a name="line.289"></a>
<span class="sourceLineNo">290</span>            this.extraHeaders = new HashMap&lt;&gt;();<a name="line.290"></a>
<span class="sourceLineNo">291</span>        }<a name="line.291"></a>
<span class="sourceLineNo">292</span>        return extraHeaders;<a name="line.292"></a>
<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
<span class="sourceLineNo">294</span><a name="line.294"></a>
<span class="sourceLineNo">295</span>    public void setExtraHeaders( Map&lt;String, String&gt; extraHeaders )<a name="line.295"></a>
<span class="sourceLineNo">296</span>    {<a name="line.296"></a>
<span class="sourceLineNo">297</span>        this.extraHeaders = extraHeaders;<a name="line.297"></a>
<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
<span class="sourceLineNo">299</span><a name="line.299"></a>
<span class="sourceLineNo">300</span>    public void addExtraHeader( String key, String value )<a name="line.300"></a>
<span class="sourceLineNo">301</span>    {<a name="line.301"></a>
<span class="sourceLineNo">302</span>        getExtraHeaders().put( key, value );<a name="line.302"></a>
<span class="sourceLineNo">303</span>    }<a name="line.303"></a>
<span class="sourceLineNo">304</span><a name="line.304"></a>
<span class="sourceLineNo">305</span>    public List&lt;PropertyEntry&gt; getExtraHeadersEntries()<a name="line.305"></a>
<span class="sourceLineNo">306</span>    {<a name="line.306"></a>
<span class="sourceLineNo">307</span>        this.extraHeadersEntries = new ArrayList&lt;&gt;();<a name="line.307"></a>
<span class="sourceLineNo">308</span>        for ( Map.Entry&lt;String, String&gt; entry : getExtraHeaders().entrySet() )<a name="line.308"></a>
<span class="sourceLineNo">309</span>        {<a name="line.309"></a>
<span class="sourceLineNo">310</span>            this.extraHeadersEntries.add( new PropertyEntry( entry.getKey(), entry.getValue() ) );<a name="line.310"></a>
<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
<span class="sourceLineNo">312</span>        return this.extraHeadersEntries;<a name="line.312"></a>
<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
<span class="sourceLineNo">315</span>    public void setExtraHeadersEntries( List&lt;PropertyEntry&gt; extraHeadersEntries )<a name="line.315"></a>
<span class="sourceLineNo">316</span>    {<a name="line.316"></a>
<span class="sourceLineNo">317</span>        if ( extraHeadersEntries == null )<a name="line.317"></a>
<span class="sourceLineNo">318</span>        {<a name="line.318"></a>
<span class="sourceLineNo">319</span>            return;<a name="line.319"></a>
<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
<span class="sourceLineNo">321</span><a name="line.321"></a>
<span class="sourceLineNo">322</span>        this.extraHeadersEntries = extraHeadersEntries;<a name="line.322"></a>
<span class="sourceLineNo">323</span>        for ( PropertyEntry propertyEntry : extraHeadersEntries )<a name="line.323"></a>
<span class="sourceLineNo">324</span>        {<a name="line.324"></a>
<span class="sourceLineNo">325</span>            this.addExtraHeader( propertyEntry.getKey(), propertyEntry.getValue() );<a name="line.325"></a>
<span class="sourceLineNo">326</span>        }<a name="line.326"></a>
<span class="sourceLineNo">327</span>    }<a name="line.327"></a>
<span class="sourceLineNo">328</span><a name="line.328"></a>
<span class="sourceLineNo">329</span>    public void setCheckPath(String checkPath) {<a name="line.329"></a>
<span class="sourceLineNo">330</span>        if (checkPath==null) {<a name="line.330"></a>
<span class="sourceLineNo">331</span>            this.checkPath="";<a name="line.331"></a>
<span class="sourceLineNo">332</span>        } else if (checkPath.startsWith("/")) {<a name="line.332"></a>
<span class="sourceLineNo">333</span>            this.checkPath = StringUtils.removeStart(checkPath, "/");<a name="line.333"></a>
<span class="sourceLineNo">334</span>            while(this.checkPath.startsWith("/")) {<a name="line.334"></a>
<span class="sourceLineNo">335</span>                this.checkPath = StringUtils.removeStart(checkPath, "/");<a name="line.335"></a>
<span class="sourceLineNo">336</span>            }<a name="line.336"></a>
<span class="sourceLineNo">337</span>        } else {<a name="line.337"></a>
<span class="sourceLineNo">338</span>            this.checkPath = checkPath;<a name="line.338"></a>
<span class="sourceLineNo">339</span>        }<a name="line.339"></a>
<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
<span class="sourceLineNo">341</span><a name="line.341"></a>
<span class="sourceLineNo">342</span>    public String getCheckPath() {<a name="line.342"></a>
<span class="sourceLineNo">343</span>        return checkPath;<a name="line.343"></a>
<span class="sourceLineNo">344</span>    }<a name="line.344"></a>
<span class="sourceLineNo">345</span><a name="line.345"></a>
<span class="sourceLineNo">346</span>    @Override<a name="line.346"></a>
<span class="sourceLineNo">347</span>    public String toString()<a name="line.347"></a>
<span class="sourceLineNo">348</span>    {<a name="line.348"></a>
<span class="sourceLineNo">349</span>        final StringBuilder sb = new StringBuilder();<a name="line.349"></a>
<span class="sourceLineNo">350</span>        sb.append( super.toString() );<a name="line.350"></a>
<span class="sourceLineNo">351</span>        sb.append( "RemoteRepository" );<a name="line.351"></a>
<span class="sourceLineNo">352</span>        sb.append( "{url='" ).append( url ).append( '\'' );<a name="line.352"></a>
<span class="sourceLineNo">353</span>        sb.append( ", userName='" ).append( userName ).append( '\'' );<a name="line.353"></a>
<span class="sourceLineNo">354</span>        sb.append( ", password='" ).append( password ).append( '\'' );<a name="line.354"></a>
<span class="sourceLineNo">355</span>        sb.append( ", timeout=" ).append( timeout );<a name="line.355"></a>
<span class="sourceLineNo">356</span>        sb.append( ", downloadRemoteIndex=" ).append( downloadRemoteIndex );<a name="line.356"></a>
<span class="sourceLineNo">357</span>        sb.append( ", remoteIndexUrl='" ).append( remoteIndexUrl ).append( '\'' );<a name="line.357"></a>
<span class="sourceLineNo">358</span>        sb.append( ", remoteDownloadNetworkProxyId='" ).append( remoteDownloadNetworkProxyId ).append( '\'' );<a name="line.358"></a>
<span class="sourceLineNo">359</span>        sb.append( ", cronExpression='" ).append( cronExpression ).append( '\'' );<a name="line.359"></a>
<span class="sourceLineNo">360</span>        sb.append( ", remoteDownloadTimeout=" ).append( remoteDownloadTimeout );<a name="line.360"></a>
<span class="sourceLineNo">361</span>        sb.append( ", downloadRemoteIndexOnStartup=" ).append( downloadRemoteIndexOnStartup );<a name="line.361"></a>
<span class="sourceLineNo">362</span>        sb.append( ", extraParameters=" ).append( extraParameters );<a name="line.362"></a>
<span class="sourceLineNo">363</span>        sb.append( ", extraHeaders=" ).append( extraHeaders );<a name="line.363"></a>
<span class="sourceLineNo">364</span>        sb.append( ", checkPath=").append(checkPath);<a name="line.364"></a>
<span class="sourceLineNo">365</span>        sb.append( '}' );<a name="line.365"></a>
<span class="sourceLineNo">366</span>        return sb.toString();<a name="line.366"></a>
<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
<span class="sourceLineNo">368</span><a name="line.368"></a>
<span class="sourceLineNo">369</span><a name="line.369"></a>
<span class="sourceLineNo">370</span>}<a name="line.370"></a>




























































</pre>
</div>
</body>
</html>