@Override public EventManager systemEventManager() { final EventManager eventManager = eventManagerThreadLocal.get(); if (eventManager != null) { return eventManager; } EventManager proxy; if (systemEventManager.get() == null) { final ServiceQueue serviceQueue = serviceBuilder().setInvokeDynamic(false) .setServiceObject( EventManagerBuilder.eventManagerBuilder().setName("QBIT_SYSTEM").build()).build().startServiceQueue(); systemEventManager.set(serviceQueue); proxy = serviceQueue.createProxyWithAutoFlush(EventManager.class, 100, TimeUnit.MILLISECONDS); } else { proxy = systemEventManager.get().createProxyWithAutoFlush(EventManager.class, 100, TimeUnit.MILLISECONDS); } eventManagerThreadLocal.set(proxy); return proxy; }
public static EventManagerBuilder eventManagerBuilder() { return new EventManagerBuilder(); }
public EventManager build(final String name) { if (eventConnector == null) { return getFactory().createEventManager(name, getEventConnector(), getStatsCollector()); } else { if (getEventConnectorPredicates().size() == 0) { return getFactory().createEventManager(name, getEventConnector(), getStatsCollector()); } else { Predicate<Event<Object>> mainPredicate = getEventConnectorPredicates().get(0); for (int index = 1; index < eventConnectorPredicates.size(); index++) { mainPredicate = mainPredicate.and(eventConnectorPredicates.get(index)); } return getFactory().createEventManager(name, new ConditionalEventConnector(mainPredicate, getEventConnector()), getStatsCollector()); } } }
@Test public void testWithPredicateTwoTrue1False() { EventManagerBuilder eventManagerBuilder = eventManagerBuilder(); AtomicReference<Event<Object>> eventRef = new AtomicReference<>(); EventConnector eventConnector = event -> eventRef.set(event); factory = new Factory() { @Override public EventManager createEventManager(String name, EventConnector eventConnector, StatsCollector statsCollector) { if (eventConnector == EventManagerBuilder.DEFAULT_NO_EVENT_CONNECTOR) { return eventManager; } else { return createEventManagerConnectorShortCut(name, eventConnector); } } public EventManager createEventManagerWithConnector(String name, EventConnector eventConnector) { return createEventManagerConnectorShortCut(name, eventConnector); } }; FactorySPI.setFactory(factory); eventManagerBuilder.setEventConnector(eventConnector); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> true); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> true); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> false); EventManager build = eventManagerBuilder.build("foo"); build.forwardEvent(testEvent); assertNull(eventRef.get()); }
@Test public void testWithConnector() { EventManagerBuilder eventManagerBuilder = eventManagerBuilder(); AtomicReference<Event<Object>> eventRef = new AtomicReference<>(); EventConnector eventConnector = event -> eventRef.set(event); eventManagerBuilder.setEventConnector(eventConnector); EventManager build = eventManagerBuilder.setFactory(new Factory() { @Override public EventManager createEventManager(String name, EventConnector eventConnector, StatsCollector statsCollector) { return createEventManagerConnectorShortCut("foo", eventConnector); } }).build("foo"); build.forwardEvent(testEvent); assertSame(testEvent, eventRef.get()); }
@Before public void setup() { method = new AtomicReference<>(); event = new AtomicReference<>(); eventManager = EventManagerBuilder.eventManagerBuilder().build("localtest"); eventServiceQueue = ServiceBuilder.serviceBuilder().setServiceObject(eventManager).buildAndStartAll(); eventManager = eventServiceQueue.createProxy(EventManager.class); testServiceImpl = new TestServiceImpl(); ServiceBuilder serviceBuilder = ServiceBuilder.serviceBuilder().setEventManager(eventManager); serviceBuilder.getRequestQueueBuilder().setBatchSize(100); this.serviceQueue = serviceBuilder .setServiceObject(testServiceImpl).buildAndStart(); serviceBundle = serviceBundleBuilder().buildAndStart(); eventBusProxyCreator = QBit.factory().eventBusProxyCreator(); sender = eventBusProxyCreator.createProxy(eventManager, EventChannel1.class); serviceBundle.addServiceQueue(serviceName, this.serviceQueue); testService = serviceBundle.createLocalProxy(TestService.class, serviceName); }
public EventConnector getEventConnector() { if (eventConnector == null) { logger.debug("Event Connector is null for {} event bus, creating NoOp Event Connector", getName()); eventConnector = DEFAULT_NO_EVENT_CONNECTOR; } return eventConnector; }
public EventManagerBuilder addEventConnectorPredicate(Predicate<Event<Object>> eventConnectorPredicate) { getEventConnectorPredicates().add(eventConnectorPredicate); return this; }
@Test public void testWithPredicateTwoTrue() { EventManagerBuilder eventManagerBuilder = eventManagerBuilder(); AtomicReference<Event<Object>> eventRef = new AtomicReference<>(); EventConnector eventConnector = event -> eventRef.set(event); factory = new Factory() { @Override public EventManager createEventManager(String name, EventConnector eventConnector, StatsCollector statsCollector) { if (eventConnector == EventManagerBuilder.DEFAULT_NO_EVENT_CONNECTOR) { return eventManager; } else { return createEventManagerConnectorShortCut(name, eventConnector); } } public EventManager createEventManagerWithConnector(String name, EventConnector eventConnector) { return createEventManagerConnectorShortCut(name, eventConnector); } }; FactorySPI.setFactory(factory); eventManagerBuilder.setEventConnector(eventConnector); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> true); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> true); EventManager build = eventManagerBuilder.build("foo"); build.forwardEvent(testEvent); assertSame(testEvent, eventRef.get()); }
public EventConnector getEventConnector() { if (eventConnector == null) { logger.debug("Event Connector is null for {} event bus, creating NoOp Event Connector", getName()); eventConnector = DEFAULT_NO_EVENT_CONNECTOR; } return eventConnector; }
public EventManagerBuilder addEventConnectorPredicate(Predicate<Event<Object>> eventConnectorPredicate) { getEventConnectorPredicates().add(eventConnectorPredicate); return this; }
@Before public void setup() { systemManager = new QBitSystemManager(); eventManager = EventManagerBuilder .eventManagerBuilder().setName("Event Bus") .build(); serviceBundleBuilder = ServiceBundleBuilder.serviceBundleBuilder() .setEventManager(eventManager) .setSystemManager(systemManager); final ServiceBundle serviceBundle = serviceBundleBuilder.buildAndStart(); serviceBundle.addServiceObject("eventManager", eventManager); serviceB = new ServiceB(); serviceBundle.addServiceObject("serviceB", serviceB); ServiceA serviceA = new ServiceA(serviceBundle.createLocalProxy(EventManager.class, "eventManager")); serviceBundle.addServiceObject("serviceA", serviceA); serviceAQueueProxy = serviceBundle.createLocalProxy(ServiceAInterface.class, "serviceA"); serviceBundle.startReturnHandlerProcessor(); }
public EventManager build(final String name) { if ( eventConnector == null) { return getFactory().createEventManager(name, getEventConnector(), getStatsCollector()); } else { if (getEventConnectorPredicates().size() == 0) { return getFactory().createEventManager(name, getEventConnector(), getStatsCollector()); } else { Predicate<Event<Object>> mainPredicate = getEventConnectorPredicates().get(0); for (int index = 1; index < eventConnectorPredicates.size(); index++) { mainPredicate = mainPredicate.and(eventConnectorPredicates.get(index)); } return getFactory().createEventManager(name, new ConditionalEventConnector(mainPredicate, getEventConnector()), getStatsCollector()); } } }
@Test public void testWithPredicateFalse() { EventManagerBuilder eventManagerBuilder = eventManagerBuilder(); AtomicReference<Event<Object>> eventRef = new AtomicReference<>(); EventConnector eventConnector = event -> eventRef.set(event); factory = new Factory() { @Override public EventManager createEventManager(String name, EventConnector eventConnector, StatsCollector statsCollector) { if (eventConnector == EventManagerBuilder.DEFAULT_NO_EVENT_CONNECTOR) { return eventManager; } else { return createEventManagerConnectorShortCut(name, eventConnector); } } public EventManager createEventManagerWithConnector(String name, EventConnector eventConnector) { return createEventManagerConnectorShortCut("foo", eventConnector); } }; FactorySPI.setFactory(factory); eventManagerBuilder.setEventConnector(eventConnector); eventManagerBuilder.addEventConnectorPredicate(objectEvent -> false); EventManager build = eventManagerBuilder.build("foo"); build.forwardEvent(testEvent); assertNull(eventRef.get()); }
public EventConnector getEventConnector() { if (eventConnector == null) { logger.debug("Event Connector is null for {} event bus, creating NoOp Event Connector", getName()); eventConnector = DEFAULT_NO_EVENT_CONNECTOR; } return eventConnector; }
public EventManagerBuilder addEventConnectorPredicate(Predicate<Event<Object>> eventConnectorPredicate) { getEventConnectorPredicates().add(eventConnectorPredicate); return this; }
public static EventManagerBuilder eventManagerBuilder() { return new EventManagerBuilder(); }