@Override public void process( TernDoc doc, IJSONObjectHelper jsonObjectHelper, Object jsonObject, ITernLintCollector collector) { if (!(jsonObject instanceof JsonObject)) { // TODO: support for Rhino server return; } JsonArray messages = (JsonArray) ((JsonObject) jsonObject).get(MESSAGES_FIELD); // $NON-NLS-1$ if (messages != null) { TernLintQuery query = (TernLintQuery) doc.getQuery(); if (query.isGroupByFiles()) { JsonObject filesObject = null; String file = null; for (JsonValue files : messages) { filesObject = (JsonObject) files; file = jsonObjectHelper.getText(filesObject.get(FILE_FIELD)); // $NON-NLS-1$ try { collector.startLint(file); JsonArray messagesFile = (JsonArray) filesObject.get(MESSAGES_FIELD); // $NON-NLS-1$ if (messagesFile != null) { addMessages(jsonObjectHelper, messagesFile, query, collector); } } finally { collector.endLint(file); } } } else { String file = doc.getQuery().getFile(); try { collector.startLint(file); addMessages(jsonObjectHelper, messages, query, collector); } finally { collector.endLint(file); } } } }
protected void addMessages( IJSONObjectHelper helper, JsonArray messages, TernLintQuery query, ITernLintCollector collector) { String messageId = null; String message = null; String severity = null; String file = null; JsonObject messageObject = null; for (JsonValue value : messages) { messageObject = (JsonObject) value; messageId = helper.getText(messageObject.get(MESSAGE_ID_FIELD)); message = query.formatMessage(helper.getText(messageObject.get(MESSAGE_FIELD))); severity = helper.getText(messageObject.get(MESSAGE_FIELD)); severity = helper.getText(messageObject.get(SEVERITY_FIELD)); Long startCh = helper.getCh(messageObject, FROM_FIELD); Long endCh = helper.getCh(messageObject, TO_FIELD); Long line = helper.getCh(messageObject, LINE_NUMBER_FIELD); file = helper.getText(messageObject.get(FILE_FIELD)); collector.addMessage( messageId, message, startCh, endCh, line, severity, file, messageObject, helper); } }