private void processResponse()

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);
    }
  }