| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analyzer_plugin/protocol/protocol_generated.dart'; | 5 import 'package:analyzer_plugin/protocol/protocol_generated.dart'; |
| 6 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; | 6 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; |
| 7 | 7 |
| 8 /** | 8 /** |
| 9 * An interface for enumerated types in the protocol. | 9 * An interface for enumerated types in the protocol. |
| 10 * | 10 * |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 RequestFailure(this.error); | 333 RequestFailure(this.error); |
| 334 } | 334 } |
| 335 | 335 |
| 336 /** | 336 /** |
| 337 * A response to the server. | 337 * A response to the server. |
| 338 * | 338 * |
| 339 * Clients may not extend, implement or mix-in this class. | 339 * Clients may not extend, implement or mix-in this class. |
| 340 */ | 340 */ |
| 341 class Response { | 341 class Response { |
| 342 /** | 342 /** |
| 343 * The [Response] instance that is returned when a real [Response] cannot | |
| 344 * be provided at the moment. | |
| 345 */ | |
| 346 static final Response DELAYED_RESPONSE = new Response('DELAYED_RESPONSE'); | |
| 347 | |
| 348 /** | |
| 349 * The name of the JSON attribute containing the id of the request for which | 343 * The name of the JSON attribute containing the id of the request for which |
| 350 * this is a response. | 344 * this is a response. |
| 351 */ | 345 */ |
| 352 static const String ID = 'id'; | 346 static const String ID = 'id'; |
| 353 | 347 |
| 354 /** | 348 /** |
| 355 * The name of the JSON attribute containing the error message. | 349 * The name of the JSON attribute containing the error message. |
| 356 */ | 350 */ |
| 357 static const String ERROR = 'error'; | 351 static const String ERROR = 'error'; |
| 358 | 352 |
| 359 /** | 353 /** |
| 354 * The name of the JSON attribute containing the time at which the request was |
| 355 * handled by the plugin. |
| 356 */ |
| 357 static const String REQUEST_TIME = 'requestTime'; |
| 358 |
| 359 /** |
| 360 * The name of the JSON attribute containing the result values. | 360 * The name of the JSON attribute containing the result values. |
| 361 */ | 361 */ |
| 362 static const String RESULT = 'result'; | 362 static const String RESULT = 'result'; |
| 363 | 363 |
| 364 /** | 364 /** |
| 365 * The unique identifier used to identify the request that this response is | 365 * The unique identifier used to identify the request that this response is |
| 366 * associated with. | 366 * associated with. |
| 367 */ | 367 */ |
| 368 final String id; | 368 final String id; |
| 369 | 369 |
| 370 /** | 370 /** |
| 371 * The error that was caused by attempting to handle the request, or `null` if | 371 * The error that was caused by attempting to handle the request, or `null` if |
| 372 * there was no error. | 372 * there was no error. |
| 373 */ | 373 */ |
| 374 final RequestError error; | 374 final RequestError error; |
| 375 | 375 |
| 376 /** | 376 /** |
| 377 * The time at which the request was handled by the plugin. |
| 378 */ |
| 379 final int requestTime; |
| 380 |
| 381 /** |
| 377 * A table mapping the names of result fields to their values. Should be | 382 * A table mapping the names of result fields to their values. Should be |
| 378 * `null` if there is no result to send. | 383 * `null` if there is no result to send. |
| 379 */ | 384 */ |
| 380 Map<String, Object> result; | 385 Map<String, Object> result; |
| 381 | 386 |
| 382 /** | 387 /** |
| 383 * Initialize a newly created instance to represent a response to a request | 388 * Initialize a newly created instance to represent a response to a request |
| 384 * with the given [id]. If [_result] is provided, it will be used as the | 389 * with the given [id]. If [_result] is provided, it will be used as the |
| 385 * result; otherwise an empty result will be used. If an [error] is provided | 390 * result; otherwise an empty result will be used. If an [error] is provided |
| 386 * then the response will represent an error condition. | 391 * then the response will represent an error condition. |
| 387 */ | 392 */ |
| 388 Response(this.id, {Map<String, Object> result, this.error}) : result = result; | 393 Response(this.id, this.requestTime, {this.error, Map<String, Object> result}) |
| 389 | 394 : result = result; |
| 390 // /** | |
| 391 // * Initialize a newly created instance to represent the FILE_NOT_ANALYZED | |
| 392 // * error condition. | |
| 393 // */ | |
| 394 // Response.fileNotAnalyzed(Request request, String file) | |
| 395 // : this(request.id, | |
| 396 // error: new RequestError(RequestErrorCode.FILE_NOT_ANALYZED, | |
| 397 // 'File is not analyzed: $file.')); | |
| 398 // | |
| 399 // /** | |
| 400 // * Initialize a newly created instance to represent the FORMAT_INVALID_FILE | |
| 401 // * error condition. | |
| 402 // */ | |
| 403 // Response.formatInvalidFile(Request request) | |
| 404 // : this(request.id, | |
| 405 // error: new RequestError(RequestErrorCode.FORMAT_INVALID_FILE, | |
| 406 // 'Error during `edit.format`: invalid file.')); | |
| 407 // | |
| 408 // /** | |
| 409 // * Initialize a newly created instance to represent the FORMAT_WITH_ERROR | |
| 410 // * error condition. | |
| 411 // */ | |
| 412 // Response.formatWithErrors(Request request) | |
| 413 // : this(request.id, | |
| 414 // error: new RequestError(RequestErrorCode.FORMAT_WITH_ERRORS, | |
| 415 // 'Error during `edit.format`: source contains syntax errors.')); | |
| 416 | 395 |
| 417 /** | 396 /** |
| 418 * Initialize a newly created instance based on the given JSON data. | 397 * Initialize a newly created instance based on the given JSON data. |
| 419 */ | 398 */ |
| 420 factory Response.fromJson(Map json) { | 399 factory Response.fromJson(Map json) { |
| 421 try { | 400 try { |
| 422 Object id = json[Response.ID]; | 401 Object id = json[ID]; |
| 423 if (id is! String) { | 402 if (id is! String) { |
| 424 return null; | 403 return null; |
| 425 } | 404 } |
| 426 Object error = json[Response.ERROR]; | 405 Object error = json[ERROR]; |
| 427 RequestError decodedError; | 406 RequestError decodedError; |
| 428 if (error is Map) { | 407 if (error is Map) { |
| 429 decodedError = new RequestError.fromJson( | 408 decodedError = new RequestError.fromJson( |
| 430 new ResponseDecoder(null), '.error', error); | 409 new ResponseDecoder(null), '.error', error); |
| 431 } | 410 } |
| 432 Object result = json[Response.RESULT]; | 411 Object requestTime = json[REQUEST_TIME]; |
| 412 if (requestTime is! int) { |
| 413 return null; |
| 414 } |
| 415 Object result = json[RESULT]; |
| 433 Map<String, Object> decodedResult; | 416 Map<String, Object> decodedResult; |
| 434 if (result is Map) { | 417 if (result is Map) { |
| 435 decodedResult = result as Map<String, Object>; | 418 decodedResult = result as Map<String, Object>; |
| 436 } | 419 } |
| 437 return new Response(id, error: decodedError, result: decodedResult); | 420 return new Response(id, requestTime, |
| 421 error: decodedError, result: decodedResult); |
| 438 } catch (exception) { | 422 } catch (exception) { |
| 439 return null; | 423 return null; |
| 440 } | 424 } |
| 441 } | 425 } |
| 442 | 426 |
| 443 /** | 427 /** |
| 444 * Return a table representing the structure of the Json object that will be | 428 * Return a table representing the structure of the Json object that will be |
| 445 * sent to the client to represent this response. | 429 * sent to the client to represent this response. |
| 446 */ | 430 */ |
| 447 Map<String, Object> toJson() { | 431 Map<String, Object> toJson() { |
| 448 Map<String, Object> jsonObject = <String, Object>{}; | 432 Map<String, Object> jsonObject = <String, Object>{}; |
| 449 jsonObject[ID] = id; | 433 jsonObject[ID] = id; |
| 450 if (error != null) { | 434 if (error != null) { |
| 451 jsonObject[ERROR] = error.toJson(); | 435 jsonObject[ERROR] = error.toJson(); |
| 452 } | 436 } |
| 437 jsonObject[REQUEST_TIME] = requestTime; |
| 453 if (result != null) { | 438 if (result != null) { |
| 454 jsonObject[RESULT] = result; | 439 jsonObject[RESULT] = result; |
| 455 } | 440 } |
| 456 return jsonObject; | 441 return jsonObject; |
| 457 } | 442 } |
| 458 } | 443 } |
| OLD | NEW |