Project

Profile

Help

Task #8748

closed

Story #7832: [EPIC] As a user, I have Alternate Content Sources

Implement ACS stage in download

Added by bmbouter over 3 years ago. Updated about 3 years ago.

Status:
CLOSED - CURRENTRELEASE
Priority:
Normal
Assignee:
Category:
-
Sprint/Milestone:
Start date:
Due date:
% Done:

100%

Estimated time:
Platform Release:
Groomed:
No
Sprint Candidate:
No
Tags:
Sprint:
Sprint 105
Quarter:

Description

Background

Assume that an ACS "refresh" has already occurred and that ACS has 3 "paths". At this point the following will have occurred:

  • The user had created the remote and ACS
  • The 3 hidden repos (one for each path) will have been created
  • The refresh will create lots of Content objects associated with each hidden repo and lots of RemoteArtifacts (but no actual artifacts)

Goal

Now the user is syncing some other repo. If the ACS had created a Content + Remote Artifact that is present in the repository the user is syncing, the ACS's RemoteArtifact and Remote should be used instead of the Remote the user is providing for the sync.

Implementation

Create a new stage that will download Artifacts from ACS sources named ACSArtifactHandler. This will come just before the ArtifactDownloader stage so there is an opportunity to modify the data the ArtifactDownloader stage will use for downloading.

For each not-yet-downloaded Artifact, the ACSArtifactHandler stage will determine if there is an ACS-created RemoteArtifact that already exists. If so, it should use that RemoteArtifact for downloading. It should do this by modifying the DeclarativeArtifact so that when the ArtifactDownloader here calls d_artifact.download() it will use the ACS downloader.

Also available in: Atom PDF