Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(310)

Side by Side Diff: pkg/analysis_server/lib/src/search/search_domain.dart

Issue 397883004: Implementation of the 'search.findMemberDeclarations' API. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 search.domain; 5 library search.domain;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analysis_server/src/analysis_server.dart'; 9 import 'package:analysis_server/src/analysis_server.dart';
10 import 'package:analysis_server/src/computer/element.dart' as se; 10 import 'package:analysis_server/src/computer/element.dart' as se;
11 import 'package:analysis_server/src/search/element_references.dart';
12 import 'package:analysis_server/src/search/search_result.dart';
13 import 'package:analysis_server/src/constants.dart'; 11 import 'package:analysis_server/src/constants.dart';
14 import 'package:analysis_server/src/protocol.dart'; 12 import 'package:analysis_server/src/protocol.dart';
13 import 'package:analysis_server/src/search/element_references.dart';
14 import 'package:analysis_server/src/search/member_declarations.dart';
15 import 'package:analysis_server/src/search/search_result.dart';
16 import 'package:analysis_server/src/search/top_level_declarations.dart';
15 import 'package:analysis_services/search/search_engine.dart'; 17 import 'package:analysis_services/search/search_engine.dart';
16 import 'package:analyzer/src/generated/element.dart'; 18 import 'package:analyzer/src/generated/element.dart';
17 import 'package:analysis_server/src/search/top_level_declarations.dart';
18 19
19 /** 20 /**
20 * Instances of the class [SearchDomainHandler] implement a [RequestHandler] 21 * Instances of the class [SearchDomainHandler] implement a [RequestHandler]
21 * that handles requests in the search domain. 22 * that handles requests in the search domain.
22 */ 23 */
23 class SearchDomainHandler implements RequestHandler { 24 class SearchDomainHandler implements RequestHandler {
24 /** 25 /**
25 * The analysis server that is using this handler to process requests. 26 * The analysis server that is using this handler to process requests.
26 */ 27 */
27 final AnalysisServer server; 28 final AnalysisServer server;
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 Response response = new Response(request.id); 79 Response response = new Response(request.id);
79 response.setResult(ID, searchId); 80 response.setResult(ID, searchId);
80 if (elements.isNotEmpty) { 81 if (elements.isNotEmpty) {
81 var serverElement = new se.Element.fromEngine(elements[0]); 82 var serverElement = new se.Element.fromEngine(elements[0]);
82 response.setResult(ELEMENT, serverElement); 83 response.setResult(ELEMENT, serverElement);
83 } 84 }
84 return response; 85 return response;
85 } 86 }
86 87
87 Response findMemberDeclarations(Request request) { 88 Response findMemberDeclarations(Request request) {
88 // name 89 String name = request.getRequiredParameter(NAME).asString();
89 RequestDatum nameDatum = request.getRequiredParameter(FILE); 90 // schedule search
90 String name = nameDatum.asString(); 91 String searchId = (_nextSearchId++).toString();
91 // TODO(brianwilkerson) implement 92 new Future.microtask(() {
92 return null; 93 var computer = new MemberDeclarationsComputer(searchEngine);
94 var future = computer.compute(name);
95 future.then((List<SearchResult> results) {
96 _sendSearchNotification(searchId, true, results);
97 });
98 });
99 // respond
100 return new Response(request.id)..setResult(ID, searchId);
93 } 101 }
94 102
95 Response findMemberReferences(Request request) { 103 Response findMemberReferences(Request request) {
96 // name 104 // name
97 RequestDatum nameDatum = request.getRequiredParameter(FILE); 105 RequestDatum nameDatum = request.getRequiredParameter(FILE);
98 String name = nameDatum.asString(); 106 String name = nameDatum.asString();
99 // TODO(brianwilkerson) implement 107 // TODO(brianwilkerson) implement
100 return null; 108 return null;
101 } 109 }
102 110
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 144
137 void _sendSearchNotification(String searchId, bool isLast, 145 void _sendSearchNotification(String searchId, bool isLast,
138 List<SearchResult> results) { 146 List<SearchResult> results) {
139 Notification notification = new Notification(SEARCH_RESULTS); 147 Notification notification = new Notification(SEARCH_RESULTS);
140 notification.setParameter(ID, searchId); 148 notification.setParameter(ID, searchId);
141 notification.setParameter(LAST, isLast); 149 notification.setParameter(LAST, isLast);
142 notification.setParameter(RESULTS, results); 150 notification.setParameter(RESULTS, results);
143 server.sendNotification(notification); 151 server.sendNotification(notification);
144 } 152 }
145 } 153 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698