|
@@ -1,9 +1,7 @@
|
|
package org.hswebframework.web.eventbus;
|
|
package org.hswebframework.web.eventbus;
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
-import org.hswebframework.utils.ClassUtils;
|
|
|
|
import org.hswebframework.web.eventbus.executor.EventListenerContainer;
|
|
import org.hswebframework.web.eventbus.executor.EventListenerContainer;
|
|
-import org.hswebframework.web.eventbus.executor.EventListenerDefine;
|
|
|
|
|
|
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
import java.util.concurrent.ConcurrentMap;
|
|
import java.util.concurrent.ConcurrentMap;
|
|
@@ -13,7 +11,7 @@ import java.util.concurrent.ConcurrentMap;
|
|
* @since 1.0
|
|
* @since 1.0
|
|
*/
|
|
*/
|
|
@Slf4j
|
|
@Slf4j
|
|
-public abstract class DefaultEventBus implements EventBus, EventSubscriber {
|
|
|
|
|
|
+public abstract class AbstractEventBus implements EventBus, EventSubscriber {
|
|
private ConcurrentMap<String, EventListenerContainer> listenerStorage = new ConcurrentHashMap<>();
|
|
private ConcurrentMap<String, EventListenerContainer> listenerStorage = new ConcurrentHashMap<>();
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -22,7 +20,7 @@ public abstract class DefaultEventBus implements EventBus, EventSubscriber {
|
|
if (null != container) {
|
|
if (null != container) {
|
|
container.doExecute(event);
|
|
container.doExecute(event);
|
|
} else {
|
|
} else {
|
|
- log.warn("event:{},not support!", event);
|
|
|
|
|
|
+ log.warn("没有监听器处理此事件:{}", event);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -35,23 +33,12 @@ public abstract class DefaultEventBus implements EventBus, EventSubscriber {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public <E> void subscribe(EventListener<E> listener) {
|
|
|
|
- Class<E> type = (Class<E>) ClassUtils.getGenericType(listener.getClass());
|
|
|
|
- if (type == Object.class) {
|
|
|
|
- throw new UnsupportedOperationException("event type [Object] not support!");
|
|
|
|
- }
|
|
|
|
- subscribe(type, listener);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- @Override
|
|
|
|
- public <E> void subscribe(Class<E> eventType, EventListener<? extends E> listener) {
|
|
|
|
|
|
+ public <E> void subscribe(Class<E> eventType, EventListenerDefine define) {
|
|
EventListenerContainer container = listenerStorage
|
|
EventListenerContainer container = listenerStorage
|
|
- .computeIfAbsent(getKey(eventType), type -> createEventListenerContainer(listener));
|
|
|
|
- container.addListener(createListenerDefine(listener));
|
|
|
|
|
|
+ .computeIfAbsent(getKey(eventType), type -> createEventListenerContainer());
|
|
|
|
+ container.addListener(define);
|
|
}
|
|
}
|
|
|
|
|
|
- protected abstract EventListenerContainer createEventListenerContainer(EventListener listener);
|
|
|
|
-
|
|
|
|
- protected abstract EventListenerDefine createListenerDefine(EventListener listener);
|
|
|
|
|
|
+ protected abstract EventListenerContainer createEventListenerContainer();
|
|
|
|
|
|
}
|
|
}
|