Skip to content

Grouping Randomizers

Mahmoud Ben Hassine edited this page Mar 6, 2020 · 11 revisions

The RandomizerRegistry interface

A RandomizerRegistry is a logical group of randomizers. A registry holds multiple randomizers targeted at a specific group of types. The TimeRandomizerRegistry is such an example, it groups all randomizers that support Java 8 Date and Time types (JSR 310).

Internally, all randomizers are grouped into registries. Registries are ordered by priority as follows:

Registry Priority
InternalRandomizerRegistry -4
TimeRandomizerRegistry -3
JodatimeRandomizerRegistry -3
BeanValidationRandomizerRegistry -2
AnnotationRandomizerRegistry -1
CustomRandomizerRegistry -1
ExclusionRandomizerRegistry 0

These priorities tell Easy Random the order in which it will use a randomizer for a given field or type.

You can create your own custom registry by implementing the RandomizerRegistry interface. Then, you can register it either:

1. Implicitly with a SPI provider

In this case, you need to add a jar file in the class path specifying the provider implementation in META-INF/services and Easy Random will detect it automatically

2. Or explicitly using the EasyRandomParameters API

EasyRandomParameters parameters = new EasyRandomParameters()
   .randomizerRegistry(myRegistry);
EasyRandom easyRandom = new EasyRandom(parameters);

Finally, you need to set the priority of your registry by annotating your implementation class with @Priority. This annotation takes the priority of your registry as attribute. The priority of your registry should start form value 1 (higher values for higher priorities).