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
Fields -
Constructor Summary
ConstructorsConstructorDescriptionChangeSummaryMessageFactory(DomainMapperManager mapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, SingleIndexRequestMessageFactory singleIndexRequestMessageFactory, TrackableBehaviorUtil behaviorUtil) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidbuildIndexableInformation(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.DataRouteReferenceprotected VendorVisibilityManagervoidsetContextRequestHydratorProvider(org.springframework.beans.factory.ObjectProvider<ContextRequestHydrator> contextRequestHydratorProvider) If vendor processing is enabled, aContextInfomatching each entity's tracking will need to be supplied to the methods ofgetVendorVisibilityManager()to ensure any fetches are correctly narrowed to the same context.voidsetReference(com.broadleafcommerce.common.extension.data.DataRouteReference reference) protected voidsetVendorRefIfApplicable(Trackable entity, ChangeEvent changeEvent) If vendor processing is enabled, this will determine the vendor theentityis associated to, and set that information on theChangeEvent.getVendorRef().voidsetVendorVisibilityManagerProvider(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:
createMessagein interfacecom.broadleafcommerce.common.messaging.notification.MessageFactory<ChangeEvent>
-
createMessage
- Specified by:
createMessagein 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 theentityis 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
ObjectProviderhere since we want both optional and lazy injection. This is becauseChangeSummaryMessageFactorymay indirectly be a dependency of service components injected byVendorVisibilityManagerand we want to avoid circular dependencies. -
setContextRequestHydratorProvider
@Autowired public void setContextRequestHydratorProvider(org.springframework.beans.factory.ObjectProvider<ContextRequestHydrator> contextRequestHydratorProvider) If vendor processing is enabled, aContextInfomatching 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 theContextRequestto be hydrated, and thus hydrators need to be injected.If vendor processing is disabled, the hydrators are not necessary.
We leverage
ObjectProviderhere since we want both optional and lazy injection. This is becauseChangeSummaryMessageFactorymay indirectly be a dependency of service components injected byContextRequestHydratorimplementations 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()
-