Class ContextInfo
- All Implemented Interfaces:
com.broadleafcommerce.common.extension.cache.temporal.TemporalIdentifier
@RestController implementation before being passed as a parameter to an
internal data service.- Author:
- Jeff Fischer
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classThis is a generic hint concept that is used to influence persistence tier queries.static classContainer object for one or moreContextInfo.QueryHintinstances.static interfaceA dynamic component that theNarrowExecutorwill invoke to generate aNodefilter string that can be parsed and set as a predicate on the ultimate query it is processing. -
Constructor Summary
ConstructorsConstructorDescriptionContextInfo(ContextInfo contextInfo) Create a copy of an existing ContextInfo, including a copy of itsContextRequest.ContextInfo(OperationType operationType) ContextInfo(OperationType operationType, boolean ignoreNarrowing) Convenience constructor to set the operationType and ignoreNarrowing indicatorContextInfo(OperationType operationType, ContextRequest request) Convenience method for operationType and contextRequestContextInfo(OperationType operationType, ContextRequest request, String author) Convenience method for operationType and contextRequest -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanbooleanThis is a generic Map to support the ability for Broadleaf clients, specifically, to add additional (typically transient) properties during a particular request flow to support setting up and passing along additional state throughout a particular API invocation or web request.Returns the user principal for this request.Used forOperationType.CREATErequests for entities to determine whetherCreateSetupDomainMapperMembershould autogenerate a context ID for the current request.Specific sandbox and multitenant context information.The list of Customer Segment ids that are dynamically applied to the user according to the current context.The defaultCurrencyfor this request.The ip address of the remote callerTheLocalefor this context, primarily used for translation.The type of CRUD operation being requestedThe date in which to preview data.The preview token for use when previewing sandbox data.This field is not serialized or deserialized asQueryInfluencersare dynamic, functional components that execute logic rather than hold data.inthashCode()booleanReturn true if this request is using a preview date.booleanUsed forOperationType.DELETErequests of entities marked asTrackableBehavior.CATALOGto indicate whether the record for deletion is an override of a parent catalog that should be cleared instead of deleted.booleanWhether or not entities that implementActiveAwarewill be filtered by their active dates during fetch narrowing.booleanWhether or not entities that implementActiveFlagAwarewill be filtered by their active flags during fetch narrowing.booleanWhether to turn off only catalog narrowing behavior.booleanWhether or not to ignore narrowing on deleted sandbox items.booleanWhether or not to turn off sandbox and multitenant narrowing behavior.booleanWhether to ignore the process of translating fields while executingDomainMapperManager.fromRepositoryDomain(Object, Class, ContextInfo)for a given request.booleanWhether or not pending catalogs should be included in this context.Returns the time to be used for the current request.voidIntended to be the current Spring Security principal (the logged in user)voidsetClearOverride(boolean clearOverride) Used forOperationType.DELETErequests of entities marked asTrackableBehavior.CATALOGto indicate whether the record for deletion is an override of a parent catalog that should be cleared instead of deleted.voidsetContextIdOverwriteBehavior(ContextIdOverwriteBehavior contextIdOverwriteBehavior) Used forOperationType.CREATErequests for entities to determine whetherCreateSetupDomainMapperMembershould autogenerate a context ID for the current request.voidsetContextRequest(ContextRequest contextRequest) Specific sandbox and multitenant context information.voidsetCustomerSegmentIds(List<String> customerSegmentIds) The list of Customer Segment ids that are dynamically applied to the user according to the current context.voidsetDefaultCurrency(Currency defaultCurrency) The defaultCurrencyfor this request.voidsetFilterByActiveDates(boolean filterByActiveDates) voidsetFilterByActiveFlag(boolean filterByActiveFlag) Whether or not entities that implementActiveFlagAwarewill be filtered by their active flags during fetch narrowing.voidsetIgnoreCatalogNarrowing(boolean ignoreCatalogNarrowing) Whether to turn off only catalog narrowing behavior.voidsetIgnoreDeleteFiltering(boolean ignoreDeleteFiltering) Whether or not to ignore narrowing on deleted sandbox items.voidsetIgnoreNarrowing(boolean ignoreNarrowing) Whether or not to turn off sandbox and multitenant narrowing behavior.voidsetIgnoreTranslation(boolean ignoreTranslation) Whether to ignore the process of translating fields while executingDomainMapperManager.fromRepositoryDomain(Object, Class, ContextInfo)for a given request.voidsetIncludePendingCatalogs(boolean includePendingCatalogs) Whether or not pending catalogs should be included in this context.voidsetIpAddress(String ipAddress) The ip address of the remote callervoidTheLocalefor this context, primarily used for translation.voidsetOperationType(OperationType operationType) The type of CRUD operation being requestedvoidsetPendingCatalogs(boolean includePendingCatalogs) voidsetPreviewDate(Instant previewDate) The date in which to preview data.voidsetPreviewToken(PreviewToken previewToken) The preview token for use when previewing sandbox data.voidsetQueryHints(ContextInfo.QueryHints queryHints) voidsetQueryInfluencers(List<ContextInfo.QueryInfluencer> queryInfluencers) This field is not serialized or deserialized asQueryInfluencersare dynamic, functional components that execute logic rather than hold data.toString()withOperationType(ContextInfo info, OperationType type) Creates a new ContextInfo and sets the operation type.
-
Constructor Details
-
ContextInfo
-
ContextInfo
Convenience constructor to set the operationType and ignoreNarrowing indicator- Parameters:
operationType-ignoreNarrowing-
-
ContextInfo
Convenience method for operationType and contextRequest- Parameters:
operationType-
-
ContextInfo
Convenience method for operationType and contextRequest- Parameters:
operationType-
-
ContextInfo
Create a copy of an existing ContextInfo, including a copy of itsContextRequest.- Parameters:
contextInfo- The ContextInfo to create the copy from.- See Also:
-
ContextRequest(ContextRequest)
-
ContextInfo
public ContextInfo()
-
-
Method Details
-
setFilterByActiveDates
public void setFilterByActiveDates(boolean filterByActiveDates) -
getAuthor
Returns the user principal for this request.If a
previewTokenis present, and it matches the current context, this will returnPreviewToken.getAuthor()instead. This is primarily engaged to allow anonymous requests from an application to preview a user's sandbox data.- Returns:
- the user principal for this request
-
nowOrPreviewDate
Returns the time to be used for the current request. Generally this returns the result ofInstant.now(), except for when a validpreviewDateis set, in which case the preview date will be used.- Specified by:
nowOrPreviewDatein interfacecom.broadleafcommerce.common.extension.cache.temporal.TemporalIdentifier- Returns:
- the current time or preview date
-
hasPreviewDate
public boolean hasPreviewDate()Return true if this request is using a preview date. Caching implementations may be bypassed if this is true.- Returns:
- true if this context has a valid preview date
-
setPendingCatalogs
public void setPendingCatalogs(boolean includePendingCatalogs) -
withOperationType
Creates a new ContextInfo and sets the operation type.- Parameters:
type-- Returns:
-
getIpAddress
The ip address of the remote caller- Returns:
- The ip address
-
isIgnoreNarrowing
public boolean isIgnoreNarrowing()Whether or not to turn off sandbox and multitenant narrowing behavior. Narrowing is applied as part of a read operations where additional discrimination is performed to retrieve the appropriate sandbox or catalog result for a given entity context id. In a write operation these discriminators are automatically applied to theTrackableinstance based on other information within theContextInfo. SeeTrackableRepositoryfor more information.- Returns:
- Whether or not to turn off narrowing behavior
-
isIgnoreDeleteFiltering
public boolean isIgnoreDeleteFiltering()Whether or not to ignore narrowing on deleted sandbox items. Deleted sandbox items are generally filtered out of results. However, it can occasionally be useful to include those items in results. Setting this flag to true on a fetch request will enable that behavior.- Returns:
- Whether or not to ignore narrowing on deleted sandbox items
-
isIncludePendingCatalogs
public boolean isIncludePendingCatalogs()Whether or not pending catalogs should be included in this context. Generally, pending catalogs are only interesting to admin requests.- Returns:
- Whether or not pending catalogs should be included in this context
-
isIgnoreCatalogNarrowing
public boolean isIgnoreCatalogNarrowing()Whether to turn off only catalog narrowing behavior.- See Also:
-
For additional information about narrowing in general.
-
getLocale
TheLocalefor this context, primarily used for translation.- Returns:
- The
Localefor this context, primarily used for translation
-
getDefaultCurrency
The defaultCurrencyfor this request. This is typically set by aContextInfoCustomizerimplementation. This may be null if not otherwise resolved.- Returns:
- The default currency
-
getAdditionalProperties
This is a generic Map to support the ability for Broadleaf clients, specifically, to add additional (typically transient) properties during a particular request flow to support setting up and passing along additional state throughout a particular API invocation or web request. Note that this should normally be used by Broadleaf clients and not internally by Broadleaf framework engineers.- Returns:
- A Map that can generically hold state
-
isIgnoreTranslation
public boolean isIgnoreTranslation()Whether to ignore the process of translating fields while executingDomainMapperManager.fromRepositoryDomain(Object, Class, ContextInfo)for a given request.- Returns:
- Whether to ignore the process of translating fields while executing
DomainMapperManager.fromRepositoryDomain(java.lang.Object, java.lang.Class<P>, com.broadleafcommerce.data.tracking.core.context.ContextInfo)for a given request
-
isClearOverride
public boolean isClearOverride()Used forOperationType.DELETErequests of entities marked asTrackableBehavior.CATALOGto indicate whether the record for deletion is an override of a parent catalog that should be cleared instead of deleted.- Returns:
- Whether the
TrackableBehavior.CATALOGrecord forOperationType.DELETEis an override that should be cleared.
-
getQueryHints
-
getQueryInfluencers
This field is not serialized or deserialized asQueryInfluencersare dynamic, functional components that execute logic rather than hold data. These are intended to be added and used by internal service logic for internal use rather than transferred between services.- See Also:
-
getContextIdOverwriteBehavior
Used forOperationType.CREATErequests for entities to determine whetherCreateSetupDomainMapperMembershould autogenerate a context ID for the current request. This allows for different behavior on a request-by-request basis to override the global system behavior defined inCreateSetupDomainMapperMember.isAutogenerateContextIdIfUnset()andCreateSetupDomainMapperMember.isOverwriteExistingContextIdOnCreate(). -
getContextRequest
Specific sandbox and multitenant context information. This should never be null but all of the properties within it can be- Returns:
- Request context information
-
getPreviewToken
The preview token for use when previewing sandbox data. This token is used as proof of access to read sandbox data for a user within a certain context, usually anonymous.This token is expected to be validated to match the current request during policy validation and if it passes, will be used to inform the narrowing behavior for sandboxable entities.
- Returns:
- the decoded preview token object
- See Also:
-
getPreviewDate
The date in which to preview data. This is utilized by services that opt-in to usenowOrPreviewDate()for their date filtering.This will only be defined and applicable when a valid
previewTokenexists on the context.This will be ignored if it is ever found to be before
Instant.now(), as this functionality is only intended to support previewing future states, and never past states. -
isFilterByActiveDates
public boolean isFilterByActiveDates()Whether or not entities that implementActiveAwarewill be filtered by their active dates during fetch narrowing.- Specified by:
isFilterByActiveDatesin interfacecom.broadleafcommerce.common.extension.cache.temporal.TemporalIdentifier
-
isFilterByActiveFlag
public boolean isFilterByActiveFlag()Whether or not entities that implementActiveFlagAwarewill be filtered by their active flags during fetch narrowing. -
getCustomerSegmentIds
The list of Customer Segment ids that are dynamically applied to the user according to the current context. -
setAuthor
Intended to be the current Spring Security principal (the logged in user)- Parameters:
author- The logged in user
-
setIpAddress
The ip address of the remote caller- Parameters:
ipAddress- The ip address
-
setIgnoreNarrowing
public void setIgnoreNarrowing(boolean ignoreNarrowing) Whether or not to turn off sandbox and multitenant narrowing behavior. Narrowing is applied as part of a read operations where additional discrimination is performed to retrieve the appropriate sandbox or catalog result for a given entity context id. In a write operation these discriminators are automatically applied to theTrackableinstance based on other information within theContextInfo. SeeTrackableRepositoryfor more information.- Parameters:
ignoreNarrowing- Whether or not to turn off narrowing behavior
-
setIgnoreDeleteFiltering
public void setIgnoreDeleteFiltering(boolean ignoreDeleteFiltering) Whether or not to ignore narrowing on deleted sandbox items. Deleted sandbox items are generally filtered out of results. However, it can occasionally be useful to include those items in results. Setting this flag to true on a fetch request will enable that behavior.- Parameters:
ignoreDeleteFiltering- Whether or not to ignore narrowing on deleted sandbox items
-
setIncludePendingCatalogs
public void setIncludePendingCatalogs(boolean includePendingCatalogs) Whether or not pending catalogs should be included in this context. Generally, pending catalogs are only interesting to admin requests.- Parameters:
includePendingCatalogs- Whether or not pending catalogs should be included in this context
-
setIgnoreCatalogNarrowing
public void setIgnoreCatalogNarrowing(boolean ignoreCatalogNarrowing) Whether to turn off only catalog narrowing behavior.- See Also:
-
For additional information about narrowing in general.
-
setLocale
TheLocalefor this context, primarily used for translation.- Parameters:
locale- TheLocalefor this context, primarily used for translation
-
setDefaultCurrency
The defaultCurrencyfor this request. This is typically set by aContextInfoCustomizerimplementation. This may be null if not otherwise resolved.- Parameters:
The- default currency
-
setIgnoreTranslation
public void setIgnoreTranslation(boolean ignoreTranslation) Whether to ignore the process of translating fields while executingDomainMapperManager.fromRepositoryDomain(Object, Class, ContextInfo)for a given request.- Parameters:
ignoreTranslation- Whether to ignore the process of translating fields while executingDomainMapperManager.fromRepositoryDomain(java.lang.Object, java.lang.Class<P>, com.broadleafcommerce.data.tracking.core.context.ContextInfo)for a given request
-
setClearOverride
public void setClearOverride(boolean clearOverride) Used forOperationType.DELETErequests of entities marked asTrackableBehavior.CATALOGto indicate whether the record for deletion is an override of a parent catalog that should be cleared instead of deleted.- Parameters:
clearOverride- Whether theTrackableBehavior.CATALOGrecord forOperationType.DELETEis an override that should be cleared.
-
setQueryHints
-
setQueryInfluencers
This field is not serialized or deserialized asQueryInfluencersare dynamic, functional components that execute logic rather than hold data. These are intended to be added and used by internal service logic for internal use rather than transferred between services.- See Also:
-
setContextIdOverwriteBehavior
Used forOperationType.CREATErequests for entities to determine whetherCreateSetupDomainMapperMembershould autogenerate a context ID for the current request. This allows for different behavior on a request-by-request basis to override the global system behavior defined inCreateSetupDomainMapperMember.isAutogenerateContextIdIfUnset()andCreateSetupDomainMapperMember.isOverwriteExistingContextIdOnCreate(). -
setContextRequest
Specific sandbox and multitenant context information. This should never be null but all of the properties within it can be- Parameters:
contextRequest- Request context information
-
setPreviewToken
The preview token for use when previewing sandbox data. This token is used as proof of access to read sandbox data for a user within a certain context, usually anonymous.This token is expected to be validated to match the current request during policy validation and if it passes, will be used to inform the narrowing behavior for sandboxable entities.
- Parameters:
previewToken- the decoded preview token object- See Also:
-
setPreviewDate
The date in which to preview data. This is utilized by services that opt-in to usenowOrPreviewDate()for their date filtering.This will only be defined and applicable when a valid
previewTokenexists on the context.This will be ignored if it is ever found to be before
Instant.now(), as this functionality is only intended to support previewing future states, and never past states. -
setFilterByActiveFlag
public void setFilterByActiveFlag(boolean filterByActiveFlag) Whether or not entities that implementActiveFlagAwarewill be filtered by their active flags during fetch narrowing. -
setCustomerSegmentIds
The list of Customer Segment ids that are dynamically applied to the user according to the current context. -
equals
-
canEqual
-
hashCode
public int hashCode() -
toString
-
getOperationType
The type of CRUD operation being requested- Returns:
- The type of CRUD operation
-
setOperationType
The type of CRUD operation being requested- Parameters:
operationType- The type of CRUD operation
-