LongProvider.java
package org.codefilarete.stalactite.engine.idprovider;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Supplier;
/**
* A simple provider based on long incrementation.
*
* Thread-safe since based on {@link AtomicLong}
*
* @author Guillaume Mary
*/
public class LongProvider extends IdentifierSupplier<Long> {
private static Supplier<Long> wrap(AtomicLong atomicLong) {
return atomicLong::getAndIncrement;
}
/**
* Basic constructor. Starts from zero.
* Useful for test.
*/
public LongProvider() {
this(0);
}
/**
* Basic constructor.
* @param initialValue the very first value to be returned by this provider
*/
public LongProvider(long initialValue) {
super(wrap(new AtomicLong(initialValue)));
}
}