001
014
015 package com.liferay.portal.kernel.messaging;
016
017 import com.liferay.portal.kernel.concurrent.ConcurrentHashSet;
018 import com.liferay.portal.kernel.util.StringPool;
019 import com.liferay.portal.kernel.util.Validator;
020
021 import java.util.Collections;
022 import java.util.Set;
023
024
028 public abstract class BaseDestination implements Destination {
029
030 public void addDestinationEventListener(
031 DestinationEventListener destinationEventListener) {
032
033 _destinationEventListeners.add(destinationEventListener);
034 }
035
036 public void afterPropertiesSet() {
037 if (Validator.isNull(name)) {
038 throw new IllegalArgumentException("Name is null");
039 }
040
041 open();
042 }
043
044 public void close() {
045 close(false);
046 }
047
048 public void close(boolean force) {
049 }
050
051 public void copyDestinationEventListeners(Destination destination) {
052 for (DestinationEventListener destinationEventListener :
053 _destinationEventListeners) {
054
055 destination.addDestinationEventListener(destinationEventListener);
056 }
057 }
058
059 public void copyMessageListeners(Destination destination) {
060 for (MessageListener messageListener : messageListeners) {
061 InvokerMessageListener invokerMessageListener =
062 (InvokerMessageListener)messageListener;
063
064 destination.register(
065 invokerMessageListener.getMessageListener(),
066 invokerMessageListener.getClassLoader());
067 }
068 }
069
070 public int getMessageListenerCount() {
071 return messageListeners.size();
072 }
073
074 public Set<MessageListener> getMessageListeners() {
075 return Collections.unmodifiableSet(messageListeners);
076 }
077
078 public String getName() {
079 return name;
080 }
081
082 public boolean isRegistered() {
083 if (getMessageListenerCount() > 0) {
084 return true;
085 }
086 else {
087 return false;
088 }
089 }
090
091 public void open() {
092 }
093
094 public boolean register(MessageListener messageListener) {
095 InvokerMessageListener invokerMessageListener =
096 new InvokerMessageListener(messageListener);
097
098 return registerMessageListener(invokerMessageListener);
099 }
100
101 public boolean register(
102 MessageListener messageListener, ClassLoader classloader) {
103
104 InvokerMessageListener invokerMessageListener =
105 new InvokerMessageListener(messageListener, classloader);
106
107 return registerMessageListener(invokerMessageListener);
108 }
109
110 public void removeDestinationEventListener(
111 DestinationEventListener destinationEventListener) {
112
113 _destinationEventListeners.remove(destinationEventListener);
114 }
115
116 public void removeDestinationEventListeners() {
117 _destinationEventListeners.clear();
118 }
119
120 public void setName(String name) {
121 this.name = name;
122 }
123
124 public boolean unregister(MessageListener messageListener) {
125 InvokerMessageListener invokerMessageListener =
126 new InvokerMessageListener(messageListener);
127
128 return unregisterMessageListener(invokerMessageListener);
129 }
130
131 public boolean unregister(
132 MessageListener messageListener, ClassLoader classloader) {
133
134 InvokerMessageListener invokerMessageListener =
135 new InvokerMessageListener(messageListener, classloader);
136
137 return unregisterMessageListener(invokerMessageListener);
138 }
139
140 public void unregisterMessageListeners() {
141 for (MessageListener messageListener : messageListeners) {
142 unregisterMessageListener((InvokerMessageListener)messageListener);
143 }
144 }
145
146 protected void fireMessageListenerRegisteredEvent(
147 MessageListener messageListener) {
148
149 for (DestinationEventListener destinationEventListener :
150 _destinationEventListeners) {
151
152 destinationEventListener.messageListenerRegistered(
153 getName(), messageListener);
154 }
155 }
156
157 protected void fireMessageListenerUnregisteredEvent(
158 MessageListener messageListener) {
159
160 for (DestinationEventListener listener : _destinationEventListeners) {
161 listener.messageListenerUnregistered(getName(), messageListener);
162 }
163 }
164
165 protected boolean registerMessageListener(
166 InvokerMessageListener invokerMessageListener) {
167
168 boolean registered = messageListeners.add(invokerMessageListener);
169
170 if (registered) {
171 fireMessageListenerRegisteredEvent(
172 invokerMessageListener.getMessageListener());
173 }
174
175 return registered;
176 }
177
178 protected boolean unregisterMessageListener(
179 InvokerMessageListener invokerMessageListener) {
180
181 boolean unregistered = messageListeners.remove(invokerMessageListener);
182
183 if (unregistered) {
184 fireMessageListenerUnregisteredEvent(
185 invokerMessageListener.getMessageListener());
186 }
187
188 return unregistered;
189 }
190
191 protected Set<MessageListener> messageListeners =
192 new ConcurrentHashSet<MessageListener>();
193 protected String name = StringPool.BLANK;
194
195 private Set<DestinationEventListener> _destinationEventListeners =
196 new ConcurrentHashSet<DestinationEventListener>();
197
198 }