Class MessageGenerator<Context extends GeneratorContext<Context>,Message extends net.morimekta.providence.PMessage<Message>,MessageOrBuilder extends net.morimekta.providence.PMessageOrBuilder<Message>>
- java.lang.Object
-
- net.morimekta.providence.testing.generator.MessageGenerator<Context,Message,MessageOrBuilder>
-
- Type Parameters:
Context
- The generator context.Message
- The message type to be generated.MessageOrBuilder
- The message or builder interface.
- All Implemented Interfaces:
Generator<Context,Message>
public class MessageGenerator<Context extends GeneratorContext<Context>,Message extends net.morimekta.providence.PMessage<Message>,MessageOrBuilder extends net.morimekta.providence.PMessageOrBuilder<Message>> extends java.lang.Object implements Generator<Context,Message>
Message generator for generating a specific message.
-
-
Constructor Summary
Constructors Constructor Description MessageGenerator(net.morimekta.providence.descriptor.PMessageDescriptor<Message> descriptor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MessageGenerator<Context,Message,MessageOrBuilder>
deepCopy()
Message
generate(Context ctx)
MessageGenerator<Context,Message,MessageOrBuilder>
resetDefaultPresence()
Reset all field presence probabilities to default based on the fill rate of the message generator options.MessageGenerator<Context,Message,MessageOrBuilder>
setAlwaysAbsent(java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set which fields must never be generated.MessageGenerator<Context,Message,MessageOrBuilder>
setAlwaysAbsent(net.morimekta.providence.descriptor.PField<Message>... fields)
Set which fields must never be generated.MessageGenerator<Context,Message,MessageOrBuilder>
setAlwaysPresent(java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set which fields must always be generated.MessageGenerator<Context,Message,MessageOrBuilder>
setAlwaysPresent(net.morimekta.providence.descriptor.PField<Message>... fields)
Set which fields must always be generated.MessageGenerator<Context,Message,MessageOrBuilder>
setDefaultPresence(java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set default presence probability based on the default fill rate in the generator options instance.MessageGenerator<Context,Message,MessageOrBuilder>
setDefaultPresence(net.morimekta.providence.descriptor.PField<Message>... fields)
Set default presence probability based on the default fill rate in the generator options instance.MessageGenerator<Context,Message,MessageOrBuilder>
setFieldGenerator(net.morimekta.providence.descriptor.PField<Message> field, java.util.function.Predicate<MessageOrBuilder> predicate, MessageFieldGenerator<Message,MessageOrBuilder,Context,?> valueGenerator)
MessageGenerator<Context,Message,MessageOrBuilder>
setFieldGenerator(net.morimekta.providence.descriptor.PField<Message> field, MessageFieldGenerator<Message,MessageOrBuilder,Context,?> valueGenerator)
MessageGenerator<Context,Message,MessageOrBuilder>
setFirstFields(java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set fields (in order) that should have generated value before all other values.MessageGenerator<Context,Message,MessageOrBuilder>
setFirstFields(net.morimekta.providence.descriptor.PField<Message>... fields)
Set fields (in order) that should have generated value before all other values.MessageGenerator<Context,Message,MessageOrBuilder>
setLastFields(java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set fields (in order) that should have generated value after all other values.MessageGenerator<Context,Message,MessageOrBuilder>
setLastFields(net.morimekta.providence.descriptor.PField<Message>... fields)
Set fields (in order) that should have generated value after all other values.MessageGenerator<Context,Message,MessageOrBuilder>
setValueGenerator(net.morimekta.providence.descriptor.PField<Message> field, java.util.function.Predicate<MessageOrBuilder> predicate, Generator<Context,?> generator)
MessageGenerator<Context,Message,MessageOrBuilder>
setValueGenerator(net.morimekta.providence.descriptor.PField<Message> field, Generator<Context,?> generator)
-
-
-
Constructor Detail
-
MessageGenerator
public MessageGenerator(net.morimekta.providence.descriptor.PMessageDescriptor<Message> descriptor)
-
-
Method Detail
-
deepCopy
public MessageGenerator<Context,Message,MessageOrBuilder> deepCopy()
-
setAlwaysPresent
@SafeVarargs public final MessageGenerator<Context,Message,MessageOrBuilder> setAlwaysPresent(net.morimekta.providence.descriptor.PField<Message>... fields)
Set which fields must always be generated. Note that unions only allow for one single field to be always present.- Parameters:
fields
- The fields that must be generated for each instance.- Returns:
- The message generator.
-
setAlwaysPresent
public MessageGenerator<Context,Message,MessageOrBuilder> setAlwaysPresent(@Nonnull java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set which fields must always be generated. Note that unions only allow for one single field to be always present.- Parameters:
fields
- The fields that must be generated for each instance.- Returns:
- The message generator.
-
setAlwaysAbsent
@SafeVarargs public final MessageGenerator<Context,Message,MessageOrBuilder> setAlwaysAbsent(net.morimekta.providence.descriptor.PField<Message>... fields)
Set which fields must never be generated. If the message is a union then these fields will not be selected when getting a random field to get value for.- Parameters:
fields
- The fields that should always be absent.- Returns:
- The message generator.
-
setAlwaysAbsent
public MessageGenerator<Context,Message,MessageOrBuilder> setAlwaysAbsent(@Nonnull java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set which fields must never be generated. If the message is a union then these fields will not be selected when getting a random field to get value for.- Parameters:
fields
- The fields that should always be absent.- Returns:
- The message generator.
-
setDefaultPresence
@SafeVarargs public final MessageGenerator<Context,Message,MessageOrBuilder> setDefaultPresence(net.morimekta.providence.descriptor.PField<Message>... fields)
Set default presence probability based on the default fill rate in the generator options instance.- Parameters:
fields
- The fields the should have default presence probability.- Returns:
- The message generator.
-
setDefaultPresence
public MessageGenerator<Context,Message,MessageOrBuilder> setDefaultPresence(@Nonnull java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set default presence probability based on the default fill rate in the generator options instance.- Parameters:
fields
- The fields the should have default presence probability.- Returns:
- The message generator.
-
resetDefaultPresence
public MessageGenerator<Context,Message,MessageOrBuilder> resetDefaultPresence()
Reset all field presence probabilities to default based on the fill rate of the message generator options.- Returns:
- The message generator.
-
setFirstFields
@SafeVarargs public final MessageGenerator<Context,Message,MessageOrBuilder> setFirstFields(@Nonnull net.morimekta.providence.descriptor.PField<Message>... fields)
Set fields (in order) that should have generated value before all other values.- Parameters:
fields
- The fields the should be prioritized- Returns:
- The message generator.
-
setFirstFields
public MessageGenerator<Context,Message,MessageOrBuilder> setFirstFields(@Nonnull java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set fields (in order) that should have generated value before all other values.- Parameters:
fields
- The fields the should be prioritized- Returns:
- The message generator.
-
setLastFields
@SafeVarargs public final MessageGenerator<Context,Message,MessageOrBuilder> setLastFields(@Nonnull net.morimekta.providence.descriptor.PField<Message>... fields)
Set fields (in order) that should have generated value after all other values.- Parameters:
fields
- The fields the should have default presence probability.- Returns:
- The message generator.
-
setLastFields
public MessageGenerator<Context,Message,MessageOrBuilder> setLastFields(@Nonnull java.util.Collection<net.morimekta.providence.descriptor.PField<Message>> fields)
Set fields (in order) that should have generated value after all other values.- Parameters:
fields
- The fields the should have default presence probability.- Returns:
- The message generator.
-
setValueGenerator
public MessageGenerator<Context,Message,MessageOrBuilder> setValueGenerator(@Nonnull net.morimekta.providence.descriptor.PField<Message> field, @Nonnull Generator<Context,?> generator)
-
setFieldGenerator
public MessageGenerator<Context,Message,MessageOrBuilder> setFieldGenerator(@Nonnull net.morimekta.providence.descriptor.PField<Message> field, @Nonnull MessageFieldGenerator<Message,MessageOrBuilder,Context,?> valueGenerator)
-
setValueGenerator
public MessageGenerator<Context,Message,MessageOrBuilder> setValueGenerator(@Nonnull net.morimekta.providence.descriptor.PField<Message> field, @Nonnull java.util.function.Predicate<MessageOrBuilder> predicate, @Nonnull Generator<Context,?> generator)
-
setFieldGenerator
public MessageGenerator<Context,Message,MessageOrBuilder> setFieldGenerator(@Nonnull net.morimekta.providence.descriptor.PField<Message> field, @Nonnull java.util.function.Predicate<MessageOrBuilder> predicate, @Nonnull MessageFieldGenerator<Message,MessageOrBuilder,Context,?> valueGenerator)
-
-