Class StandardParserRegistry<C>

  • Type Parameters:
    C - Command sender type
    All Implemented Interfaces:
    ParserRegistry<C>

    public final class StandardParserRegistry<C>
    extends java.lang.Object
    implements ParserRegistry<C>
    Standard implementation of ParserRegistry
    • Constructor Detail

      • StandardParserRegistry

        public StandardParserRegistry()
        Construct a new StandardParserRegistry instance. This will also register all standard annotation mappers and parser suppliers
    • Method Detail

      • registerParserSupplier

        public <T> void registerParserSupplier​(@NonNull io.leangen.geantyref.TypeToken<T> type,
                                               @NonNull java.util.function.Function<@NonNull ParserParameters,​@NonNull ArgumentParser<C,​?>> supplier)
        Description copied from interface: ParserRegistry
        Register a parser supplier
        Specified by:
        registerParserSupplier in interface ParserRegistry<C>
        Type Parameters:
        T - Generic type specifying what is produced by the parser
        Parameters:
        type - The type that is parsed by the parser
        supplier - The function that generates the parser. The map supplied my contain parameters used to configure the parser, many of which are documented in StandardParameters
      • registerNamedParserSupplier

        public void registerNamedParserSupplier​(@NonNull java.lang.String name,
                                                @NonNull java.util.function.Function<@NonNull ParserParameters,​@NonNull ArgumentParser<C,​?>> supplier)
        Description copied from interface: ParserRegistry
        Register a named parser supplier
        Specified by:
        registerNamedParserSupplier in interface ParserRegistry<C>
        Parameters:
        name - Parser name
        supplier - The function that generates the parser. The map supplied my contain parameters used to configure the parser, many of which are documented in StandardParameters
      • registerAnnotationMapper

        public <A extends java.lang.annotation.Annotation,​T> void registerAnnotationMapper​(@NonNull java.lang.Class<A> annotation,
                                                                                                 @NonNull java.util.function.BiFunction<@NonNull A,​@NonNull io.leangen.geantyref.TypeToken<?>,​@NonNull ParserParameters> mapper)
        Description copied from interface: ParserRegistry
        Register a mapper that maps annotation instances to a map of parameter-object pairs
        Specified by:
        registerAnnotationMapper in interface ParserRegistry<C>
        Type Parameters:
        A - Annotation type
        T - Type of the object that the parser is retrieved for
        Parameters:
        annotation - Annotation class
        mapper - Mapper that maps the pair (annotation, type to be parsed) to a map of parameter-object pairs
      • parseAnnotations

        public @NonNull ParserParameters parseAnnotations​(@NonNull io.leangen.geantyref.TypeToken<?> parsingType,
                                                          @NonNull java.util.Collection<? extends java.lang.annotation.Annotation> annotations)
        Description copied from interface: ParserRegistry
        Parse annotations into ParserParameters
        Specified by:
        parseAnnotations in interface ParserRegistry<C>
        Parameters:
        parsingType - The type that is produced by the parser that is requesting the parsing parameters
        annotations - The annotations to be parsed
        Returns:
        Parsed parameters
      • createParser

        public <T> @NonNull java.util.Optional<ArgumentParser<C,​T>> createParser​(@NonNull io.leangen.geantyref.TypeToken<T> type,
                                                                                       @NonNull ParserParameters parserParameters)
        Description copied from interface: ParserRegistry
        Attempt to create a ArgumentParser for a specified type, using an instance of ParserParameter to configure the parser settings
        Specified by:
        createParser in interface ParserRegistry<C>
        Type Parameters:
        T - Generic type
        Parameters:
        type - Type that should be produced by the parser
        parserParameters - Parser parameters
        Returns:
        Parser, if one can be created
      • createParser

        public <T> @NonNull java.util.Optional<ArgumentParser<C,​T>> createParser​(@NonNull java.lang.String name,
                                                                                       @NonNull ParserParameters parserParameters)
        Description copied from interface: ParserRegistry
        Attempt to create a ArgumentParser for a specified type, using an instance of ParserParameter to configure the parser settings
        Specified by:
        createParser in interface ParserRegistry<C>
        Type Parameters:
        T - Generic type
        Parameters:
        name - Parser
        parserParameters - Parser parameters
        Returns:
        Parser, if one can be created