Package com.netscape.cmscore.dbs
Class Repository
- java.lang.Object
-
- com.netscape.cmscore.dbs.Repository
-
- All Implemented Interfaces:
IRepository
- Direct Known Subclasses:
CertificateRepository,KeyRepository,ReplicaIDRepository
public abstract class Repository extends java.lang.Object implements IRepository
A class represents a generic repository. It maintains unique serial number within repository.To build domain specific repository, subclass should be created.
- Version:
- $Revision: 1.4 $, $Date$
- Author:
- galperin, thomask
-
-
Field Summary
Fields Modifier and Type Field Description static org.slf4j.Loggerloggerprotected java.math.BigIntegermCounterprotected booleanmEnableRandomSerialNumbersprotected java.math.BigIntegermMaxSerialNoprotected java.math.BigIntegermMinSerialNostatic java.lang.StringPROP_BASE_DN
-
Constructor Summary
Constructors Constructor Description Repository(DBSubsystem dbSubsystem, int increment, java.lang.String baseDN)Constructs a repository.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidcheckRange()Checks if the given number is in the current range.voidcheckRanges()Checks to see if a new range is needed, or if we have reached the end of the current range, or if a range conflict has occurred.abstract java.math.BigIntegergetLastSerialNumberInRange(java.math.BigInteger serial_low_bound, java.math.BigInteger serial_upper_bound)java.lang.StringgetMaxSerial()Get the maximum serial number.java.lang.StringgetMinSerial()Get the minimum serial number.java.lang.StringgetNextMaxSerial()Get the maximum serial number in next range.java.math.BigIntegergetNextSerialNumber()Retrieves the next serial number, and also increase the serial number by one.protected java.math.BigIntegergetSerialNumber()Retrieves the next serial number attr in db.protected voidinitCacheIfNeeded()java.math.BigIntegerpeekNextSerialNumber()Peek at the next serial number in cache (does not consume the number).voidresetSerialNumber(java.math.BigInteger serial)Resets serial number.voidsetEnableSerialMgmt(boolean value)Sets whether serial number management is enabled for certs and requests.protected voidsetLastSerialNo(java.math.BigInteger lastSN)voidsetMaxSerial(java.lang.String serial)Set the maximum serial number.voidsetNextMaxSerial(java.lang.String serial)Set the maximum serial number in next rangeprotected voidsetSerialNumber(java.math.BigInteger num)Updates the serial number to the specified in db.voidsetTheSerialNumber(java.math.BigInteger num)Updates the serial number to the specified in db and cache.
-
-
-
Field Detail
-
logger
public static org.slf4j.Logger logger
-
PROP_BASE_DN
public static final java.lang.String PROP_BASE_DN
- See Also:
- Constant Field Values
-
mEnableRandomSerialNumbers
protected boolean mEnableRandomSerialNumbers
-
mCounter
protected java.math.BigInteger mCounter
-
mMinSerialNo
protected java.math.BigInteger mMinSerialNo
-
mMaxSerialNo
protected java.math.BigInteger mMaxSerialNo
-
-
Constructor Detail
-
Repository
public Repository(DBSubsystem dbSubsystem, int increment, java.lang.String baseDN) throws EDBException
Constructs a repository.- Throws:
EDBException
-
-
Method Detail
-
resetSerialNumber
public void resetSerialNumber(java.math.BigInteger serial) throws EBaseExceptionResets serial number.- Specified by:
resetSerialNumberin interfaceIRepository- Throws:
EBaseException
-
getSerialNumber
protected java.math.BigInteger getSerialNumber() throws EBaseExceptionRetrieves the next serial number attr in db.- Returns:
- next serial number
- Throws:
EBaseException
-
setSerialNumber
protected void setSerialNumber(java.math.BigInteger num) throws EBaseExceptionUpdates the serial number to the specified in db.- Parameters:
num- serial number- Throws:
EBaseException
-
getMaxSerial
public java.lang.String getMaxSerial()
Get the maximum serial number.- Returns:
- maximum serial number
-
setMaxSerial
public void setMaxSerial(java.lang.String serial) throws EBaseExceptionSet the maximum serial number.- Specified by:
setMaxSerialin interfaceIRepository- Parameters:
serial- maximum number- Throws:
EBaseException- failed to set maximum serial number
-
getNextMaxSerial
public java.lang.String getNextMaxSerial()
Get the maximum serial number in next range.- Returns:
- maximum serial number in next range
-
setNextMaxSerial
public void setNextMaxSerial(java.lang.String serial) throws EBaseExceptionSet the maximum serial number in next range- Specified by:
setNextMaxSerialin interfaceIRepository- Parameters:
serial- maximum number in next range- Throws:
EBaseException- failed to set maximum serial number in next range
-
getMinSerial
public java.lang.String getMinSerial()
Get the minimum serial number.- Returns:
- minimum serial number
-
setLastSerialNo
protected void setLastSerialNo(java.math.BigInteger lastSN)
-
initCacheIfNeeded
protected void initCacheIfNeeded() throws EBaseException- Throws:
EBaseException
-
peekNextSerialNumber
public java.math.BigInteger peekNextSerialNumber() throws EBaseExceptionPeek at the next serial number in cache (does not consume the number). The returned number is not necessarily the previously emitted serial number plus one, i.e. if we are going to roll into the next range. This method does not actually switch the range. Returns null if the next number exceeds the current range and there is not a next range.- Specified by:
peekNextSerialNumberin interfaceIRepository- Returns:
- serial number
- Throws:
EBaseException- failed to retrieve next serial number
-
setTheSerialNumber
public void setTheSerialNumber(java.math.BigInteger num) throws EBaseExceptionUpdates the serial number to the specified in db and cache.- Parameters:
num- serial number- Throws:
EBaseException
-
getNextSerialNumber
public java.math.BigInteger getNextSerialNumber() throws EBaseExceptionRetrieves the next serial number, and also increase the serial number by one.- Specified by:
getNextSerialNumberin interfaceIRepository- Returns:
- serial number
- Throws:
EBaseException- failed to retrieve next serial number
-
checkRange
protected void checkRange() throws EBaseExceptionChecks if the given number is in the current range. If it does not exceed the current range, return cleanly. If it exceeds the given range, and there is a next range, switch the range. If it exceeds the given range, and there is not a next range, throw EDBException. Precondition: the serial number should already have been advanced. This method will detect that and switch to the next range, including resetting mLastSerialNo to the start of the new (now current) range. Postcondition: the caller should again read mLastSerialNo after calling checkRange(), in case checkRange switched the range and the new range is not adjacent to the current range.- Throws:
EDBException- thrown when range switch is needed but next range is not allocatedEBaseException
-
checkRanges
public void checkRanges() throws EBaseExceptionChecks to see if a new range is needed, or if we have reached the end of the current range, or if a range conflict has occurred.- Specified by:
checkRangesin interfaceIRepository- Throws:
EBaseException- failed to check next range for conflicts
-
setEnableSerialMgmt
public void setEnableSerialMgmt(boolean value) throws EBaseExceptionSets whether serial number management is enabled for certs and requests.- Specified by:
setEnableSerialMgmtin interfaceIRepository- Parameters:
value- true/false- Throws:
EBaseException- failed to set
-
getLastSerialNumberInRange
public abstract java.math.BigInteger getLastSerialNumberInRange(java.math.BigInteger serial_low_bound, java.math.BigInteger serial_upper_bound) throws EBaseException- Throws:
EBaseException
-
-