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); } } }