Remove CompletionDomainHandler
Change-Id: I242358ec168fd047576117f2cbfe6e380e9c86c8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/242480
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
index 1f5bb85..0531d3b 100644
--- a/pkg/analysis_server/lib/src/analysis_server.dart
+++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -15,7 +15,6 @@
import 'package:analysis_server/src/channel/channel.dart';
import 'package:analysis_server/src/computer/computer_highlights.dart';
import 'package:analysis_server/src/context_manager.dart';
-import 'package:analysis_server/src/domain_completion.dart';
import 'package:analysis_server/src/domain_server.dart';
import 'package:analysis_server/src/domains/analysis/occurrences.dart';
import 'package:analysis_server/src/domains/analysis/occurrences_dart.dart';
@@ -36,6 +35,11 @@
import 'package:analysis_server/src/handler/legacy/analytics_is_enabled.dart';
import 'package:analysis_server/src/handler/legacy/analytics_send_event.dart';
import 'package:analysis_server/src/handler/legacy/analytics_send_timing.dart';
+import 'package:analysis_server/src/handler/legacy/completion_get_suggestion_details.dart';
+import 'package:analysis_server/src/handler/legacy/completion_get_suggestion_details2.dart';
+import 'package:analysis_server/src/handler/legacy/completion_get_suggestions.dart';
+import 'package:analysis_server/src/handler/legacy/completion_get_suggestions2.dart';
+import 'package:analysis_server/src/handler/legacy/completion_set_subscriptions.dart';
import 'package:analysis_server/src/handler/legacy/diagnostic_get_diagnostics.dart';
import 'package:analysis_server/src/handler/legacy/diagnostic_get_server_port.dart';
import 'package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart';
@@ -142,6 +146,14 @@
ANALYTICS_REQUEST_SEND_EVENT: AnalyticsSendEventHandler.new,
ANALYTICS_REQUEST_SEND_TIMING: AnalyticsSendTimingHandler.new,
//
+ COMPLETION_REQUEST_GET_SUGGESTION_DETAILS:
+ CompletionGetSuggestionDetailsHandler.new,
+ COMPLETION_REQUEST_GET_SUGGESTION_DETAILS2:
+ CompletionGetSuggestionDetails2Handler.new,
+ COMPLETION_REQUEST_GET_SUGGESTIONS: CompletionGetSuggestionsHandler.new,
+ COMPLETION_REQUEST_GET_SUGGESTIONS2: CompletionGetSuggestions2Handler.new,
+ COMPLETION_REQUEST_SET_SUBSCRIPTIONS: CompletionSetSubscriptionsHandler.new,
+ //
DIAGNOSTIC_REQUEST_GET_DIAGNOSTICS: DiagnosticGetDiagnosticsHandler.new,
DIAGNOSTIC_REQUEST_GET_SERVER_PORT: DiagnosticGetServerPortHandler.new,
//
@@ -354,7 +366,6 @@
.listen(handleRequest, onDone: done, onError: error);
handlers = <server.RequestHandler>[
ServerDomainHandler(this),
- CompletionDomainHandler(this),
];
refactoringWorkspace = RefactoringWorkspace(driverMap.values, searchEngine);
_newRefactoringManager();
diff --git a/pkg/analysis_server/lib/src/domain_completion.dart b/pkg/analysis_server/lib/src/domain_completion.dart
deleted file mode 100644
index 8c638be..0000000
--- a/pkg/analysis_server/lib/src/domain_completion.dart
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-import 'dart:async';
-
-import 'package:analysis_server/protocol/protocol.dart';
-import 'package:analysis_server/protocol/protocol_constants.dart';
-import 'package:analysis_server/src/domain_abstract.dart';
-import 'package:analysis_server/src/handler/legacy/completion_get_suggestion_details.dart';
-import 'package:analysis_server/src/handler/legacy/completion_get_suggestion_details2.dart';
-import 'package:analysis_server/src/handler/legacy/completion_get_suggestions.dart';
-import 'package:analysis_server/src/handler/legacy/completion_get_suggestions2.dart';
-import 'package:analysis_server/src/handler/legacy/completion_set_subscriptions.dart';
-import 'package:analyzer/exception/exception.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/utilities/cancellation.dart';
-
-/// Instances of the class [CompletionDomainHandler] implement a
-/// [RequestHandler] that handles requests in the completion domain.
-class CompletionDomainHandler extends AbstractRequestHandler {
- /// Initialize a new request handler for the given [server].
- CompletionDomainHandler(super.server);
-
- @override
- Response? handleRequest(
- Request request, CancellationToken cancellationToken) {
- if (!server.options.featureSet.completion) {
- return Response.invalidParameter(
- request,
- 'request',
- 'The completion feature is not enabled',
- );
- }
-
- return runZonedGuarded<Response?>(() {
- var requestName = request.method;
-
- if (requestName == COMPLETION_REQUEST_GET_SUGGESTION_DETAILS) {
- CompletionGetSuggestionDetailsHandler(
- server, request, cancellationToken)
- .handle();
- return Response.DELAYED_RESPONSE;
- } else if (requestName == COMPLETION_REQUEST_GET_SUGGESTION_DETAILS2) {
- CompletionGetSuggestionDetails2Handler(
- server, request, cancellationToken)
- .handle();
- return Response.DELAYED_RESPONSE;
- } else if (requestName == COMPLETION_REQUEST_GET_SUGGESTIONS) {
- CompletionGetSuggestionsHandler(server, request, cancellationToken)
- .handle();
- return Response.DELAYED_RESPONSE;
- } else if (requestName == COMPLETION_REQUEST_GET_SUGGESTIONS2) {
- CompletionGetSuggestions2Handler(server, request, cancellationToken)
- .handle();
- return Response.DELAYED_RESPONSE;
- } else if (requestName == COMPLETION_REQUEST_SET_SUBSCRIPTIONS) {
- CompletionSetSubscriptionsHandler(server, request, cancellationToken)
- .handle();
- return Response.DELAYED_RESPONSE;
- }
- return null;
- }, (exception, stackTrace) {
- AnalysisEngine.instance.instrumentationService.logException(
- CaughtException.withMessage(
- 'Failed to handle completion domain request: ${request.method}',
- exception,
- stackTrace));
- });
- }
-}
diff --git a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details.dart b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details.dart
index aff9a0f..7ae239f 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details.dart
@@ -11,7 +11,7 @@
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
/// The handler for the `completion.getSuggestionDetails` request.
-class CompletionGetSuggestionDetailsHandler extends LegacyHandler {
+class CompletionGetSuggestionDetailsHandler extends CompletionHandler {
/// The identifiers of the latest `getSuggestionDetails` request.
/// We use it to abort previous requests.
int _latestGetSuggestionDetailsId = 0;
@@ -23,6 +23,10 @@
@override
Future<void> handle() async {
+ if (completionIsDisabled) {
+ return;
+ }
+
var params = CompletionGetSuggestionDetailsParams.fromRequest(request);
var file = params.file;
diff --git a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details2.dart b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details2.dart
index 34cdede..fb74cca 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details2.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestion_details2.dart
@@ -12,7 +12,7 @@
import 'package:analyzer_plugin/utilities/change_builder/change_builder_core.dart';
/// The handler for the `completion.getSuggestionDetails2` request.
-class CompletionGetSuggestionDetails2Handler extends LegacyHandler {
+class CompletionGetSuggestionDetails2Handler extends CompletionHandler {
/// The identifiers of the latest `getSuggestionDetails2` request.
/// We use it to abort previous requests.
int _latestGetSuggestionDetailsId = 0;
@@ -24,6 +24,10 @@
@override
Future<void> handle() async {
+ if (completionIsDisabled) {
+ return;
+ }
+
var params = CompletionGetSuggestionDetails2Params.fromRequest(request);
var file = params.file;
diff --git a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions.dart b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions.dart
index 459c089..3ce2461 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions.dart
@@ -24,6 +24,10 @@
@override
Future<void> handle() async {
+ if (completionIsDisabled) {
+ return;
+ }
+
var budget = CompletionBudget(server.completionState.budgetDuration);
// extract and validate params
diff --git a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions2.dart b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions2.dart
index 1d17711..5a08236 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions2.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/completion_get_suggestions2.dart
@@ -27,7 +27,7 @@
import 'package:collection/collection.dart';
/// The handler for the `completion.getSuggestions2` request.
-class CompletionGetSuggestions2Handler extends LegacyHandler
+class CompletionGetSuggestions2Handler extends CompletionHandler
with RequestHandlerMixin<AnalysisServer> {
/// Initialize a newly created handler to be able to service requests for the
/// [server].
@@ -107,6 +107,10 @@
@override
Future<void> handle() async {
+ if (completionIsDisabled) {
+ return;
+ }
+
var params = CompletionGetSuggestions2Params.fromRequest(request);
var file = params.file;
var offset = params.offset;
diff --git a/pkg/analysis_server/lib/src/handler/legacy/completion_set_subscriptions.dart b/pkg/analysis_server/lib/src/handler/legacy/completion_set_subscriptions.dart
index 14dbe993..bd516d4 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/completion_set_subscriptions.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/completion_set_subscriptions.dart
@@ -9,7 +9,7 @@
import 'package:analysis_server/src/handler/legacy/legacy_handler.dart';
/// The handler for the `completion.setSubscriptions` request.
-class CompletionSetSubscriptionsHandler extends LegacyHandler {
+class CompletionSetSubscriptionsHandler extends CompletionHandler {
/// Initialize a newly created handler to be able to service requests for the
/// [server].
CompletionSetSubscriptionsHandler(
@@ -17,6 +17,10 @@
@override
Future<void> handle() async {
+ if (completionIsDisabled) {
+ return;
+ }
+
var params = CompletionSetSubscriptionsParams.fromRequest(request);
var subscriptions = server.completionState.subscriptions;
diff --git a/pkg/analysis_server/lib/src/handler/legacy/legacy_handler.dart b/pkg/analysis_server/lib/src/handler/legacy/legacy_handler.dart
index aaaefdeb..794ddfe 100644
--- a/pkg/analysis_server/lib/src/handler/legacy/legacy_handler.dart
+++ b/pkg/analysis_server/lib/src/handler/legacy/legacy_handler.dart
@@ -13,6 +13,28 @@
import 'package:analyzer/src/dart/error/syntactic_errors.g.dart';
import 'package:analyzer/src/utilities/cancellation.dart';
+/// A request handler for the completion domain.
+abstract class CompletionHandler extends LegacyHandler {
+ /// Initialize a newly created handler to be able to service requests for the
+ /// [server].
+ CompletionHandler(super.server, super.request, super.cancellationToken);
+
+ /// Return `true` if completion is disabled and the handler should return. If
+ /// `true` is returned then a response will already have been returned, so
+ /// subclasses should not return a second response.
+ bool get completionIsDisabled {
+ if (!server.options.featureSet.completion) {
+ sendResponse(Response.invalidParameter(
+ request,
+ 'request',
+ 'The completion feature is not enabled',
+ ));
+ return true;
+ }
+ return false;
+ }
+}
+
/// A request handler for the legacy protocol.
abstract class LegacyHandler {
/// The analysis server that is using this handler to process a request.
diff --git a/pkg/analysis_server/lib/src/status/diagnostics.dart b/pkg/analysis_server/lib/src/status/diagnostics.dart
index d2bffce..826f5cb 100644
--- a/pkg/analysis_server/lib/src/status/diagnostics.dart
+++ b/pkg/analysis_server/lib/src/status/diagnostics.dart
@@ -10,7 +10,6 @@
import 'package:analysis_server/protocol/protocol_generated.dart';
import 'package:analysis_server/src/analysis_server.dart';
import 'package:analysis_server/src/analysis_server_abstract.dart';
-import 'package:analysis_server/src/domain_completion.dart';
import 'package:analysis_server/src/lsp/lsp_analysis_server.dart'
show LspAnalysisServer;
import 'package:analysis_server/src/plugin/plugin_manager.dart';
@@ -356,13 +355,8 @@
CompletionPage(super.site, this.server);
- CompletionDomainHandler get completionDomain => server.handlers
- .firstWhere((handler) => handler is CompletionDomainHandler)
- as CompletionDomainHandler;
-
@override
- path.Context get pathContext =>
- completionDomain.server.resourceProvider.pathContext;
+ path.Context get pathContext => server.resourceProvider.pathContext;
@override
List<CompletionPerformance> get performanceItems =>