Class CartStateFilter
java.lang.Object
org.springframework.web.filter.GenericFilterBean
org.springframework.web.filter.OncePerRequestFilter
org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter
org.broadleafcommerce.core.web.order.security.CartStateFilter
- All Implemented Interfaces:
jakarta.servlet.Filter,org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanNameAware,org.springframework.beans.factory.DisposableBean,org.springframework.beans.factory.InitializingBean,org.springframework.context.EnvironmentAware,org.springframework.core.env.EnvironmentCapable,org.springframework.core.Ordered,org.springframework.web.context.ServletContextAware
@Component("blCartStateFilter")
@ConditionalOnNotAdmin
public class CartStateFilter
extends AbstractIgnorableOncePerRequestFilter
This filter should be configured after the BroadleafCommerce CustomerStateFilter listener from Spring Security. Retrieves the cart for the current BroadleafCommerce Customer based using the authenticated user OR creates an empty non-modifiable cart and stores it in the request.
This filter is also responsible for establishing a session-wide lock for operations that require a lock, indicated
by requestRequiresLock(ServletRequest). By default, this is configured for all POST requests. Requests that
are marked as requiring a lock will execute strictly serially as defined by the configured OrderLockManager.
- Author:
- bpolster, Andre Azzolini (apazzolini)
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected CartStateRequestProcessorprotected static final org.apache.commons.logging.Logprotected OrderLockManagerprotected OrderServiceFields inherited from class org.springframework.web.filter.OncePerRequestFilter
ALREADY_FILTERED_SUFFIXFields inherited from class org.springframework.web.filter.GenericFilterBean
loggerFields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoiddoFilterInternalUnlessIgnored(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain chain) protected booleanintgetOrder()protected booleanrequestRequiresLock(jakarta.servlet.ServletRequest req) By default, all POST requests that are not matched by thegetExcludedOrderLockRequestPatterns()list (using theAntPathRequestMatcher) will be marked as requiring a lock on the Order.voidsetExcludedOrderLockRequestPatterns(List<String> excludedOrderLockRequestPatterns) This allows you to declaratively set a list of excluded Request Patterns/exclude-me/** protected booleanMethods inherited from class org.broadleafcommerce.common.web.filter.AbstractIgnorableOncePerRequestFilter
doFilterInternal, isIgnoredMethods inherited from class org.springframework.web.filter.OncePerRequestFilter
doFilter, doFilterNestedErrorDispatch, getAlreadyFilteredAttributeName, isAsyncDispatch, isAsyncStarted, shouldNotFilter, shouldNotFilterAsyncDispatchMethods inherited from class org.springframework.web.filter.GenericFilterBean
addRequiredProperty, afterPropertiesSet, createEnvironment, destroy, getEnvironment, getFilterConfig, getFilterName, getServletContext, init, initBeanWrapper, initFilterBean, setBeanName, setEnvironment, setServletContext
-
Field Details
-
LOG
protected static final org.apache.commons.logging.Log LOG -
cartStateProcessor
@Autowired @Qualifier("blCartStateRequestProcessor") protected CartStateRequestProcessor cartStateProcessor -
orderLockManager
-
orderService
-
excludedOrderLockRequestPatterns
-
-
Constructor Details
-
CartStateFilter
public CartStateFilter()
-
-
Method Details
-
doFilterInternalUnlessIgnored
public void doFilterInternalUnlessIgnored(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException - Specified by:
doFilterInternalUnlessIgnoredin classAbstractIgnorableOncePerRequestFilter- Throws:
IOExceptionjakarta.servlet.ServletException
-
requestRequiresLock
protected boolean requestRequiresLock(jakarta.servlet.ServletRequest req) By default, all POST requests that are not matched by thegetExcludedOrderLockRequestPatterns()list (using theAntPathRequestMatcher) will be marked as requiring a lock on the Order.- Parameters:
req-- Returns:
- whether or not the current request requires a lock on the order
-
getOrder
public int getOrder() -
getExcludedOrderLockRequestPatterns
-
setExcludedOrderLockRequestPatterns
This allows you to declaratively set a list of excluded Request Patterns/exclude-me/** -
getErrorInsteadOfQueue
protected boolean getErrorInsteadOfQueue() -
shouldNotFilterErrorDispatch
protected boolean shouldNotFilterErrorDispatch()- Overrides:
shouldNotFilterErrorDispatchin classorg.springframework.web.filter.OncePerRequestFilter
-