public static TException Error()

in src/main/java/com/uber/cadence/internal/compatibility/thrift/ErrorMapper.java [37:100]


  public static TException Error(StatusRuntimeException ex) {
    String details = getErrorDetails(ex);
    switch (ex.getStatus().getCode()) {
      case PERMISSION_DENIED:
        return new AccessDeniedError(ex.getMessage());
      case INTERNAL:
        return new InternalServiceError(ex.getMessage());
      case NOT_FOUND:
        {
          if ("EntityNotExistsError".equals(details)
              && ex.getMessage().contains("already completed.")) {
            return new WorkflowExecutionAlreadyCompletedError(ex.getMessage());
          } else {
            // TODO add cluster info
            return new EntityNotExistsError(ex.getMessage());
          }
        }
      case ALREADY_EXISTS:
        {
          switch (details) {
            case "CancellationAlreadyRequestedError":
              return new CancellationAlreadyRequestedError(ex.getMessage());
            case "DomainAlreadyExistsError":
              return new DomainAlreadyExistsError(ex.getMessage());
            case "WorkflowExecutionAlreadyStartedError":
              {
                // TODO add started wf info
                WorkflowExecutionAlreadyStartedError e = new WorkflowExecutionAlreadyStartedError();
                e.setMessage(ex.getMessage());
                return e;
              }
          }
        }
      case DATA_LOSS:
        return new InternalDataInconsistencyError(ex.getMessage());
      case FAILED_PRECONDITION:
        switch (details) {
            // TODO add infos
          case "ClientVersionNotSupportedError":
            return new ClientVersionNotSupportedError();
          case "FeatureNotEnabledError":
            return new FeatureNotEnabledError();
          case "DomainNotActiveError":
            {
              DomainNotActiveError e = new DomainNotActiveError();
              e.setMessage(ex.getMessage());
              return e;
            }
        }
      case RESOURCE_EXHAUSTED:
        switch (details) {
          case "LimitExceededError":
            return new LimitExceededError(ex.getMessage());
          case "ServiceBusyError":
            return new ServiceBusyError(ex.getMessage());
        }
      case UNKNOWN:
        return new TException(ex);
      default:
        // If error does not match anything, return raw grpc status error
        // There are some code that casts error to grpc status to check for deadline exceeded status
        return new TException(ex);
    }
  }