org.springframework.web.servlet.mvc.condition

Class RequestConditionHolder

  • All Implemented Interfaces:
    RequestCondition<RequestConditionHolder>


    public final class RequestConditionHolder
    extends AbstractRequestCondition<RequestConditionHolder>
    A holder for a RequestCondition useful when the type of the request condition is not known ahead of time, e.g. custom condition. Since this class is also an implementation of RequestCondition, effectively it decorates the held request condition and allows it to be combined and compared with other request conditions in a type and null safe way.

    When two RequestConditionHolder instances are combined or compared with each other, it is expected the conditions they hold are of the same type. If they are not, a ClassCastException is raised.

    Since:
    3.1
    Author:
    Rossen Stoyanchev
    • Constructor Detail

      • RequestConditionHolder

        public RequestConditionHolder(@Nullable
                                      RequestCondition<?> requestCondition)
        Create a new holder to wrap the given request condition.
        Parameters:
        requestCondition - the condition to hold, may be null
    • Method Detail

      • getCondition

        @Nullable
        public RequestCondition<?> getCondition()
        Return the held request condition, or null if not holding one.
      • combine

        public RequestConditionHolder combine(RequestConditionHolder other)
        Combine the request conditions held by the two RequestConditionHolder instances after making sure the conditions are of the same type. Or if one holder is empty, the other holder is returned.
        Parameters:
        other - the condition to combine with.
        Returns:
        a request condition instance that is the result of combining the two condition instances.
      • getMatchingCondition

        @Nullable
        public RequestConditionHolder getMatchingCondition(HttpServletRequest request)
        Get the matching condition for the held request condition wrap it in a new RequestConditionHolder instance. Or otherwise if this is an empty holder, return the same holder instance.
        Returns:
        a condition instance in case of a match or null otherwise.
      • compareTo

        public int compareTo(RequestConditionHolder other,
                             HttpServletRequest request)
        Compare the request conditions held by the two RequestConditionHolder instances after making sure the conditions are of the same type. Or if one holder is empty, the other holder is preferred.