Files
homepage/docs/en-gb/projects/onixbyte-toolbox/api.md
T
zihluwang 5b7c24fb0d docs: add onixbyte-toolbox documentation
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.
2026-05-23 09:21:37 +08:00

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