
com.networknt.tram.command.consumer.CommandHandlersBuilder Maven / Gradle / Ivy
package com.networknt.tram.command.consumer;
import com.networknt.tram.message.common.Message;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.function.BiFunction;
public class CommandHandlersBuilder {
private String channel;
private Optional resource = Optional.empty();
private List handlers = new ArrayList<>();
public static CommandHandlersBuilder fromChannel(String channel) {
return new CommandHandlersBuilder().andFromChannel(channel);
}
private CommandHandlersBuilder andFromChannel(String channel) {
this.channel = channel;
return this;
}
public CommandHandlersBuilder resource(String resource) {
this.resource = Optional.of(resource);
return this;
}
public CommandHandlersBuilder onMessageReturningMessages(Class commandClass,
BiFunction, PathVariables, List> handler) {
this.handlers.add(new CommandHandler(channel, resource, commandClass, handler));
return this;
}
public CommandHandlersBuilder onMessageReturningOptionalMessage(Class commandClass,
BiFunction, PathVariables, Optional> handler) {
this.handlers.add(new CommandHandler(channel, resource, commandClass,
(c, pv) -> handler.apply(c, pv).map(Collections::singletonList).orElse(Collections.EMPTY_LIST)));
return this;
}
public CommandHandlersBuilder onMessage(Class commandClass,
BiFunction, PathVariables, Message> handler) {
this.handlers.add(new CommandHandler(channel, resource, commandClass, (c, pv) -> Collections.singletonList(handler.apply(c, pv))));
return this;
}
public CommandHandlers build() {
return new CommandHandlers(handlers);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy