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 newChangeEvent
messages based on an entity instance.- Author:
- Jeff Fischer
-
-
Field Summary
Fields Modifier and Type Field Description static String
CREATE_SANDBOX_IF_NOT_EXISTS
static String
IS_PROMOTE
static String
IS_REMOVE_TEMP_OVERRIDE
static String
IS_TEMP_SANDBOX
-
Constructor Summary
Constructors Constructor Description ChangeSummaryMessageFactory(DomainMapperManager mapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SingleIndexRequestMessageFactory singleIndexRequestMessageFactory, TrackableBehaviorUtil behaviorUtil)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected 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>
getContextRequestHydrators()
protected com.broadleafcommerce.common.extension.data.DataRouteReference
getReference()
protected VendorVisibilityManager
getVendorVisibilityManager()
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 Detail
-
IS_PROMOTE
public static final String IS_PROMOTE
- See Also:
- Constant Field Values
-
CREATE_SANDBOX_IF_NOT_EXISTS
public static final String CREATE_SANDBOX_IF_NOT_EXISTS
- See Also:
- Constant Field Values
-
IS_TEMP_SANDBOX
public static final String IS_TEMP_SANDBOX
- See Also:
- Constant Field Values
-
IS_REMOVE_TEMP_OVERRIDE
public static final String IS_REMOVE_TEMP_OVERRIDE
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ChangeSummaryMessageFactory
public ChangeSummaryMessageFactory(DomainMapperManager mapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SingleIndexRequestMessageFactory singleIndexRequestMessageFactory, TrackableBehaviorUtil behaviorUtil)
-
-
Method Detail
-
getVendorVisibilityManager
@Nullable protected VendorVisibilityManager getVendorVisibilityManager()
-
getContextRequestHydrators
protected List<ContextRequestHydrator> 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
public org.springframework.messaging.Message<ChangeEvent> createMessage(Object entity)
- Specified by:
createMessage
in interfacecom.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
-
buildIndexableInformation
protected void buildIndexableInformation(Object entity, Trackable domain, ChangeEvent changeEvent)
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
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()
.- 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()
-
-