<!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.event.support;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.event.EventBus;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.slf4j.Logger;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.slf4j.LoggerFactory;</a>
<span class="sourceLineNo">024</span><a id="line.24"></a>
<span class="sourceLineNo">025</span><a id="line.25">import java.util.ArrayList;</a>
<span class="sourceLineNo">026</span><a id="line.26">import java.util.Collections;</a>
<span class="sourceLineNo">027</span><a id="line.27">import java.util.HashSet;</a>
<span class="sourceLineNo">028</span><a id="line.28">import java.util.LinkedHashMap;</a>
<span class="sourceLineNo">029</span><a id="line.29">import java.util.List;</a>
<span class="sourceLineNo">030</span><a id="line.30">import java.util.Map;</a>
<span class="sourceLineNo">031</span><a id="line.31">import java.util.Set;</a>
<span class="sourceLineNo">032</span><a id="line.32">import java.util.concurrent.locks.Lock;</a>
<span class="sourceLineNo">033</span><a id="line.33">import java.util.concurrent.locks.ReentrantReadWriteLock;</a>
<span class="sourceLineNo">034</span><a id="line.34"></a>
<span class="sourceLineNo">035</span><a id="line.35">/**</a>
<span class="sourceLineNo">036</span><a id="line.36"> * A default event bus implementation that synchronously publishes events to registered listeners.  Listeners can be</a>
<span class="sourceLineNo">037</span><a id="line.37"> * registered or unregistered for events as necessary.</a>
<span class="sourceLineNo">038</span><a id="line.38"> * &lt;p/&gt;</a>
<span class="sourceLineNo">039</span><a id="line.39"> * An event bus enables a publish/subscribe paradigm within Shiro - components can publish or consume events they</a>
<span class="sourceLineNo">040</span><a id="line.40"> * find relevant without needing to be tightly coupled to other components.  This affords great</a>
<span class="sourceLineNo">041</span><a id="line.41"> * flexibility within Shiro by promoting loose coupling and high cohesion between components and a much safer</a>
<span class="sourceLineNo">042</span><a id="line.42"> * pluggable architecture that is more resilient to change over time.</a>
<span class="sourceLineNo">043</span><a id="line.43"> * &lt;h2&gt;Sending Events&lt;/h2&gt;</a>
<span class="sourceLineNo">044</span><a id="line.44"> * If a component wishes to publish events to other components:</a>
<span class="sourceLineNo">045</span><a id="line.45"> * &lt;pre&gt;</a>
<span class="sourceLineNo">046</span><a id="line.46"> *     MyEvent myEvent = createMyEvent();</a>
<span class="sourceLineNo">047</span><a id="line.47"> *     eventBus.publish(myEvent);</a>
<span class="sourceLineNo">048</span><a id="line.48"> * &lt;/pre&gt;</a>
<span class="sourceLineNo">049</span><a id="line.49"> * The event bus will determine the type of event and then dispatch the event to components that wish to receive</a>
<span class="sourceLineNo">050</span><a id="line.50"> * events of that type.</a>
<span class="sourceLineNo">051</span><a id="line.51"> * &lt;h2&gt;Receiving Events&lt;/h2&gt;</a>
<span class="sourceLineNo">052</span><a id="line.52"> * A component can receive events of interest by doing the following.</a>
<span class="sourceLineNo">053</span><a id="line.53"> * &lt;ol&gt;</a>
<span class="sourceLineNo">054</span><a id="line.54"> * &lt;li&gt;For each type of event you wish to consume, create a public method that accepts a single event argument.</a>
<span class="sourceLineNo">055</span><a id="line.55"> * The method argument type indicates the type of event to receive.&lt;/li&gt;</a>
<span class="sourceLineNo">056</span><a id="line.56"> * &lt;li&gt;Annotate each of these public methods with the {@link org.apache.shiro.event.Subscribe Subscribe} annotation.&lt;/li&gt;</a>
<span class="sourceLineNo">057</span><a id="line.57"> * &lt;li&gt;Register the component with the event bus:</a>
<span class="sourceLineNo">058</span><a id="line.58"> * &lt;pre&gt;</a>
<span class="sourceLineNo">059</span><a id="line.59"> *         eventBus.register(myComponent);</a>
<span class="sourceLineNo">060</span><a id="line.60"> *     &lt;/pre&gt;</a>
<span class="sourceLineNo">061</span><a id="line.61"> * &lt;/li&gt;</a>
<span class="sourceLineNo">062</span><a id="line.62"> * &lt;/ol&gt;</a>
<span class="sourceLineNo">063</span><a id="line.63"> * After registering the component, when when an event of a respective type is published, the component's</a>
<span class="sourceLineNo">064</span><a id="line.64"> * {@code Subscribe}-annotated method(s) will be invoked as expected.</a>
<span class="sourceLineNo">065</span><a id="line.65"> *</a>
<span class="sourceLineNo">066</span><a id="line.66"> * This design (and its constituent helper components) was largely influenced by</a>
<span class="sourceLineNo">067</span><a id="line.67"> * Guava's &lt;a href="http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/eventbus/EventBus.html"&gt;EventBus&lt;/a&gt;</a>
<span class="sourceLineNo">068</span><a id="line.68"> * concept, although no code was shared/imported (even though Guava is Apache 2.0 licensed and could have</a>
<span class="sourceLineNo">069</span><a id="line.69"> * been used).</a>
<span class="sourceLineNo">070</span><a id="line.70"> *</a>
<span class="sourceLineNo">071</span><a id="line.71"> * This implementation is thread-safe and may be used concurrently.</a>
<span class="sourceLineNo">072</span><a id="line.72"> *</a>
<span class="sourceLineNo">073</span><a id="line.73"> * @since 1.3</a>
<span class="sourceLineNo">074</span><a id="line.74"> */</a>
<span class="sourceLineNo">075</span><a id="line.75">public class DefaultEventBus implements EventBus {</a>
<span class="sourceLineNo">076</span><a id="line.76"></a>
<span class="sourceLineNo">077</span><a id="line.77">    private static final Logger log = LoggerFactory.getLogger(DefaultEventBus.class);</a>
<span class="sourceLineNo">078</span><a id="line.78"></a>
<span class="sourceLineNo">079</span><a id="line.79">    private static final String EVENT_LISTENER_ERROR_MSG = "Event listener processing failed.  Listeners should " +</a>
<span class="sourceLineNo">080</span><a id="line.80">            "generally handle exceptions directly and not propagate to the event bus.";</a>
<span class="sourceLineNo">081</span><a id="line.81"></a>
<span class="sourceLineNo">082</span><a id="line.82">    //this is stateless, we can retain a static final reference:</a>
<span class="sourceLineNo">083</span><a id="line.83">    private static final EventListenerComparator EVENT_LISTENER_COMPARATOR = new EventListenerComparator();</a>
<span class="sourceLineNo">084</span><a id="line.84"></a>
<span class="sourceLineNo">085</span><a id="line.85">    private EventListenerResolver eventListenerResolver;</a>
<span class="sourceLineNo">086</span><a id="line.86"></a>
<span class="sourceLineNo">087</span><a id="line.87">    //We want to preserve registration order to deliver events to objects in the order that they are registered</a>
<span class="sourceLineNo">088</span><a id="line.88">    //with the event bus.  This has the nice effect that any Shiro system-level components that are registered first</a>
<span class="sourceLineNo">089</span><a id="line.89">    //(likely to happen upon startup) have precedence over those registered by end-user components later.</a>
<span class="sourceLineNo">090</span><a id="line.90">    //</a>
<span class="sourceLineNo">091</span><a id="line.91">    //One might think that this could have been done by just using a ConcurrentSkipListMap (which is available only on</a>
<span class="sourceLineNo">092</span><a id="line.92">    //JDK 6 or later).  However, this approach requires the implementation of a Comparator to sort elements, and this</a>
<span class="sourceLineNo">093</span><a id="line.93">    //surfaces a problem: for any given random event listener, there isn't any guaranteed property to exist that can be</a>
<span class="sourceLineNo">094</span><a id="line.94">    //inspected to determine order of registration, since registration order is an artifact of this EventBus</a>
<span class="sourceLineNo">095</span><a id="line.95">    //implementation, not the listeners themselves.</a>
<span class="sourceLineNo">096</span><a id="line.96">    //</a>
<span class="sourceLineNo">097</span><a id="line.97">    //Therefore, we use a simple concurrent lock to wrap a LinkedHashMap - the LinkedHashMap retains insertion order</a>
<span class="sourceLineNo">098</span><a id="line.98">    //and the lock provides thread-safety in probably a much simpler mechanism than attempting to write a</a>
<span class="sourceLineNo">099</span><a id="line.99">    //EventBus-specific Comparator.  This technique is also likely to be faster than a ConcurrentSkipListMap, which</a>
<span class="sourceLineNo">100</span><a id="line.100">    //is about 3-5 times slower than a standard ConcurrentMap.</a>
<span class="sourceLineNo">101</span><a id="line.101">    private final Map&lt;Object, Subscription&gt; registry;</a>
<span class="sourceLineNo">102</span><a id="line.102">    private final Lock registryReadLock;</a>
<span class="sourceLineNo">103</span><a id="line.103">    private final Lock registryWriteLock;</a>
<span class="sourceLineNo">104</span><a id="line.104"></a>
<span class="sourceLineNo">105</span><a id="line.105">    public DefaultEventBus() {</a>
<span class="sourceLineNo">106</span><a id="line.106">        this.registry = new LinkedHashMap&lt;Object, Subscription&gt;(); //not thread safe, so we need locks:</a>
<span class="sourceLineNo">107</span><a id="line.107">        ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();</a>
<span class="sourceLineNo">108</span><a id="line.108">        this.registryReadLock = rwl.readLock();</a>
<span class="sourceLineNo">109</span><a id="line.109">        this.registryWriteLock = rwl.writeLock();</a>
<span class="sourceLineNo">110</span><a id="line.110">        this.eventListenerResolver = new AnnotationEventListenerResolver();</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 EventListenerResolver getEventListenerResolver() {</a>
<span class="sourceLineNo">114</span><a id="line.114">        return eventListenerResolver;</a>
<span class="sourceLineNo">115</span><a id="line.115">    }</a>
<span class="sourceLineNo">116</span><a id="line.116"></a>
<span class="sourceLineNo">117</span><a id="line.117">    public void setEventListenerResolver(EventListenerResolver eventListenerResolver) {</a>
<span class="sourceLineNo">118</span><a id="line.118">        this.eventListenerResolver = eventListenerResolver;</a>
<span class="sourceLineNo">119</span><a id="line.119">    }</a>
<span class="sourceLineNo">120</span><a id="line.120"></a>
<span class="sourceLineNo">121</span><a id="line.121">    public void publish(Object event) {</a>
<span class="sourceLineNo">122</span><a id="line.122">        if (event == null) {</a>
<span class="sourceLineNo">123</span><a id="line.123">            log.info("Received null event for publishing.  Ignoring and returning.");</a>
<span class="sourceLineNo">124</span><a id="line.124">            return;</a>
<span class="sourceLineNo">125</span><a id="line.125">        }</a>
<span class="sourceLineNo">126</span><a id="line.126"></a>
<span class="sourceLineNo">127</span><a id="line.127">        registryReadLock.lock();</a>
<span class="sourceLineNo">128</span><a id="line.128">        try {</a>
<span class="sourceLineNo">129</span><a id="line.129">            //performing the entire iteration within the lock will be a slow operation if the registry has a lot of</a>
<span class="sourceLineNo">130</span><a id="line.130">            //contention.  However, it is expected that the very large majority of cases the registry will be</a>
<span class="sourceLineNo">131</span><a id="line.131">            //read-mostly with very little writes (registrations or removals) occurring during a typical application</a>
<span class="sourceLineNo">132</span><a id="line.132">            //lifetime.</a>
<span class="sourceLineNo">133</span><a id="line.133">            //</a>
<span class="sourceLineNo">134</span><a id="line.134">            //The alternative would be to copy the registry.values() collection to a new LinkedHashSet within the lock</a>
<span class="sourceLineNo">135</span><a id="line.135">            //only and the iteration on this new collection could be outside the lock.  This has the performance penalty</a>
<span class="sourceLineNo">136</span><a id="line.136">            //however of always creating a new collection every time an event is published,  which could be more</a>
<span class="sourceLineNo">137</span><a id="line.137">            //costly for the majority of applications, especially if the number of listeners is large.</a>
<span class="sourceLineNo">138</span><a id="line.138">            //</a>
<span class="sourceLineNo">139</span><a id="line.139">            //Finally, the read lock is re-entrant, so multiple publish calls will be</a>
<span class="sourceLineNo">140</span><a id="line.140">            //concurrent without penalty since publishing is a read-only operation on the registry.</a>
<span class="sourceLineNo">141</span><a id="line.141"></a>
<span class="sourceLineNo">142</span><a id="line.142">            for (Subscription subscription : this.registry.values()) {</a>
<span class="sourceLineNo">143</span><a id="line.143">                subscription.onEvent(event);</a>
<span class="sourceLineNo">144</span><a id="line.144">            }</a>
<span class="sourceLineNo">145</span><a id="line.145">        } finally {</a>
<span class="sourceLineNo">146</span><a id="line.146">            registryReadLock.unlock();</a>
<span class="sourceLineNo">147</span><a id="line.147">        }</a>
<span class="sourceLineNo">148</span><a id="line.148">    }</a>
<span class="sourceLineNo">149</span><a id="line.149"></a>
<span class="sourceLineNo">150</span><a id="line.150">    public void register(Object instance) {</a>
<span class="sourceLineNo">151</span><a id="line.151">        if (instance == null) {</a>
<span class="sourceLineNo">152</span><a id="line.152">            log.info("Received null instance for event listener registration.  Ignoring registration request.");</a>
<span class="sourceLineNo">153</span><a id="line.153">            return;</a>
<span class="sourceLineNo">154</span><a id="line.154">        }</a>
<span class="sourceLineNo">155</span><a id="line.155"></a>
<span class="sourceLineNo">156</span><a id="line.156">        unregister(instance);</a>
<span class="sourceLineNo">157</span><a id="line.157"></a>
<span class="sourceLineNo">158</span><a id="line.158">        List&lt;EventListener&gt; listeners = getEventListenerResolver().getEventListeners(instance);</a>
<span class="sourceLineNo">159</span><a id="line.159"></a>
<span class="sourceLineNo">160</span><a id="line.160">        if (listeners == null || listeners.isEmpty()) {</a>
<span class="sourceLineNo">161</span><a id="line.161">            log.warn("Unable to resolve event listeners for subscriber instance [{}]. Ignoring registration request.",</a>
<span class="sourceLineNo">162</span><a id="line.162">                    instance);</a>
<span class="sourceLineNo">163</span><a id="line.163">            return;</a>
<span class="sourceLineNo">164</span><a id="line.164">        }</a>
<span class="sourceLineNo">165</span><a id="line.165"></a>
<span class="sourceLineNo">166</span><a id="line.166">        Subscription subscription = new Subscription(listeners);</a>
<span class="sourceLineNo">167</span><a id="line.167"></a>
<span class="sourceLineNo">168</span><a id="line.168">        this.registryWriteLock.lock();</a>
<span class="sourceLineNo">169</span><a id="line.169">        try {</a>
<span class="sourceLineNo">170</span><a id="line.170">            this.registry.put(instance, subscription);</a>
<span class="sourceLineNo">171</span><a id="line.171">        } finally {</a>
<span class="sourceLineNo">172</span><a id="line.172">            this.registryWriteLock.unlock();</a>
<span class="sourceLineNo">173</span><a id="line.173">        }</a>
<span class="sourceLineNo">174</span><a id="line.174">    }</a>
<span class="sourceLineNo">175</span><a id="line.175"></a>
<span class="sourceLineNo">176</span><a id="line.176">    public void unregister(Object instance) {</a>
<span class="sourceLineNo">177</span><a id="line.177">        if (instance == null) {</a>
<span class="sourceLineNo">178</span><a id="line.178">            return;</a>
<span class="sourceLineNo">179</span><a id="line.179">        }</a>
<span class="sourceLineNo">180</span><a id="line.180">        this.registryWriteLock.lock();</a>
<span class="sourceLineNo">181</span><a id="line.181">        try {</a>
<span class="sourceLineNo">182</span><a id="line.182">            this.registry.remove(instance);</a>
<span class="sourceLineNo">183</span><a id="line.183">        } finally {</a>
<span class="sourceLineNo">184</span><a id="line.184">            this.registryWriteLock.unlock();</a>
<span class="sourceLineNo">185</span><a id="line.185">        }</a>
<span class="sourceLineNo">186</span><a id="line.186">    }</a>
<span class="sourceLineNo">187</span><a id="line.187"></a>
<span class="sourceLineNo">188</span><a id="line.188">    private class Subscription {</a>
<span class="sourceLineNo">189</span><a id="line.189"></a>
<span class="sourceLineNo">190</span><a id="line.190">        private final List&lt;EventListener&gt; listeners;</a>
<span class="sourceLineNo">191</span><a id="line.191"></a>
<span class="sourceLineNo">192</span><a id="line.192">        public Subscription(List&lt;EventListener&gt; listeners) {</a>
<span class="sourceLineNo">193</span><a id="line.193">            List&lt;EventListener&gt; toSort = new ArrayList&lt;EventListener&gt;(listeners);</a>
<span class="sourceLineNo">194</span><a id="line.194">            Collections.sort(toSort, EVENT_LISTENER_COMPARATOR);</a>
<span class="sourceLineNo">195</span><a id="line.195">            this.listeners = toSort;</a>
<span class="sourceLineNo">196</span><a id="line.196">        }</a>
<span class="sourceLineNo">197</span><a id="line.197"></a>
<span class="sourceLineNo">198</span><a id="line.198">        public void onEvent(Object event) {</a>
<span class="sourceLineNo">199</span><a id="line.199"></a>
<span class="sourceLineNo">200</span><a id="line.200">            Set&lt;Object&gt; delivered = new HashSet&lt;Object&gt;();</a>
<span class="sourceLineNo">201</span><a id="line.201"></a>
<span class="sourceLineNo">202</span><a id="line.202">            for (EventListener listener : this.listeners) {</a>
<span class="sourceLineNo">203</span><a id="line.203">                Object target = listener;</a>
<span class="sourceLineNo">204</span><a id="line.204">                if (listener instanceof SingleArgumentMethodEventListener) {</a>
<span class="sourceLineNo">205</span><a id="line.205">                    SingleArgumentMethodEventListener singleArgListener = (SingleArgumentMethodEventListener) listener;</a>
<span class="sourceLineNo">206</span><a id="line.206">                    target = singleArgListener.getTarget();</a>
<span class="sourceLineNo">207</span><a id="line.207">                }</a>
<span class="sourceLineNo">208</span><a id="line.208">                if (listener.accepts(event) &amp;&amp; !delivered.contains(target)) {</a>
<span class="sourceLineNo">209</span><a id="line.209">                    try {</a>
<span class="sourceLineNo">210</span><a id="line.210">                        listener.onEvent(event);</a>
<span class="sourceLineNo">211</span><a id="line.211">                    } catch (Throwable t) {</a>
<span class="sourceLineNo">212</span><a id="line.212">                        log.warn(EVENT_LISTENER_ERROR_MSG, t);</a>
<span class="sourceLineNo">213</span><a id="line.213">                    }</a>
<span class="sourceLineNo">214</span><a id="line.214">                    delivered.add(target);</a>
<span class="sourceLineNo">215</span><a id="line.215">                }</a>
<span class="sourceLineNo">216</span><a id="line.216">            }</a>
<span class="sourceLineNo">217</span><a id="line.217">        }</a>
<span class="sourceLineNo">218</span><a id="line.218">    }</a>
<span class="sourceLineNo">219</span><a id="line.219">}</a>




























































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