Class MessageGenerator<Context extends GeneratorContext<Context>,​Message extends net.morimekta.providence.PMessage<Message>,​MessageOrBuilder extends net.morimekta.providence.PMessageOrBuilder<Message>>

  • 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 Detail

      • MessageGenerator

        public MessageGenerator​(net.morimekta.providence.descriptor.PMessageDescriptor<Message> descriptor)
    • Method Detail

      • 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.