MongoJobRepository extends AbstractMongoRepository<String, JobInfo> implements JobRepository { @Override public void removeIfStopped(final String id) { findOne(id).ifPresent(jobInfo -> { if (jobInfo.isStopped()) { collectionWithWriteTimeout(mongoProperties.getDefaultWriteTimeout(), TimeUnit.MILLISECONDS).deleteOne(eq(ID, id)); } }); } MongoJobRepository(final MongoDatabase mongoDatabase,
                              final String jobInfoCollectionName,
                              final MongoProperties mongoProperties); @Override JobStatus findStatus(final String jobId); @Override void removeIfStopped(final String id); @Override void appendMessage(final String jobId, final JobMessage jobMessage); @Override void setJobStatus(final String jobId, final JobStatus jobStatus); @Override void setLastUpdate(final String jobId, final OffsetDateTime lastUpdate); @Override List<JobInfo> findLatest(final int maxCount); @Override List<JobInfo> findLatestJobsDistinct(); List<String> findAllJobIdsDistinct(); @Override List<JobInfo> findLatestBy(final String type, final int maxCount); @Override List<JobInfo> findByType(final String type); @Override List<JobInfo> findRunningWithoutUpdateSince(final OffsetDateTime timeOffset); @Override List<JobInfo> findAllJobInfoWithoutMessages(); @Override void keepJobMessagesWithinMaximumSize(String jobId); static final String ID; }
@Test public void shouldRemoveIfStopped() { final JobInfo foo = jobInfo("foo", "T_FOO"); final JobInfo bar = someRunningJobInfo("bar", "T_BAR", now()); repo.createOrUpdate(foo); repo.createOrUpdate(bar); repo.removeIfStopped("foo"); repo.removeIfStopped("bar"); assertThat(repo.findAll(), hasSize(1)); assertThat(repo.findAll(), contains(bar)); }