42 lines
1.5 KiB
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);
|
|
}
|
|
}
|
|
|
|
}
|