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 if (this == obj) {
036 return true;
037 }
038
039 if (!(obj instanceof InvokerMessageListener)) {
040 return false;
041 }
042
043 InvokerMessageListener messageListenerInvoker =
044 (InvokerMessageListener)obj;
045
046 return _messageListener.equals(
047 messageListenerInvoker.getMessageListener());
048 }
049
050 public ClassLoader getClassLoader() {
051 return _classLoader;
052 }
053
054 public MessageListener getMessageListener() {
055 return _messageListener;
056 }
057
058 @Override
059 public int hashCode() {
060 return _messageListener.hashCode();
061 }
062
063 @Override
064 public void receive(Message message) throws MessageListenerException {
065 Thread currentThread = Thread.currentThread();
066
067 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
068
069 currentThread.setContextClassLoader(_classLoader);
070
071 try {
072 _messageListener.receive(message);
073 }
074 finally {
075 currentThread.setContextClassLoader(contextClassLoader);
076 }
077 }
078
079 private ClassLoader _classLoader;
080 private MessageListener _messageListener;
081
082 }