package io.slime.chat.sockjs.eventbridge; import java.util.ArrayList; import java.util.List; import io.vertx.ext.web.handler.sockjs.BridgeEvent; public class EventBridgeChain { List<EventBridgeChainHandler> handlers = new ArrayList<>(); public void regisger(EventBridgeChainHandler handler) { handlers.add(handler); } public EventBridgeChainResponse processInChain(BridgeEvent event) { EventBridgeChainResponse response = new EventBridgeChainResponse(); for (EventBridgeChainHandler handler : handlers) { boolean handle = Boolean.FALSE; try { handle = handler.handle(event); if(handle) { response.setProcesssed(Boolean.TRUE); response.setHandler(handler); break; } } catch (EventBridgeChainException e) { handle = e.isProccessed(); if(handle) { response.setHandler(handler); response.setException(e); response.setProcesssed(Boolean.TRUE); break; } } } return response; } }