| InvokerMessageListener.java |
1 /**
2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3 *
4 * The contents of this file are subject to the terms of the Liferay Enterprise
5 * Subscription License ("License"). You may not use this file except in
6 * compliance with the License. You can obtain a copy of the License by
7 * contacting Liferay, Inc. See the License for the specific language governing
8 * permissions and limitations under the License, including but not limited to
9 * distribution rights of the Software.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17 * SOFTWARE.
18 */
19
20 package com.liferay.portal.kernel.messaging;
21
22 /**
23 * <a href="InvokerMessageListener.java.html"><b><i>View Source</i></b></a>
24 *
25 * @author Michael C. Han
26 *
27 */
28 public class InvokerMessageListener implements MessageListener {
29
30 public InvokerMessageListener(MessageListener messageListener) {
31 this(
32 messageListener,
33 Thread.currentThread().getContextClassLoader());
34 }
35
36 public InvokerMessageListener(
37 MessageListener messageListener, ClassLoader classLoader) {
38
39 _messageListener = messageListener;
40 _classLoader = classLoader;
41 }
42
43 public boolean equals(Object obj) {
44 InvokerMessageListener messageListenerInvoker =
45 (InvokerMessageListener)obj;
46
47 return _messageListener.equals(
48 messageListenerInvoker.getMessageListener());
49 }
50
51 public MessageListener getMessageListener() {
52 return _messageListener;
53 }
54
55 public int hashCode() {
56 return _messageListener.hashCode();
57 }
58
59 public void receive(Message message) {
60 Thread currentThread = Thread.currentThread();
61
62 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
63
64 currentThread.setContextClassLoader(_classLoader);
65
66 try {
67 _messageListener.receive(message);
68 }
69 finally {
70 currentThread.setContextClassLoader(contextClassLoader);
71 }
72 }
73
74 private MessageListener _messageListener;
75 private ClassLoader _classLoader;
76
77 }