<!DOCTYPE HTML>
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.concurrent;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.subject.Subject;</a>
<span class="sourceLineNo">022</span><a id="line.22"></a>
<span class="sourceLineNo">023</span><a id="line.23">import java.util.ArrayList;</a>
<span class="sourceLineNo">024</span><a id="line.24">import java.util.Collection;</a>
<span class="sourceLineNo">025</span><a id="line.25">import java.util.List;</a>
<span class="sourceLineNo">026</span><a id="line.26">import java.util.concurrent.*;</a>
<span class="sourceLineNo">027</span><a id="line.27"></a>
<span class="sourceLineNo">028</span><a id="line.28">/**</a>
<span class="sourceLineNo">029</span><a id="line.29"> * {@code ExecutorService} implementation that will automatically first associate any argument</a>
<span class="sourceLineNo">030</span><a id="line.30"> * {@link Runnable} or {@link Callable} instances with the {@link #getSubject currently available subject} and then</a>
<span class="sourceLineNo">031</span><a id="line.31"> * dispatch the Subject-enabled runnable or callable to an underlying delegate</a>
<span class="sourceLineNo">032</span><a id="line.32"> * {@link java.util.concurrent.ExecutorService ExecutorService} instance.  The principle is the same as the</a>
<span class="sourceLineNo">033</span><a id="line.33"> * parent {@link SubjectAwareExecutor} class, but enables the richer {@link ExecutorService} API.</a>
<span class="sourceLineNo">034</span><a id="line.34"> * &lt;p/&gt;</a>
<span class="sourceLineNo">035</span><a id="line.35"> * This is a simplification for applications that want to execute code as the currently</a>
<span class="sourceLineNo">036</span><a id="line.36"> * executing {@code Subject} on another thread, but don't want or need to call the</a>
<span class="sourceLineNo">037</span><a id="line.37"> * {@link Subject#associateWith(Runnable)} or {@link Subject#associateWith(Callable)} methods and dispatch them to a</a>
<span class="sourceLineNo">038</span><a id="line.38"> * Thread manually.  This simplifies code and reduces Shiro dependencies across application source code.</a>
<span class="sourceLineNo">039</span><a id="line.39"> * &lt;p/&gt;</a>
<span class="sourceLineNo">040</span><a id="line.40"> * Consider this code that could be repeated in many places across an application:</a>
<span class="sourceLineNo">041</span><a id="line.41"> * &lt;pre&gt;</a>
<span class="sourceLineNo">042</span><a id="line.42"> * {@link Callable Callable} applicationWork = //instantiate or acquire Callable from somewhere</a>
<span class="sourceLineNo">043</span><a id="line.43"> * {@link Subject Subject} subject = {@link org.apache.shiro.SecurityUtils SecurityUtils}.{@link org.apache.shiro.SecurityUtils#getSubject() getSubject()};</a>
<span class="sourceLineNo">044</span><a id="line.44"> * {@link Callable Callable} work = subject.{@link Subject#associateWith(Callable) associateWith(applicationWork)};</a>
<span class="sourceLineNo">045</span><a id="line.45"> * {@link ExecutorService anExecutorService}.{@link ExecutorService#submit(Callable) submit(work)};</a>
<span class="sourceLineNo">046</span><a id="line.46"> * &lt;/pre&gt;</a>
<span class="sourceLineNo">047</span><a id="line.47"> * Instead, if the {@code ExecutorService} instance used at runtime is an instance of this class</a>
<span class="sourceLineNo">048</span><a id="line.48"> * (which delegates to the target ExecutorService that you want), all places in code like the above reduce to this:</a>
<span class="sourceLineNo">049</span><a id="line.49"> * &lt;pre&gt;</a>
<span class="sourceLineNo">050</span><a id="line.50"> * {@link Callable Callable} applicationWork = //instantiate or acquire Callable from somewhere</a>
<span class="sourceLineNo">051</span><a id="line.51"> * {@link ExecutorService anExecutorService}.{@link ExecutorService#submit(Callable) submit(work)};</a>
<span class="sourceLineNo">052</span><a id="line.52"> * &lt;/pre&gt;</a>
<span class="sourceLineNo">053</span><a id="line.53"> * Notice there is no use of the Shiro API in the 2nd code block, encouraging the principle of loose coupling across</a>
<span class="sourceLineNo">054</span><a id="line.54"> * your codebase.</a>
<span class="sourceLineNo">055</span><a id="line.55"> *</a>
<span class="sourceLineNo">056</span><a id="line.56"> * @since 1.0</a>
<span class="sourceLineNo">057</span><a id="line.57"> */</a>
<span class="sourceLineNo">058</span><a id="line.58">public class SubjectAwareExecutorService extends SubjectAwareExecutor implements ExecutorService {</a>
<span class="sourceLineNo">059</span><a id="line.59"></a>
<span class="sourceLineNo">060</span><a id="line.60">    private ExecutorService targetExecutorService;</a>
<span class="sourceLineNo">061</span><a id="line.61"></a>
<span class="sourceLineNo">062</span><a id="line.62">    public SubjectAwareExecutorService() {</a>
<span class="sourceLineNo">063</span><a id="line.63">    }</a>
<span class="sourceLineNo">064</span><a id="line.64"></a>
<span class="sourceLineNo">065</span><a id="line.65">    public SubjectAwareExecutorService(ExecutorService target) {</a>
<span class="sourceLineNo">066</span><a id="line.66">        setTargetExecutorService(target);</a>
<span class="sourceLineNo">067</span><a id="line.67">    }</a>
<span class="sourceLineNo">068</span><a id="line.68"></a>
<span class="sourceLineNo">069</span><a id="line.69">    public ExecutorService getTargetExecutorService() {</a>
<span class="sourceLineNo">070</span><a id="line.70">        return targetExecutorService;</a>
<span class="sourceLineNo">071</span><a id="line.71">    }</a>
<span class="sourceLineNo">072</span><a id="line.72"></a>
<span class="sourceLineNo">073</span><a id="line.73">    public void setTargetExecutorService(ExecutorService targetExecutorService) {</a>
<span class="sourceLineNo">074</span><a id="line.74">        super.setTargetExecutor(targetExecutorService);</a>
<span class="sourceLineNo">075</span><a id="line.75">        this.targetExecutorService = targetExecutorService;</a>
<span class="sourceLineNo">076</span><a id="line.76">    }</a>
<span class="sourceLineNo">077</span><a id="line.77"></a>
<span class="sourceLineNo">078</span><a id="line.78">    @Override</a>
<span class="sourceLineNo">079</span><a id="line.79">    public void setTargetExecutor(Executor targetExecutor) {</a>
<span class="sourceLineNo">080</span><a id="line.80">        if (!(targetExecutor instanceof ExecutorService)) {</a>
<span class="sourceLineNo">081</span><a id="line.81">            String msg = "The " + getClass().getName() + " implementation only accepts " +</a>
<span class="sourceLineNo">082</span><a id="line.82">                    ExecutorService.class.getName() + " target instances.";</a>
<span class="sourceLineNo">083</span><a id="line.83">            throw new IllegalArgumentException(msg);</a>
<span class="sourceLineNo">084</span><a id="line.84">        }</a>
<span class="sourceLineNo">085</span><a id="line.85">        super.setTargetExecutor(targetExecutor);</a>
<span class="sourceLineNo">086</span><a id="line.86">    }</a>
<span class="sourceLineNo">087</span><a id="line.87"></a>
<span class="sourceLineNo">088</span><a id="line.88">    public void shutdown() {</a>
<span class="sourceLineNo">089</span><a id="line.89">        this.targetExecutorService.shutdown();</a>
<span class="sourceLineNo">090</span><a id="line.90">    }</a>
<span class="sourceLineNo">091</span><a id="line.91"></a>
<span class="sourceLineNo">092</span><a id="line.92">    public List&lt;Runnable&gt; shutdownNow() {</a>
<span class="sourceLineNo">093</span><a id="line.93">        return this.targetExecutorService.shutdownNow();</a>
<span class="sourceLineNo">094</span><a id="line.94">    }</a>
<span class="sourceLineNo">095</span><a id="line.95"></a>
<span class="sourceLineNo">096</span><a id="line.96">    public boolean isShutdown() {</a>
<span class="sourceLineNo">097</span><a id="line.97">        return this.targetExecutorService.isShutdown();</a>
<span class="sourceLineNo">098</span><a id="line.98">    }</a>
<span class="sourceLineNo">099</span><a id="line.99"></a>
<span class="sourceLineNo">100</span><a id="line.100">    public boolean isTerminated() {</a>
<span class="sourceLineNo">101</span><a id="line.101">        return this.targetExecutorService.isTerminated();</a>
<span class="sourceLineNo">102</span><a id="line.102">    }</a>
<span class="sourceLineNo">103</span><a id="line.103"></a>
<span class="sourceLineNo">104</span><a id="line.104">    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {</a>
<span class="sourceLineNo">105</span><a id="line.105">        return this.targetExecutorService.awaitTermination(timeout, unit);</a>
<span class="sourceLineNo">106</span><a id="line.106">    }</a>
<span class="sourceLineNo">107</span><a id="line.107"></a>
<span class="sourceLineNo">108</span><a id="line.108">    protected &lt;T&gt; Callable&lt;T&gt; associateWithSubject(Callable&lt;T&gt; task) {</a>
<span class="sourceLineNo">109</span><a id="line.109">        Subject subject = getSubject();</a>
<span class="sourceLineNo">110</span><a id="line.110">        return subject.associateWith(task);</a>
<span class="sourceLineNo">111</span><a id="line.111">    }</a>
<span class="sourceLineNo">112</span><a id="line.112"></a>
<span class="sourceLineNo">113</span><a id="line.113">    public &lt;T&gt; Future&lt;T&gt; submit(Callable&lt;T&gt; task) {</a>
<span class="sourceLineNo">114</span><a id="line.114">        Callable&lt;T&gt; work = associateWithSubject(task);</a>
<span class="sourceLineNo">115</span><a id="line.115">        return this.targetExecutorService.submit(work);</a>
<span class="sourceLineNo">116</span><a id="line.116">    }</a>
<span class="sourceLineNo">117</span><a id="line.117"></a>
<span class="sourceLineNo">118</span><a id="line.118">    public &lt;T&gt; Future&lt;T&gt; submit(Runnable task, T result) {</a>
<span class="sourceLineNo">119</span><a id="line.119">        Runnable work = associateWithSubject(task);</a>
<span class="sourceLineNo">120</span><a id="line.120">        return this.targetExecutorService.submit(work, result);</a>
<span class="sourceLineNo">121</span><a id="line.121">    }</a>
<span class="sourceLineNo">122</span><a id="line.122"></a>
<span class="sourceLineNo">123</span><a id="line.123">    public Future&lt;?&gt; submit(Runnable task) {</a>
<span class="sourceLineNo">124</span><a id="line.124">        Runnable work = associateWithSubject(task);</a>
<span class="sourceLineNo">125</span><a id="line.125">        return this.targetExecutorService.submit(work);</a>
<span class="sourceLineNo">126</span><a id="line.126">    }</a>
<span class="sourceLineNo">127</span><a id="line.127"></a>
<span class="sourceLineNo">128</span><a id="line.128">    protected &lt;T&gt; Collection&lt;Callable&lt;T&gt;&gt; associateWithSubject(Collection&lt;? extends Callable&lt;T&gt;&gt; tasks) {</a>
<span class="sourceLineNo">129</span><a id="line.129">        Collection&lt;Callable&lt;T&gt;&gt; workItems = new ArrayList&lt;Callable&lt;T&gt;&gt;(tasks.size());</a>
<span class="sourceLineNo">130</span><a id="line.130">        for (Callable&lt;T&gt; task : tasks) {</a>
<span class="sourceLineNo">131</span><a id="line.131">            Callable&lt;T&gt; work = associateWithSubject(task);</a>
<span class="sourceLineNo">132</span><a id="line.132">            workItems.add(work);</a>
<span class="sourceLineNo">133</span><a id="line.133">        }</a>
<span class="sourceLineNo">134</span><a id="line.134">        return workItems;</a>
<span class="sourceLineNo">135</span><a id="line.135">    }</a>
<span class="sourceLineNo">136</span><a id="line.136"></a>
<span class="sourceLineNo">137</span><a id="line.137">    public &lt;T&gt; List&lt;Future&lt;T&gt;&gt; invokeAll(Collection&lt;? extends Callable&lt;T&gt;&gt; tasks) throws InterruptedException {</a>
<span class="sourceLineNo">138</span><a id="line.138">        Collection&lt;Callable&lt;T&gt;&gt; workItems = associateWithSubject(tasks);</a>
<span class="sourceLineNo">139</span><a id="line.139">        return this.targetExecutorService.invokeAll(workItems);</a>
<span class="sourceLineNo">140</span><a id="line.140">    }</a>
<span class="sourceLineNo">141</span><a id="line.141"></a>
<span class="sourceLineNo">142</span><a id="line.142">    public &lt;T&gt; List&lt;Future&lt;T&gt;&gt; invokeAll(Collection&lt;? extends Callable&lt;T&gt;&gt; tasks, long timeout, TimeUnit unit)</a>
<span class="sourceLineNo">143</span><a id="line.143">            throws InterruptedException {</a>
<span class="sourceLineNo">144</span><a id="line.144">        Collection&lt;Callable&lt;T&gt;&gt; workItems = associateWithSubject(tasks);</a>
<span class="sourceLineNo">145</span><a id="line.145">        return this.targetExecutorService.invokeAll(workItems, timeout, unit);</a>
<span class="sourceLineNo">146</span><a id="line.146">    }</a>
<span class="sourceLineNo">147</span><a id="line.147"></a>
<span class="sourceLineNo">148</span><a id="line.148">    public &lt;T&gt; T invokeAny(Collection&lt;? extends Callable&lt;T&gt;&gt; tasks) throws InterruptedException, ExecutionException {</a>
<span class="sourceLineNo">149</span><a id="line.149">        Collection&lt;Callable&lt;T&gt;&gt; workItems = associateWithSubject(tasks);</a>
<span class="sourceLineNo">150</span><a id="line.150">        return this.targetExecutorService.invokeAny(workItems);</a>
<span class="sourceLineNo">151</span><a id="line.151">    }</a>
<span class="sourceLineNo">152</span><a id="line.152"></a>
<span class="sourceLineNo">153</span><a id="line.153">    public &lt;T&gt; T invokeAny(Collection&lt;? extends Callable&lt;T&gt;&gt; tasks, long timeout, TimeUnit unit)</a>
<span class="sourceLineNo">154</span><a id="line.154">            throws InterruptedException, ExecutionException, TimeoutException {</a>
<span class="sourceLineNo">155</span><a id="line.155">        Collection&lt;Callable&lt;T&gt;&gt; workItems = associateWithSubject(tasks);</a>
<span class="sourceLineNo">156</span><a id="line.156">        return this.targetExecutorService.invokeAny(workItems, timeout, unit);</a>
<span class="sourceLineNo">157</span><a id="line.157">    }</a>
<span class="sourceLineNo">158</span><a id="line.158">}</a>




























































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