SDK Updater: Add optional license elements to XML schema.
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
index bd76a4c..761c236 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
@@ -74,14 +74,15 @@
}
/**
- * Creates a new platform package based on an actual {@link IAndroidTarget} (with
+ * Creates a new platform package based on an actual {@link IAndroidTarget} (which
* {@link IAndroidTarget#isPlatform()} false) from the {@link SdkManager}.
* This is used to list local SDK folders.
*/
AddonPackage(IAndroidTarget target) {
super( null, //source
0, //revision
- target.getDescription(), //description
+ null, //license
+ target.getDescription(), //description
null, //descUrl
Os.getCurrentOs(), //archiveOs
Arch.getCurrentArch(), //archiveArch
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
index 8f07255..e2c2cf5 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/DocPackage.java
@@ -49,6 +49,7 @@
DocPackage(RepoSource source,
int apiLevel,
int revision,
+ String license,
String description,
String descUrl,
Os archiveOs,
@@ -58,6 +59,7 @@
String archiveChecksum) {
super(source,
revision,
+ license,
description,
descUrl,
archiveOs,
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
index f150510..8d067f2 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
@@ -167,6 +167,7 @@
pkg = new ToolPackage(
null, //source
0, //revision
+ null, //license
"Tools", //description
null, //descUrl
Os.getCurrentOs(), //archiveOs
@@ -229,6 +230,7 @@
null, //source
0, //apiLevel
0, //revision
+ null, //license
String.format("Documentation for %1$s", found), //description
null, //descUrl
Os.getCurrentOs(), //archiveOs
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
index 55ecaef..4d28f08 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
@@ -40,6 +40,7 @@
public abstract class Package implements IDescription {
private final int mRevision;
+ private final String mLicense;
private final String mDescription;
private final String mDescUrl;
private final Archive[] mArchives;
@@ -55,7 +56,7 @@
mRevision = getXmlInt (packageNode, SdkRepository.NODE_REVISION, 0);
mDescription = getXmlString(packageNode, SdkRepository.NODE_DESCRIPTION);
mDescUrl = getXmlString(packageNode, SdkRepository.NODE_DESC_URL);
-
+ mLicense = getXmlString(packageNode, SdkRepository.NODE_LICENSE);
mArchives = parseArchives(getFirstChild(packageNode, SdkRepository.NODE_ARCHIVES));
}
@@ -65,6 +66,7 @@
*/
public Package(RepoSource source,
int revision,
+ String license,
String description,
String descUrl,
Os archiveOs,
@@ -74,6 +76,7 @@
String archiveChecksum) {
mSource = source;
mRevision = revision;
+ mLicense = license;
mDescription = description;
mDescUrl = descUrl;
mArchives = new Archive[1];
@@ -142,6 +145,14 @@
/**
* Returns the optional description for all packages (platform, add-on, tool, doc) or
+ * for a lib. It is null if the element has not been specified in the repository XML.
+ */
+ public String getLicense() {
+ return mLicense;
+ }
+
+ /**
+ * Returns the optional description for all packages (platform, add-on, tool, doc) or
* for a lib. Can be empty but not null.
*/
public String getDescription() {
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
index 0d51c58..ae6bc77 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/PlatformPackage.java
@@ -47,14 +47,15 @@
}
/**
- * Creates a new platform package based on an actual {@link IAndroidTarget} (with
+ * Creates a new platform package based on an actual {@link IAndroidTarget} (which
* must have {@link IAndroidTarget#isPlatform()} true) from the {@link SdkManager}.
* This is used to list local SDK folders.
*/
PlatformPackage(IAndroidTarget target) {
super( null, //source
0, //revision
- target.getDescription(), //description
+ null, //license
+ target.getDescription(), //description
null, //descUrl
Os.getCurrentOs(), //archiveOs
Arch.getCurrentArch(), //archiveArch
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
index 71e35c4..4cac706 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ToolPackage.java
@@ -44,6 +44,7 @@
*/
ToolPackage(RepoSource source,
int revision,
+ String license,
String description,
String descUrl,
Os archiveOs,
@@ -53,6 +54,7 @@
String archiveChecksum) {
super(source,
revision,
+ license,
description,
descUrl,
archiveOs,
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
index 673e43f..4adcb49 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkRepository.java
@@ -46,6 +46,8 @@
/** The revision, an int > 0, for all packages (platform, add-on, tool, doc). */
public static final String NODE_REVISION = "revision"; //$NON-NLS-1$
+ /** The optional license for all packages (platform, add-on, tool, doc) or for a lib. */
+ public static final String NODE_LICENSE = "license"; //$NON-NLS-1$
/** The optional description for all packages (platform, add-on, tool, doc) or for a lib. */
public static final String NODE_DESCRIPTION = "description"; //$NON-NLS-1$
/** The optional description URL for all packages (platform, add-on, tool, doc). */
diff --git a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository.xsd b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository.xsd
index 6aff444..1862ae8 100755
--- a/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository.xsd
+++ b/tools/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-repository.xsd
@@ -56,6 +56,9 @@
<!-- The revision, an int > 0, incremented each time a new
package is generated. -->
<xsd:element name="revision" type="xsd:positiveInteger" />
+ <!-- The optional license of this package. If present, users will have
+ to agree to it before downloading. -->
+ <xsd:element name="license" type="xsd:string" minOccurs="0" />
<!-- The optional description of this package. -->
<xsd:element name="description" type="xsd:string" minOccurs="0" />
<!-- The optional description URL of this package -->
@@ -84,6 +87,9 @@
<!-- The revision, an int > 0, incremented each time a new
package is generated. -->
<xsd:element name="revision" type="xsd:positiveInteger" />
+ <!-- The optional license of this package. If present, users will have
+ to agree to it before downloading. -->
+ <xsd:element name="license" type="xsd:string" minOccurs="0" />
<!-- The optional description of this package. -->
<xsd:element name="description" type="xsd:string" minOccurs="0" />
<!-- The optional description URL of this package -->
@@ -124,6 +130,9 @@
<!-- The revision, an int > 0, incremented each time a new
package is generated. -->
<xsd:element name="revision" type="xsd:positiveInteger" />
+ <!-- The optional license of this package. If present, users will have
+ to agree to it before downloading. -->
+ <xsd:element name="license" type="xsd:string" minOccurs="0" />
<!-- The optional description of this package. -->
<xsd:element name="description" type="xsd:string" minOccurs="0" />
<!-- The optional description URL of this package -->
@@ -148,6 +157,9 @@
<!-- The revision, an int > 0, incremented each time a new
package is generated. -->
<xsd:element name="revision" type="xsd:positiveInteger" />
+ <!-- The optional license of this package. If present, users will have
+ to agree to it before downloading. -->
+ <xsd:element name="license" type="xsd:string" minOccurs="0" />
<!-- The optional description of this package. -->
<xsd:element name="description" type="xsd:string" minOccurs="0" />
<!-- The optional description URL of this package -->
diff --git a/tools/sdkmanager/libs/sdklib/tests/com/android/sdklib/repository/repository_sample.xml b/tools/sdkmanager/libs/sdklib/tests/com/android/sdklib/repository/repository_sample.xml
index fb6283d..a2d0cda 100755
--- a/tools/sdkmanager/libs/sdklib/tests/com/android/sdklib/repository/repository_sample.xml
+++ b/tools/sdkmanager/libs/sdklib/tests/com/android/sdklib/repository/repository_sample.xml
@@ -26,6 +26,8 @@
<sdk:api-level>1</sdk:api-level>
<sdk:revision>3</sdk:revision>
<sdk:description>Some optional description</sdk:description>
+ <sdk:license>This is the license
+ for this platform.</sdk:license>
<sdk:desc-url>http://www.example.com/platform1.html</sdk:desc-url>
<!-- The archives node is mandatory and it cannot be empty. -->
<sdk:archives>
@@ -41,6 +43,7 @@
<sdk:api-level>1</sdk:api-level>
<sdk:revision>1</sdk:revision>
<sdk:description>Some optional description</sdk:description>
+ <!-- the license element is not mandatory. -->
<sdk:desc-url>http://www.example.com/docs.html</sdk:desc-url>
<sdk:archives>
<sdk:archive os="any">
@@ -56,6 +59,8 @@
<sdk:api-level>1</sdk:api-level>
<sdk:vendor>John Doe</sdk:vendor>
<sdk:revision>1</sdk:revision>
+ <!-- license can be empty. -->
+ <sdk:license></sdk:license>
<sdk:description>Some optional description</sdk:description>
<sdk:desc-url>http://www.example.com/myfirstaddon</sdk:desc-url>
<sdk:archives>
@@ -82,6 +87,7 @@
<sdk:version>1.1</sdk:version>
<sdk:api-level>2</sdk:api-level>
<sdk:revision>12</sdk:revision>
+ <sdk:license>This is the license for this package.</sdk:license>
<!-- sdk:description and sdk:desc-url are optional -->
<sdk:archives>
<sdk:archive os="windows">
@@ -139,12 +145,14 @@
<sdk:name>com.android.mymaps</sdk:name>
</sdk:lib>
</sdk:libs>
+ <sdk:license>This is the license for this package.</sdk:license>
</sdk:add-on>
<sdk:tool>
<sdk:revision>1</sdk:revision>
<sdk:description>Some optional description</sdk:description>
<sdk:desc-url>http://www.example.com/tools.html</sdk:desc-url>
+ <sdk:license>This is the license for this package.</sdk:license>
<sdk:archives>
<sdk:archive os="any">
<sdk:size>65536</sdk:size>
@@ -157,6 +165,7 @@
<sdk:doc>
<sdk:api-level>2</sdk:api-level>
<sdk:revision>42</sdk:revision>
+ <sdk:license>This is the license for this package.</sdk:license>
<sdk:archives>
<sdk:archive os="windows">
<sdk:size>65536</sdk:size>
@@ -178,6 +187,7 @@
<sdk:tool>
<sdk:revision>42</sdk:revision>
+ <sdk:license>This is the license for this package.</sdk:license>
<sdk:archives>
<sdk:archive os="windows">
<sdk:size>65536</sdk:size>
@@ -198,6 +208,7 @@
</sdk:tool>
<sdk:add-on>
+ <sdk:license>This is the license for this package.</sdk:license>
<sdk:name>This add-on has no libraries</sdk:name>
<sdk:api-level>4</sdk:api-level>
<sdk:vendor>Joe Bar</sdk:vendor>