in Dart/thirdPartySrc/analysisServer/com/google/dart/server/internal/remote/RemoteAnalysisServerImpl.java [1027:1194]
private void processResponse(JsonObject response) throws Exception {
notifyResponseListeners(response);
// handle notification
if (processNotification(response)) {
return;
}
// prepare ID
JsonPrimitive idJsonPrimitive = (JsonPrimitive)response.get("id");
if (idJsonPrimitive == null) {
return;
}
String idString = idJsonPrimitive.getAsString();
// handle requests from the server
if (processRequests(response, idString)) {
return;
}
// prepare consumer
Consumer consumer;
synchronized (consumerMapLock) {
consumer = consumerMap.get(idString);
}
JsonObject errorObject = (JsonObject)response.get("error");
RequestError requestError = null;
if (errorObject != null) {
requestError = processErrorResponse(errorObject);
listener.requestError(requestError);
}
// handle result
JsonObject resultObject = (JsonObject)response.get("result");
//
// Analysis Domain
//
if (consumer instanceof UpdateContentConsumer) {
((UpdateContentConsumer)consumer).onResponse();
}
//
// Completion Domain
//
else if (consumer instanceof GetSuggestionDetailsConsumer) {
new GetSuggestionDetailsProcessor((GetSuggestionDetailsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetSuggestionsConsumer) {
new CompletionIdProcessor((GetSuggestionsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetSuggestionDetailsConsumer2) {
new GetSuggestionDetailsProcessor2((GetSuggestionDetailsConsumer2)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetSuggestionsConsumer2) {
new CompletionIdProcessor2((GetSuggestionsConsumer2)consumer).process(resultObject, requestError);
}
//
// Search Domain
//
else if (consumer instanceof FindElementReferencesConsumer) {
new FindElementReferencesProcessor((FindElementReferencesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof FindMemberDeclarationsConsumer) {
new FindMemberDeclarationsProcessor((FindMemberDeclarationsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof FindMemberReferencesConsumer) {
new FindMemberReferencesProcessor((FindMemberReferencesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof FindTopLevelDeclarationsConsumer) {
new FindTopLevelDeclarationsProcessor((FindTopLevelDeclarationsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetTypeHierarchyConsumer) {
new TypeHierarchyProcessor((GetTypeHierarchyConsumer)consumer).process(resultObject, requestError);
}
//
// Edit Domain
//
else if (consumer instanceof FormatConsumer) {
new FormatProcessor((FormatConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetHoverConsumer) {
new HoverProcessor((GetHoverConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetRefactoringConsumer) {
new GetRefactoringProcessor(requestToRefactoringKindMap, (GetRefactoringConsumer)consumer)
.process(idString, resultObject, requestError);
}
else if (consumer instanceof GetAssistsConsumer) {
new AssistsProcessor((GetAssistsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetFixesConsumer) {
new FixesProcessor((GetFixesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetStatementCompletionConsumer) {
new StatementCompletionProcessor((GetStatementCompletionConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetPostfixCompletionConsumer) {
new PostfixCompletionProcessor((GetPostfixCompletionConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof IsPostfixCompletionApplicableConsumer) {
new IsPostfixCompletionApplicableProcessor((IsPostfixCompletionApplicableConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof ListPostfixCompletionTemplatesConsumer) {
new ListPostfixCompletionTemplatesProcessor((ListPostfixCompletionTemplatesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetImportedElementsConsumer) {
new GetImportedElementsProcessor((GetImportedElementsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetLibraryDependenciesConsumer) {
new LibraryDependenciesProcessor((GetLibraryDependenciesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetNavigationConsumer) {
new GetNavigationProcessor((GetNavigationConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetAvailableRefactoringsConsumer) {
new RefactoringGetAvailableProcessor((GetAvailableRefactoringsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetErrorsConsumer) {
new AnalysisErrorsProcessor((GetErrorsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof ImportElementsConsumer) {
new ImportElementsProcessor((ImportElementsConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof OrganizeDirectivesConsumer) {
new OrganizeDirectivesProcessor((OrganizeDirectivesConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof SortMembersConsumer) {
new SortMembersProcessor((SortMembersConsumer)consumer).process(resultObject, requestError);
}
//
// Execution Domain
//
else if (consumer instanceof CreateContextConsumer) {
new CreateContextProcessor((CreateContextConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof GetRuntimeCompletionConsumer) {
new GetRuntimeCompletionProcessor((GetRuntimeCompletionConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof MapUriConsumer) {
new MapUriProcessor((MapUriConsumer)consumer).process(resultObject, requestError);
}
//
// Diagnostic Domain
//
else if (consumer instanceof GetServerPortConsumer) {
new GetServerPortProcessor((GetServerPortConsumer)consumer).process(resultObject, requestError);
}
//
// Server Domain
//
else if (consumer instanceof GetVersionConsumer) {
new VersionProcessor((GetVersionConsumer)consumer).process(resultObject, requestError);
}
else if (consumer instanceof BasicConsumer) {
((BasicConsumer)consumer).received();
}
else if (consumer instanceof JsonConsumer) {
((JsonConsumer)consumer).onResponse(resultObject, requestError);
}
//
// LSP over Legacy DAS Dart Analysis Server protocol
//
else if (consumer instanceof DartLspTextDocumentContentConsumer) {
new DartLspTextDocumentContentProcessor((DartLspTextDocumentContentConsumer)consumer).process(resultObject, requestError);
}
synchronized (consumerMapLock) {
consumerMap.remove(idString);
}
}