All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.opencredo.concursus.spring.commands.CommandSystemBeans Maven / Gradle / Ivy

The newest version!
package com.opencredo.concursus.spring.commands;

import com.opencredo.concursus.domain.commands.dispatching.*;
import com.opencredo.concursus.domain.commands.filters.LoggingCommandExecutorFilter;
import com.opencredo.concursus.mapping.commands.methods.dispatching.MethodDispatchingCommandProcessor;
import com.opencredo.concursus.mapping.commands.methods.proxying.CommandProxyFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CommandSystemBeans {

    private final DispatchingCommandProcessor dispatchingCommandProcessor = DispatchingCommandProcessor.create();

    @Bean
    public CommandLog commandLog() {
        return new Slf4jCommandLog();
    }

    @Bean
    public CommandProcessor commandProcessor() {
        return dispatchingCommandProcessor;
    }

    @Bean
    public MethodDispatchingCommandProcessor methodDispatchingCommandProcessor() {
        return MethodDispatchingCommandProcessor.dispatchingTo(dispatchingCommandProcessor);
    }

    @Bean
    public CommandExecutor commandExecutor(CommandProcessor commandProcessor) {
        return ProcessingCommandExecutor.processingWith(commandProcessor);
    }

    @Bean
    public CommandBus commandBus(CommandLog commandLog, CommandExecutor commandExecutor) {
        return CommandBus.executingWith(
                LoggingCommandExecutorFilter.using(commandLog).apply(commandExecutor));
    }

    @Bean
    public CommandProxyFactory proxyingCommandOutChannel(CommandBus commandBus) {
        return CommandProxyFactory.proxying(commandBus.toCommandOutChannel());
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy