aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs
diff options
context:
space:
mode:
authorRaphael <raphael@google.com>2012-02-14 13:21:46 -0800
committerRaphael <raphael@google.com>2012-02-15 10:35:03 -0800
commitfc9c99e32d8f462eed14b7bdafbc2ba08607c3df (patch)
tree06034ebc6042a5e686a7b10eed23250c383edc2c /sdkmanager/libs
parent52a70dbcf795b16104d6a7872976dde8760249e3 (diff)
downloadsdk-fc9c99e32d8f462eed14b7bdafbc2ba08607c3df.zip
sdk-fc9c99e32d8f462eed14b7bdafbc2ba08607c3df.tar.gz
sdk-fc9c99e32d8f462eed14b7bdafbc2ba08607c3df.tar.bz2
SDK Repository: name/vendor id/display for addons.
SDK Bug: 21942, part 2 of 3. (part 3 is replacing manifest.ini by source.props) Change-Id: I96be0d8210120927744224d909f7ee7184ebfecf
Diffstat (limited to 'sdkmanager/libs')
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java270
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java22
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java9
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java4
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java14
-rwxr-xr-xsdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-4.xsd15
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/MockAddonPackage.java18
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/PackageTest.java2
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkAddonSourceTest.java48
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkRepoSourceTest.java12
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/repository/ValidateAddonXmlTest.java4
-rwxr-xr-xsdkmanager/libs/sdklib/tests/src/com/android/sdklib/testdata/addon_sample_4.xml12
-rwxr-xr-xsdkmanager/libs/sdkuilib/tests/com/android/sdkuilib/internal/repository/sdkman2/PackagesDiffLogicTest.java68
13 files changed, 340 insertions, 158 deletions
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
index 6ce1118..a784b34 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/AddonPackage.java
@@ -26,6 +26,7 @@ import com.android.sdklib.SdkManager;
import com.android.sdklib.internal.repository.Archive.Arch;
import com.android.sdklib.internal.repository.Archive.Os;
import com.android.sdklib.repository.PkgProps;
+import com.android.sdklib.repository.SdkAddonConstants;
import com.android.sdklib.repository.SdkRepoConstants;
import com.android.util.Pair;
@@ -44,8 +45,10 @@ import java.util.Properties;
public class AddonPackage extends Package
implements IPackageVersion, IPlatformDependency, IExactApiLevelDependency, ILayoutlibVersion {
- private final String mVendor;
- private final String mName;
+ private final String mVendorId;
+ private final String mVendorDisplay;
+ private final String mNameId;
+ private final String mDisplayName;
private final AndroidVersion mVersion;
/**
@@ -122,14 +125,74 @@ public class AddonPackage extends Package
* parameters that vary according to the originating XML schema.
* @param licenses The licenses loaded from the XML originating document.
*/
- AddonPackage(SdkSource source, Node packageNode, String nsUri, Map<String,String> licenses) {
+ AddonPackage(
+ SdkSource source,
+ Node packageNode,
+ String nsUri,
+ Map<String,String> licenses) {
super(source, packageNode, nsUri, licenses);
- mVendor = XmlParserUtils.getXmlString(packageNode, SdkRepoConstants.NODE_VENDOR);
- mName = XmlParserUtils.getXmlString(packageNode, SdkRepoConstants.NODE_NAME);
- int apiLevel = XmlParserUtils.getXmlInt (packageNode, SdkRepoConstants.NODE_API_LEVEL, 0);
+
+ // --- name id/display ---
+ // addon-4.xsd introduces the name-id, name-display, vendor-id and vendor-display.
+ // These are not optional but we still need to support a fallback for older addons
+ // that only provide name and vendor. If the addon provides neither set of fields,
+ // it will simply not work as expected.
+
+ String nameId = XmlParserUtils.getXmlString(packageNode,
+ SdkRepoConstants.NODE_NAME_ID);
+ String nameDisp = XmlParserUtils.getXmlString(packageNode,
+ SdkRepoConstants.NODE_NAME_DISPLAY);
+ String name = XmlParserUtils.getXmlString(packageNode,
+ SdkRepoConstants.NODE_NAME);
+
+ // The old <name> is equivalent to the new <name-display>
+ if (nameDisp.length() == 0) {
+ nameDisp = name;
+ }
+
+ // For a missing id, we simply use a sanitized version of the display name
+ if (nameId.length() == 0) {
+ nameId = sanitizeDisplayToNameId(name.length() > 0 ? name : nameDisp);
+ }
+
+ assert nameId.length() > 0;
+ assert nameDisp.length() > 0;
+
+ mNameId = nameId.trim();
+ mDisplayName = nameDisp.trim();
+
+ // --- vendor id/display ---
+ // Same processing for vendor id vs display
+
+ String vendorId = XmlParserUtils.getXmlString(packageNode,
+ SdkAddonConstants.NODE_VENDOR_ID);
+ String vendorDisp = XmlParserUtils.getXmlString(packageNode,
+ SdkAddonConstants.NODE_VENDOR_DISPLAY);
+ String vendor = XmlParserUtils.getXmlString(packageNode,
+ SdkAddonConstants.NODE_VENDOR);
+
+ // The old <vendor> is equivalent to the new <vendor-display>
+ if (vendorDisp.length() == 0) {
+ vendorDisp = vendor;
+ }
+
+ // For a missing id, we simply use a sanitized version of the display vendor
+ if (vendorId.length() == 0) {
+ vendorId = sanitizeDisplayToNameId(vendor.length() > 0 ? vendor : vendorDisp);
+ }
+
+ assert vendorId.length() > 0;
+ assert vendorDisp.length() > 0;
+
+ mVendorId = vendorId.trim();
+ mVendorDisplay = vendorDisp.trim();
+
+ // --- other attributes
+
+ int apiLevel = XmlParserUtils.getXmlInt(packageNode, SdkAddonConstants.NODE_API_LEVEL, 0);
mVersion = new AndroidVersion(apiLevel, null /*codeName*/);
- mLibs = parseLibs(XmlParserUtils.getFirstChild(packageNode, SdkRepoConstants.NODE_LIBS));
+ mLibs = parseLibs(XmlParserUtils.getFirstChild(packageNode, SdkAddonConstants.NODE_LIBS));
mLayoutlibVersion = new LayoutlibVersionMixin(packageNode);
}
@@ -164,9 +227,58 @@ public class AddonPackage extends Package
target.getLocation() //archiveOsPath
);
+ // --- name id/display ---
+ // addon-4.xsd introduces the name-id, name-display, vendor-id and vendor-display.
+ // These are not optional but we still need to support a fallback for older addons
+ // that only provide name and vendor. If the addon provides neither set of fields,
+ // it will simply not work as expected.
+
+ String nameId = getProperty(props, PkgProps.ADDON_NAME_ID, ""); //$NON-NLS-1$
+ String nameDisp = getProperty(props, PkgProps.ADDON_NAME_DISPLAY, ""); //$NON-NLS-1$
+ String name = getProperty(props, PkgProps.ADDON_NAME, target.getName());
+
+ // The old <name> is equivalent to the new <name-display>
+ if (nameDisp.length() == 0) {
+ nameDisp = name;
+ }
+
+ // For a missing id, we simply use a sanitized version of the display name
+ if (nameId.length() == 0) {
+ nameId = sanitizeDisplayToNameId(name.length() > 0 ? name : nameDisp);
+ }
+
+ assert nameId.length() > 0;
+ assert nameDisp.length() > 0;
+
+ mNameId = nameId.trim();
+ mDisplayName = nameDisp.trim();
+
+ // --- vendor id/display ---
+ // Same processing for vendor id vs display
+
+ String vendorId = getProperty(props, PkgProps.ADDON_VENDOR_ID, ""); //$NON-NLS-1$
+ String vendorDisp = getProperty(props, PkgProps.ADDON_VENDOR_DISPLAY, ""); //$NON-NLS-1$
+ String vendor = getProperty(props, PkgProps.ADDON_VENDOR, target.getVendor());
+
+ // The old <vendor> is equivalent to the new <vendor-display>
+ if (vendorDisp.length() == 0) {
+ vendorDisp = vendor;
+ }
+
+ // For a missing id, we simply use a sanitized version of the display vendor
+ if (vendorId.length() == 0) {
+ vendorId = sanitizeDisplayToNameId(vendor.length() > 0 ? vendor : vendorDisp);
+ }
+
+ assert vendorId.length() > 0;
+ assert vendorDisp.length() > 0;
+
+ mVendorId = vendorId.trim();
+ mVendorDisplay = vendorDisp.trim();
+
+ // --- other attributes
+
mVersion = target.getVersion();
- mName = target.getName();
- mVendor = target.getVendor();
mLayoutlibVersion = new LayoutlibVersionMixin(props);
IOptionalLibrary[] optLibs = target.getOptionalLibraries();
@@ -184,14 +296,27 @@ public class AddonPackage extends Package
* Creates a broken addon which we know failed to load properly.
*
* @param archiveOsPath The absolute OS path of the addon folder.
- * @param props The properties parsed from the addon manifest (not the source.properties).
+ * @param sourceProps The properties parsed from the addon's source.properties. Can be null.
+ * @param addonProps The properties parsed from the addon manifest (NOT the source.properties).
* @param error The error indicating why this addon failed to be loaded.
*/
- static Package createBroken(String archiveOsPath, Map<String, String> props, String error) {
- String name = props.get(SdkManager.ADDON_NAME);
- String vendor = props.get(SdkManager.ADDON_VENDOR);
- String api = props.get(SdkManager.ADDON_API);
- String revision = props.get(SdkManager.ADDON_REVISION);
+ static Package createBroken(
+ String archiveOsPath,
+ Properties sourceProps,
+ Map<String, String> addonProps,
+ String error) {
+ String name = getProperty(sourceProps,
+ PkgProps.ADDON_NAME_DISPLAY,
+ getProperty(sourceProps,
+ PkgProps.ADDON_NAME,
+ addonProps.get(SdkManager.ADDON_NAME)));
+ String vendor = getProperty(sourceProps,
+ PkgProps.ADDON_VENDOR_DISPLAY,
+ getProperty(sourceProps,
+ PkgProps.ADDON_VENDOR,
+ addonProps.get(SdkManager.ADDON_VENDOR)));
+ String api = addonProps.get(SdkManager.ADDON_API);
+ String revision = addonProps.get(SdkManager.ADDON_REVISION);
String shortDesc = String.format("%1$s by %2$s, Android API %3$s, revision %4$s [*]",
name,
@@ -235,12 +360,10 @@ public class AddonPackage extends Package
mVersion.saveProperties(props);
mLayoutlibVersion.saveProperties(props);
- if (mName != null) {
- props.setProperty(PkgProps.ADDON_NAME, mName);
- }
- if (mVendor != null) {
- props.setProperty(PkgProps.ADDON_VENDOR, mVendor);
- }
+ props.setProperty(PkgProps.ADDON_NAME_ID, mNameId);
+ props.setProperty(PkgProps.ADDON_NAME_DISPLAY, mDisplayName);
+ props.setProperty(PkgProps.ADDON_VENDOR_ID, mVendorId);
+ props.setProperty(PkgProps.ADDON_VENDOR_DISPLAY, mVendorDisplay);
}
/**
@@ -274,14 +397,24 @@ public class AddonPackage extends Package
XmlParserUtils.getXmlString(libNode, SdkRepoConstants.NODE_DESCRIPTION));
}
- /** Returns the vendor, a string, for add-on packages. */
- public String getVendor() {
- return mVendor;
+ /** Returns the vendor id, a string, for add-on packages. */
+ public String getVendorId() {
+ return mVendorId;
+ }
+
+ /** Returns the vendor, a string for display purposes. */
+ public String getDisplayVendor() {
+ return mVendorDisplay;
+ }
+
+ /** Returns the name id, a string, for add-on packages or for libraries. */
+ public String getNameId() {
+ return mNameId;
}
- /** Returns the name, a string, for add-on packages or for libraries. */
- public String getName() {
- return mName;
+ /** Returns the name, a string for display purposes. */
+ public String getDisplayName() {
+ return mDisplayName;
}
/**
@@ -334,9 +467,8 @@ public class AddonPackage extends Package
*/
@Override
public String getListDescription() {
- return String.format("%1$s by %2$s%3$s",
- getName(),
- getVendor(),
+ return String.format("%1$s%2$s",
+ getDisplayName(),
isObsolete() ? " (Obsolete)" : "");
}
@@ -345,9 +477,8 @@ public class AddonPackage extends Package
*/
@Override
public String getShortDescription() {
- return String.format("%1$s by %2$s, Android API %3$s, revision %4$s%5$s",
- getName(),
- getVendor(),
+ return String.format("%1$s, Android API %2$s, revision %3$s%4$s",
+ getDisplayName(),
mVersion.getApiString(),
getRevision(),
isObsolete() ? " (Obsolete)" : "");
@@ -361,15 +492,16 @@ public class AddonPackage extends Package
*/
@Override
public String getLongDescription() {
- String s = getDescription();
- if (s == null || s.length() == 0) {
- s = getShortDescription();
- }
+ String s = String.format("%1$s, Android API %2$s, revision %3$s%4$s\nBy %5$s",
+ getDisplayName(),
+ mVersion.getApiString(),
+ getRevision(),
+ isObsolete() ? " (Obsolete)" : "", //$NON-NLS-2$
+ getDisplayVendor());
- if (s.indexOf("revision") == -1) {
- s += String.format("\nRevision %1$d%2$s",
- getRevision(),
- isObsolete() ? " (Obsolete)" : "");
+ String d = getDescription();
+ if (d != null && d.length() > 0) {
+ s += '\n' + d;
}
s += String.format("\nRequires SDK Platform Android API %1$s",
@@ -396,11 +528,17 @@ public class AddonPackage extends Package
// First find if this add-on is already installed. If so, reuse the same directory.
for (IAndroidTarget target : sdkManager.getTargets()) {
- if (!target.isPlatform() &&
- target.getVersion().equals(mVersion) &&
- target.getName().equals(getName()) &&
- target.getVendor().equals(getVendor())) {
- return new File(target.getLocation());
+ if (!target.isPlatform() && target.getVersion().equals(mVersion)) {
+ // Starting with addon-4.xsd, the addon source.properties differentiate
+ // between ids and display strings. However the addon target which relies
+ // on the manifest.ini does not so we need to cover both cases.
+ // TODO fix when we get rid of manifest.ini for addons
+ if ((target.getName().equals(getNameId()) &&
+ target.getVendor().equals(getVendorId())) ||
+ (target.getName().equals(getDisplayName()) &&
+ target.getVendor().equals(getDisplayVendor()))) {
+ return new File(target.getLocation());
+ }
}
}
@@ -421,21 +559,35 @@ public class AddonPackage extends Package
private String encodeAddonName() {
String name = String.format("addon-%s-%s-%s", //$NON-NLS-1$
- getName(), getVendor(), mVersion.getApiString());
+ getNameId(), getVendorId(), mVersion.getApiString());
name = name.toLowerCase(Locale.US);
name = name.replaceAll("[^a-z0-9_-]+", "_"); //$NON-NLS-1$ //$NON-NLS-2$
name = name.replaceAll("_+", "_"); //$NON-NLS-1$ //$NON-NLS-2$
return name;
}
+ /**
+ * Computes a sanitized name-id based on an addon name-display.
+ * This is used to provide compatibility with older addons that lacks the new fields.
+ *
+ * @param displayName A name-display field or a old-style name field.
+ * @return A non-null sanitized name-id that fits in the {@code [a-zA-Z0-9_-]+} pattern.
+ */
+ private String sanitizeDisplayToNameId(String displayName) {
+ String name = displayName.toLowerCase(Locale.US);
+ name = name.replaceAll("[^a-z0-9_-]+", "_"); //$NON-NLS-1$ //$NON-NLS-2$
+ name = name.replaceAll("_+", "_"); //$NON-NLS-1$ //$NON-NLS-2$
+ return name;
+ }
+
@Override
public boolean sameItemAs(Package pkg) {
if (pkg instanceof AddonPackage) {
AddonPackage newPkg = (AddonPackage)pkg;
// check they are the same add-on.
- return getName().equals(newPkg.getName()) &&
- getVendor().equals(newPkg.getVendor()) &&
+ return getNameId().equals(newPkg.getNameId()) &&
+ getVendorId().equals(newPkg.getVendorId()) &&
getVersion().equals(newPkg.getVersion());
}
@@ -448,8 +600,8 @@ public class AddonPackage extends Package
int result = super.hashCode();
result = prime * result + ((mLayoutlibVersion == null) ? 0 : mLayoutlibVersion.hashCode());
result = prime * result + Arrays.hashCode(mLibs);
- result = prime * result + ((mName == null) ? 0 : mName.hashCode());
- result = prime * result + ((mVendor == null) ? 0 : mVendor.hashCode());
+ result = prime * result + ((mDisplayName == null) ? 0 : mDisplayName.hashCode());
+ result = prime * result + ((mVendorDisplay == null) ? 0 : mVendorDisplay.hashCode());
result = prime * result + ((mVersion == null) ? 0 : mVersion.hashCode());
return result;
}
@@ -476,18 +628,18 @@ public class AddonPackage extends Package
if (!Arrays.equals(mLibs, other.mLibs)) {
return false;
}
- if (mName == null) {
- if (other.mName != null) {
+ if (mNameId == null) {
+ if (other.mNameId != null) {
return false;
}
- } else if (!mName.equals(other.mName)) {
+ } else if (!mNameId.equals(other.mNameId)) {
return false;
}
- if (mVendor == null) {
- if (other.mVendor != null) {
+ if (mVendorId == null) {
+ if (other.mVendorId != null) {
return false;
}
- } else if (!mVendor.equals(other.mVendor)) {
+ } else if (!mVendorId.equals(other.mVendorId)) {
return false;
}
if (mVersion == null) {
@@ -512,8 +664,8 @@ public class AddonPackage extends Package
int pos = s.indexOf("|r:"); //$NON-NLS-1$
assert pos > 0;
s = s.substring(0, pos) +
- "|ve:" + getVendor() + //$NON-NLS-1$
- "|na:" + getName() + //$NON-NLS-1$
+ "|vid:" + getVendorId() + //$NON-NLS-1$
+ "|nid:" + getNameId() + //$NON-NLS-1$
s.substring(pos);
return s;
}
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
index b7c416c..a242c26 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/ExtraPackage.java
@@ -122,14 +122,14 @@ public class ExtraPackage extends MinToolsPackage
// The vendor-display name can be empty, in which case we use the vendor-id.
vname = vid;
}
- mVendorDisplay = vname;
- mVendorId = vid;
+ mVendorDisplay = vname.trim();
+ mVendorId = vid.trim();
if (name.length() == 0) {
// If name is missing, use the <path> attribute as done in an addon-3 schema.
name = getPrettyName();
}
- mDisplayName = name;
+ mDisplayName = name.trim();
mMinApiLevel = XmlParserUtils.getXmlInt(
packageNode, RepoConstants.NODE_MIN_API_LEVEL, MIN_API_LEVEL_NOT_SPECIFIED);
@@ -219,15 +219,15 @@ public class ExtraPackage extends MinToolsPackage
// The path argument comes before whatever could be in the properties
mPath = path != null ? path : getProperty(props, PkgProps.EXTRA_PATH, path);
- String name = getProperty(props, PkgProps.EXTRA_NAME_DISPLAY, "");
- String vname = getProperty(props, PkgProps.EXTRA_VENDOR_DISPLAY, "");
+ String name = getProperty(props, PkgProps.EXTRA_NAME_DISPLAY, ""); //$NON-NLS-1$
+ String vname = getProperty(props, PkgProps.EXTRA_VENDOR_DISPLAY, ""); //$NON-NLS-1$
String vid = vendorId != null ? vendorId :
- getProperty(props, PkgProps.EXTRA_VENDOR_ID, "");
+ getProperty(props, PkgProps.EXTRA_VENDOR_ID, ""); //$NON-NLS-1$
if (vid.length() == 0) {
// If vid is missing, use the old <vendor> attribute.
// <vendor> did not exist prior to schema repo-v3 and tools r8.
- String vendor = getProperty(props, PkgProps.EXTRA_VENDOR, "");
+ String vendor = getProperty(props, PkgProps.EXTRA_VENDOR, ""); //$NON-NLS-1$
vid = sanitizeLegacyVendor(vendor);
if (vname.length() == 0) {
vname = vendor;
@@ -237,14 +237,14 @@ public class ExtraPackage extends MinToolsPackage
// The vendor-display name can be empty, in which case we use the vendor-id.
vname = vid;
}
- mVendorDisplay = vname;
- mVendorId = vid;
+ mVendorDisplay = vname.trim();
+ mVendorId = vid.trim();
if (name.length() == 0) {
// If name is missing, use the <path> attribute as done in an addon-3 schema.
name = getPrettyName();
}
- mDisplayName = name;
+ mDisplayName = name.trim();
mOldPaths = getProperty(props, PkgProps.EXTRA_OLD_PATHS, null);
@@ -508,7 +508,7 @@ public class ExtraPackage extends MinToolsPackage
String d = getDescription();
if (d != null && d.length() > 0) {
- s += "\n" + d; //$NON-NLS-1$
+ s += '\n' + d;
}
if (getMinToolsRevision() != MIN_TOOLS_REV_NOT_SPECIFIED) {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
index 661552b..13be219 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/LocalSdkParser.java
@@ -308,11 +308,16 @@ public class LocalSdkParser {
if (dir.isDirectory() && !visited.contains(dir)) {
Pair<Map<String, String>, String> infos =
SdkManager.parseAddonProperties(dir, sdkManager.getTargets(), log);
+ Properties sourceProps =
+ parseProperties(new File(dir, SdkConstants.FN_SOURCE_PROP));
- Map<String, String> props = infos.getFirst();
+ Map<String, String> addonProps = infos.getFirst();
String error = infos.getSecond();
try {
- Package pkg = AddonPackage.createBroken(dir.getAbsolutePath(), props, error);
+ Package pkg = AddonPackage.createBroken(dir.getAbsolutePath(),
+ sourceProps,
+ addonProps,
+ error);
packages.add(pkg);
visited.add(dir);
} catch (Exception e) {
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
index b09e2ee..a86171c 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/internal/repository/Package.java
@@ -142,8 +142,8 @@ public abstract class Package implements IDescription, Comparable<Package> {
mLicense = getProperty(props, PkgProps.PKG_LICENSE, license);
mDescription = getProperty(props, PkgProps.PKG_DESC, description);
mDescUrl = getProperty(props, PkgProps.PKG_DESC_URL, descUrl);
- mReleaseNote = getProperty(props, PkgProps.PKG_RELEASE_NOTE, "");
- mReleaseUrl = getProperty(props, PkgProps.PKG_RELEASE_URL, "");
+ mReleaseNote = getProperty(props, PkgProps.PKG_RELEASE_NOTE, ""); //$NON-NLS-1$
+ mReleaseUrl = getProperty(props, PkgProps.PKG_RELEASE_URL, ""); //$NON-NLS-1$
mObsolete = getProperty(props, PkgProps.PKG_OBSOLETE, null);
// If source is null and we can find a source URL in the properties, generate
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 4c7fadb..41b184e 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/SdkAddonConstants.java
@@ -26,8 +26,10 @@ import java.io.InputStream;
*/
public class SdkAddonConstants extends RepoConstants {
- /** The default name looked for by {@link SdkSource} when trying to load an
- * sdk-addon XML if the URL doesn't match an existing resource. */
+ /**
+ * The default name looked for by {@link SdkSource} when trying to load an
+ * sdk-addon XML if the URL doesn't match an existing resource.
+ */
public static final String URL_DEFAULT_FILENAME = "addon.xml"; //$NON-NLS-1$
/** The base of our sdk-addon XML namespace. */
@@ -40,8 +42,10 @@ public class SdkAddonConstants extends RepoConstants {
*/
public static final String NS_PATTERN = NS_BASE + "([1-9][0-9]*)"; //$NON-NLS-1$
- /** The latest version of the sdk-addon XML Schema.
- * Valid version numbers are between 1 and this number, included. */
+ /**
+ * The latest version of the sdk-addon XML Schema.
+ * Valid version numbers are between 1 and this number, included.
+ */
public static final int NS_LATEST_VERSION = 4;
/** The XML namespace of the latest sdk-addon XML. */
@@ -54,7 +58,7 @@ public class SdkAddonConstants extends RepoConstants {
public static final String NODE_ADD_ON = "add-on"; //$NON-NLS-1$
/** An extra package. */
- public static final String NODE_EXTRA = "extra"; //$NON-NLS-1$
+ public static final String NODE_EXTRA = "extra"; //$NON-NLS-1$
/**
* List of possible nodes in a repository XML. Used to populate options automatically
diff --git a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-4.xsd b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-4.xsd
index b8d95f2..9289e1c 100755
--- a/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-4.xsd
+++ b/sdkmanager/libs/sdklib/src/com/android/sdklib/repository/sdk-addon-4.xsd
@@ -68,22 +68,15 @@
<xsd:documentation>An SDK add-on package.</xsd:documentation>
</xsd:annotation>
<xsd:all>
- <!-- The name of the add-on. -->
- <xsd:element name="name" type="xsd:normalizedString" />
- <!-- The vendor of the add-on. -->
- <xsd:element name="vendor" type="xsd:normalizedString" />
-
- <!-- TODO The next CL will deal with addon properties.
- <!- - The internal name id of the add-on. Must be unique per vendor. - ->
+ <!-- The internal name id of the add-on. Must be unique per vendor. -->
<xsd:element name="name-id" type="sdk:idType" />
- <!- - The displayed name of the add-on. - ->
+ <!-- The displayed name of the add-on. -->
<xsd:element name="name-display" type="xsd:normalizedString" />
- <!- - The internal vendor id of the add-on. Must be unique amongst vendors. - ->
+ <!-- The internal vendor id of the add-on. Must be unique amongst vendors. -->
<xsd:element name="vendor-id" type="sdk:idType" />
- <!- - The displayed vendor name of the add-on. - ->
+ <!-- The displayed vendor name of the add-on. -->
<xsd:element name="vendor-display" type="xsd:normalizedString" />
- -->
<!-- The Android API Level for the add-on. An int > 0. -->
<xsd:element name="api-level" type="xsd:positiveInteger" />
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/MockAddonPackage.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/MockAddonPackage.java
index cdf7bcc..3953f79 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/MockAddonPackage.java
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/MockAddonPackage.java
@@ -23,8 +23,10 @@ import com.android.sdklib.ISystemImage.LocationType;
import com.android.sdklib.SdkConstants;
import com.android.sdklib.SystemImage;
import com.android.sdklib.io.FileOp;
+import com.android.sdklib.repository.PkgProps;
import java.util.Map;
+import java.util.Properties;
/**
* A mock {@link AddonPackage} for testing.
@@ -60,7 +62,21 @@ public class MockAddonPackage extends AddonPackage {
int revision) {
super(source,
new MockAddonTarget(name, basePlatform.getTarget(), revision),
- null /*props*/);
+ createProperties(name, basePlatform.getTarget()));
+ }
+
+ private static Properties createProperties(String name, IAndroidTarget baseTarget) {
+ String vendor = baseTarget.getVendor();
+ Properties props = new Properties();
+ props.setProperty(PkgProps.ADDON_NAME_ID, name);
+ props.setProperty(PkgProps.ADDON_NAME_DISPLAY,
+ String.format("The %1$s from %2$s", //$NON-NLS-1$
+ name, vendor));
+ props.setProperty(PkgProps.ADDON_VENDOR_ID,
+ String.format("vendor-id-%1$s", vendor)); //$NON-NLS-1$
+ props.setProperty(PkgProps.ADDON_VENDOR_DISPLAY,
+ String.format("The %1$s", vendor)); //$NON-NLS-1$
+ return props;
}
/**
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/PackageTest.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/PackageTest.java
index 717877b..5cf1c98 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/PackageTest.java
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/PackageTest.java
@@ -187,7 +187,7 @@ public class PackageTest extends TestCase {
"[Android SDK Tools, revision 7, " +
"SDK Platform Android android-1, API 1, revision 2, " +
"Intel x86 Atom System Image, Android API 1, revision 4, " +
- "addon by vendor 1, Android API 1, revision 3, " +
+ "addon, Android API 1, revision 3, " +
"Broken package for API 1, " +
"Vendor Path, revision 5]",
Arrays.toString(list.toArray()));
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkAddonSourceTest.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkAddonSourceTest.java
index 5ee62c0..11626e6 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkAddonSourceTest.java
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkAddonSourceTest.java
@@ -171,9 +171,9 @@ public class SdkAddonSourceTest extends TestCase {
// Get the packages
assertTrue(mSource._parsePackages(doc, uri, monitor));
- assertEquals("Found My First add-on by John Doe, Android API 1, revision 1\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ assertEquals("Found My First add-on, Android API 1, revision 1\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found G USB Driver, revision 43 (Obsolete)\n" +
"Found Android Vendor Extra API Dep, revision 2 (Obsolete)\n" +
"Found Unknown Extra, revision 2 (Obsolete)\n",
@@ -247,9 +247,9 @@ public class SdkAddonSourceTest extends TestCase {
// Get the packages
assertTrue(mSource._parsePackages(doc, uri, monitor));
- assertEquals("Found My First add-on by John Doe, Android API 1, revision 1\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ assertEquals("Found My First add-on, Android API 1, revision 1\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found G USB Driver, revision 43 (Obsolete)\n" +
"Found Android Vendor Extra API Dep, revision 2 (Obsolete)\n" +
"Found Unknown Extra, revision 2 (Obsolete)\n",
@@ -341,9 +341,9 @@ public class SdkAddonSourceTest extends TestCase {
// Get the packages
assertTrue(mSource._parsePackages(doc, uri, monitor));
- assertEquals("Found My First add-on by John Doe, Android API 1, revision 1\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ assertEquals("Found My First add-on, Android API 1, revision 1\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found G USB Driver, revision 43 (Obsolete)\n" +
"Found Android Vendor Extra API Dep, revision 2 (Obsolete)\n" +
"Found Unknown Extra, revision 2 (Obsolete)\n",
@@ -450,9 +450,9 @@ public class SdkAddonSourceTest extends TestCase {
// Get the packages
assertTrue(mSource._parsePackages(doc, uri, monitor));
- assertEquals("Found My First add-on by John Doe, Android API 1, revision 1\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ assertEquals("Found My First add-on, Android API 1, revision 1\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found Random name, not an id!, revision 43 (Obsolete)\n" +
"Found Yet another extra, by Android, revision 2\n" +
"Found . -..- - .-. .-, revision 2 (Obsolete)\n",
@@ -472,6 +472,29 @@ public class SdkAddonSourceTest extends TestCase {
assertTrue(p.getArchives().length >= 1);
}
+ // Check the addon packages: vendor/name id vs display
+ ArrayList<String> addonNames = new ArrayList<String>();
+ ArrayList<String> addonVendors = new ArrayList<String>();
+ for (Package p : pkgs) {
+ if (p instanceof AddonPackage) {
+ AddonPackage ap = (AddonPackage) p;
+ addonNames.add(ap.getNameId() + "/" + ap.getDisplayName());
+ addonVendors.add(ap.getVendorId() + "/" + ap.getDisplayVendor());
+ }
+ }
+ // Addons are sorted by addon/vendor id and thus their order differs from the
+ // XML or the parsed package list.
+ assertEquals(
+ "[no_libs/This add-on has no libraries, " +
+ "My_Second_add-on/My Second add-on, " +
+ "My_First_add-on/My First add-on]",
+ Arrays.toString(addonNames.toArray()));
+ assertEquals(
+ "[Joe_Bar/Joe Bar, " +
+ "John_Deer/John Deer, " +
+ "John_Doe/John Doe]",
+ Arrays.toString(addonVendors.toArray()));
+
// Check the layoutlib of the platform packages.
ArrayList<Pair<Integer, Integer>> layoutlibVers = new ArrayList<Pair<Integer,Integer>>();
for (Package p : pkgs) {
@@ -487,7 +510,6 @@ public class SdkAddonSourceTest extends TestCase {
// Check the extra packages: path, vendor, install folder, old-paths
-
final String osSdkPath = "SDK";
final SdkManager sdkManager = new MockEmptySdkManager(osSdkPath);
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkRepoSourceTest.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkRepoSourceTest.java
index 3d78949..77e9312 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkRepoSourceTest.java
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/internal/repository/SdkRepoSourceTest.java
@@ -225,14 +225,14 @@ public class SdkRepoSourceTest extends TestCase {
assertEquals("Found SDK Platform Android 1.0, API 1, revision 3\n" +
"Found Documentation for Android SDK, API 1, revision 1\n" +
- "Found My First add-on by John Doe, Android API 1, revision 1\n" +
+ "Found My First add-on, Android API 1, revision 1\n" +
"Found SDK Platform Android 1.1, API 2, revision 12\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
"Found SDK Platform Android Pastry Preview, revision 3\n" +
"Found Android SDK Tools, revision 1\n" +
"Found Documentation for Android SDK, API 2, revision 42\n" +
"Found Android SDK Tools, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found Usb Driver, revision 43\n",
monitor.getCapturedVerboseLog());
assertEquals("", monitor.getCapturedLog());
@@ -303,14 +303,14 @@ public class SdkRepoSourceTest extends TestCase {
assertEquals("Found SDK Platform Android 1.0, API 1, revision 3\n" +
"Found Documentation for Android SDK, API 1, revision 1\n" +
- "Found My First add-on by John Doe, Android API 1, revision 1\n" +
+ "Found My First add-on, Android API 1, revision 1\n" +
"Found SDK Platform Android 1.1, API 2, revision 12\n" +
- "Found My Second add-on by John Deer, Android API 2, revision 42\n" +
+ "Found My Second add-on, Android API 2, revision 42\n" +
"Found SDK Platform Android Pastry Preview, revision 3\n" +
"Found Android SDK Tools, revision 1\n" +
"Found Documentation for Android SDK, API 2, revision 42\n" +
"Found Android SDK Tools, revision 42\n" +
- "Found This add-on has no libraries by Joe Bar, Android API 4, revision 3\n" +
+ "Found This add-on has no libraries, Android API 4, revision 3\n" +
"Found Usb Driver, revision 43 (Obsolete)\n" +
"Found Extra API Dep, revision 2 (Obsolete)\n" +
"Found Samples for SDK API 14, revision 24 (Obsolete)\n",
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/repository/ValidateAddonXmlTest.java b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/repository/ValidateAddonXmlTest.java
index cf7dfd4..d88d566 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/repository/ValidateAddonXmlTest.java
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/repository/ValidateAddonXmlTest.java
@@ -160,7 +160,9 @@ public class ValidateAddonXmlTest extends TestCase {
OPEN_TAG_ADDON +
"<r:license id=\"lic1\"> some license </r:license> " +
"<r:add-on> <r:uses-license ref=\"lic1\" /> <r:revision>1</r:revision> " +
- "<r:name>AddonName</r:name> <r:vendor>AddonVendor</r:vendor> <r:api-level>42</r:api-level> " +
+ "<r:name-id>AddonName</r:name-id> <r:name-display>The Addon Name</r:name-display> " +
+ "<r:vendor-id>AddonVendor</r:vendor-id> <r:vendor-display>The Addon Vendor</r:vendor-display> " +
+ "<r:api-level>42</r:api-level> " +
"<r:codename>Addons do not support codenames</r:codenames> " +
"<r:libs><r:lib><r:name>com.example.LibName</r:name></r:lib></r:libs> " +
"<r:archives> <r:archive os=\"any\"> <r:size>1</r:size> <r:checksum>2822ae37115ebf13412bbef91339ee0d9454525e</r:checksum> " +
diff --git a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/testdata/addon_sample_4.xml b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/testdata/addon_sample_4.xml
index 59ca9a1..6fba439 100755
--- a/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/testdata/addon_sample_4.xml
+++ b/sdkmanager/libs/sdklib/tests/src/com/android/sdklib/testdata/addon_sample_4.xml
@@ -32,15 +32,11 @@
There can be 0 or more of each, in any order. -->
<sdk:add-on>
- <sdk:name>My First add-on</sdk:name>
- <sdk:vendor>John Doe</sdk:vendor>
- <!-- TODO The next CL will deal with addon properties.
<sdk:name-id>My_First_add-on</sdk:name-id>
<sdk:name-display>My First add-on</sdk:name-display>
<sdk:vendor-id>John_Doe</sdk:vendor-id>
<sdk:vendor-display>John Doe</sdk:vendor-display>
- -->
<sdk:api-level>1</sdk:api-level>
<sdk:revision>1</sdk:revision>
@@ -72,15 +68,11 @@
</sdk:add-on>
<sdk:add-on>
- <sdk:name>My Second add-on</sdk:name>
- <sdk:vendor>John Deer</sdk:vendor>
- <!-- TODO The next CL will deal with addon properties.
<sdk:name-id>My_Second_add-on</sdk:name-id>
<sdk:name-display>My Second add-on</sdk:name-display>
<sdk:vendor-id>John_Deer</sdk:vendor-id>
<sdk:vendor-display>John Deer</sdk:vendor-display>
- -->
<sdk:api-level>2</sdk:api-level>
<sdk:revision>42</sdk:revision>
@@ -110,15 +102,11 @@
</sdk:add-on>
<sdk:add-on>
- <sdk:name>This add-on has no libraries</sdk:name>
- <sdk:vendor>Joe Bar</sdk:vendor>
- <!-- TODO The next CL will deal with addon properties.
<sdk:name-id>no_libs</sdk:name-id>
<sdk:name-display>This add-on has no libraries</sdk:name-display>
<sdk:vendor-id>Joe_Bar</sdk:vendor-id>
<sdk:vendor-display>Joe Bar</sdk:vendor-display>
- -->
<sdk:uses-license ref="license2" />
<sdk:api-level>4</sdk:api-level>
diff --git a/sdkmanager/libs/sdkuilib/tests/com/android/sdkuilib/internal/repository/sdkman2/PackagesDiffLogicTest.java b/sdkmanager/libs/sdkuilib/tests/com/android/sdkuilib/internal/repository/sdkman2/PackagesDiffLogicTest.java
index 85f1ab5..cf4b232 100755
--- a/sdkmanager/libs/sdkuilib/tests/com/android/sdkuilib/internal/repository/sdkman2/PackagesDiffLogicTest.java
+++ b/sdkmanager/libs/sdkuilib/tests/com/android/sdkuilib/internal/repository/sdkman2/PackagesDiffLogicTest.java
@@ -423,12 +423,12 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:SDK Platform Android android-3, API 3, revision 6>\n" +
"PkgCategoryApi <API=API 2, label=Android android-2 (API 2), #items=3>\n" +
"-- <NEW, pkg:SDK Platform Android android-2, API 2, revision 4>\n" +
- "-- <NEW, pkg:addon B by vendor 2, Android API 2, revision 9>\n" +
- "-- <NEW, pkg:addon C by vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon B from vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon C from vendor 2, Android API 2, revision 9>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=3>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 5, updated by:addon A by vendor 1, Android API 1, revision 6>\n" +
- "-- <INSTALLED, pkg:addon D by vendor 1, Android API 1, revision 10, updated by:addon D by vendor 1, Android API 1, revision 13>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 5, updated by:The addon A from vendor 1, Android API 1, revision 6>\n" +
+ "-- <INSTALLED, pkg:The addon D from vendor 1, Android API 1, revision 10, updated by:The addon D from vendor 1, Android API 1, revision 13>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=2>\n" +
"-- <INSTALLED, pkg:Android USB Driver, revision 4, updated by:Android USB Driver, revision 5>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n",
@@ -479,12 +479,12 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:SDK Platform Android android-3, API 3, revision 6>\n" +
"PkgCategoryApi <API=API 2, label=Android android-2 (API 2), #items=3>\n" +
"-- <NEW, pkg:SDK Platform Android android-2, API 2, revision 4>\n" +
- "-- <NEW, pkg:addon B by vendor 2, Android API 2, revision 9>\n" +
- "-- <NEW, pkg:addon C by vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon B from vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon C from vendor 2, Android API 2, revision 9>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=3>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 5, updated by:addon A by vendor 1, Android API 1, revision 6>\n" +
- "-- <INSTALLED, pkg:addon D by vendor 1, Android API 1, revision 10, updated by:addon D by vendor 1, Android API 1, revision 13>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 5, updated by:The addon A from vendor 1, Android API 1, revision 6>\n" +
+ "-- <INSTALLED, pkg:The addon D from vendor 1, Android API 1, revision 10, updated by:The addon D from vendor 1, Android API 1, revision 13>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=2>\n" +
"-- <INSTALLED, pkg:Android USB Driver, revision 4, updated by:Android USB Driver, revision 5>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n",
@@ -769,10 +769,10 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android USB Driver, revision 4, updated by:Android USB Driver, revision 5>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=4>\n" +
- "-- <NEW, pkg:addon B by vendor 2, Android API 2, revision 9>\n" +
- "-- <NEW, pkg:addon C by vendor 2, Android API 2, revision 9>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 5, updated by:addon A by vendor 1, Android API 1, revision 6>\n" +
- "-- <INSTALLED, pkg:addon D by vendor 1, Android API 1, revision 10, updated by:addon D by vendor 1, Android API 1, revision 13>\n",
+ "-- <NEW, pkg:The addon B from vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon C from vendor 2, Android API 2, revision 9>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 5, updated by:The addon A from vendor 1, Android API 1, revision 6>\n" +
+ "-- <INSTALLED, pkg:The addon D from vendor 1, Android API 1, revision 10, updated by:The addon D from vendor 1, Android API 1, revision 13>\n",
getTree(m, false /*displaySortByApi*/));
// Reloading the same thing should have no impact except for the update methods
@@ -823,10 +823,10 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android USB Driver, revision 4, updated by:Android USB Driver, revision 5>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=4>\n" +
- "-- <NEW, pkg:addon B by vendor 2, Android API 2, revision 9>\n" +
- "-- <NEW, pkg:addon C by vendor 2, Android API 2, revision 9>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 5, updated by:addon A by vendor 1, Android API 1, revision 6>\n" +
- "-- <INSTALLED, pkg:addon D by vendor 1, Android API 1, revision 10, updated by:addon D by vendor 1, Android API 1, revision 13>\n",
+ "-- <NEW, pkg:The addon B from vendor 2, Android API 2, revision 9>\n" +
+ "-- <NEW, pkg:The addon C from vendor 2, Android API 2, revision 9>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 5, updated by:The addon A from vendor 1, Android API 1, revision 6>\n" +
+ "-- <INSTALLED, pkg:The addon D from vendor 1, Android API 1, revision 10, updated by:The addon D from vendor 1, Android API 1, revision 13>\n",
getTree(m, false /*displaySortByApi*/));
}
@@ -970,10 +970,10 @@ public class PackagesDiffLogicTest extends TestCase {
"-- < * NEW, pkg:SDK Platform Android android-2, API 2, revision 4>\n" +
"-- < * NEW, pkg:ARM EABI System Image, Android API 2, revision 1>\n" +
"-- < * NEW, pkg:Intel x86 Atom System Image, Android API 2, revision 1>\n" +
- "-- < * NEW, pkg:addon B by vendor 2, Android API 2, revision 7>\n" +
+ "-- < * NEW, pkg:The addon B from vendor 2, Android API 2, revision 7>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=2>\n" +
"-- <NEW, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" +
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=2>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n" +
"-- <NEW, pkg:Google USB Driver, revision 5>\n",
@@ -988,8 +988,8 @@ public class PackagesDiffLogicTest extends TestCase {
"-- < * NEW, pkg:Intel x86 Atom System Image, Android API 2, revision 1>\n" +
"-- <NEW, pkg:Google USB Driver, revision 5>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=3>\n" +
- "-- < * NEW, pkg:addon B by vendor 2, Android API 2, revision 7>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" +
+ "-- < * NEW, pkg:The addon B from vendor 2, Android API 2, revision 7>\n" +
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" +
"-- <NEW, pkg:Carrier Custom Rom, revision 1>\n",
getTree(m, false /*displaySortByApi*/));
@@ -1213,8 +1213,8 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android SDK Platform-tools, revision 3>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=3>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" + // from src2+3+4
- "-- <NEW, pkg:addon B by vendor 1, Android API 1, revision 7>\n" + // from src3+4
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" + // from src2+3+4
+ "-- <NEW, pkg:The addon B from vendor 1, Android API 1, revision 7>\n" + // from src3+4
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=0>\n",
getTree(m, true /*displaySortByApi*/));
// When sorting by source, the src4 packages are not listed at all since
@@ -1226,9 +1226,9 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android SDK Platform-tools, revision 3>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
"PkgCategorySource <source=repo2 (example.com), #items=1>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" + // from src2+3+4
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" + // from src2+3+4
"PkgCategorySource <source=repo3 (example.com), #items=1>\n" +
- "-- <NEW, pkg:addon B by vendor 1, Android API 1, revision 7>\n", // from src3+4
+ "-- <NEW, pkg:The addon B from vendor 1, Android API 1, revision 7>\n", // from src3+4
getTree(m, false /*displaySortByApi*/));
}
@@ -1313,14 +1313,14 @@ public class PackagesDiffLogicTest extends TestCase {
"PkgCategoryApi <API=TOOLS, label=Tools, #items=0>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=2>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 4>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 4>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=0>\n",
getTree(m, true /*displaySortByApi*/));
assertEquals(
"PkgCategorySource <source=repo1 (1.example.com), #items=1>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=1>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 4>\n",
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 4>\n",
getTree(m, false /*displaySortByApi*/));
// Now user deletes the platform on disk and reload.
@@ -1340,7 +1340,7 @@ public class PackagesDiffLogicTest extends TestCase {
"PkgCategoryApi <API=TOOLS, label=Tools, #items=0>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=2>\n" +
"-- <NEW, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 4>\n" +
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 4>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=1>\n" +
"-- <INSTALLED, pkg:Broken package for API 1>\n",
getTree(m, true /*displaySortByApi*/));
@@ -1348,7 +1348,7 @@ public class PackagesDiffLogicTest extends TestCase {
"PkgCategorySource <source=repo1 (1.example.com), #items=1>\n" +
"-- <NEW, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=1>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 4>\n" +
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 4>\n" +
"PkgCategorySource <source=Local Packages (no.source), #items=1>\n" +
"-- <INSTALLED, pkg:Broken package for API 1>\n",
getTree(m, false /*displaySortByApi*/));
@@ -1370,14 +1370,14 @@ public class PackagesDiffLogicTest extends TestCase {
"PkgCategoryApi <API=TOOLS, label=Tools, #items=0>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=2>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 4>\n" +
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 4>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=0>\n",
getTree(m, true /*displaySortByApi*/));
assertEquals(
"PkgCategorySource <source=repo1 (1.example.com), #items=1>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=1>\n" +
- "-- <INSTALLED, pkg:addon A by vendor 1, Android API 1, revision 4>\n",
+ "-- <INSTALLED, pkg:The addon A from vendor 1, Android API 1, revision 4>\n",
getTree(m, false /*displaySortByApi*/));
}
@@ -1411,8 +1411,8 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android SDK Platform-tools, revision 3, updated by:Android SDK Platform-tools, revision 4>\n" +
"PkgCategoryApi <API=API 1, label=Android android-1 (API 1), #items=3>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" +
- "-- <NEW, pkg:addon B by vendor 1, Android API 1, revision 6>\n" +
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" +
+ "-- <NEW, pkg:The addon B from vendor 1, Android API 1, revision 6>\n" +
"PkgCategoryApi <API=EXTRAS, label=Extras, #items=0>\n",
getTree(m, true /*displaySortByApi*/));
assertEquals(
@@ -1422,8 +1422,8 @@ public class PackagesDiffLogicTest extends TestCase {
"-- <INSTALLED, pkg:Android SDK Platform-tools, revision 3, updated by:Android SDK Platform-tools, revision 4>\n" +
"-- <INSTALLED, pkg:SDK Platform Android android-1, API 1, revision 2>\n" +
"PkgCategorySource <source=repo2 (2.example.com), #items=2>\n" +
- "-- <NEW, pkg:addon A by vendor 1, Android API 1, revision 5>\n" +
- "-- <NEW, pkg:addon B by vendor 1, Android API 1, revision 6>\n",
+ "-- <NEW, pkg:The addon A from vendor 1, Android API 1, revision 5>\n" +
+ "-- <NEW, pkg:The addon B from vendor 1, Android API 1, revision 6>\n",
getTree(m, false /*displaySortByApi*/));
}
// ----