Class AbstractApiContextArgumentResolver<A extends Annotation, C>

java.lang.Object
com.bluebell.greenhouse.planter.resolvers.request.AbstractApiContextArgumentResolver<A,C>
Type Parameters:
A - resolution annotation type
C - resolved context type
All Implemented Interfaces:
ApiContextArgumentResolver, org.springframework.web.method.support.HandlerMethodArgumentResolver
Direct Known Subclasses:
AccountArgumentResolver, AccountDeletionArgumentResolver, AccountPortfolioArgumentResolver, AuthenticatedUserRefArgumentResolver, PortfolioArgumentResolver, PositionArgumentResolver, PositionOrderArgumentResolver, PositionTransactionArgumentResolver, RecurringNotificationArgumentResolver, TransactionArgumentResolver, WatchlistArgumentResolver, WatchlistItemArgumentResolver

public abstract class AbstractApiContextArgumentResolver<A extends Annotation, C> extends Object implements ApiContextArgumentResolver
Supplies the shared mechanics for typed API request-context argument resolvers.
Version:
3.0.5
Author:
Stephen Prizio
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    AbstractApiContextArgumentResolver(Class<A> annotationType, Class<C> contextType)
    Creates a typed resolver.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected final A
    getAnnotation(org.springframework.core.MethodParameter parameter)
    Returns the resolution annotation from a supported controller parameter.
    protected static jakarta.servlet.http.HttpServletRequest
    getHttpServletRequest(org.springframework.web.context.request.NativeWebRequest webRequest)
    Returns the servlet request wrapped by the native web request.
    protected final <T> T
    readParameter(ApiQueryParameterDefinition definition, org.springframework.core.MethodParameter parameter, org.springframework.web.context.request.NativeWebRequest webRequest, Class<T> targetType)
    Reads a typed query parameter.
    Creates a required query-parameter definition.
    final C
    resolveArgument(@NonNull org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer modelAndViewContainer, @NonNull org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory webDataBinderFactory)
    protected abstract C
    resolveContext(org.springframework.core.MethodParameter parameter, org.springframework.web.context.request.NativeWebRequest webRequest)
    Resolves the domain-specific request context.
    final boolean
    supportsParameter(org.springframework.core.MethodParameter parameter)

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface ApiContextArgumentResolver

    getParameterDefinitions
  • Constructor Details

    • AbstractApiContextArgumentResolver

      protected AbstractApiContextArgumentResolver(Class<A> annotationType, Class<C> contextType)
      Creates a typed resolver.
      Parameters:
      annotationType - Class of the resolution annotation
      contextType - Class of the resolved context
  • Method Details

    • supportsParameter

      public final boolean supportsParameter(org.springframework.core.MethodParameter parameter)
      Specified by:
      supportsParameter in interface org.springframework.web.method.support.HandlerMethodArgumentResolver
    • resolveArgument

      public final C resolveArgument(@NonNull org.springframework.core.MethodParameter parameter, @Nullable org.springframework.web.method.support.ModelAndViewContainer modelAndViewContainer, @NonNull org.springframework.web.context.request.NativeWebRequest webRequest, @Nullable org.springframework.web.bind.support.WebDataBinderFactory webDataBinderFactory) throws Exception
      Specified by:
      resolveArgument in interface org.springframework.web.method.support.HandlerMethodArgumentResolver
      Throws:
      Exception
    • resolveContext

      protected abstract C resolveContext(org.springframework.core.MethodParameter parameter, org.springframework.web.context.request.NativeWebRequest webRequest) throws Exception
      Resolves the domain-specific request context.
      Parameters:
      parameter - MethodParameter
      webRequest - NativeWebRequest
      Returns:
      resolved C
      Throws:
      Exception - when request parameters cannot be read
    • requiredParameter

      protected static ApiQueryParameterDefinition requiredParameter(String name, ApiQueryParameterType type)
      Creates a required query-parameter definition.
      Parameters:
      name - query-parameter name
      type - ApiQueryParameterType
      Returns:
      ApiQueryParameterDefinition
    • getAnnotation

      protected final A getAnnotation(org.springframework.core.MethodParameter parameter)
      Returns the resolution annotation from a supported controller parameter.
      Parameters:
      parameter - MethodParameter
      Returns:
      resolution annotation A
    • readParameter

      protected final <T> T readParameter(ApiQueryParameterDefinition definition, org.springframework.core.MethodParameter parameter, org.springframework.web.context.request.NativeWebRequest webRequest, Class<T> targetType) throws org.springframework.web.bind.MissingServletRequestParameterException
      Reads a typed query parameter.
      Type Parameters:
      T - converted value type
      Parameters:
      definition - ApiQueryParameterDefinition
      parameter - MethodParameter
      webRequest - NativeWebRequest
      targetType - Class of the converted value
      Returns:
      converted value T
      Throws:
      org.springframework.web.bind.MissingServletRequestParameterException - when a required parameter is absent
    • getHttpServletRequest

      protected static jakarta.servlet.http.HttpServletRequest getHttpServletRequest(org.springframework.web.context.request.NativeWebRequest webRequest)
      Returns the servlet request wrapped by the native web request.
      Parameters:
      webRequest - NativeWebRequest
      Returns:
      HttpServletRequest