001
014
015 package com.liferay.portal.kernel.messaging;
016
017
020 public class InvokerMessageListener implements MessageListener {
021
022 public InvokerMessageListener(MessageListener messageListener) {
023 this(messageListener, Thread.currentThread().getContextClassLoader());
024 }
025
026 public InvokerMessageListener(
027 MessageListener messageListener, ClassLoader classLoader) {
028
029 _messageListener = messageListener;
030 _classLoader = classLoader;
031 }
032
033 @Override
034 public boolean equals(Object obj) {
035 InvokerMessageListener messageListenerInvoker =
036 (InvokerMessageListener)obj;
037
038 return _messageListener.equals(
039 messageListenerInvoker.getMessageListener());
040 }
041
042 public ClassLoader getClassLoader() {
043 return _classLoader;
044 }
045
046 public MessageListener getMessageListener() {
047 return _messageListener;
048 }
049
050 @Override
051 public int hashCode() {
052 return _messageListener.hashCode();
053 }
054
055 public void receive(Message message) throws MessageListenerException {
056 Thread currentThread = Thread.currentThread();
057
058 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
059
060 currentThread.setContextClassLoader(_classLoader);
061
062 try {
063 _messageListener.receive(message);
064 }
065 finally {
066 currentThread.setContextClassLoader(contextClassLoader);
067 }
068 }
069
070 private ClassLoader _classLoader;
071 private MessageListener _messageListener;
072
073 }