Fulcrum is home to tiny micro libraries that do very specific things, and can be imported into a project individually, without dragging in tons of unneeded dependencies.
fulcrum-assert
— Common assertionsfulcrum-await
— Utility for awaiting asynchronous actionsfulcrum-combinations
— Generates combinations of elements in a 2D arrayfulcrum-concat
— Fluid API for selective concatenation of stringsfulcrum-constraints
— Helper for working withjavax.validation
fulcrum-docker-compose
— Wrapper around thedocker-compose
CLIfulcrum-dyno
— Micro-benchmarking harnessfulcrum-flow
— Strictly ordered joining of parallel tasksfulcrum-flux
— Reactive, SEDA-style pipelinefulcrum-format
— Formatting functions and utilitiesfulcrum-fslock
— Reentrant, interprocess exclusive locking protocolfulcrum-fslock-offheap
— Off-heap support for Fluxfulcrum-func
— Assists with functional programmingfulcrum-httpclient
— Utilities for working with Apache HttpClientfulcrum-io
— File and socket I/Ofulcrum-jgroups
— Synchronous messaging overlay for JGroupsfulcrum-json
— JSON parsing and formatting using Jackson APIsfulcrum-junit
— JUnit 4.x utilitiesfulcrum-launcher
— Launch applications from Gradlefulcrum-mockito
— Mockito 2.x utilitiesfulcrum-nanoclock
— Wall clock with nanosecond resolutionfulcrum-nodequeue
— Lock-free multi-producer/multi-consumer queuefulcrum-props
— Utilities for working withProperties
fulcrum-random
— Secure random number generationfulcrum-resolver
— A lightweight Contextual Service Locator pattern implementationfulcrum-retry
— Retries actions that may throw aRuntimeException
fulcrum-scheduler
— A fast task schedulerfulcrum-select
— Functional object matchingfulcrum-shell
— Assists in the execution of shells and processesfulcrum-testmark
— Toggleable benchmark for use in unit testsfulcrum-threads
— Utilities for working with threadsfulcrum-verifier
— Verifiers of conventional class/object behaviourfulcrum-version
— Loads the application version and build numberfulcrum-worker
— Worker thread with lifecycle management
Select just the module(s) that you need from the list above. Some modules have a short README describing their use.
Simply add the following snippet to your build file. Replace the version placeholder x.y.z
in the snippet with the version shown on the Download badge at the top of this README, and fulcrum-module
with the name of the actual module you need.
For Maven:
<dependency>
<groupId>com.obsidiandynamics.fulcrum</groupId>
<artifactId>fulcrum-module</artifactId>
<version>x.y.z</version>
<type>pom</type>
</dependency>
For Gradle:
api 'com.obsidiandynamics.fulcrum:fulcrum-module:x.y.z'