
org.neo4j.driver.exceptions.TransactionTerminatedException Maven / Gradle / Ivy
/*
* Copyright (c) "Neo4j"
* Neo4j Sweden AB [https://neo4j.com]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.neo4j.driver.exceptions;
import java.io.Serial;
import java.util.Map;
import org.neo4j.driver.Value;
import org.neo4j.driver.internal.bolt.api.GqlStatusError;
import org.neo4j.driver.util.Preview;
/**
* Indicates that the transaction has been terminated.
*
* Any usage of the terminated transaction and any of its results must be stopped and the transaction must be closed
* explicitly. Moreover, any error in the transaction result(s) should be considered as a transaction termination and
* must be handled in the same way.
*
* The exception will contain a non-null {@link #code()} if it is created based on the server's response. It will not
* have a code if it is generated by the driver.
*
* @since 5.11
*/
public class TransactionTerminatedException extends ClientException {
@Serial
private static final long serialVersionUID = 7639191706067500206L;
/**
* Creates a new instance.
*
* @param message the message
*/
// for testing only
public TransactionTerminatedException(String message) {
this(
GqlStatusError.UNKNOWN.getStatus(),
GqlStatusError.UNKNOWN.getStatusDescription(message),
"N/A",
message,
GqlStatusError.DIAGNOSTIC_RECORD,
null);
}
/**
* Creates a new instance.
*
* @param code the code
* @param message the message
*/
// for testing only
public TransactionTerminatedException(String code, String message) {
this(
GqlStatusError.UNKNOWN.getStatus(),
GqlStatusError.UNKNOWN.getStatusDescription(message),
code,
message,
GqlStatusError.DIAGNOSTIC_RECORD,
null);
}
/**
* Creates a new instance.
*
* @param message the message
* @param cause the cause
*/
// for testing only
public TransactionTerminatedException(String message, Throwable cause) {
this(
GqlStatusError.UNKNOWN.getStatus(),
GqlStatusError.UNKNOWN.getStatusDescription(message),
"N/A",
message,
GqlStatusError.DIAGNOSTIC_RECORD,
cause);
}
/**
* Creates a new instance.
* @param gqlStatus the GQLSTATUS as defined by the GQL standard
* @param statusDescription the status description
* @param code the code
* @param message the message
* @param diagnosticRecord the diagnostic record
* @param cause the cause
* @since 5.26.0
*/
@Preview(name = "GQL-error")
public TransactionTerminatedException(
String gqlStatus,
String statusDescription,
String code,
String message,
Map diagnosticRecord,
Throwable cause) {
super(gqlStatus, statusDescription, code, message, diagnosticRecord, cause);
}
}