Class GeneratorContext<Context extends GeneratorContext<Context>>
- java.lang.Object
-
- net.morimekta.providence.testing.generator.GeneratorContext<Context>
-
- Type Parameters:
Context
- The context implementation type.
- Direct Known Subclasses:
GeneratorContext.Simple
public class GeneratorContext<Context extends GeneratorContext<Context>> extends java.lang.Object
This is the core generator context, which essentially brings all things to be generated together. It has full knowledge about all the generators, where state is more or less copied from parent generators. And the current generating context.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
GeneratorContext.Simple
GeneratorContext with no extra methods in non-generic form.
-
Constructor Summary
Constructors Modifier Constructor Description GeneratorContext()
Create a fresh generator.protected
GeneratorContext(GeneratorContext<Context> parent)
Create a generator instance as copy of another instance.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearGeneratedMessages()
<V> V
createPropertyIfAbsent(java.lang.String name, java.util.function.Supplier<V> propertySupplier)
Context
deepCopy()
<M extends net.morimekta.providence.PMessage<M>,VG extends Generator<Context,M>>
VGgeneratorFor(net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor)
Generator<Context,?>
generatorForDescriptor(net.morimekta.providence.descriptor.PDescriptor descriptor)
java.util.List<net.morimekta.providence.PMessage>
getGeneratedMessages()
<V> V
getProperty(java.lang.String name)
java.util.Random
getRandom()
int
nextCollectionSize()
boolean
nextFieldIsPresent()
<M extends net.morimekta.providence.PMessage<M>>
MnextMessage(net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor)
Create a message based on the current generator.<M extends net.morimekta.providence.PMessage<M>,MOB extends net.morimekta.providence.PMessageOrBuilder<M>>
MnextMessage(net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor, java.util.function.Consumer<MessageGenerator<Context,M,MOB>> closure)
Create a message based on a modified generator.Context
setFillRate(double v)
Context
setMaxCollectionSize(int v)
Context
setMinCollectionSize(int v)
<V> Context
setProperty(java.lang.String name, V value)
Context
setRandom(java.util.Random random)
<V> Context
withGenerator(net.morimekta.providence.descriptor.PDescriptor descriptor, Generator<Context,V> generator)
Set a specific value generator based on type for default value generator.<M extends net.morimekta.providence.PMessage<M>,MOB extends net.morimekta.providence.PMessageOrBuilder<M>>
GeneratorContext<Context>withMessageGenerator(net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor, java.util.function.Consumer<MessageGenerator<Context,M,MOB>> closure)
Update the generator for the given message type.
-
-
-
Constructor Detail
-
GeneratorContext
public GeneratorContext()
Create a fresh generator.
-
GeneratorContext
protected GeneratorContext(GeneratorContext<Context> parent)
Create a generator instance as copy of another instance. The new generator can then be updated without interfering with the parent.- Parameters:
parent
- The parent generator instance.
-
-
Method Detail
-
deepCopy
public Context deepCopy()
-
setFillRate
public Context setFillRate(double v)
-
setMinCollectionSize
public Context setMinCollectionSize(int v)
-
setMaxCollectionSize
public Context setMaxCollectionSize(int v)
-
getRandom
public java.util.Random getRandom()
-
setRandom
public Context setRandom(java.util.Random random)
-
getProperty
public <V> V getProperty(java.lang.String name)
-
createPropertyIfAbsent
public <V> V createPropertyIfAbsent(java.lang.String name, java.util.function.Supplier<V> propertySupplier)
-
setProperty
public <V> Context setProperty(java.lang.String name, V value)
-
withGenerator
@Nonnull public <V> Context withGenerator(net.morimekta.providence.descriptor.PDescriptor descriptor, Generator<Context,V> generator)
Set a specific value generator based on type for default value generator.- Type Parameters:
V
- The value type.- Parameters:
descriptor
- The type to be generated.generator
- The value generator.- Returns:
- The generator instance.
-
generatorFor
@Nonnull public <M extends net.morimekta.providence.PMessage<M>,VG extends Generator<Context,M>> VG generatorFor(@Nonnull net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor)
-
generatorForDescriptor
@Nonnull public Generator<Context,?> generatorForDescriptor(@Nonnull net.morimekta.providence.descriptor.PDescriptor descriptor)
-
withMessageGenerator
@Nonnull public <M extends net.morimekta.providence.PMessage<M>,MOB extends net.morimekta.providence.PMessageOrBuilder<M>> GeneratorContext<Context> withMessageGenerator(@Nonnull net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor, @Nonnull java.util.function.Consumer<MessageGenerator<Context,M,MOB>> closure)
Update the generator for the given message type.- Type Parameters:
M
- The message type to have updated generator.MOB
- The message or builder interface.- Parameters:
descriptor
- The message descriptor.closure
- Closure updating the generator.- Returns:
- The generator instance.
-
nextMessage
public <M extends net.morimekta.providence.PMessage<M>> M nextMessage(@Nonnull net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor)
Create a message based on the current generator.- Type Parameters:
M
- The message type.- Parameters:
descriptor
- The message descriptor.- Returns:
- The generated message.
-
nextMessage
public <M extends net.morimekta.providence.PMessage<M>,MOB extends net.morimekta.providence.PMessageOrBuilder<M>> M nextMessage(@Nonnull net.morimekta.providence.descriptor.PMessageDescriptor<M> descriptor, @Nonnull java.util.function.Consumer<MessageGenerator<Context,M,MOB>> closure)
Create a message based on a modified generator.- Type Parameters:
M
- The message type.MOB
- The message or builder interface.- Parameters:
descriptor
- The message descriptor.closure
- Closure updating the generator for this case only.- Returns:
- The generated message.
-
nextCollectionSize
public int nextCollectionSize()
-
nextFieldIsPresent
public boolean nextFieldIsPresent()
-
getGeneratedMessages
public java.util.List<net.morimekta.providence.PMessage> getGeneratedMessages()
-
clearGeneratedMessages
public void clearGeneratedMessages()
-
-