aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs
diff options
context:
space:
mode:
authorRaphael <raphael@google.com>2012-02-14 11:17:15 -0800
committerRaphael <raphael@google.com>2012-02-15 10:34:59 -0800
commit52a70dbcf795b16104d6a7872976dde8760249e3 (patch)
tree3167463fb89b71a50eb38cadacd364c3a91643a6 /sdkmanager/libs
parent957ac03267ebc574c1389fd0c7f672c9a3a111a3 (diff)
downloadsdk-52a70dbcf795b16104d6a7872976dde8760249e3.zip
sdk-52a70dbcf795b16104d6a7872976dde8760249e3.tar.gz
sdk-52a70dbcf795b16104d6a7872976dde8760249e3.tar.bz2
SDK Manager: support forward evolution of repository-N.xml
Change-Id: I1ec10f677d542b02d1588c43d5b40ed10d94f874
Diffstat (limited to 'sdkmanager/libs')
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SdkRepoSource.java21
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java40
2 files changed, 46 insertions, 15 deletions
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SdkRepoSource.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SdkRepoSource.java
index d35e365..00392de 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SdkRepoSource.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/SdkRepoSource.java
@@ -63,12 +63,25 @@ public class SdkRepoSource extends SdkSource {
return false;
}
+ private static String[] sDefaults = null; // lazily allocated in getDefaultXmlFileUrls
+
@Override
protected String[] getDefaultXmlFileUrls() {
- return new String[] {
- SdkRepoConstants.URL_DEFAULT_FILENAME2,
- SdkRepoConstants.URL_DEFAULT_FILENAME
- };
+ if (sDefaults == null) {
+ sDefaults = new String[SdkRepoConstants.NS_LATEST_VERSION
+ - SdkRepoConstants.NS_SERVER_MIN_VERSION
+ + 2];
+ int k = 0;
+ for (int i = SdkRepoConstants.NS_LATEST_VERSION;
+ i >= SdkRepoConstants.NS_SERVER_MIN_VERSION;
+ i--) {
+ sDefaults[k++] = String.format(SdkRepoConstants.URL_FILENAME_PATTERN, i);
+ }
+ sDefaults[k++] = SdkRepoConstants.URL_DEFAULT_FILENAME;
+ assert k == sDefaults.length;
+ }
+
+ return sDefaults;
}
@Override
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 31ec8c7..b4a75a9 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java
@@ -26,25 +26,43 @@ import java.io.InputStream;
*/
public class SdkRepoConstants extends RepoConstants {
- /** The latest version of the sdk-repository XML Schema.
- * Valid version numbers are between 1 and this number, included. */
+ /**
+ * The latest version of the sdk-repository XML Schema.
+ * Valid version numbers are between 1 and this number, included.
+ */
public static final int NS_LATEST_VERSION = 6;
- /** The URL of the official Google sdk-repository site.
- * The URL ends with a /, allowing easy concatenation. */
+ /**
+ * The min version of the sdk-repository XML Schema we'll try to load.
+ * When looking for a repository-N.xml on the server, we'll check from
+ * {@link #NS_LATEST_VERSION} down to this revision.
+ * We only introduced the "repository-N.xml" pattern start with revision
+ * 5, so we know that <em>our</em> server will never contain a repository
+ * XML with a schema version lower than this one.
+ */
+ public static final int NS_SERVER_MIN_VERSION = 5;
+
+ /**
+ * 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$
- /** The default name looked for by {@link SdkSource} when trying to load an
- * sdk-repository XML if the URL doesn't match an existing resource. */
+ /**
+ * The default name looked for by {@link SdkSource} when trying to load an
+ * sdk-repository XML if the URL doesn't match an existing resource.
+ */
public static final String URL_DEFAULT_FILENAME = "repository.xml"; //$NON-NLS-1$
- /** The pattern name looked by {@link SdkSource} when trying to load
- * the latest sdk-repository XML that is specific to the current XSD
- * schema revision.
+ /**
+ * The pattern name looked by {@link SdkSource} when trying to load
+ * an sdk-repository XML that is specific to a given XSD revision.
+ * <p/>
+ * This must be used with {@link String#format(String, Object...)} with
+ * one integer parameter between 1 and {@link #NS_LATEST_VERSION}.
*/
- public static final String URL_DEFAULT_FILENAME2 =
- String.format("repository-%d.xml", NS_LATEST_VERSION); //$NON-NLS-1$
+ public static final String URL_FILENAME_PATTERN = "repository-%1$d.xml"; //$NON-NLS-1$
/** The base of our sdk-repository XML namespace. */
private static final String NS_BASE =