<!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.components.taskqueue;<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.slf4j.Logger;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import org.slf4j.LoggerFactory;<a name="line.23"></a>
<span class="sourceLineNo">024</span><a name="line.24"></a>
<span class="sourceLineNo">025</span>import java.util.ArrayList;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.util.Collection;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.Collections;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import java.util.Iterator;<a name="line.28"></a>
<span class="sourceLineNo">029</span>import java.util.List;<a name="line.29"></a>
<span class="sourceLineNo">030</span>import java.util.concurrent.BlockingQueue;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import java.util.concurrent.LinkedBlockingQueue;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import java.util.concurrent.TimeUnit;<a name="line.32"></a>
<span class="sourceLineNo">033</span><a name="line.33"></a>
<span class="sourceLineNo">034</span><a name="line.34"></a>
<span class="sourceLineNo">035</span>/**<a name="line.35"></a>
<span class="sourceLineNo">036</span> * @author &lt;a href="mailto:jason@maven.org"&gt;Jason van Zyl&lt;/a&gt;<a name="line.36"></a>
<span class="sourceLineNo">037</span> * @author &lt;a href="mailto:trygvis@inamo.no"&gt;Trygve Laugst&amp;oslash;l&lt;/a&gt;<a name="line.37"></a>
<span class="sourceLineNo">038</span> */<a name="line.38"></a>
<span class="sourceLineNo">039</span>public class DefaultTaskQueue<a name="line.39"></a>
<span class="sourceLineNo">040</span>    implements TaskQueue<a name="line.40"></a>
<span class="sourceLineNo">041</span>{<a name="line.41"></a>
<span class="sourceLineNo">042</span><a name="line.42"></a>
<span class="sourceLineNo">043</span>    private Logger logger = LoggerFactory.getLogger( getClass( ) );<a name="line.43"></a>
<span class="sourceLineNo">044</span><a name="line.44"></a>
<span class="sourceLineNo">045</span>    private List&lt;TaskEntryEvaluator&gt; taskEntryEvaluators = new ArrayList&lt;&gt;( );<a name="line.45"></a>
<span class="sourceLineNo">046</span><a name="line.46"></a>
<span class="sourceLineNo">047</span>    private List&lt;TaskExitEvaluator&gt; taskExitEvaluators = new ArrayList&lt;&gt;( );<a name="line.47"></a>
<span class="sourceLineNo">048</span><a name="line.48"></a>
<span class="sourceLineNo">049</span>    private List&lt;TaskViabilityEvaluator&gt; taskViabilityEvaluators = new ArrayList&lt;&gt;( );<a name="line.49"></a>
<span class="sourceLineNo">050</span><a name="line.50"></a>
<span class="sourceLineNo">051</span>    private BlockingQueue&lt;Task&gt; queue = new LinkedBlockingQueue&lt;&gt;( );<a name="line.51"></a>
<span class="sourceLineNo">052</span><a name="line.52"></a>
<span class="sourceLineNo">053</span>    // ----------------------------------------------------------------------<a name="line.53"></a>
<span class="sourceLineNo">054</span>    // Component Lifecycle<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>    // ----------------------------------------------------------------------<a name="line.57"></a>
<span class="sourceLineNo">058</span>    // TaskQueue Implementation<a name="line.58"></a>
<span class="sourceLineNo">059</span>    // ----------------------------------------------------------------------<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>    // Queue operations<a name="line.62"></a>
<span class="sourceLineNo">063</span>    // ----------------------------------------------------------------------<a name="line.63"></a>
<span class="sourceLineNo">064</span><a name="line.64"></a>
<span class="sourceLineNo">065</span>    @Override<a name="line.65"></a>
<span class="sourceLineNo">066</span>    public boolean put( Task task )<a name="line.66"></a>
<span class="sourceLineNo">067</span>        throws TaskQueueException<a name="line.67"></a>
<span class="sourceLineNo">068</span>    {<a name="line.68"></a>
<span class="sourceLineNo">069</span>        // ----------------------------------------------------------------------<a name="line.69"></a>
<span class="sourceLineNo">070</span>        // Check that all the task entry evaluators accepts the task<a name="line.70"></a>
<span class="sourceLineNo">071</span>        // ----------------------------------------------------------------------<a name="line.71"></a>
<span class="sourceLineNo">072</span><a name="line.72"></a>
<span class="sourceLineNo">073</span>        for ( TaskEntryEvaluator taskEntryEvaluator : taskEntryEvaluators )<a name="line.73"></a>
<span class="sourceLineNo">074</span>        {<a name="line.74"></a>
<span class="sourceLineNo">075</span>            boolean result = taskEntryEvaluator.evaluate( task );<a name="line.75"></a>
<span class="sourceLineNo">076</span><a name="line.76"></a>
<span class="sourceLineNo">077</span>            if ( !result )<a name="line.77"></a>
<span class="sourceLineNo">078</span>            {<a name="line.78"></a>
<span class="sourceLineNo">079</span>                return false;<a name="line.79"></a>
<span class="sourceLineNo">080</span>            }<a name="line.80"></a>
<span class="sourceLineNo">081</span>        }<a name="line.81"></a>
<span class="sourceLineNo">082</span><a name="line.82"></a>
<span class="sourceLineNo">083</span>        // ----------------------------------------------------------------------<a name="line.83"></a>
<span class="sourceLineNo">084</span>        // The task was accepted, enqueue it<a name="line.84"></a>
<span class="sourceLineNo">085</span>        // ----------------------------------------------------------------------<a name="line.85"></a>
<span class="sourceLineNo">086</span><a name="line.86"></a>
<span class="sourceLineNo">087</span>        enqueue( task );<a name="line.87"></a>
<span class="sourceLineNo">088</span><a name="line.88"></a>
<span class="sourceLineNo">089</span>        // ----------------------------------------------------------------------<a name="line.89"></a>
<span class="sourceLineNo">090</span>        // Check that all the task viability evaluators accepts the task<a name="line.90"></a>
<span class="sourceLineNo">091</span>        // ----------------------------------------------------------------------<a name="line.91"></a>
<span class="sourceLineNo">092</span><a name="line.92"></a>
<span class="sourceLineNo">093</span>        for ( TaskViabilityEvaluator taskViabilityEvaluator : taskViabilityEvaluators )<a name="line.93"></a>
<span class="sourceLineNo">094</span>        {<a name="line.94"></a>
<span class="sourceLineNo">095</span>            Collection&lt;Task&gt; toBeRemoved =<a name="line.95"></a>
<span class="sourceLineNo">096</span>                taskViabilityEvaluator.evaluate( Collections.unmodifiableCollection( queue ) );<a name="line.96"></a>
<span class="sourceLineNo">097</span><a name="line.97"></a>
<span class="sourceLineNo">098</span>            for ( Iterator&lt;Task&gt; it = toBeRemoved.iterator( ); it.hasNext( ); )<a name="line.98"></a>
<span class="sourceLineNo">099</span>            {<a name="line.99"></a>
<span class="sourceLineNo">100</span>                Task t = it.next( );<a name="line.100"></a>
<span class="sourceLineNo">101</span><a name="line.101"></a>
<span class="sourceLineNo">102</span>                queue.remove( t );<a name="line.102"></a>
<span class="sourceLineNo">103</span>            }<a name="line.103"></a>
<span class="sourceLineNo">104</span>        }<a name="line.104"></a>
<span class="sourceLineNo">105</span><a name="line.105"></a>
<span class="sourceLineNo">106</span>        return true;<a name="line.106"></a>
<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
<span class="sourceLineNo">108</span><a name="line.108"></a>
<span class="sourceLineNo">109</span>    @Override<a name="line.109"></a>
<span class="sourceLineNo">110</span>    public Task take( )<a name="line.110"></a>
<span class="sourceLineNo">111</span>        throws TaskQueueException<a name="line.111"></a>
<span class="sourceLineNo">112</span>    {<a name="line.112"></a>
<span class="sourceLineNo">113</span>        logger.debug( "take" );<a name="line.113"></a>
<span class="sourceLineNo">114</span>        while ( true )<a name="line.114"></a>
<span class="sourceLineNo">115</span>        {<a name="line.115"></a>
<span class="sourceLineNo">116</span>            Task task = dequeue( );<a name="line.116"></a>
<span class="sourceLineNo">117</span><a name="line.117"></a>
<span class="sourceLineNo">118</span>            if ( task == null )<a name="line.118"></a>
<span class="sourceLineNo">119</span>            {<a name="line.119"></a>
<span class="sourceLineNo">120</span>                return null;<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>            for ( TaskExitEvaluator taskExitEvaluator : taskExitEvaluators )<a name="line.123"></a>
<span class="sourceLineNo">124</span>            {<a name="line.124"></a>
<span class="sourceLineNo">125</span>                boolean result = taskExitEvaluator.evaluate( task );<a name="line.125"></a>
<span class="sourceLineNo">126</span><a name="line.126"></a>
<span class="sourceLineNo">127</span>                if ( !result )<a name="line.127"></a>
<span class="sourceLineNo">128</span>                {<a name="line.128"></a>
<span class="sourceLineNo">129</span>                    // the task wasn't accepted; drop it.<a name="line.129"></a>
<span class="sourceLineNo">130</span>                    task = null;<a name="line.130"></a>
<span class="sourceLineNo">131</span><a name="line.131"></a>
<span class="sourceLineNo">132</span>                    break;<a name="line.132"></a>
<span class="sourceLineNo">133</span>                }<a name="line.133"></a>
<span class="sourceLineNo">134</span>            }<a name="line.134"></a>
<span class="sourceLineNo">135</span><a name="line.135"></a>
<span class="sourceLineNo">136</span>            if ( task != null )<a name="line.136"></a>
<span class="sourceLineNo">137</span>            {<a name="line.137"></a>
<span class="sourceLineNo">138</span>                return task;<a name="line.138"></a>
<span class="sourceLineNo">139</span>            }<a name="line.139"></a>
<span class="sourceLineNo">140</span>        }<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>    @Override<a name="line.143"></a>
<span class="sourceLineNo">144</span>    public Task poll( int timeout, TimeUnit timeUnit )<a name="line.144"></a>
<span class="sourceLineNo">145</span>        throws InterruptedException<a name="line.145"></a>
<span class="sourceLineNo">146</span>    {<a name="line.146"></a>
<span class="sourceLineNo">147</span>        logger.debug( "pool" );<a name="line.147"></a>
<span class="sourceLineNo">148</span>        return queue.poll( timeout, timeUnit );<a name="line.148"></a>
<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
<span class="sourceLineNo">150</span><a name="line.150"></a>
<span class="sourceLineNo">151</span>    @Override<a name="line.151"></a>
<span class="sourceLineNo">152</span>    public boolean remove( Task task )<a name="line.152"></a>
<span class="sourceLineNo">153</span>        throws ClassCastException, NullPointerException<a name="line.153"></a>
<span class="sourceLineNo">154</span>    {<a name="line.154"></a>
<span class="sourceLineNo">155</span>        return queue.remove( task );<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>    @Override<a name="line.158"></a>
<span class="sourceLineNo">159</span>    public boolean removeAll( List tasks )<a name="line.159"></a>
<span class="sourceLineNo">160</span>        throws ClassCastException, NullPointerException<a name="line.160"></a>
<span class="sourceLineNo">161</span>    {<a name="line.161"></a>
<span class="sourceLineNo">162</span>        return queue.removeAll( tasks );<a name="line.162"></a>
<span class="sourceLineNo">163</span>    }<a name="line.163"></a>
<span class="sourceLineNo">164</span><a name="line.164"></a>
<span class="sourceLineNo">165</span><a name="line.165"></a>
<span class="sourceLineNo">166</span>    // ----------------------------------------------------------------------<a name="line.166"></a>
<span class="sourceLineNo">167</span>    // Queue Inspection<a name="line.167"></a>
<span class="sourceLineNo">168</span>    // ----------------------------------------------------------------------<a name="line.168"></a>
<span class="sourceLineNo">169</span><a name="line.169"></a>
<span class="sourceLineNo">170</span>    @Override<a name="line.170"></a>
<span class="sourceLineNo">171</span>    public List&lt;Task&gt; getQueueSnapshot( )<a name="line.171"></a>
<span class="sourceLineNo">172</span>        throws TaskQueueException<a name="line.172"></a>
<span class="sourceLineNo">173</span>    {<a name="line.173"></a>
<span class="sourceLineNo">174</span>        return Collections.unmodifiableList( new ArrayList( queue ) );<a name="line.174"></a>
<span class="sourceLineNo">175</span>    }<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>    // Queue Management<a name="line.178"></a>
<span class="sourceLineNo">179</span>    // ----------------------------------------------------------------------<a name="line.179"></a>
<span class="sourceLineNo">180</span><a name="line.180"></a>
<span class="sourceLineNo">181</span>    private void enqueue( Task task )<a name="line.181"></a>
<span class="sourceLineNo">182</span>    {<a name="line.182"></a>
<span class="sourceLineNo">183</span>        boolean success = queue.add( task );<a name="line.183"></a>
<span class="sourceLineNo">184</span>        logger.debug( "enqueue success {}", success );<a name="line.184"></a>
<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
<span class="sourceLineNo">186</span><a name="line.186"></a>
<span class="sourceLineNo">187</span>    private Task dequeue( )<a name="line.187"></a>
<span class="sourceLineNo">188</span>    {<a name="line.188"></a>
<span class="sourceLineNo">189</span>        logger.debug( "dequeue" );<a name="line.189"></a>
<span class="sourceLineNo">190</span>        return queue.poll( );<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 List&lt;TaskEntryEvaluator&gt; getTaskEntryEvaluators( )<a name="line.193"></a>
<span class="sourceLineNo">194</span>    {<a name="line.194"></a>
<span class="sourceLineNo">195</span>        return taskEntryEvaluators;<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 setTaskEntryEvaluators( List&lt;TaskEntryEvaluator&gt; taskEntryEvaluators )<a name="line.198"></a>
<span class="sourceLineNo">199</span>    {<a name="line.199"></a>
<span class="sourceLineNo">200</span>        this.taskEntryEvaluators = taskEntryEvaluators;<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 List&lt;TaskExitEvaluator&gt; getTaskExitEvaluators( )<a name="line.203"></a>
<span class="sourceLineNo">204</span>    {<a name="line.204"></a>
<span class="sourceLineNo">205</span>        return taskExitEvaluators;<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 setTaskExitEvaluators( List&lt;TaskExitEvaluator&gt; taskExitEvaluators )<a name="line.208"></a>
<span class="sourceLineNo">209</span>    {<a name="line.209"></a>
<span class="sourceLineNo">210</span>        this.taskExitEvaluators = taskExitEvaluators;<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 List&lt;TaskViabilityEvaluator&gt; getTaskViabilityEvaluators( )<a name="line.213"></a>
<span class="sourceLineNo">214</span>    {<a name="line.214"></a>
<span class="sourceLineNo">215</span>        return taskViabilityEvaluators;<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 setTaskViabilityEvaluators( List&lt;TaskViabilityEvaluator&gt; taskViabilityEvaluators )<a name="line.218"></a>
<span class="sourceLineNo">219</span>    {<a name="line.219"></a>
<span class="sourceLineNo">220</span>        this.taskViabilityEvaluators = taskViabilityEvaluators;<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>




























































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