Class DefaultContentItemResolverService<I extends ContentItem>

java.lang.Object
com.broadleafcommerce.content.service.DefaultContentItemResolverService<I>
All Implemented Interfaces:
ContentItemResolverService<I>, EventListener, org.springframework.context.ApplicationListener<ContentCacheInvalidationEvent>

public class DefaultContentItemResolverService<I extends ContentItem> extends Object implements ContentItemResolverService<I>, org.springframework.context.ApplicationListener<ContentCacheInvalidationEvent>
Author:
Nathan Moore (nathandmoore)
  • Field Details

  • Constructor Details

  • Method Details

    • getContentForRequest

      public Optional<ContentResolverResponse<I>> getContentForRequest(@NonNull @NonNull ContentResolverRequest request, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: ContentItemResolverService
      Resolves ContentItems for the given request. This accepts a Pageable and RSQL filters.

      If the Pageable is a DefaultPageRequest, then it will be ignored since that type of pagination is not supported by ContentItems. The correct type would be NarrowedPageable or UnnumberedPageable. It will also be considered to mean that no pagination information was in the original request, but instead the PageableDefault annotation was used to provide defaults.

      Specified by:
      getContentForRequest in interface ContentItemResolverService<I extends ContentItem>
      Parameters:
      request - All relevant information for retrieving the desired ContentItems.
      page - Pagination information. This will be ignored if not a NarrowedPageable or UnnumberedPageable, DefaultPageRequest should only indicate that the original request did not include any pagination parameters and was created by the PageableDefault annotation on an endpoint.
      filters - RSQL filters to be applied to the result set.
      contextInfo - Additional sandbox and multitenant information.
      Returns:
      ContentItems for the given request.
    • getContentByContentZoneName

      protected Optional<ContentResolverResponse<I>> getContentByContentZoneName(@NonNull @NonNull ContentResolverRequest request, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentByUri

      protected Optional<ContentResolverResponse<I>> getContentByUri(String uri, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentForModelId

      protected Optional<ContentResolverResponse<I>> getContentForModelId(String id, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentForModelName

      protected Optional<ContentResolverResponse<I>> getContentForModelName(String name, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentForItemNames

      protected Optional<ContentResolverResponse<I>> getContentForItemNames(@NonNull @NonNull Collection<String> names, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentForItemIds

      protected Optional<ContentResolverResponse<I>> getContentForItemIds(@NonNull @NonNull Collection<String> ids, @NonNull @NonNull org.springframework.data.domain.Pageable page, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • isPaginated

      protected boolean isPaginated(@Nullable org.springframework.data.domain.Pageable page)
    • populateDisplayOrder

      protected void populateDisplayOrder(List<I> contentItems, List<ContentZoneItem> contentZoneItemList)
    • hydrateRuleBasedItems

      protected List<I> hydrateRuleBasedItems(List<ContentZoneItem> items, ContentContext context, String allowedModelsRule, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
    • getContentItemIdsFromItemList

      protected List<String> getContentItemIdsFromItemList(List<ContentZoneItem> items, ContentContext context)
    • isRuleBasedContentItemMembership

      protected boolean isRuleBasedContentItemMembership(ContentZoneItem zoneItem)
    • isExplicitContentItemMembership

      protected boolean isExplicitContentItemMembership(ContentZoneItem zoneItem)
    • postProcessResponse

      protected ContentResolverResponse<I> postProcessResponse(@NonNull @NonNull ContentResolverResponse<I> response, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Performs post-processing on the results such as hydration and minification.
      Parameters:
      response - The ContentResolverResponse
    • hydrateResponse

      protected ContentResolverResponse<I> hydrateResponse(@NonNull @NonNull ContentResolverResponse<I> response, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Hydrates the ContentModel on the items so that the ContentFields are present.
      Parameters:
      response - The ContentResolverResponse
      Returns:
      The ContentResolverResponse
    • minifyResponse

      protected ContentResolverResponse<I> minifyResponse(@NonNull @NonNull ContentResolverResponse<I> response)
      Removes any unnecessary data like ContentItem.getContextState() from the response.
      Parameters:
      response - The ContentResolverResponse
      Returns:
      The ContentResolverResponse
    • populateCustomerRef

      protected void populateCustomerRef(ContentResolverRequest request)
    • evaluateDisplayRulesForResponse

      public void evaluateDisplayRulesForResponse(@NonNull @NonNull ContentResolverResponse<I> response, ContentContext request)
      Description copied from interface: ContentItemResolverService
      Recursively evaluates the display rules for the given response to filter out any ContentItems that should not be displayed.
      Specified by:
      evaluateDisplayRulesForResponse in interface ContentItemResolverService<I extends ContentItem>
      Parameters:
      response - The response to evaluate.
      request - The context of the request.
    • evaluateContentItemDisplayRules

      protected void evaluateContentItemDisplayRules(I item, ContentContext request)
    • recursivelyCheckDisplayRule

      protected boolean recursivelyCheckDisplayRule(FieldData fieldData, ContentContext context)
    • checkContentItemDisplayRule

      protected boolean checkContentItemDisplayRule(ContentItem contentItem, ContentContext context)
    • isCallerWhitelistedService

      protected boolean isCallerWhitelistedService()
      Since:
      Content Services 2.0.5
      See Also:
    • onApplicationEvent

      public void onApplicationEvent(ContentCacheInvalidationEvent event)
      Specified by:
      onApplicationEvent in interface org.springframework.context.ApplicationListener<I extends ContentItem>
    • getRuleEvaluationService

      protected com.broadleafcommerce.rulesengine.expression.service.RuleEvaluationService getRuleEvaluationService()
    • setRuleEvaluationService

      @Autowired @Lazy public void setRuleEvaluationService(com.broadleafcommerce.rulesengine.expression.service.RuleEvaluationService ruleEvaluationService)
    • getAuthenticationUtils

      protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils()
    • setAuthenticationUtils

      @Autowired @Lazy public void setAuthenticationUtils(com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils)
    • getZoneService

      protected ContentZoneService<ContentZone> getZoneService()
    • getModelService

      protected ContentModelService<ContentModel> getModelService()
    • getItemService

      protected ContentItemService<I> getItemService()
    • getHydrationService

      protected ContentItemHydrationService getHydrationService()
    • getTypeFactory

      protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()
    • getRsqlParser

      protected com.broadleafcommerce.data.tracking.core.filtering.fetch.FilterParser<cz.jirutka.rsql.parser.ast.Node> getRsqlParser()
    • setProperties

      @Autowired public void setProperties(ContentItemResolverProperties properties)
    • getProperties

      protected ContentItemResolverProperties getProperties()
    • getCacheStateManager

      @Nullable protected com.broadleafcommerce.common.extension.cache.CacheStateManager getCacheStateManager()
    • setCacheStateManager

      @Autowired(required=false) public void setCacheStateManager(@Nullable com.broadleafcommerce.common.extension.cache.CacheStateManager cacheStateManager)
    • setContentResolverCacheByZoneName

      @Autowired(required=false) @Qualifier("contentResolverCacheByZoneName") public void setContentResolverCacheByZoneName(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByZoneName)
    • getContentResolverCacheByZoneName

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByZoneName()
    • setContentResolverCacheByUri

      @Autowired(required=false) @Qualifier("contentResolverCacheByUri") public void setContentResolverCacheByUri(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByUri)
    • getContentResolverCacheByUri

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByUri()
    • setContentResolverCacheByModelId

      @Autowired(required=false) @Qualifier("contentResolverCacheByModelId") public void setContentResolverCacheByModelId(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByModelId)
    • getContentResolverCacheByModelId

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByModelId()
    • setContentResolverCacheByModelName

      @Autowired(required=false) @Qualifier("contentResolverCacheByModelName") public void setContentResolverCacheByModelName(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByModelName)
    • getContentResolverCacheByModelName

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByModelName()
    • setContentResolverCacheByItemIdIn

      @Autowired(required=false) @Qualifier("contentResolverCacheByItemIdIn") public void setContentResolverCacheByItemIdIn(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByItemIdIn)
    • getContentResolverCacheByItemIdIn

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByItemIdIn()
    • setContentResolverCacheByItemNameIn

      @Autowired(required=false) @Qualifier("contentResolverCacheByItemNameIn") public void setContentResolverCacheByItemNameIn(@Nullable com.broadleafcommerce.common.extension.cache.key.ContextKeyGen contentResolverCacheByItemNameIn)
    • getContentResolverCacheByItemNameIn

      @Nullable protected com.broadleafcommerce.common.extension.cache.key.ContextKeyGen getContentResolverCacheByItemNameIn()