Added drift tolerance of 10 seconds to preserve monotonicity when the
system clock is adjusted by NTP after a small clock drift or when the
system clock jumps back by 1 second due to leap second.
The random component is incremented when the current time:
- is the same as the previous time;
- has moved backwards up to 10 seconds.
The time component is also incremented if the random component is
exceeded, which is quite rare.
Added OSGi entries to `MANIFEST.MF`:
```
Bundle-ManifestVersion: 2
Bundle-Name: ulid-creator
Bundle-SymbolicName: com.github.f4b6a3.ulid
Bundle-Version: 4.1.0
Export-Package: com.github.f4b6a3.ulid
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=1.8))"
```
The OSGi symbolic name is the same as the root package name:
`com.github.f4b6a3.ulid`
Now you call `UlidFactory.newInstance()` and it's variants to get a new
`UlidFactory`.
List of changes:
- Added `UlidFactory.newInstance()`
- Added `UlidFactory.newInstance(Random)`
- Added `UlidFactory.newInstance(Supplier<byte[]>)`
- Added `UlidFactory.newMonotonicInstance()`
- Added `UlidFactory.newMonotonicInstance(Random)`
- Added `UlidFactory.newMonotonicInstance(Supplier<byte[]>)`
- Added benchmark code to compare ULID with UUID
- Removed `DefaultFactory`
- Removed `MonotonicFactory`
- Removed `Ulid.toUpperCase()`
- Removed `RandomGenerator`
The benchmark code was created in the direcory `benchmark`.
To execute the benchmark, run the script `./benchmark/run.sh`.
Sorry, there is no `run.bat` file for Windows.
Add static methods to Ulid:
- Ulid.getInstant(String);
- Ulid.getTime(String);
- Ulid.getRandom(String);
List of changes:
Updated Ulid
Updated test cases
Updated README.md
Test coverage 99.4%