| 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 analysis_server.src.status.get_handler; |     5 library analysis_server.src.status.get_handler; | 
|     6  |     6  | 
|     7 import 'dart:async'; |  | 
|     8 import 'dart:collection'; |     7 import 'dart:collection'; | 
|     9 import 'dart:convert'; |     8 import 'dart:convert'; | 
|    10 import 'dart:io'; |     9 import 'dart:io'; | 
|    11 import 'dart:math'; |    10 import 'dart:math'; | 
|    12  |    11  | 
|    13 import 'package:analysis_server/plugin/protocol/protocol.dart' hide Element; |    12 import 'package:analysis_server/plugin/protocol/protocol.dart' hide Element; | 
|    14 import 'package:analysis_server/src/analysis_server.dart'; |    13 import 'package:analysis_server/src/analysis_server.dart'; | 
|    15 import 'package:analysis_server/src/domain_completion.dart'; |    14 import 'package:analysis_server/src/domain_completion.dart'; | 
|    16 import 'package:analysis_server/src/domain_diagnostic.dart'; |    15 import 'package:analysis_server/src/domain_diagnostic.dart'; | 
|    17 import 'package:analysis_server/src/domain_execution.dart'; |    16 import 'package:analysis_server/src/domain_execution.dart'; | 
|    18 import 'package:analysis_server/src/operation/operation.dart'; |    17 import 'package:analysis_server/src/operation/operation.dart'; | 
|    19 import 'package:analysis_server/src/operation/operation_analysis.dart'; |    18 import 'package:analysis_server/src/operation/operation_analysis.dart'; | 
|    20 import 'package:analysis_server/src/operation/operation_queue.dart'; |    19 import 'package:analysis_server/src/operation/operation_queue.dart'; | 
|    21 import 'package:analysis_server/src/services/completion/completion_performance.d
      art'; |    20 import 'package:analysis_server/src/services/completion/completion_performance.d
      art'; | 
|    22 import 'package:analysis_server/src/services/index/index.dart'; |  | 
|    23 import 'package:analysis_server/src/services/index/local_index.dart'; |  | 
|    24 import 'package:analysis_server/src/services/index/store/split_store.dart'; |  | 
|    25 import 'package:analysis_server/src/socket_server.dart'; |    21 import 'package:analysis_server/src/socket_server.dart'; | 
|    26 import 'package:analysis_server/src/status/ast_writer.dart'; |    22 import 'package:analysis_server/src/status/ast_writer.dart'; | 
|    27 import 'package:analysis_server/src/status/element_writer.dart'; |    23 import 'package:analysis_server/src/status/element_writer.dart'; | 
|    28 import 'package:analysis_server/src/status/validator.dart'; |    24 import 'package:analysis_server/src/status/validator.dart'; | 
|    29 import 'package:analysis_server/src/utilities/average.dart'; |    25 import 'package:analysis_server/src/utilities/average.dart'; | 
|    30 import 'package:analyzer/dart/ast/ast.dart'; |    26 import 'package:analyzer/dart/ast/ast.dart'; | 
|    31 import 'package:analyzer/dart/element/element.dart'; |    27 import 'package:analyzer/dart/element/element.dart'; | 
|    32 import 'package:analyzer/dart/element/visitor.dart'; |    28 import 'package:analyzer/dart/element/visitor.dart'; | 
|    33 import 'package:analyzer/file_system/file_system.dart'; |    29 import 'package:analyzer/file_system/file_system.dart'; | 
|    34 import 'package:analyzer/source/error_processor.dart'; |    30 import 'package:analyzer/source/error_processor.dart'; | 
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   251    * The path used to request diagnostic information. |   247    * The path used to request diagnostic information. | 
|   252    */ |   248    */ | 
|   253   static const String DIAGNOSTIC_PATH = '/diagnostic'; |   249   static const String DIAGNOSTIC_PATH = '/diagnostic'; | 
|   254  |   250  | 
|   255   /** |   251   /** | 
|   256    * The path used to request information about a element model. |   252    * The path used to request information about a element model. | 
|   257    */ |   253    */ | 
|   258   static const String ELEMENT_PATH = '/element'; |   254   static const String ELEMENT_PATH = '/element'; | 
|   259  |   255  | 
|   260   /** |   256   /** | 
|   261    * The path used to request information about elements with the given name. |  | 
|   262    */ |  | 
|   263   static const String INDEX_ELEMENT_BY_NAME = '/index/element-by-name'; |  | 
|   264  |  | 
|   265   /** |  | 
|   266    * The path used to request an overlay contents. |   257    * The path used to request an overlay contents. | 
|   267    */ |   258    */ | 
|   268   static const String OVERLAY_PATH = '/overlay'; |   259   static const String OVERLAY_PATH = '/overlay'; | 
|   269  |   260  | 
|   270   /** |   261   /** | 
|   271    * The path used to request overlays information. |   262    * The path used to request overlays information. | 
|   272    */ |   263    */ | 
|   273   static const String OVERLAYS_PATH = '/overlays'; |   264   static const String OVERLAYS_PATH = '/overlays'; | 
|   274  |   265  | 
|   275   /** |   266   /** | 
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   388     } else if (path == CONTEXT_DIAGNOSTICS_PATH) { |   379     } else if (path == CONTEXT_DIAGNOSTICS_PATH) { | 
|   389       _returnContextDiagnostics(request); |   380       _returnContextDiagnostics(request); | 
|   390     } else if (path == CONTEXT_VALIDATION_DIAGNOSTICS_PATH) { |   381     } else if (path == CONTEXT_VALIDATION_DIAGNOSTICS_PATH) { | 
|   391       _returnContextValidationDiagnostics(request); |   382       _returnContextValidationDiagnostics(request); | 
|   392     } else if (path == CONTEXT_PATH) { |   383     } else if (path == CONTEXT_PATH) { | 
|   393       _returnContextInfo(request); |   384       _returnContextInfo(request); | 
|   394     } else if (path == DIAGNOSTIC_PATH) { |   385     } else if (path == DIAGNOSTIC_PATH) { | 
|   395       _returnDiagnosticInfo(request); |   386       _returnDiagnosticInfo(request); | 
|   396     } else if (path == ELEMENT_PATH) { |   387     } else if (path == ELEMENT_PATH) { | 
|   397       _returnElement(request); |   388       _returnElement(request); | 
|   398     } else if (path == INDEX_ELEMENT_BY_NAME) { |  | 
|   399       _returnIndexElementByName(request); |  | 
|   400     } else if (path == OVERLAY_PATH) { |   389     } else if (path == OVERLAY_PATH) { | 
|   401       _returnOverlayContents(request); |   390       _returnOverlayContents(request); | 
|   402     } else if (path == OVERLAYS_PATH) { |   391     } else if (path == OVERLAYS_PATH) { | 
|   403       _returnOverlaysInfo(request); |   392       _returnOverlaysInfo(request); | 
|   404     } else { |   393     } else { | 
|   405       _returnUnknownRequest(request); |   394       _returnUnknownRequest(request); | 
|   406     } |   395     } | 
|   407   } |   396   } | 
|   408  |   397  | 
|   409   /** |   398   /** | 
| (...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1499  |  1488  | 
|  1500   void _returnFailure(HttpRequest request, String message) { |  1489   void _returnFailure(HttpRequest request, String message) { | 
|  1501     _writeResponse(request, (StringBuffer buffer) { |  1490     _writeResponse(request, (StringBuffer buffer) { | 
|  1502       _writePage(buffer, 'Analysis Server - Failure', [], |  1491       _writePage(buffer, 'Analysis Server - Failure', [], | 
|  1503           (StringBuffer buffer) { |  1492           (StringBuffer buffer) { | 
|  1504         buffer.write(HTML_ESCAPE.convert(message)); |  1493         buffer.write(HTML_ESCAPE.convert(message)); | 
|  1505       }); |  1494       }); | 
|  1506     }); |  1495     }); | 
|  1507   } |  1496   } | 
|  1508  |  1497  | 
|  1509   /** |  | 
|  1510    * Return a response containing information about elements with the given |  | 
|  1511    * name. |  | 
|  1512    */ |  | 
|  1513   Future _returnIndexElementByName(HttpRequest request) async { |  | 
|  1514     AnalysisServer analysisServer = _server.analysisServer; |  | 
|  1515     if (analysisServer == null) { |  | 
|  1516       return _returnFailure(request, 'Analysis server not running'); |  | 
|  1517     } |  | 
|  1518     Index index = analysisServer.index; |  | 
|  1519     if (index == null) { |  | 
|  1520       return _returnFailure(request, 'Indexing is disabled'); |  | 
|  1521     } |  | 
|  1522     String name = request.uri.queryParameters[INDEX_ELEMENT_NAME]; |  | 
|  1523     if (name == null) { |  | 
|  1524       return _returnFailure( |  | 
|  1525           request, 'Query parameter $INDEX_ELEMENT_NAME required'); |  | 
|  1526     } |  | 
|  1527     if (index is LocalIndex) { |  | 
|  1528       Map<List<String>, List<InspectLocation>> relations = |  | 
|  1529           await index.findElementsByName(name); |  | 
|  1530       _writeResponse(request, (StringBuffer buffer) { |  | 
|  1531         _writePage(buffer, 'Analysis Server - Index Elements', ['Name: $name'], |  | 
|  1532             (StringBuffer buffer) { |  | 
|  1533           buffer.write('<table border="1">'); |  | 
|  1534           _writeRow(buffer, ['Element', 'Relationship', 'Location'], |  | 
|  1535               header: true); |  | 
|  1536           relations.forEach( |  | 
|  1537               (List<String> elementPath, List<InspectLocation> relations) { |  | 
|  1538             String elementLocation = elementPath.join(' '); |  | 
|  1539             relations.forEach((InspectLocation location) { |  | 
|  1540               var relString = location.relationship.identifier; |  | 
|  1541               var locString = '${location.path} offset=${location.offset} ' |  | 
|  1542                   'length=${location.length} flags=${location.flags}'; |  | 
|  1543               _writeRow(buffer, [elementLocation, relString, locString]); |  | 
|  1544             }); |  | 
|  1545           }); |  | 
|  1546           buffer.write('</table>'); |  | 
|  1547         }); |  | 
|  1548       }); |  | 
|  1549     } else { |  | 
|  1550       return _returnFailure(request, 'LocalIndex expected, but $index found.'); |  | 
|  1551     } |  | 
|  1552   } |  | 
|  1553  |  | 
|  1554   void _returnOverlayContents(HttpRequest request) { |  1498   void _returnOverlayContents(HttpRequest request) { | 
|  1555     String path = request.requestedUri.queryParameters[PATH_PARAM]; |  1499     String path = request.requestedUri.queryParameters[PATH_PARAM]; | 
|  1556     if (path == null) { |  1500     if (path == null) { | 
|  1557       return _returnFailure(request, 'Query parameter $PATH_PARAM required'); |  1501       return _returnFailure(request, 'Query parameter $PATH_PARAM required'); | 
|  1558     } |  1502     } | 
|  1559     String contents = _overlayContents[path]; |  1503     String contents = _overlayContents[path]; | 
|  1560  |  1504  | 
|  1561     _writeResponse(request, (StringBuffer buffer) { |  1505     _writeResponse(request, (StringBuffer buffer) { | 
|  1562       _writePage(buffer, 'Analysis Server - Overlay', [], |  1506       _writePage(buffer, 'Analysis Server - Overlay', [], | 
|  1563           (StringBuffer buffer) { |  1507           (StringBuffer buffer) { | 
| (...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2483    */ |  2427    */ | 
|  2484   static String makeLink( |  2428   static String makeLink( | 
|  2485       String path, Map<String, String> params, String innerHtml, |  2429       String path, Map<String, String> params, String innerHtml, | 
|  2486       [bool hasError = false]) { |  2430       [bool hasError = false]) { | 
|  2487     Uri uri = new Uri(path: path, queryParameters: params); |  2431     Uri uri = new Uri(path: path, queryParameters: params); | 
|  2488     String href = HTML_ESCAPE.convert(uri.toString()); |  2432     String href = HTML_ESCAPE.convert(uri.toString()); | 
|  2489     String classAttribute = hasError ? ' class="error"' : ''; |  2433     String classAttribute = hasError ? ' class="error"' : ''; | 
|  2490     return '<a href="$href"$classAttribute>$innerHtml</a>'; |  2434     return '<a href="$href"$classAttribute>$innerHtml</a>'; | 
|  2491   } |  2435   } | 
|  2492 } |  2436 } | 
| OLD | NEW |