public final class DefaultLongNumericGenerator
implements LongNumericGenerator
{
private static final int MAX_STRING_LENGTH = Long.toString(9223372036854775807L).length();
private static final int MIN_STRING_LENGTH = 1;
private final AtomicLong count;
public DefaultLongNumericGenerator()
{
this(0L);
}
public DefaultLongNumericGenerator(long initialValue)
{
this.count = new AtomicLong(initialValue);
}
public long getNextLong()
{
return getNextValue();
}
public String getNextNumberAsString()
{
return Long.toString(getNextValue());
}
public int maxLength()
{
return MAX_STRING_LENGTH;
}
public int minLength()
{
return 1;
}
protected long getNextValue()
{
if (this.count.compareAndSet(9223372036854775807L, 0L)) {
return 9223372036854775807L;
}
return this.count.getAndIncrement();
}
implements LongNumericGenerator
{
private static final int MAX_STRING_LENGTH = Long.toString(9223372036854775807L).length();
private static final int MIN_STRING_LENGTH = 1;
private final AtomicLong count;
public DefaultLongNumericGenerator()
{
this(0L);
}
public DefaultLongNumericGenerator(long initialValue)
{
this.count = new AtomicLong(initialValue);
}
public long getNextLong()
{
return getNextValue();
}
public String getNextNumberAsString()
{
return Long.toString(getNextValue());
}
public int maxLength()
{
return MAX_STRING_LENGTH;
}
public int minLength()
{
return 1;
}
protected long getNextValue()
{
if (this.count.compareAndSet(9223372036854775807L, 0L)) {
return 9223372036854775807L;
}
return this.count.getAndIncrement();
}
}
public abstract interface LongNumericGenerator
extends NumericGenerator
{
public abstract long getNextLong();
}
public abstract interface NumericGenerator
{
public abstract String getNextNumberAsString();
public abstract int maxLength();
public abstract int minLength();
}
以上代码在org.jasig.cas.util 中得到。