Class ChangeSummaryMessageFactory
java.lang.Object
com.broadleafcommerce.data.tracking.core.messaging.ChangeSummaryMessageFactory
- All Implemented Interfaces:
com.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
public class ChangeSummaryMessageFactory
extends Object
implements com.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
Creates new
ChangeEvent
messages based on an entity instance.- Author:
- Jeff Fischer
-
Field Summary
-
Constructor Summary
ConstructorDescriptionChangeSummaryMessageFactory
(DomainMapperManager mapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SingleIndexRequestMessageFactory singleIndexRequestMessageFactory, TrackableBehaviorUtil behaviorUtil) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
buildIndexableInformation
(Object entity, Trackable domain, ChangeEvent changeEvent) AssignChangeEvent.getIndexableTargetId()
andChangeEvent.getIndexableType()
, if single index request messaging is supported for the entity and state.org.springframework.messaging.Message<ChangeEvent>
createMessage
(Object entity) org.springframework.messaging.Message<ChangeEvent>
createMessage
(Object entity, Map<String, Object> attributes) protected List<ContextRequestHydrator>
protected com.broadleafcommerce.common.extension.data.DataRouteReference
protected VendorVisibilityManager
void
setContextRequestHydratorProvider
(org.springframework.beans.factory.ObjectProvider<ContextRequestHydrator> contextRequestHydratorProvider) If vendor processing is enabled, aContextInfo
matching each entity's tracking will need to be supplied to the methods ofgetVendorVisibilityManager()
to ensure any fetches are correctly narrowed to the same context.void
setReference
(com.broadleafcommerce.common.extension.data.DataRouteReference reference) protected void
setVendorRefIfApplicable
(Trackable entity, ChangeEvent changeEvent) If vendor processing is enabled, this will determine the vendor theentity
is associated to, and set that information on theChangeEvent.getVendorRef()
.void
setVendorVisibilityManagerProvider
(org.springframework.beans.factory.ObjectProvider<VendorVisibilityManager> vendorVisibilityManagerProvider) If vendor processing is enabled, this bean will be injected and used to determine which vendor a changed entity is associated to.
-
Field Details
-
IS_PROMOTE
- See Also:
-
CREATE_SANDBOX_IF_NOT_EXISTS
- See Also:
-
IS_TEMP_SANDBOX
- See Also:
-
IS_REMOVE_TEMP_OVERRIDE
- See Also:
-
-
Constructor Details
-
ChangeSummaryMessageFactory
public ChangeSummaryMessageFactory(DomainMapperManager mapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SingleIndexRequestMessageFactory singleIndexRequestMessageFactory, TrackableBehaviorUtil behaviorUtil)
-
-
Method Details
-
getVendorVisibilityManager
-
getContextRequestHydrators
-
createMessage
public org.springframework.messaging.Message<ChangeEvent> createMessage(Object entity, Map<String, Object> attributes) - Specified by:
createMessage
in interfacecom.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
-
createMessage
- Specified by:
createMessage
in interfacecom.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
-
buildIndexableInformation
AssignChangeEvent.getIndexableTargetId()
andChangeEvent.getIndexableType()
, if single index request messaging is supported for the entity and state. SeeSingleIndexRequestMessageFactory.isSupported(Object)
.- Parameters:
entity
- The raw entity instancedomain
- The Trackable version of the entity instancechangeEvent
- The ChangeEvent being emitted as a result of persistence of the entity
-
setVendorRefIfApplicable
If vendor processing is enabled, this will determine the vendor theentity
is associated to, and set that information on theChangeEvent.getVendorRef()
.- Parameters:
entity
- the entity whose vendor association should be determinedchangeEvent
- the change event being emitted as a result of persistence of this entity
-
setVendorVisibilityManagerProvider
@Autowired public void setVendorVisibilityManagerProvider(org.springframework.beans.factory.ObjectProvider<VendorVisibilityManager> vendorVisibilityManagerProvider) If vendor processing is enabled, this bean will be injected and used to determine which vendor a changed entity is associated to.We leverage
ObjectProvider
here since we want both optional and lazy injection. This is becauseChangeSummaryMessageFactory
may indirectly be a dependency of service components injected byVendorVisibilityManager
and we want to avoid circular dependencies. -
setContextRequestHydratorProvider
@Autowired public void setContextRequestHydratorProvider(org.springframework.beans.factory.ObjectProvider<ContextRequestHydrator> contextRequestHydratorProvider) If vendor processing is enabled, aContextInfo
matching each entity's tracking will need to be supplied to the methods ofgetVendorVisibilityManager()
to ensure any fetches are correctly narrowed to the same context. This will require theContextRequest
to be hydrated, and thus hydrators need to be injected.If vendor processing is disabled, the hydrators are not necessary.
We leverage
ObjectProvider
here since we want both optional and lazy injection. This is becauseChangeSummaryMessageFactory
may indirectly be a dependency of service components injected byContextRequestHydrator
implementations and we want to avoid circular dependencies. -
setReference
@Autowired public void setReference(@Nullable com.broadleafcommerce.common.extension.data.DataRouteReference reference) -
getReference
@Nullable protected com.broadleafcommerce.common.extension.data.DataRouteReference getReference()
-