Add English and Chinese docs for the OnixByte Toolbox monorepo covering all six modules: common-toolbox, crypto-toolbox, math-toolbox, tuple, identity-generator, and version-catalogue.
6.9 KiB
title
| title |
|---|
| OnixByte Toolbox API |
Package Overview
All modules are published under the com.onixbyte group ID. Each module has its own base package:
| Module | Maven Artifact | Base Package |
|---|---|---|
| Common Toolbox | common-toolbox |
com.onixbyte.common |
| Crypto Toolbox | crypto-toolbox |
com.onixbyte.crypto |
| Math Toolbox | math-toolbox |
com.onixbyte.math |
| Tuple | tuple |
com.onixbyte.tuple |
| Identity Generator | identity-generator |
com.onixbyte.identitygenerator |
Common Toolbox
Adapter
ObjectMapAdapter — Converts between objects and maps. Useful for serialisation or data transformation scenarios where key-value representations are preferred.
import com.onixbyte.common.adapter.ObjectMapAdapter;
Utility Classes
| Class | Description |
|---|---|
AesUtil |
AES symmetric encryption/decryption with key generation |
Base64Util |
Base64 encoding and decoding with multiple charset support |
BoolUtil |
Boolean parsing and conversion utilities |
BranchUtil |
Conditional branching helpers with functional-style chains |
CollectionUtil |
Collection manipulation — grouping, partitioning, merging |
HashUtil |
Hashing utilities supporting MD5, SHA-1, SHA-256, SHA-512 |
MapUtil |
Map builder, merge, and transformation helpers |
RangeUtil |
Numeric range operations with boundary handling |
AesUtil Example:
var key = AesUtil.generateKey();
var encrypted = AesUtil.encrypt("hello world", key);
var decrypted = AesUtil.decrypt(encrypted, key);
HashUtil Example:
var md5 = HashUtil.md5("hello world");
var sha256 = HashUtil.sha256("hello world");
var fileSha = HashUtil.sha256(new File("data.bin"));
CollectionUtil Example:
var partitioned = CollectionUtil.partition(list, 100);
var grouped = CollectionUtil.groupBy(users, User::getDepartment);
Crypto Toolbox
Provides a clean abstraction for loading cryptographic keys in PEM format. Supports both RSA and ECDSA algorithms.
Key Loaders
| Class | Description |
|---|---|
RSAPrivateKeyLoader |
Load RSA private keys from PEM strings |
RSAPublicKeyLoader |
Load RSA public keys from PEM strings |
ECPrivateKeyLoader |
Load ECDSA private keys from PEM strings |
ECPublicKeyLoader |
Load ECDSA public keys from PEM strings |
All key loaders implement either PrivateKeyLoader or PublicKeyLoader interfaces.
RSA Example:
var privateKey = new RSAPrivateKeyLoader().load(pemString);
var publicKey = new RSAPublicKeyLoader().load(pemString);
ECDSA Example:
var ecPrivateKey = new ECPrivateKeyLoader().load(pemString);
var ecPublicKey = new ECPublicKeyLoader().load(pemString);
Utility
CryptoUtil — Provides convenient methods for digital signature creation and verification, as well as general-purpose cryptographic helpers.
Exceptions
| Class | Description |
|---|---|
KeyLoadingException |
Thrown when a PEM-formatted key fails to parse |
Math Toolbox
Statistical computation utilities for working with numeric datasets.
Core Classes
| Class | Description |
|---|---|
Calculator |
Statistical calculator for mean, median, variance, standard deviation, sum, min, max |
PercentileCalculator |
Percentile computation with configurable interpolation strategies |
Calculator Example:
var stats = new Calculator(Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0));
double mean = stats.getMean();
double median = stats.getMedian();
double stdDev = stats.getStandardDeviation();
PercentileCalculator Example:
var calculator = new PercentileCalculator(data);
double p95 = calculator.calculate(95);
double p99 = calculator.calculate(99);
Model
| Class | Description |
|---|---|
QuartileBounds |
Holds Q1, median (Q2), Q3 values along with IQR and whisker bounds |
Tuple
Lightweight generic tuple types for when you need to return multiple values without defining a dedicated class.
Classes
| Class | Type Parameters | Mutability |
|---|---|---|
Tuple<A, B> |
Two elements | Mutable |
ImmutableTuple<A, B> |
Two elements | Immutable |
Triple<A, B, C> |
Three elements | Mutable |
ImmutableTriple<A, B, C> |
Three elements | Immutable |
Example:
var pair = Tuple.of("key", 42);
var triple = Triple.of("id", "name", 100);
var immutable = ImmutableTuple.of("constant", true);
// Accessors
String first = pair.getFirst();
Integer second = pair.getSecond();
// Triple accessors
String a = triple.getFirst();
String b = triple.getSecond();
Integer c = triple.getThird();
Identity Generator
Generates unique identifiers suitable for use as database primary keys or distributed IDs.
Interface
IdentityGenerator<T> — Generates identities of type T.
Implementations
| Class | Description |
|---|---|
SequentialUuidGenerator |
Generates time-ordered, sequential UUIDs (optimised for DB indexes) |
SnowflakeIdentityGenerator |
Snowflake-style distributed unique ID generation |
Sequential UUID:
var generator = new SequentialUuidGenerator();
UUID id = generator.nextId(); // time-ordered UUID, B-tree friendly
Snowflake:
var generator = new SnowflakeIdentityGenerator(workerId, datacenterId);
long id = generator.nextId(); // 64-bit snowflake ID
Exceptions
| Class | Description |
|---|---|
TimingException |
Thrown when the system clock moves backwards, compromising ID uniqueness |