From 2575aa40357d85a77db4bf1acdeb0f93c15cace0 Mon Sep 17 00:00:00 2001 From: Raphael Date: Fri, 14 Oct 2011 13:11:28 -0700 Subject: [PATCH] SDK Manager: env var SDK_TEST_BASE_URL. Do not merge. Support a new env var SDK_TEST_BASE_URL that should be set to the root of an alternate repo. When set it will completly override the built-in default repository base URL. (cherry picked from commit b0ac9620f74f0b3817a8847178ca53d876b78a09) Change-Id: I029d322a22b6c24c14880c8ffcf8529198bbebde --- .../internal/repository/AddonsListFetcher.java | 14 ++++++++++++ .../sdklib/repository/SdkAddonsListConstants.java | 2 +- .../sdklib/repository/SdkRepoConstants.java | 3 ++- .../sdkuilib/internal/repository/UpdaterData.java | 25 +++++++++++++++++++++- 4 files changed, 41 insertions(+), 3 deletions(-) diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonsListFetcher.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonsListFetcher.java index c83a3c1e0..62cc9a4be 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonsListFetcher.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonsListFetcher.java @@ -19,6 +19,7 @@ package com.android.sdklib.internal.repository; import com.android.annotations.VisibleForTesting; import com.android.annotations.VisibleForTesting.Visibility; import com.android.sdklib.repository.SdkAddonsListConstants; +import com.android.sdklib.repository.SdkRepoConstants; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; @@ -444,6 +445,13 @@ public class AddonsListFetcher { @VisibleForTesting(visibility=Visibility.PRIVATE) protected Site[] parseAddonsList(Document doc, String nsUri, ITaskMonitor monitor) { + String baseUrl = System.getenv("SDK_TEST_BASE_URL"); //$NON-NLS-1$ + if (baseUrl != null) { + if (baseUrl.length() <= 0 || !baseUrl.endsWith("/")) { //$NON-NLS-1$ + baseUrl = null; + } + } + Node root = getFirstChild(doc, nsUri, SdkAddonsListConstants.NODE_SDK_ADDONS_LIST); if (root != null) { ArrayList sites = new ArrayList(); @@ -462,6 +470,12 @@ public class AddonsListFetcher { String strUrl = url.getTextContent().trim(); String strName = name.getTextContent().trim(); + if (baseUrl != null && + strUrl.startsWith(SdkRepoConstants.URL_GOOGLE_SDK_SITE)) { + strUrl = baseUrl + + strUrl.substring(SdkRepoConstants.URL_GOOGLE_SDK_SITE.length()); + } + if (strUrl.length() > 0 && strName.length() > 0) { sites.add(new Site(strUrl, strName)); } diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonsListConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonsListConstants.java index f8ed18149..7c6e411e4 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonsListConstants.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonsListConstants.java @@ -26,7 +26,7 @@ public class SdkAddonsListConstants { /** The URL where to find the official addons list fle. */ public static final String URL_ADDON_LIST = - "https://dl-ssl.google.com/android/repository/addons_list.xml"; //$NON-NLS-1$ + SdkRepoConstants.URL_GOOGLE_SDK_SITE + "addons_list.xml"; //$NON-NLS-1$ /** The canonical URL filename for addons-list XML files. */ public static final String URL_DEFAULT_FILENAME = "addons_list.xml"; //$NON-NLS-1$ diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java index bbd5f7ad9..710ec9791 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java @@ -30,7 +30,8 @@ public class SdkRepoConstants extends RepoConstants { * Valid version numbers are between 1 and this number, included. */ public static final int NS_LATEST_VERSION = 5; - /** The URL of the official Google sdk-repository site. */ + /** The URL of the official Google sdk-repository site. + * The URL ends with a /, allowing easy concatenation. */ public static final String URL_GOOGLE_SDK_SITE = "https://dl-ssl.google.com/android/repository/"; //$NON-NLS-1$ diff --git a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java index cb2657624..fd961deae 100755 --- a/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java +++ b/sdkmanager/libs/sdkuilib/src/com/android/sdkuilib/internal/repository/UpdaterData.java @@ -370,8 +370,14 @@ public class UpdaterData implements IUpdaterData { // there's an env var asking to do so anyway. if (sources.getAllSources().length == 0 || System.getenv("SDK_MIX_WITH_TEST_URLS") != null) { + + String baseUrl = System.getenv("SDK_TEST_BASE_URL"); //$NON-NLS-1$ + if (baseUrl == null || baseUrl.length() <= 0 || !baseUrl.endsWith("/")) { //$NON-NLS-1$ + baseUrl = SdkRepoConstants.URL_GOOGLE_SDK_SITE; + } + sources.add(SdkSourceCategory.ANDROID_REPO, - new SdkRepoSource(SdkRepoConstants.URL_GOOGLE_SDK_SITE, + new SdkRepoSource(baseUrl, SdkSourceCategory.ANDROID_REPO.getUiName())); // Load user sources @@ -1089,11 +1095,28 @@ public class UpdaterData implements IUpdaterData { } else if (u.endsWith(SdkAddonsListConstants.URL_DEFAULT_FILENAME)) { url = u; break; + } else { + monitor.logError("Ignoring invalid SDK_TEST_URLS: %1$s", u); //$NON-NLS-1$ } + } } if (url != null) { + + // We override SdkRepoConstants.URL_GOOGLE_SDK_SITE if this is defined + String baseUrl = System.getenv("SDK_TEST_BASE_URL"); //$NON-NLS-1$ + if (baseUrl != null) { + if (baseUrl.length() > 0 && baseUrl.endsWith("/")) { //$NON-NLS-1$ + if (url.startsWith(SdkRepoConstants.URL_GOOGLE_SDK_SITE)) { + url = baseUrl + + url.substring(SdkRepoConstants.URL_GOOGLE_SDK_SITE.length()); + } + } else { + monitor.logError("Ignoring invalid SDK_TEST_BASE_URL: %1$s", baseUrl); //$NON-NLS-1$ + } + } + if (getSettingsController().getForceHttp()) { url = url.replaceAll("https://", "http://"); //$NON-NLS-1$ //$NON-NLS-2$ } -- 2.11.0