/** * Sets up our {@link SchemaModule}s and {@link RepositorySourceProvider}s if they haven't * been yet. * * @param progress Used for error logging. */ public RepoConfig(@NonNull ProgressIndicator progress) { // Schema module for the list of update sites we download SchemaModule<?> addonListModule = new SchemaModule<>( "com.android.sdklib.repository.sources.generated.v%d.ObjectFactory", "sdk-sites-list-%d.xsd", RemoteSiteType.class); try { // Specify what modules are allowed to be used by what sites. Map<Class<? extends RepositorySource>, Collection<SchemaModule<?>>> siteTypes = ImmutableMap.<Class<? extends RepositorySource>, Collection<SchemaModule<?>>>builder() .put(RemoteSiteType.AddonSiteType.class, ImmutableSet.of(ADDON_MODULE)) .put(RemoteSiteType.SysImgSiteType.class, ImmutableSet.of(SYS_IMG_MODULE)).build(); mAddonsListSourceProvider = RemoteListSourceProvider .create(getAddonListUrl(progress), addonListModule, siteTypes); } catch (URISyntaxException e) { progress.logError("Failed to set up addons source provider", e); } String url = String.format(REPO_URL_PATTERN, getBaseUrl(progress), REPOSITORY_MODULE.getNamespaceVersionMap().size()); mRepositorySourceProvider = new ConstantSourceProvider(url, "Android Repository", ImmutableSet.of(REPOSITORY_MODULE, RepoManager.getGenericModule())); }
@NonNull private static String getAddonListUrl(@NonNull ProgressIndicator progress) { return getBaseUrl(progress) + DEFAULT_SITE_LIST_FILENAME_PATTERN; }