java-cookbook/messaging/src/main/java/messagebroker/handlers/AddHandlerMessageHandler.java

42 lines
1.5 KiB
Java

package messagebroker.handlers;
import messagebroker.BaseMessageHandler;
import messagebroker.MessageHandlerContext;
import messagebroker.UnknownMessageFormatException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AddHandlerMessageHandler extends BaseMessageHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(AddHandlerMessageHandler.class);
private static final Pattern msgPattern = Pattern.compile("CONTROL\\.ADD_HANDLER (\\S+)$");
public AddHandlerMessageHandler(MessageHandlerContext context) {
super(context);
}
@Override
public void handleMessage(String message) throws UnknownMessageFormatException {
Matcher matcher = msgPattern.matcher(message);
if (matcher.matches()) {
String handlerName = matcher.group(1);
LOGGER.info("Parsed handler name {}", handlerName);
try {
getContext().getBroker().addHandler(handlerName);
sendResponse("OK");
LOGGER.info("Added handler {} to broker.", handlerName);
} catch (ReflectiveOperationException e) {
String msg = "Unable to add handler";
LOGGER.error(msg + "{}", e.toString(), e);
sendResponse(msg);
}
} else {
LOGGER.debug("Pattern \"{}\" does not match. Cannot handle message {}", msgPattern, message);
super.handleMessage(message);
}
}
}