Interface IdGenerator<T>
- Type Parameters:
T- the type of identifier produced
- Functional Interface:
- This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.
Contract for generating identifiers of a particular type (for example, sequential
Long values, random UUIDs, etc.)
Implementations may or may not guarantee uniqueness, ordering, or repeatability of generated identifiers. Callers should not assume any such guarantees unless documented by the implementation.
Standard threadsafe implementations can be acquired via these factory methods:
- Author:
- Mark Allen
-
Method Summary
Modifier and TypeMethodDescriptionGenerates an identifier.static IdGenerator<String> Acquires a threadsafeIdGeneratorwith a default numeric ID range (values will wrap once maximum is reached) and a best-effort local IP prefix.static IdGenerator<String> withPrefix(String prefix) Acquires a threadsafeIdGeneratorwith a default numeric ID range (values will wrap once maximum is reached) and the given prefix.static IdGenerator<String> Acquires a threadsafeIdGeneratorwith the given minimum and maximum ID values (values will wrap once maximum is reached), and a best-effort local IP prefix.static IdGenerator<String> withRangeAndPrefix(Long minimumId, Long maximumId, String prefix) Returns a threadsafeIdGeneratorwith the given minimum and maximum ID values (values will wrap once maximum is reached), and the specified prefix.
-
Method Details
-
generateId
Generates an identifier.Implementations may choose different strategies (sequential, random, host-based, etc.) and are not required to guarantee uniqueness unless explicitly documented.
- Returns:
- the generated identifier (never
null)
-
withDefaults
Acquires a threadsafeIdGeneratorwith a default numeric ID range (values will wrap once maximum is reached) and a best-effort local IP prefix.This method is guaranteed to return a new instance.
- Returns:
- an
IdGeneratorwith default settings
-
withRange
Acquires a threadsafeIdGeneratorwith the given minimum and maximum ID values (values will wrap once maximum is reached), and a best-effort local IP prefix.This method is guaranteed to return a new instance.
- Parameters:
minimumId- the lowest ID that may be generated (inclusive)maximumId- the highest ID that may be generated (inclusive)- Returns:
- an
IdGeneratorconfigured with the given range
-
withRangeAndPrefix
@Nonnull static IdGenerator<String> withRangeAndPrefix(@Nonnull Long minimumId, @Nonnull Long maximumId, @Nonnull String prefix) Returns a threadsafeIdGeneratorwith the given minimum and maximum ID values (values will wrap once maximum is reached), and the specified prefix.This method is guaranteed to return a new instance.
- Parameters:
minimumId- the lowest ID that may be generated (inclusive)maximumId- the highest ID that may be generated (inclusive)prefix- a string to prepend to the generated numeric ID- Returns:
- an
IdGeneratorconfigured with the given range and prefix
-
withPrefix
Acquires a threadsafeIdGeneratorwith a default numeric ID range (values will wrap once maximum is reached) and the given prefix.This method is guaranteed to return a new instance.
- Parameters:
prefix- a string to prepend to the generated numeric ID- Returns:
- an
IdGeneratorconfigured with the given prefix
-