All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.neo4j.cypher.testing.impl.driver.DriverExceptionConverter.scala Maven / Gradle / Ivy

/*
 * Copyright (c) "Neo4j"
 * Neo4j Sweden AB [https://neo4j.com]
 *
 * This file is part of Neo4j.
 *
 * Neo4j is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */
package org.neo4j.cypher.testing.impl.driver

import org.neo4j.cypher.testing.api.CypherExecutorException
import org.neo4j.cypher.testing.api.CypherExecutorException.ExceptionConverter
import org.neo4j.driver.exceptions.Neo4jException

import scala.annotation.tailrec

trait DriverExceptionConverter extends ExceptionConverter {

  def asExecutorException(throwable: Throwable): Option[CypherExecutorException] = for {
    exception <- findDriverException(throwable)
    status <- statusOf(exception.code())
    message = exception.getMessage
  } yield CypherExecutorException(status, throwable, Some(message))

  @tailrec
  private def findDriverException(throwable: Throwable): Option[Neo4jException] = throwable match {
    case null                  => None
    case found: Neo4jException => Some(found)
    case _                     => findDriverException(throwable.getCause)
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy