private List<RegisteredSubscription> getRegisteredSubscriptions() { return subscriptionsRegistry.getRegisteredSubscriptions(); } }
@Bean public SubscriptionsRegistry subscriptionsRegistry() { return new SubscriptionsRegistry(); }
@Bean public EventHandlerBeanPostProcessor eventHandlerBeanPostProcessor(EventDispatcherInitializer eventDispatcherInitializer) { return new EventHandlerBeanPostProcessor(eventDispatcherInitializer); }
@Configuration @Import({RestaurantsQuerysideRedisConfiguration.class}) @ComponentScan @EnableEventHandlers public class RestaurantsViewBackendConfiguration { @Bean public RestaurantViewEventSubscriber restaurantQueryWorkflow(RestaurantQuerySideRedisService restaurantQuerySideRedisService) { return new RestaurantViewEventSubscriber(restaurantQuerySideRedisService); } }
public static Class<?> toEntityType(Class<Event> eventType) { String entityName = toEntityTypeName(eventType); try { return Class.forName(entityName); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }
@Override public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { EventSubscriber a = AnnotationUtils.findAnnotation(bean.getClass(), EventSubscriber.class); if (a != null) eventDispatcherInitializer.registerEventHandler(bean, beanName); return bean; }
@Bean public EventDispatcherInitializer eventDispatcherInitializer(EventHandlerProcessor[] processors, EventuateAggregateStore aggregateStore, SubscriptionsRegistry subscriptionsRegistry) { return new EventDispatcherInitializer(processors, aggregateStore, Executors.newCachedThreadPool(), subscriptionsRegistry); }
protected void assertSubscribedToAggregateEvents(RegisteredSubscription registeredSubscription, String aggregateType, String... eventTypes) { assertEquals(asSet(eventTypes), registeredSubscription.getAggregatesAndEvents().get(aggregateType)); }
protected RegisteredSubscription getRegisteredSubscription(String subscriberId) { return getRegisteredSubscriptions().stream().filter(rs -> rs.getSubscriberId().equals(subscriberId)) .findFirst().orElseThrow(() -> new RuntimeException("cannot find subscription: " + subscriberId)); }
protected void assertEventHandlerClass(Class<?> eventHandlerClass, RegisteredSubscription registeredSubscription) { assertTrue("Not correct type: " + registeredSubscription.getEventSubscriberClass(), eventHandlerClass.isAssignableFrom(registeredSubscription.getEventSubscriberClass())); }
@Configuration @EntityScan("net.chrisrichardson.eventstore.examples.todolist") @EnableJpaRepositories("net.chrisrichardson.eventstore.examples.todolist") @EnableEventHandlers public class TodoViewBackendConfiguration { @Bean public TodoViewEventSubscriber todoViewEventSubscriber(TodoUpdateServiceImpl queryService) { return new TodoViewEventSubscriber(queryService); } @Bean public TodoUpdateServiceImpl queryService(TodoRepository repository) { return new TodoUpdateServiceImpl(repository); } @Bean public HttpMessageConverters customConverters() { HttpMessageConverter<?> additional = new MappingJackson2HttpMessageConverter(); return new HttpMessageConverters(additional); } }
public static Class<?> toEntityType(Class<Event> eventType) { String entityName = toEntityTypeName(eventType); try { return Class.forName(entityName); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } }
@Bean public SubscriptionsRegistry subscriptionsRegistry() { return new SubscriptionsRegistry(); }
@Bean public EventHandlerBeanPostProcessor eventHandlerBeanPostProcessor(EventDispatcherInitializer eventDispatcherInitializer) { return new EventHandlerBeanPostProcessor(eventDispatcherInitializer); }
@Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { Class<?> actualClass = AopUtils.getTargetClass(bean); EventSubscriber a = AnnotationUtils.findAnnotation(actualClass, EventSubscriber.class); if (a != null) eventDispatcherInitializer.registerEventHandler(bean, beanName, actualClass); return bean; } }
@Bean public EventDispatcherInitializer eventDispatcherInitializer(EventHandlerProcessor[] processors, EventuateAggregateStore aggregateStore, SubscriptionsRegistry subscriptionsRegistry) { return new EventDispatcherInitializer(processors, aggregateStore, Executors.newCachedThreadPool(), subscriptionsRegistry); }
protected void assertSubscribedToAggregates(RegisteredSubscription registeredSubscription, String... aggregateTypes) { assertEquals(asSet(aggregateTypes), registeredSubscription.getAggregatesAndEvents().keySet()); }
@Configuration @EntityScan("net.chrisrichardson.eventstore.examples.todolist") @EnableJpaRepositories("net.chrisrichardson.eventstore.examples.todolist") @EnableEventHandlers public class TodoBackendConfiguration {
@Override public void doWith(Method method) throws IllegalArgumentException, IllegalAccessException { Class eventClass = method.getParameterTypes()[0]; String entityClassName = EventEntityUtil.toEntityTypeName(eventClass); try { Class.forName(entityClassName); } catch (ClassNotFoundException e) { throw new RuntimeException("for " + entityClassName, e); } } },
private Map<String, Set<String>> makeAggregatesAndEvents(List<EventHandler> handlers) { return handlers.stream().collect(Collectors.toMap( eh -> EventEntityUtil.toEntityTypeName(eh.getEventType()), eh -> Collections.singleton(eh.getEventType().getName()), (e1, e2) -> { HashSet<String> r = new HashSet<String>(e1); r.addAll(e2); return r; } )); }