blob: 3e5def155d447aeb1c3515181dc22d097b716647 [file] [log] [blame]
/*-
* Copyright (C) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
*
* This file was distributed by Oracle as part of a version of Oracle Berkeley
* DB Java Edition made available at:
*
* http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
*
* Please see the LICENSE file included in the top-level directory of the
* appropriate version of Oracle Berkeley DB Java Edition for a copy of the
* license and additional information.
*/
package com.sleepycat.je;
import com.sleepycat.je.ExtinctionFilter.ExtinctionStatus;
import com.sleepycat.je.txn.Locker;
/**
* Thrown when an attempt to write a primary database record would insert a
* secondary record with a key that does not exist in a foreign key database,
* when the secondary key is configured as a foreign key.
*
* <p>When using the base API ({@code com.sleepycat.je}), this can occur when a
* {@link SecondaryDatabase} is configured to be associated with a foreign key
* database (see {@link SecondaryConfig#setForeignKeyDatabase}).</p>
*
* <p>When using the DPL ({@code com.sleepycat.persist}), this can occur when a
* {@link com.sleepycat.persist.model.SecondaryKey} is defined with a {@link
* com.sleepycat.persist.model.SecondaryKey#relatedEntity}.</p>
*
* <p>The {@link Transaction} handle is invalidated as a result of this
* exception.</p>
*
* @see <a href="SecondaryDatabase.html#transactions">Special considerations
* for using Secondary Databases with and without Transactions</a>
*
* @since 4.0
*/
public class ForeignConstraintException extends SecondaryConstraintException {
private static final long serialVersionUID = 1;
/**
* For internal use only.
* @hidden
*/
public ForeignConstraintException(Locker locker,
String message,
String secDbName,
String priDbName,
DatabaseEntry secKey,
DatabaseEntry priKey,
long priLsn,
long expirationTime,
ExtinctionStatus extinctionStatus) {
super(locker, message, secDbName, priDbName, secKey, priKey,
priLsn, expirationTime, extinctionStatus);
}
/**
* For internal use only.
* @hidden
*/
private ForeignConstraintException(String message,
ForeignConstraintException cause) {
super(message, cause);
}
/**
* For internal use only.
* @hidden
*/
@Override
public OperationFailureException wrapSelf(String msg) {
return new ForeignConstraintException(msg, this);
}
}