X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fruntime%2FCmsEventBusImpl.java;h=9d9e9bcfa58c6e662db3bc4065b67a813c3d2412;hb=81eb40f8a68ee85349f26f3468ee52b9af121732;hp=7fca23c991ee75fb3cce34bd7b85f3d216ed5be7;hpb=8c6e16aa43d9523e1ec57a41a06b3ceba7d23fdb;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsEventBusImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsEventBusImpl.java index 7fca23c99..9d9e9bcfa 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsEventBusImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsEventBusImpl.java @@ -10,16 +10,12 @@ import org.argeo.api.cms.CmsEventBus; import org.argeo.api.cms.CmsEventSubscriber; import org.argeo.api.cms.CmsLog; +/** {@link CmsEventBus} implementation based on {@link Flow}. */ public class CmsEventBusImpl implements CmsEventBus { - private final CmsLog log = CmsLog.getLog(CmsEventBus.class); + private final static CmsLog log = CmsLog.getLog(CmsEventBus.class); - // CMS events private Map>> topics = new TreeMap<>(); -// private IdentityHashMap> subscriptions = new IdentityHashMap<>(); - /* - * CMS Events - */ @Override public void sendEvent(String topic, Map event) { SubmissionPublisher> publisher = topics.get(topic); @@ -58,7 +54,8 @@ public class CmsEventBusImpl implements CmsEventBus { } } - static class CmsEventFlowSubscriber implements Flow.Subscriber> { + /** A subscriber to a topic. */ + class CmsEventFlowSubscriber implements Flow.Subscriber> { private String topic; private CmsEventSubscriber eventSubscriber; @@ -72,25 +69,32 @@ public class CmsEventBusImpl implements CmsEventBus { @Override public void onSubscribe(Subscription subscription) { this.subscription = subscription; - subscription.request(1); + this.subscription.request(1); } @Override public void onNext(Map item) { eventSubscriber.onEvent(topic, item); - subscription.request(1); + this.subscription.request(1); } @Override public void onError(Throwable throwable) { - // TODO Auto-generated method stub - + if (throwable instanceof Error) { + log.error("Unexpected error in event subscriber " + eventSubscriber + " for topic " + topic + + ", not trying to resubscribe.", throwable); + } else { + log.error("Unexpected exception in event subscriber " + eventSubscriber + " for topic " + topic + + ", resubscribing...", throwable); + addEventSubscriber(topic, eventSubscriber); + } } @Override public void onComplete() { - // TODO Auto-generated method stub - + if (log.isTraceEnabled()) + log.trace("Unexpected exception in event subscriber " + eventSubscriber + " for topic " + topic + + " is completed"); } void unsubscribe() {