OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library protocol; | 5 library protocol; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 import 'dart:convert' show JsonDecoder; | 8 import 'dart:convert' show JsonDecoder; |
9 | 9 |
10 import 'package:analysis_server/src/services/json.dart'; | 10 import 'package:analysis_server/src/services/json.dart'; |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 final RequestError error; | 148 final RequestError error; |
149 | 149 |
150 /** | 150 /** |
151 * A table mapping the names of result fields to their values. Should be | 151 * A table mapping the names of result fields to their values. Should be |
152 * null if there is no result to send. | 152 * null if there is no result to send. |
153 */ | 153 */ |
154 Map<String, Object> result; | 154 Map<String, Object> result; |
155 | 155 |
156 /** | 156 /** |
157 * Initialize a newly created instance to represent a response to a request | 157 * Initialize a newly created instance to represent a response to a request |
158 * with the given [id]. If an [error] is provided then the response will | 158 * with the given [id]. If [result] is provided, it will be used as the |
159 * represent an error condition. | 159 * result; otherwise an empty result will be used. If an [error] is provided |
| 160 * then the response will represent an error condition. |
160 */ | 161 */ |
161 Response(this.id, [this.error]); | 162 Response(this.id, {this.result, this.error}); |
162 | 163 |
163 /** | 164 /** |
164 * Initialize a newly created instance to represent an error condition caused | 165 * Initialize a newly created instance to represent an error condition caused |
165 * by a [request] referencing a context that does not exist. | 166 * by a [request] referencing a context that does not exist. |
166 */ | 167 */ |
167 Response.contextDoesNotExist(Request request) | 168 Response.contextDoesNotExist(Request request) |
168 : this(request.id, new RequestError('NONEXISTENT_CONTEXT', 'Context does not
exist')); | 169 : this(request.id, error: new RequestError('NONEXISTENT_CONTEXT', 'Context d
oes not exist')); |
169 | 170 |
170 /** | 171 /** |
171 * Initialize a newly created instance to represent an error condition caused | 172 * Initialize a newly created instance to represent an error condition caused |
172 * by a [request] that had invalid parameter. [path] is the path to the | 173 * by a [request] that had invalid parameter. [path] is the path to the |
173 * invalid parameter, in Javascript notation (e.g. "foo.bar" means that the | 174 * invalid parameter, in Javascript notation (e.g. "foo.bar" means that the |
174 * parameter "foo" contained a key "bar" whose value was the wrong type). | 175 * parameter "foo" contained a key "bar" whose value was the wrong type). |
175 * [expectation] is a description of the type of data that was expected. | 176 * [expectation] is a description of the type of data that was expected. |
176 */ | 177 */ |
177 Response.invalidParameter(Request request, String path, String expectation) | 178 Response.invalidParameter(Request request, String path, String expectation) |
178 : this(request.id, new RequestError('INVALID_PARAMETER', | 179 : this(request.id, error: new RequestError('INVALID_PARAMETER', |
179 "Expected parameter $path to $expectation")); | 180 "Expected parameter $path to $expectation")); |
180 | 181 |
181 /** | 182 /** |
182 * Initialize a newly created instance to represent an error condition caused | 183 * Initialize a newly created instance to represent an error condition caused |
183 * by a malformed request. | 184 * by a malformed request. |
184 */ | 185 */ |
185 Response.invalidRequestFormat() | 186 Response.invalidRequestFormat() |
186 : this('', new RequestError('INVALID_REQUEST', 'Invalid request')); | 187 : this('', error: new RequestError('INVALID_REQUEST', 'Invalid request')); |
187 | 188 |
188 /** | 189 /** |
189 * Initialize a newly created instance to represent an error condition caused | 190 * Initialize a newly created instance to represent an error condition caused |
190 * by a [request] that does not have a required parameter. | 191 * by a [request] that does not have a required parameter. |
191 */ | 192 */ |
192 Response.missingRequiredParameter(Request request, String parameterName) | 193 Response.missingRequiredParameter(Request request, String parameterName) |
193 : this(request.id, new RequestError('MISSING_PARAMETER', 'Missing required p
arameter: $parameterName')); | 194 : this(request.id, error: new RequestError('MISSING_PARAMETER', 'Missing req
uired parameter: $parameterName')); |
194 | 195 |
195 /** | 196 /** |
196 * Initialize a newly created instance to represent an error condition caused | 197 * Initialize a newly created instance to represent an error condition caused |
197 * by a [request] that takes a set of analysis options but for which an | 198 * by a [request] that takes a set of analysis options but for which an |
198 * unknown analysis option was provided. | 199 * unknown analysis option was provided. |
199 */ | 200 */ |
200 Response.unknownAnalysisOption(Request request, String optionName) | 201 Response.unknownAnalysisOption(Request request, String optionName) |
201 : this(request.id, new RequestError('UNKNOWN_ANALYSIS_OPTION', 'Unknown anal
ysis option: "$optionName"')); | 202 : this(request.id, error: new RequestError('UNKNOWN_ANALYSIS_OPTION', 'Unkno
wn analysis option: "$optionName"')); |
202 | 203 |
203 /** | 204 /** |
204 * Initialize a newly created instance to represent an error condition caused | 205 * Initialize a newly created instance to represent an error condition caused |
205 * by a [request] that cannot be handled by any known handlers. | 206 * by a [request] that cannot be handled by any known handlers. |
206 */ | 207 */ |
207 Response.unknownRequest(Request request) | 208 Response.unknownRequest(Request request) |
208 : this(request.id, new RequestError('UNKNOWN_REQUEST', 'Unknown request')); | 209 : this(request.id, error: new RequestError('UNKNOWN_REQUEST', 'Unknown reque
st')); |
209 | 210 |
210 Response.contextAlreadyExists(Request request) | 211 Response.contextAlreadyExists(Request request) |
211 : this(request.id, new RequestError('CONTENT_ALREADY_EXISTS', 'Context alrea
dy exists')); | 212 : this(request.id, error: new RequestError('CONTENT_ALREADY_EXISTS', 'Contex
t already exists')); |
212 | 213 |
213 Response.unsupportedFeature(String requestId, String message) | 214 Response.unsupportedFeature(String requestId, String message) |
214 : this(requestId, new RequestError('UNSUPPORTED_FEATURE', message)); | 215 : this(requestId, error: new RequestError('UNSUPPORTED_FEATURE', message)); |
215 | 216 |
216 /** | 217 /** |
217 * Initialize a newly created instance to represent an error condition caused | 218 * Initialize a newly created instance to represent an error condition caused |
218 * by a `analysis.setSubscriptions` [request] that includes an unknown | 219 * by a `analysis.setSubscriptions` [request] that includes an unknown |
219 * analysis service name. | 220 * analysis service name. |
220 */ | 221 */ |
221 Response.unknownAnalysisService(Request request, String name) | 222 Response.unknownAnalysisService(Request request, String name) |
222 : this(request.id, new RequestError('UNKNOWN_ANALYSIS_SERVICE', 'Unknown ana
lysis service: "$name"')); | 223 : this(request.id, error: new RequestError('UNKNOWN_ANALYSIS_SERVICE', 'Unkn
own analysis service: "$name"')); |
223 | 224 |
224 /** | 225 /** |
225 * Initialize a newly created instance to represent an error condition caused | 226 * Initialize a newly created instance to represent an error condition caused |
226 * by a `analysis.setPriorityFiles` [request] that includes one or more files | 227 * by a `analysis.setPriorityFiles` [request] that includes one or more files |
227 * that are not being analyzed. | 228 * that are not being analyzed. |
228 */ | 229 */ |
229 Response.unanalyzedPriorityFiles(Request request, String fileNames) | 230 Response.unanalyzedPriorityFiles(Request request, String fileNames) |
230 : this(request.id, new RequestError('UNANALYZED_PRIORITY_FILES', "Unanalyzed
files cannot be a priority: '$fileNames'")); | 231 : this(request.id, error: new RequestError('UNANALYZED_PRIORITY_FILES', "Una
nalyzed files cannot be a priority: '$fileNames'")); |
231 | 232 |
232 /** | 233 /** |
233 * Initialize a newly created instance to represent an error condition caused | 234 * Initialize a newly created instance to represent an error condition caused |
234 * by a `analysis.updateOptions` [request] that includes an unknown analysis | 235 * by a `analysis.updateOptions` [request] that includes an unknown analysis |
235 * option. | 236 * option. |
236 */ | 237 */ |
237 Response.unknownOptionName(Request request, String optionName) | 238 Response.unknownOptionName(Request request, String optionName) |
238 : this(request.id, new RequestError('UNKNOWN_OPTION_NAME', 'Unknown analysis
option: "$optionName"')); | 239 : this(request.id, error: new RequestError('UNKNOWN_OPTION_NAME', 'Unknown a
nalysis option: "$optionName"')); |
239 | 240 |
240 /** | 241 /** |
241 * Initialize a newly created instance to represent an error condition caused | 242 * Initialize a newly created instance to represent an error condition caused |
242 * by an error during `analysis.getErrors`. | 243 * by an error during `analysis.getErrors`. |
243 */ | 244 */ |
244 Response.getErrorsError(Request request, String message) | 245 Response.getErrorsError(Request request, String message) |
245 : this( | 246 : this( |
246 request.id, | 247 request.id, |
247 new RequestError('GET_ERRORS_ERROR', 'Error during `analysis.getErrors`:
$message.')); | 248 error: new RequestError('GET_ERRORS_ERROR', 'Error during `analysis.getE
rrors`: $message.')); |
248 | 249 |
249 /** | 250 /** |
250 * Initialize a newly created instance based upon the given JSON data | 251 * Initialize a newly created instance based upon the given JSON data |
251 */ | 252 */ |
252 factory Response.fromJson(Map<String, Object> json) { | 253 factory Response.fromJson(Map<String, Object> json) { |
253 try { | 254 try { |
254 Object id = json[Response.ID]; | 255 Object id = json[Response.ID]; |
255 if (id is! String) { | 256 if (id is! String) { |
256 return null; | 257 return null; |
257 } | 258 } |
258 Object error = json[Response.ERROR]; | 259 Object error = json[Response.ERROR]; |
259 Object result = json[Response.RESULT]; | 260 Object result = json[Response.RESULT]; |
260 Response response; | 261 Response response; |
261 if (error is Map) { | 262 if (error is Map) { |
262 response = new Response(id, new RequestError.fromJson(error)); | 263 response = new Response(id, error: new RequestError.fromJson(error)); |
263 } else { | 264 } else { |
264 response = new Response(id); | 265 response = new Response(id); |
265 } | 266 } |
266 if (result is Map) { | 267 if (result is Map) { |
267 result.forEach((String key, Object value) { | 268 result.forEach((String key, Object value) { |
268 response.setResult(key, value); | 269 response.setResult(key, value); |
269 }); | 270 }); |
270 } | 271 } |
271 return response; | 272 return response; |
272 } catch (exception) { | 273 } catch (exception) { |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 */ | 596 */ |
596 _toJson(Object value) { | 597 _toJson(Object value) { |
597 if (value is HasToJson) { | 598 if (value is HasToJson) { |
598 return value.toJson(); | 599 return value.toJson(); |
599 } | 600 } |
600 if (value is Iterable) { | 601 if (value is Iterable) { |
601 return value.map((item) => _toJson(item)).toList(); | 602 return value.map((item) => _toJson(item)).toList(); |
602 } | 603 } |
603 return value; | 604 return value; |
604 } | 605 } |
OLD | NEW |