| 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 edit.domain; | 5 library edit.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/constants.dart'; | 10 import 'package:analysis_server/src/constants.dart'; |
| 11 import 'package:analysis_server/src/edit/fix.dart'; | |
| 12 import 'package:analysis_server/src/protocol.dart'; | 11 import 'package:analysis_server/src/protocol.dart'; |
| 13 import 'package:analysis_server/src/protocol2.dart' as protocol show | |
| 14 LinkedEditGroup; | |
| 15 import 'package:analysis_server/src/protocol2.dart' show AnalysisError, | 12 import 'package:analysis_server/src/protocol2.dart' show AnalysisError, |
| 16 EditGetAssistsParams, EditGetAvailableRefactoringsParams, | 13 EditGetAssistsParams, EditGetAssistsResult, |
| 17 EditGetAvailableRefactoringsResult, EditGetFixesParams, | 14 EditGetAvailableRefactoringsParams, EditGetAvailableRefactoringsResult, |
| 18 EditGetRefactoringParams, EditGetRefactoringResult, LinkedEditGroup, Locatio
n, | 15 EditGetFixesParams, EditGetFixesResult, EditGetRefactoringParams, |
| 19 RefactoringKind, RefactoringProblem, RefactoringProblemSeverity, RenameOptio
ns, | 16 EditGetRefactoringResult, ErrorFixes, LinkedEditGroup, Location, |
| 20 SourceChange; | 17 RefactoringKind, RefactoringProblem, RefactoringProblemSeverity, |
| 18 RenameOptions, SourceChange; |
| 21 import 'package:analysis_server/src/services/correction/assist.dart'; | 19 import 'package:analysis_server/src/services/correction/assist.dart'; |
| 22 import 'package:analysis_server/src/services/correction/change.dart'; | |
| 23 import 'package:analysis_server/src/services/correction/fix.dart'; | 20 import 'package:analysis_server/src/services/correction/fix.dart'; |
| 24 import 'package:analysis_server/src/services/correction/status.dart'; | 21 import 'package:analysis_server/src/services/correction/status.dart'; |
| 25 import 'package:analysis_server/src/services/json.dart'; | |
| 26 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; | 22 import 'package:analysis_server/src/services/refactoring/refactoring.dart'; |
| 27 import 'package:analysis_server/src/services/search/search_engine.dart'; | 23 import 'package:analysis_server/src/services/search/search_engine.dart'; |
| 28 import 'package:analyzer/src/generated/ast.dart'; | 24 import 'package:analyzer/src/generated/ast.dart'; |
| 29 import 'package:analyzer/src/generated/element.dart'; | 25 import 'package:analyzer/src/generated/element.dart'; |
| 30 import 'package:analyzer/src/generated/engine.dart' as engine; | 26 import 'package:analyzer/src/generated/engine.dart' as engine; |
| 31 import 'package:analyzer/src/generated/error.dart' as engine; | 27 import 'package:analyzer/src/generated/error.dart' as engine; |
| 32 import 'package:analyzer/src/generated/source.dart'; | 28 import 'package:analyzer/src/generated/source.dart'; |
| 33 | 29 |
| 34 | 30 |
| 35 /** | 31 /** |
| (...skipping 16 matching lines...) Expand all Loading... |
| 52 /** | 48 /** |
| 53 * Initialize a newly created handler to handle requests for the given [server
]. | 49 * Initialize a newly created handler to handle requests for the given [server
]. |
| 54 */ | 50 */ |
| 55 EditDomainHandler(this.server) { | 51 EditDomainHandler(this.server) { |
| 56 searchEngine = server.searchEngine; | 52 searchEngine = server.searchEngine; |
| 57 refactoringManager = new _RefactoringManager(server, searchEngine); | 53 refactoringManager = new _RefactoringManager(server, searchEngine); |
| 58 } | 54 } |
| 59 | 55 |
| 60 Response getAssists(Request request) { | 56 Response getAssists(Request request) { |
| 61 var params = new EditGetAssistsParams.fromRequest(request); | 57 var params = new EditGetAssistsParams.fromRequest(request); |
| 62 List<Change> changes = <Change>[]; | 58 List<SourceChange> changes = <SourceChange>[]; |
| 63 List<CompilationUnit> units = | 59 List<CompilationUnit> units = |
| 64 server.getResolvedCompilationUnits(params.file); | 60 server.getResolvedCompilationUnits(params.file); |
| 65 if (units.isNotEmpty) { | 61 if (units.isNotEmpty) { |
| 66 CompilationUnit unit = units[0]; | 62 CompilationUnit unit = units[0]; |
| 67 List<Assist> assists = | 63 List<Assist> assists = |
| 68 computeAssists(searchEngine, unit, params.offset, params.length); | 64 computeAssists(searchEngine, unit, params.offset, params.length); |
| 69 assists.forEach((Assist assist) { | 65 assists.forEach((Assist assist) { |
| 70 changes.add(assist.change); | 66 changes.add(assist.change); |
| 71 }); | 67 }); |
| 72 } | 68 } |
| 73 // respond | 69 // respond |
| 74 Response response = new Response(request.id); | 70 return new EditGetAssistsResult(changes).toResponse(request.id); |
| 75 response.setResult(ASSISTS, objectToJson(changes)); | |
| 76 return response; | |
| 77 } | 71 } |
| 78 | 72 |
| 79 Response getAvailableRefactorings(Request request) { | 73 Response getAvailableRefactorings(Request request) { |
| 80 var params = new EditGetAvailableRefactoringsParams.fromRequest(request); | 74 var params = new EditGetAvailableRefactoringsParams.fromRequest(request); |
| 81 String file = params.file; | 75 String file = params.file; |
| 82 int offset = params.offset; | 76 int offset = params.offset; |
| 83 int length = params.length; | 77 int length = params.length; |
| 84 // add refactoring kinds | 78 // add refactoring kinds |
| 85 List<RefactoringKind> kinds = <RefactoringKind>[]; | 79 List<RefactoringKind> kinds = <RefactoringKind>[]; |
| 86 // try EXTRACT_* | 80 // try EXTRACT_* |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 errorFixesList.add(errorFixes); | 121 errorFixesList.add(errorFixes); |
| 128 fixes.forEach((fix) { | 122 fixes.forEach((fix) { |
| 129 errorFixes.addFix(fix); | 123 errorFixes.addFix(fix); |
| 130 }); | 124 }); |
| 131 } | 125 } |
| 132 } | 126 } |
| 133 } | 127 } |
| 134 } | 128 } |
| 135 } | 129 } |
| 136 // respond | 130 // respond |
| 137 return new Response(request.id)..setResult(FIXES, errorFixesList); | 131 return new EditGetFixesResult(errorFixesList).toResponse(request.id); |
| 138 } | 132 } |
| 139 | 133 |
| 140 @override | 134 @override |
| 141 Response handleRequest(Request request) { | 135 Response handleRequest(Request request) { |
| 142 try { | 136 try { |
| 143 String requestName = request.method; | 137 String requestName = request.method; |
| 144 if (requestName == EDIT_GET_ASSISTS) { | 138 if (requestName == EDIT_GET_ASSISTS) { |
| 145 return getAssists(request); | 139 return getAssists(request); |
| 146 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) { | 140 } else if (requestName == EDIT_GET_AVAILABLE_REFACTORINGS) { |
| 147 return getAvailableRefactorings(request); | 141 return getAvailableRefactorings(request); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 } | 213 } |
| 220 // validation and create change | 214 // validation and create change |
| 221 refactoring.checkFinalConditions().then((_finalStatus) { | 215 refactoring.checkFinalConditions().then((_finalStatus) { |
| 222 finalStatus = _finalStatus; | 216 finalStatus = _finalStatus; |
| 223 if (_hasFatalError) { | 217 if (_hasFatalError) { |
| 224 return _sendResultResponse(); | 218 return _sendResultResponse(); |
| 225 } | 219 } |
| 226 return refactoring.createChange().then((change) { | 220 return refactoring.createChange().then((change) { |
| 227 result.change = new SourceChange( | 221 result.change = new SourceChange( |
| 228 change.message, | 222 change.message, |
| 229 change.fileEdits, | 223 edits: change.edits); |
| 230 <protocol.LinkedEditGroup>[]); | |
| 231 return _sendResultResponse(); | 224 return _sendResultResponse(); |
| 232 }); | 225 }); |
| 233 }); | 226 }); |
| 234 }); | 227 }); |
| 235 } | 228 } |
| 236 | 229 |
| 237 /** | 230 /** |
| 238 * Initializes this context to perform a refactoring with the specified | 231 * Initializes this context to perform a refactoring with the specified |
| 239 * parameters. The existing [Refactoring] is reused or created as needed. | 232 * parameters. The existing [Refactoring] is reused or created as needed. |
| 240 */ | 233 */ |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 if (refactoring is RenameRefactoring) { | 293 if (refactoring is RenameRefactoring) { |
| 301 RenameRefactoring renameRefactoring = refactoring; | 294 RenameRefactoring renameRefactoring = refactoring; |
| 302 RenameOptions renameOptions = options; | 295 RenameOptions renameOptions = options; |
| 303 String newName = renameOptions.newName; | 296 String newName = renameOptions.newName; |
| 304 renameRefactoring.newName = newName; | 297 renameRefactoring.newName = newName; |
| 305 return renameRefactoring.checkNewName(); | 298 return renameRefactoring.checkNewName(); |
| 306 } | 299 } |
| 307 return new RefactoringStatus(); | 300 return new RefactoringStatus(); |
| 308 } | 301 } |
| 309 } | 302 } |
| OLD | NEW |