aboutsummaryrefslogtreecommitdiffstats
path: root/sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java
diff options
context:
space:
mode:
Diffstat (limited to 'sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java')
-rw-r--r--sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java462
1 files changed, 0 insertions, 462 deletions
diff --git a/sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java b/sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java
deleted file mode 100644
index 12d4a49..0000000
--- a/sdkmanager/libs/sdklib/src/main/java/com/android/sdklib/AddOnTarget.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.sdklib;
-
-import com.android.SdkConstants;
-
-import java.io.File;
-import java.io.FileFilter;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-
-/**
- * Represents an add-on target in the SDK.
- * An add-on extends a standard {@link PlatformTarget}.
- */
-final class AddOnTarget implements IAndroidTarget {
- /**
- * String to compute hash for add-on targets.
- * Format is vendor:name:apiVersion
- * */
- private final static String ADD_ON_FORMAT = "%s:%s:%s"; //$NON-NLS-1$
-
- private final static class OptionalLibrary implements IOptionalLibrary {
- private final String mJarName;
- private final String mJarPath;
- private final String mName;
- private final String mDescription;
-
- OptionalLibrary(String jarName, String jarPath, String name, String description) {
- mJarName = jarName;
- mJarPath = jarPath;
- mName = name;
- mDescription = description;
- }
-
- @Override
- public String getJarName() {
- return mJarName;
- }
-
- @Override
- public String getJarPath() {
- return mJarPath;
- }
-
- @Override
- public String getName() {
- return mName;
- }
-
- @Override
- public String getDescription() {
- return mDescription;
- }
- }
-
- private final String mLocation;
- private final PlatformTarget mBasePlatform;
- private final String mName;
- private final ISystemImage[] mSystemImages;
- private final String mVendor;
- private final int mRevision;
- private final String mDescription;
- private final boolean mHasRenderingLibrary;
- private final boolean mHasRenderingResources;
-
- private String[] mSkins;
- private String mDefaultSkin;
- private IOptionalLibrary[] mLibraries;
- private int mVendorId = NO_USB_ID;
-
- /**
- * Creates a new add-on
- * @param location the OS path location of the add-on
- * @param name the name of the add-on
- * @param vendor the vendor name of the add-on
- * @param revision the revision of the add-on
- * @param description the add-on description
- * @param systemImages list of supported system images. Can be null or empty.
- * @param libMap A map containing the optional libraries. The map key is the fully-qualified
- * library name. The value is a 2 string array with the .jar filename, and the description.
- * @param hasRenderingLibrary whether the addon has a custom layoutlib.jar
- * @param hasRenderingResources whether the add has custom framework resources.
- * @param basePlatform the platform the add-on is extending.
- */
- AddOnTarget(
- String location,
- String name,
- String vendor,
- int revision,
- String description,
- ISystemImage[] systemImages,
- Map<String, String[]> libMap,
- boolean hasRenderingLibrary,
- boolean hasRenderingResources,
- PlatformTarget basePlatform) {
- if (location.endsWith(File.separator) == false) {
- location = location + File.separator;
- }
-
- mLocation = location;
- mName = name;
- mVendor = vendor;
- mRevision = revision;
- mDescription = description;
- mHasRenderingLibrary = hasRenderingLibrary;
- mHasRenderingResources = hasRenderingResources;
- mBasePlatform = basePlatform;
-
- // If the add-on does not have any system-image of its own, the list here
- // is empty and it's up to the callers to query the parent platform.
- mSystemImages = systemImages == null ? new ISystemImage[0] : systemImages;
- Arrays.sort(mSystemImages);
-
- // handle the optional libraries.
- if (libMap != null) {
- mLibraries = new IOptionalLibrary[libMap.size()];
- int index = 0;
- for (Entry<String, String[]> entry : libMap.entrySet()) {
- String jarFile = entry.getValue()[0];
- String desc = entry.getValue()[1];
- mLibraries[index++] = new OptionalLibrary(jarFile,
- mLocation + SdkConstants.OS_ADDON_LIBS_FOLDER + jarFile,
- entry.getKey(), desc);
- }
- }
- }
-
- @Override
- public String getLocation() {
- return mLocation;
- }
-
- @Override
- public String getName() {
- return mName;
- }
-
- @Override
- public ISystemImage getSystemImage(String abiType) {
- for (ISystemImage sysImg : mSystemImages) {
- if (sysImg.getAbiType().equals(abiType)) {
- return sysImg;
- }
- }
- return null;
- }
-
- @Override
- public ISystemImage[] getSystemImages() {
- return mSystemImages;
- }
-
- @Override
- public String getVendor() {
- return mVendor;
- }
-
- @Override
- public String getFullName() {
- return String.format("%1$s (%2$s)", mName, mVendor);
- }
-
- @Override
- public String getClasspathName() {
- return String.format("%1$s [%2$s]", mName, mBasePlatform.getClasspathName());
- }
-
- @Override
- public String getShortClasspathName() {
- return String.format("%1$s [%2$s]", mName, mBasePlatform.getVersionName());
- }
-
- @Override
- public String getDescription() {
- return mDescription;
- }
-
- @Override
- public AndroidVersion getVersion() {
- // this is always defined by the base platform
- return mBasePlatform.getVersion();
- }
-
- @Override
- public String getVersionName() {
- return mBasePlatform.getVersionName();
- }
-
- @Override
- public int getRevision() {
- return mRevision;
- }
-
- @Override
- public boolean isPlatform() {
- return false;
- }
-
- @Override
- public IAndroidTarget getParent() {
- return mBasePlatform;
- }
-
- @Override
- public String getPath(int pathId) {
- switch (pathId) {
- case SKINS:
- return mLocation + SdkConstants.OS_SKINS_FOLDER;
- case DOCS:
- return mLocation + SdkConstants.FD_DOCS + File.separator
- + SdkConstants.FD_DOCS_REFERENCE;
-
- case LAYOUT_LIB:
- if (mHasRenderingLibrary) {
- return mLocation + SdkConstants.FD_DATA + File.separator
- + SdkConstants.FN_LAYOUTLIB_JAR;
- }
- return mBasePlatform.getPath(pathId);
-
- case RESOURCES:
- if (mHasRenderingResources) {
- return mLocation + SdkConstants.FD_DATA + File.separator
- + SdkConstants.FD_RES;
- }
- return mBasePlatform.getPath(pathId);
-
- case FONTS:
- if (mHasRenderingResources) {
- return mLocation + SdkConstants.FD_DATA + File.separator
- + SdkConstants.FD_FONTS;
- }
- return mBasePlatform.getPath(pathId);
-
- case SAMPLES:
- // only return the add-on samples folder if there is actually a sample (or more)
- File sampleLoc = new File(mLocation, SdkConstants.FD_SAMPLES);
- if (sampleLoc.isDirectory()) {
- File[] files = sampleLoc.listFiles(new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- return pathname.isDirectory();
- }
-
- });
- if (files != null && files.length > 0) {
- return sampleLoc.getAbsolutePath();
- }
- }
- //$FALL-THROUGH$
- default :
- return mBasePlatform.getPath(pathId);
- }
- }
-
- @Override
- public boolean hasRenderingLibrary() {
- return mHasRenderingLibrary || mHasRenderingResources;
- }
-
- @Override
- public String[] getSkins() {
- return mSkins;
- }
-
- @Override
- public String getDefaultSkin() {
- return mDefaultSkin;
- }
-
- @Override
- public IOptionalLibrary[] getOptionalLibraries() {
- return mLibraries;
- }
-
- /**
- * Returns the list of libraries of the underlying platform.
- *
- * {@inheritDoc}
- */
- @Override
- public String[] getPlatformLibraries() {
- return mBasePlatform.getPlatformLibraries();
- }
-
- @Override
- public String getProperty(String name) {
- return mBasePlatform.getProperty(name);
- }
-
- @Override
- public Integer getProperty(String name, Integer defaultValue) {
- return mBasePlatform.getProperty(name, defaultValue);
- }
-
- @Override
- public Boolean getProperty(String name, Boolean defaultValue) {
- return mBasePlatform.getProperty(name, defaultValue);
- }
-
- @Override
- public Map<String, String> getProperties() {
- return mBasePlatform.getProperties();
- }
-
- @Override
- public int getUsbVendorId() {
- return mVendorId;
- }
-
- @Override
- public boolean canRunOn(IAndroidTarget target) {
- // basic test
- if (target == this) {
- return true;
- }
-
- /*
- * The method javadoc indicates:
- * Returns whether the given target is compatible with the receiver.
- * <p/>A target is considered compatible if applications developed for the receiver can
- * run on the given target.
- */
-
- // The receiver is an add-on. There are 2 big use cases: The add-on has libraries
- // or the add-on doesn't (in which case we consider it a platform).
- if (mLibraries == null || mLibraries.length == 0) {
- return mBasePlatform.canRunOn(target);
- } else {
- // the only targets that can run the receiver are the same add-on in the same or later
- // versions.
- // first check: vendor/name
- if (mVendor.equals(target.getVendor()) == false ||
- mName.equals(target.getName()) == false) {
- return false;
- }
-
- // now check the version. At this point since we checked the add-on part,
- // we can revert to the basic check on version/codename which are done by the
- // base platform already.
- return mBasePlatform.canRunOn(target);
- }
-
- }
-
- @Override
- public String hashString() {
- return String.format(ADD_ON_FORMAT, mVendor, mName,
- mBasePlatform.getVersion().getApiString());
- }
-
- @Override
- public int hashCode() {
- return hashString().hashCode();
- }
-
- @Override
- public boolean equals(Object obj) {
- if (obj instanceof AddOnTarget) {
- AddOnTarget addon = (AddOnTarget)obj;
-
- return mVendor.equals(addon.mVendor) && mName.equals(addon.mName) &&
- mBasePlatform.getVersion().equals(addon.mBasePlatform.getVersion());
- }
-
- return false;
- }
-
- /*
- * Order by API level (preview/n count as between n and n+1).
- * At the same API level, order as: Platform first, then add-on ordered by vendor and then name
- * (non-Javadoc)
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
- @Override
- public int compareTo(IAndroidTarget target) {
- // quick check.
- if (this == target) {
- return 0;
- }
-
- int versionDiff = getVersion().compareTo(target.getVersion());
-
- // only if the version are the same do we care about platform/add-ons.
- if (versionDiff == 0) {
- // platforms go before add-ons.
- if (target.isPlatform()) {
- return +1;
- } else {
- AddOnTarget targetAddOn = (AddOnTarget)target;
-
- // both are add-ons of the same version. Compare per vendor then by name
- int vendorDiff = mVendor.compareTo(targetAddOn.mVendor);
- if (vendorDiff == 0) {
- return mName.compareTo(targetAddOn.mName);
- } else {
- return vendorDiff;
- }
- }
-
- }
-
- return versionDiff;
- }
-
- /**
- * Returns a string representation suitable for debugging.
- * The representation is not intended for display to the user.
- *
- * The representation is also purposely compact. It does not describe _all_ the properties
- * of the target, only a few key ones.
- *
- * @see #getDescription()
- */
- @Override
- public String toString() {
- return String.format("AddonTarget %1$s rev %2$d (based on %3$s)", //$NON-NLS-1$
- getVersion(),
- getRevision(),
- getParent().toString());
- }
-
- // ---- local methods.
-
- void setSkins(String[] skins, String defaultSkin) {
- mDefaultSkin = defaultSkin;
-
- // we mix the add-on and base platform skins
- HashSet<String> skinSet = new HashSet<String>();
- skinSet.addAll(Arrays.asList(skins));
- skinSet.addAll(Arrays.asList(mBasePlatform.getSkins()));
-
- mSkins = skinSet.toArray(new String[skinSet.size()]);
- }
-
- /**
- * Sets the USB vendor id in the add-on.
- */
- void setUsbVendorId(int vendorId) {
- if (vendorId == 0) {
- throw new IllegalArgumentException( "VendorId must be > 0");
- }
-
- mVendorId = vendorId;
- }
-}