@Override public Serializer eventSerializer() { return eventSerializer.get(); }
@Override public EventUpcasterChain upcasterChain() { return upcasterChain.get(); }
@Override public Serializer messageSerializer() { return messageSerializer.get(); }
@Override public HandlerDefinition handlerDefinition(Class<?> inspectedType) { return handlerDefinition.get().apply(inspectedType); } }
@Override public <M extends Message<?>> MessageMonitor<? super M> messageMonitor(Class<?> componentType, String componentName) { return messageMonitorFactoryComponent.get().apply(componentType, componentName); }
@Override public ListenerInvocationErrorHandler listenerInvocationErrorHandler(String processingGroup) { ensureInitialized(); return listenerInvocationErrorHandlers.containsKey(processingGroup) ? listenerInvocationErrorHandlers.get(processingGroup).get() : defaultListenerInvocationErrorHandler.get(); }
@Override public AbstractSagaManager<S> manager() { ensureInitialized(); return manager.get(); }
@Override public SagaStore<? super S> store() { ensureInitialized(); return store.get(); }
@Override public void shutdown() { eventProcessors.forEach((name, component) -> component.get().shutDown()); } //</editor-fold>
@Override public void shutdown() { processorInfoSource.get().shutdown(); } }
@Override public SagaStore sagaStore() { ensureInitialized(); return sagaStore.get(); }
@Override public SagaRepository<S> repository() { ensureInitialized(); return repository.get(); }
@Override public <T> T getComponent(Class<T> componentType, Supplier<T> defaultImpl) { return componentType.cast(components.computeIfAbsent( componentType, k -> new Component<>(config, componentType.getSimpleName(), c -> defaultImpl.get()) ).get()); }
@Override public Map<String, EventProcessor> eventProcessors() { ensureInitialized(); Map<String, EventProcessor> result = new HashMap<>(eventProcessors.size()); eventProcessors.forEach((name, component) -> result.put(name, component.get())); return result; }