/* * Copyright (c) 2012, the Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.tools.core.dart2js; import com.google.dart.server.utilities.general.StringUtilities; import org.eclipse.core.resources.IMarker; import org.json.JSONException; import org.json.JSONObject; /** * A JSON server response representing a compiler error or warning. * * @coverage dart.tools.core.dart2js */ public class ResponseMessage { public static class Location { public String path; public int start = -1; public int end = -1; public int line = -1; public int column = -1; } private String severityText; private String message; private Location location; ResponseMessage(JSONObject object) throws JSONException { // severity String prefix = null; if (object.has("prefix")) { prefix = object.getString("prefix"); } if (prefix != null) { severityText = prefix.trim(); if (severityText.endsWith(":")) { severityText = severityText.substring(0, severityText.length() - 1); } } else { severityText = StringUtilities.EMPTY; } // message message = object.getString("message"); // location if (object.has("span") && object.get("span") instanceof JSONObject) { JSONObject span = (JSONObject) object.get("span"); location = new Location(); location.path = span.getString("file"); location.start = span.getInt("start"); location.end = span.getInt("end"); location.line = span.getInt("line"); location.column = span.getInt("column"); // The json server has 0-based lines; we use 1-based lines. if (location.line != -1) { location.line++; } } } public Location getLocation() { return location; } public String getMessage() { return message; } /** * See {@link IMarker#SEVERITY_ERROR}, {@link IMarker#SEVERITY_WARNING}, * {@link IMarker#SEVERITY_INFO}. * * @return */ public int getSeverity() { if (severityText.equals("warning")) { return IMarker.SEVERITY_WARNING; } else if (severityText.equals("info")) { return IMarker.SEVERITY_INFO; } // "error", "fatal", or something unknown return IMarker.SEVERITY_ERROR; } public String getSeverityText() { return severityText; } }