From 8514bd05b9ac68a356abbfff8e71b77db3f3dd47 Mon Sep 17 00:00:00 2001 From: Raphael Moll Date: Tue, 24 May 2011 22:43:37 -0700 Subject: [PATCH] Prevent 'make sdk_repo' from picking up future schemas. Change-Id: I749f4727b4c257ef5a6177b05727f5944d5d81ed --- .../{sdk-addon-2.xsd => -sdk-addon-2.xsd} | 0 ...{sdk-repository-4.xsd => -sdk-repository-4.xsd} | 0 .../src/com/android/sdklib/repository/README.txt | 25 ++++++++++++++++++++++ .../sdklib/repository/SdkAddonConstants.java | 10 ++++++++- .../sdklib/repository/SdkRepoConstants.java | 10 ++++++++- 5 files changed, 43 insertions(+), 2 deletions(-) rename sdkmanager/libs/sdklib/src/com/android/sdklib/repository/{sdk-addon-2.xsd => -sdk-addon-2.xsd} (100%) rename sdkmanager/libs/sdklib/src/com/android/sdklib/repository/{sdk-repository-4.xsd => -sdk-repository-4.xsd} (100%) create mode 100755 sdkmanager/libs/sdklib/src/com/android/sdklib/repository/README.txt diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-2.xsd b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/-sdk-addon-2.xsd similarity index 100% rename from sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-2.xsd rename to sdkmanager/libs/sdklib/src/com/android/sdklib/repository/-sdk-addon-2.xsd diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-4.xsd b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/-sdk-repository-4.xsd similarity index 100% rename from sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository-4.xsd rename to sdkmanager/libs/sdklib/src/com/android/sdklib/repository/-sdk-repository-4.xsd diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/README.txt b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/README.txt new file mode 100755 index 000000000..e6e0f633b --- /dev/null +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/README.txt @@ -0,0 +1,25 @@ +This directory contains the XML Schemas (XSD) used by the Android SDK Repository. + +The repository exports all the packages that compose the SDK as well as +various manifest that define what is available in the repository. +The XML schemas available here allows clients to validate the manifests. + +TODO: +- overview of schemas +- principles of design +- principles of evolution vs revision numbers +- naming convention +- using by "make sdk_repo" + + +Naming Convention +----------------- + +Repository schemas are named sdk-type-N.xsd where +- type is either addon, addons-list or repository. +- N is the schema revision number, starting at 1 and increment with each revision. + +Schemas can also be named -sdk-type-N.xsd. +The dash prefix means this schema is a *future* schema that is not yet +used in production. This allows the repository to test future schemas +before they are deployed. diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java index 7bb6cb22a..bd5577e27 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java @@ -71,7 +71,15 @@ public class SdkAddonConstants extends RepoConstants { */ public static InputStream getXsdStream(int version) { String filename = String.format("sdk-addon-%d.xsd", version); //$NON-NLS-1$ - return SdkAddonConstants.class.getResourceAsStream(filename); + InputStream stream = SdkAddonConstants.class.getResourceAsStream(filename); + if (stream == null) { + // Try the alternate schemas that are not published yet. + // This allows us to internally test with new schemas before the + // public repository uses it. + filename = String.format("-sdk-addon-%d.xsd", version); //$NON-NLS-1$ + stream = SdkRepoConstants.class.getResourceAsStream(filename); + } + return stream; } /** 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 c58a49dd4..b6e9097cb 100755 --- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java +++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepoConstants.java @@ -94,7 +94,15 @@ public class SdkRepoConstants extends RepoConstants { */ public static InputStream getXsdStream(int version) { String filename = String.format("sdk-repository-%d.xsd", version); //$NON-NLS-1$ - return SdkRepoConstants.class.getResourceAsStream(filename); + InputStream stream = SdkRepoConstants.class.getResourceAsStream(filename); + if (stream == null) { + // Try the alternate schemas that are not published yet. + // This allows us to internally test with new schemas before the + // public repository uses it. + filename = String.format("-sdk-repository-%d.xsd", version); //$NON-NLS-1$ + stream = SdkRepoConstants.class.getResourceAsStream(filename); + } + return stream; } /** -- 2.11.0