package ws.wamplay.controllers.messageHandlers; import com.fasterxml.jackson.databind.JsonNode; import play.Logger; import play.Logger.ALogger; import ws.wamplay.models.messages.MessageType; public class HandlerFactory { static ALogger log = Logger.of(HandlerFactory.class); public static MessageHandler get(JsonNode request) throws IllegalArgumentException{ if (request == null) { return MessageType.CONNECT.getHandler(); } if (!request.isArray() || request.get(0).asInt(-1) == -1) { throw new IllegalArgumentException("Not valid WAMP request: " + request.toString()); } try { MessageType type = MessageType.getType(request.get(0).asInt()); return type.getHandler(); } catch (EnumConstantNotPresentException e) { String error = "Message not implemented! " + request.toString(); log.error(error); throw new IllegalArgumentException(error); } } }