Class DefaultScheduledJobService<P extends ScheduledJob>
- java.lang.Object
-
- com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
-
- com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
-
- com.broadleafcommerce.scheduledjob.service.DefaultScheduledJobService<P>
-
- All Implemented Interfaces:
com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>
,com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>
,ScheduledJobService<P>
public class DefaultScheduledJobService<P extends ScheduledJob> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements ScheduledJobService<P>
- Author:
- Chad Harchar (charchar)
-
-
Constructor Summary
Constructors Constructor Description DefaultScheduledJobService(ScheduledJobRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
delete(String contextId, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
P
establishTriggerStateIfApplicable(String contextId)
Establish theNotificationStateAware
contract forTriggeredJobEventProducer.TYPE
.P
executeJob(String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Causes the specifiedScheduledJob
to be executed immediately.protected com.broadleafcommerce.common.messaging.notification.NotificationManager
getNotificationManager()
protected ScheduledJobRepository<com.broadleafcommerce.data.tracking.core.Trackable>
getRepository()
protected SchedulerService
getSchedulerService()
P
markJobAsExecuted(String contextId, TimingType timingType)
Mark a job as executed viaScheduledJob.isExecuted()
.org.springframework.data.domain.Page<P>
readAllByName(String name, cz.jirutka.rsql.parser.ast.Node filters, org.springframework.data.domain.Pageable page, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Read a page of job records focusing on name (optional)P
replace(String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
protected P
resetUnmodifiableFieldsToOriginalValues(String id, P scheduledJob, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
void
setSchedulerService(SchedulerService schedulerService)
Stream<P>
streamAll(com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Read a stream of all ScheduledJobs in the data store.-
Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService
getRsqlHelper, readAll, readAll, readAll, readAll
-
Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService
convertFromPersistentDomain, convertToPersistentDomain, create, createAll, createAllAllowingPartialSuccess, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, setSortPositionStrategy, update, updateAll, updateAllAllowingPartialSuccess, updateSort
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService
create, createAll, createAllAllowingPartialSuccess, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSort
-
-
-
-
Constructor Detail
-
DefaultScheduledJobService
public DefaultScheduledJobService(ScheduledJobRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager)
-
-
Method Detail
-
streamAll
@NonNull public Stream<P> streamAll(@Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:ScheduledJobService
Read a stream of all ScheduledJobs in the data store.- Specified by:
streamAll
in interfaceScheduledJobService<P extends ScheduledJob>
- Parameters:
contextInfo
- context information surrounding multitenant state- Returns:
- a stream of all ScheduledJobs in the data store
-
readAllByName
@NonNull public org.springframework.data.domain.Page<P> readAllByName(@Nullable String name, @Nullable cz.jirutka.rsql.parser.ast.Node filters, @Nullable org.springframework.data.domain.Pageable page, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:ScheduledJobService
Read a page of job records focusing on name (optional)- Specified by:
readAllByName
in interfaceScheduledJobService<P extends ScheduledJob>
- Parameters:
name
- The name of the job to retrieve (optional)filters
- Any additional search filters to applypage
- The configuration for the page of records to retrievecontext
- The fetch view context- Returns:
- The page of records
-
markJobAsExecuted
@Nullable public P markJobAsExecuted(@NonNull String contextId, @NonNull TimingType timingType)
Description copied from interface:ScheduledJobService
Mark a job as executed viaScheduledJob.isExecuted()
. As part of an atomic operation, this method should also set theScheduledJob.getLastExecuted()
field and disable the job viaScheduledJob.isEnabled()
if the job is ofTimingType.TARGET_DATE
. Finally, theNotificationState
of typeTriggeredJobEventProducer.TYPE
should be configured to start the resiliency lifecycle. SeeNotificationState
for more information on the fields there related to messaging resiliency.- Specified by:
markJobAsExecuted
in interfaceScheduledJobService<P extends ScheduledJob>
- Parameters:
contextId
- The tracking identifier for the scheduled jobtimingType
- The type of job (e.g. whether it's recurring cron or single use)- Returns:
- the updated job if found and successfully updated, otherwise
null
. For example, if another process had already updated the record as being executed, this update would not succeed.
-
replace
public P replace(@NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
replace
in interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ScheduledJob>
- Overrides:
replace
in classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ScheduledJob>
-
establishTriggerStateIfApplicable
public P establishTriggerStateIfApplicable(String contextId)
Description copied from interface:ScheduledJobService
Establish theNotificationStateAware
contract forTriggeredJobEventProducer.TYPE
. This should initialize the basic support for a trigger typeNotificationState
item in theNotificationStateAware.getNotificationStates()
list. This state is generally completed during theScheduledJobService.markJobAsExecuted(String, TimingType)
lifecycle.- Specified by:
establishTriggerStateIfApplicable
in interfaceScheduledJobService<P extends ScheduledJob>
- Parameters:
contextId
- The tracking identifier for the scheduled job- Returns:
- The initialized entity instance
-
executeJob
public P executeJob(@NonNull String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:ScheduledJobService
Causes the specifiedScheduledJob
to be executed immediately.- Specified by:
executeJob
in interfaceScheduledJobService<P extends ScheduledJob>
- Parameters:
id
- The identifier for the scheduled jobcontext
- context information surrounding multitenant state- Returns:
- The job that was executed
-
delete
public void delete(@NonNull String contextId, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
- Specified by:
delete
in interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends ScheduledJob>
- Overrides:
delete
in classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ScheduledJob>
- Parameters:
contextId
- The scheduled job idcontext
- Context information used to discriminate the correct version of an entity by context id when multiple verions may be available across sandboxes, catalogs and applications.
-
resetUnmodifiableFieldsToOriginalValues
protected P resetUnmodifiableFieldsToOriginalValues(String id, P scheduledJob, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
-
getRepository
@NonNull protected ScheduledJobRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
- Overrides:
getRepository
in classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends ScheduledJob>
-
getNotificationManager
@NonNull protected com.broadleafcommerce.common.messaging.notification.NotificationManager getNotificationManager()
-
setSchedulerService
@Autowired @Lazy public void setSchedulerService(SchedulerService schedulerService)
-
getSchedulerService
@NonNull protected SchedulerService getSchedulerService()
-
-