LiveScheduleServiceImpl implements LiveScheduleService { void retract(MediaPackage mp) throws LiveScheduleException { try { List<Job> jobs = new ArrayList<Job>(); Set<String> elementIds = new HashSet<String>(); String mpId = mp.getIdentifier().toString(); logger.info("Removing LIVE media package {} from the search index", mpId); jobs.add(searchService.delete(mpId)); for (MediaPackageElement mpe : mp.getElements()) { if (!MediaPackageElement.Type.Publication.equals(mpe.getElementType())) elementIds.add(mpe.getIdentifier()); } jobs.add(downloadDistributionService.retract(CHANNEL_ID, mp, elementIds)); if (!waitForStatus(jobs.toArray(new Job[jobs.size()])).isSuccess()) throw new LiveScheduleException("Removing live media package from search did not complete successfully"); } catch (LiveScheduleException e) { throw e; } catch (Exception e) { throw new LiveScheduleException(e); } }  @Override boolean createOrUpdateLiveEvent(String mpId, DublinCoreCatalog episodeDC); @Override boolean deleteLiveEvent(String mpId); @Override boolean updateLiveEventAcl(String mpId, AccessControlList acl); void setDublinCoreService(DublinCoreCatalogService service); void setSearchService(SearchService service); void setSeriesService(SeriesService service); void setServiceRegistry(ServiceRegistry service); void setCaptureAgentService(CaptureAgentStateService service); void setDownloadDistributionService(DownloadDistributionService service); void setWorkspace(Workspace ws); void setAssetManager(AssetManager assetManager); void setAuthorizationService(AuthorizationService service); void setOrganizationService(OrganizationDirectoryService service); static final String CA_PROPERTY_RESOLUTION_URL_PREFIX; static final String REPLACE_ID; static final String REPLACE_FLAVOR; static final String REPLACE_CA_NAME; static final String REPLACE_RESOLUTION; static final String LIVE_STREAMING_URL; static final String LIVE_STREAM_NAME; static final String LIVE_STREAM_MIME_TYPE; static final String LIVE_STREAM_RESOLUTION; static final String LIVE_TARGET_FLAVORS; static final String LIVE_DISTRIBUTION_SERVICE; static final String LIVE_PUBLISH_STREAMING; }
@Test public void testRetract() throws Exception { URI mpURI = LiveScheduleServiceImplTest.class.getResource("/live-mp.xml").toURI(); MediaPackage mp = MediaPackageBuilderFactory.newInstance().newMediaPackageBuilder() .loadFromXml(mpURI.toURL().openStream()); Job job1 = createJob(1L, "anything", "anything"); Capture<String> capturedMpId = Capture.newInstance(); EasyMock.expect(searchService.delete(EasyMock.capture(capturedMpId))).andReturn(job1); EasyMock.expect(serviceRegistry.getJob(1L)).andReturn(job1).anyTimes(); Job job2 = createJob(2L, "anything", "anything"); EasyMock.expect(downloadDistributionService.retract(EasyMock.anyString(), EasyMock.anyObject(MediaPackage.class), EasyMock.anyObject(Set.class))).andReturn(job2); EasyMock.expect(serviceRegistry.getJob(2L)).andReturn(job2).anyTimes(); replayServices(); service.setDownloadDistributionService(downloadDistributionService); service.retract(mp); Assert.assertEquals(MP_ID, capturedMpId.getValue()); EasyMock.verify(searchService, downloadDistributionService); }