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 if (_classLoader != null) {
070 currentThread.setContextClassLoader(_classLoader);
071 }
072
073 try {
074 _messageListener.receive(message);
075 }
076 finally {
077 if (_classLoader != null) {
078 currentThread.setContextClassLoader(contextClassLoader);
079 }
080 }
081 }
082
083 @Override
084 public String toString() {
085 return _messageListener.toString();
086 }
087
088 private final ClassLoader _classLoader;
089 private final MessageListener _messageListener;
090
091 }