private static ServerEvent parseJsonEvent(String msg) { try { JSONObject eventJ = JSONParser.parseStrict(msg).isObject(); Name name = new Name(eventJ.get("name").isString().stringValue(), ""); ServerEvent.Scope scope = ServerEvent.Scope.valueOf(eventJ.get("scope").isString().stringValue()); ServerEvent.DataType dataType = eventJ.get("dataType") == null ? ServerEvent.DataType.STRING : ServerEvent.DataType.valueOf(eventJ.get("dataType").isString().stringValue()); Serializable data; String from = eventJ.get("from") == null ? null : eventJ.get("from").toString(); if (dataType == ServerEvent.DataType.BG_STATUS) { data = BackgroundStatus.parse(eventJ.get("data").isString().stringValue()); } else if (dataType == ServerEvent.DataType.JSON) { data = eventJ.get("data").isObject().toString(); } else { data = eventJ.get("data").isString().stringValue(); } ServerEvent sEvent = new ServerEvent(name, scope, dataType, data); sEvent.setFrom(from); return sEvent; } catch (Exception e) { GwtUtil.getClientLogger() .log(Level.WARNING, "Unable to parse json message into ServerEvent: " + msg, e); return null; } }