/** * Given a ID to a content source, this returns the adapter that is * responsible for communicating with that content source where that adapter * object will ensure invocations on it are isolated to its plugin * classloader. * * @param contentProviderId * an ID to a {@link ContentSource} * @return the adapter that is communicating with the content source, * isolated to its classloader * @throws RuntimeException * if there is no content source with the given ID */ public ContentProvider getIsolatedContentProvider(int contentProviderId) throws RuntimeException { synchronized (this.adapters) { for (ContentSource contentSource : this.adapters.keySet()) { if (contentSource.getId() == contentProviderId) { return getIsolatedContentSourceAdapter(contentSource); } } } throw new RuntimeException("Content source ID [" + contentProviderId + "] doesn't exist; can't get adapter"); }
public ContentSourceSyncResults persistContentSourceSyncResults(ContentSourceSyncResults results) { ContentManagerHelper helper = new ContentManagerHelper(entityManager); Query q = entityManager.createNamedQuery(ContentSourceSyncResults.QUERY_GET_INPROGRESS_BY_CONTENT_SOURCE_ID); q.setParameter("contentSourceId", results.getContentSource().getId()); return (ContentSourceSyncResults) helper.persistSyncResults(q, results); }
public void synchronizeCandidateRepos(StringBuilder progress) throws Exception { if (!(provider instanceof RepoSource)) { // Nothing to do. return; } progress.append(new Date()).append(": "); progress.append("Asking content source for new repositories to import...\n"); RepoSource repoSource = (RepoSource) provider; long start = System.currentTimeMillis(); // Call to the plugin RepoImportReport report = repoSource.importRepos(); Subject overlord = subjectManager.getOverlord(); repoManager.processRepoImportReport(overlord, report, source.getId(), progress); log.info("importRepos: [" + source.getName() + "]: report has been merged (" + (System.currentTimeMillis() - start) + ")ms"); } }
@RequiredPermission(Permission.MANAGE_REPOSITORIES) public void removeContentSourcesFromRepo(Subject subject, int repoId, int[] contentSourceIds) throws RepoException { Repo repo = getRepo(subject, repoId); log.debug("User [" + subject + "] is removing content sources from repository [" + repo + "]"); Set<RepoContentSource> currentSet = repo.getRepoContentSources(); if ((currentSet != null) && (currentSet.size() > 0)) { Set<RepoContentSource> toBeRemoved = new HashSet<RepoContentSource>(); for (RepoContentSource current : currentSet) { for (int id : contentSourceIds) { if (id == current.getRepoContentSourcePK().getContentSource().getId()) { toBeRemoved.add(current); break; } } } for (RepoContentSource doomed : toBeRemoved) { entityManager.remove(doomed); } currentSet.removeAll(toBeRemoved); } // note that we specifically do not disassociate package versions from the repo, even if those // package versions come from the content source that is being removed }
q.setParameter("id", contentSource.getId()); List<PackageVersionContentSource> pvcss = q.getResultList(); for (PackageVersionContentSource pvcs : pvcss) {
contentSourceManager._mergePackageSyncReportUpdateRepo(contentSource.getId());
contentSourceManager._mergePackageSyncReportUpdateRepo(contentSource.getId());
contentSourceManager._mergePackageSyncReportUpdateRepo(contentSource.getId());
private PackageBits preparePackageBits(Subject subject, InputStream bitsStream, PackageVersionContentSource pvcs) { PackageVersionContentSourcePK pk = pvcs.getPackageVersionContentSourcePK(); int contentSourceId = pk.getContentSource().getId(); int packageVersionId = pk.getPackageVersion().getId(); String packageVersionLocation = pvcs.getLocation();
private InputStream preloadPackageBits(PackageVersionContentSource pvcs) throws Exception { PackageVersionContentSourcePK pk = pvcs.getPackageVersionContentSourcePK(); int contentSourceId = pk.getContentSource().getId(); int packageVersionId = pk.getPackageVersion().getId(); String packageVersionLocation = pvcs.getLocation();
private void syncImportedRepos(ContentSource contentSource) throws InterruptedException { SubjectManagerLocal subjectManager = LookupUtil.getSubjectManager(); final Subject overlord = subjectManager.getOverlord(); final RepoCriteria repoCriteria = new RepoCriteria(); repoCriteria.addFilterContentSourceIds(contentSource.getId()); repoCriteria.addFilterCandidate(false); final RepoManagerLocal repoManager = LookupUtil.getRepoManagerLocal(); //Use CriteriaQuery to automatically chunk/page through criteria query results CriteriaQueryExecutor<Repo, RepoCriteria> queryExecutor = new CriteriaQueryExecutor<Repo, RepoCriteria>() { @Override public PageList<Repo> execute(RepoCriteria criteria) { return repoManager.findReposByCriteria(overlord, repoCriteria); } }; CriteriaQuery<Repo, RepoCriteria> repos = new CriteriaQuery<Repo, RepoCriteria>(repoCriteria, queryExecutor); ArrayList<Integer> repoIdList = new ArrayList<Integer>(); for (Repo repo : repos) { repoIdList.add(repo.getId()); } Integer[] repoIds = new Integer[repoIdList.size()]; repoIds = repoIdList.toArray(repoIds); repoManager.internalSynchronizeRepos(overlord, repoIds); }
int contentSourceId = contentSource.getId();
existingPVCS = contentSourceManager.getPackageVersionsFromContentSourceForRepo(overlord, source.getId(), repo .getId());
int contentSourceId = pvcs.getPackageVersionContentSourcePK().getContentSource().getId(); bitsStream = adapterMgr.loadPackageBits(contentSourceId, pvcs.getLocation()); } else {
public PackageBits downloadPackageBits(Subject subject, PackageVersionContentSource pvcs) { PackageVersionContentSourcePK pk = pvcs.getPackageVersionContentSourcePK(); int contentSourceId = pk.getContentSource().getId(); int packageVersionId = pk.getPackageVersion().getId(); String packageVersionLocation = pvcs.getLocation();
DistributionManagerLocal distManager = LookupUtil.getDistributionManagerLocal(); ContentServerPluginContainer pc = ContentManagerHelper.getPluginContainer(); int contentSourceId = contentSource.getId(); ContentProviderManager cpMgr = pc.getAdapterManager(); ContentProvider provider = cpMgr.getIsolatedContentProvider(contentSource.getId()); if (!(provider instanceof DistributionSource)) { return;
ContentSource loaded = entityManager.find(ContentSource.class, contentSource.getId());
/** * It will schedule one job per adapter such that each adapter is scheduled to be synchronized as per its defined * sync schedule. This must only be called when all content source adapters have been initialized. */ public void scheduleSyncJobs() { if (this.adapterManager != null) { for (ContentSource contentSource : this.adapterManager.getAllContentSources()) { try { getLog().debug("scheduleSyncJobs :: Scheduling CP job: " + contentSource.getName()); scheduleProviderSyncJob(contentSource); ContentSourceManagerLocal contentSourceManager = LookupUtil.getContentSourceManager(); PageList<Repo> repos = contentSourceManager.getAssociatedRepos(LookupUtil.getSubjectManager() .getOverlord(), contentSource.getId(), PageControl.getUnlimitedInstance()); if (repos != null) { for (Repo repo : repos) { getLog().debug("scheduleSyncJobs :: Scheduling REPO job: " + repo.getName()); scheduleRepoSyncJob(repo); } } } catch (Exception e) { getLog().warn("Could not schedule sync job for content source [" + contentSource + "].", e); } } } }
ContentProvider provider = getIsolatedContentProvider(source.getId()); SyncProgressWeight sw = provider.getSyncProgressWeight(); PackageSourceSynchronizer packageSourceSynchronizer = new PackageSourceSynchronizer(repo, source, ContentProvider provider = getIsolatedContentProvider(source.getId()); SyncProgressWeight sw = provider.getSyncProgressWeight(); tracker.getProgressWatcher().addWork(sw.getPackageMetadataWeight()); ContentProvider provider = getIsolatedContentProvider(source.getId()); if (provider instanceof PackageSource) { PackageSourceSynchronizer packageSourceSyncer = new PackageSourceSynchronizer(repo, source, for (ContentSource source : repo.getContentSources()) { try { ContentProvider provider = getIsolatedContentProvider(source.getId()); if (provider instanceof DistributionSource) { DistributionSourceSynchronizer distroSourceSyncer = new DistributionSourceSynchronizer( for (ContentSource source : repo.getContentSources()) { try { ContentProvider provider = getIsolatedContentProvider(source.getId()); if (provider instanceof DistributionSource) { DistributionSourceSynchronizer distroSourceSyncer = new DistributionSourceSynchronizer( ContentProvider provider = getIsolatedContentProvider(source.getId()); if (provider instanceof AdvisorySource) { tracker = updateSyncStatus(tracker, ContentSyncStatus.ADVISORYMETADATA);
.getUnloadedPackageVersionsFromContentSourceInRepo(overlord, source.getId(), repo.getId(), pc); String msg = "Synchronize Package Bits: [" + source.getName() + "], repo [" + repo.getName() + "]: loaded package list for sync (" + (System.currentTimeMillis() - start) + ")ms";