From 382d28e5226a2f9eec59fc96ff75c0f90ff7ee6c Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Fri, 3 Feb 2012 19:24:26 +0400 Subject: [PATCH] remove obsolete code: merge AndroidSdk and AndroidSdkImpl classes --- .../jetbrains/android/facet/AndroidFacet.java | 4 +- .../newProject/AndroidModuleWizardStep.java | 26 +- .../run/AndroidRunConfigurationBase.java | 27 +- .../android/run/AndroidRunningState.java | 30 +- .../org/jetbrains/android/sdk/AndroidSdk.java | 296 +++++++++++++++-- .../jetbrains/android/sdk/AndroidSdkImpl.java | 308 ------------------ 6 files changed, 306 insertions(+), 385 deletions(-) delete mode 100644 plugins/android/src/org/jetbrains/android/sdk/AndroidSdkImpl.java diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java index 3cc952f36ebc..6e918c914c17 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java @@ -324,8 +324,8 @@ public class AndroidFacet extends Facet { AndroidPlatform platform = getConfiguration().getAndroidPlatform(); AndroidSdk sdk = platform != null ? platform.getSdk() : null; Project project = getModule().getProject(); - if (sdk instanceof AndroidSdkImpl) { - SdkManager sdkManager = ((AndroidSdkImpl)sdk).getSdkManager(); + if (sdk != null) { + SdkManager sdkManager = sdk.getSdkManager(); myAvdManager = new AvdManager(sdkManager, AndroidUtils.getSdkLog(project)); } else { diff --git a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java index 47942f407f1e..b4b88f75be4a 100644 --- a/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java +++ b/plugins/android/src/org/jetbrains/android/newProject/AndroidModuleWizardStep.java @@ -391,22 +391,20 @@ public class AndroidModuleWizardStep extends ModuleWizardStep { @NotNull private static String[] getAvds(@NotNull AndroidPlatform androidPlatform) { final AndroidSdk sdkObject = androidPlatform.getSdk(); - if (sdkObject instanceof AndroidSdkImpl) { - final SdkManager sdkManager = ((AndroidSdkImpl)sdkObject).getSdkManager(); - try { - final AvdManager avdManager = new AvdManager(sdkManager, new MessageBuildingSdkLog()); - final AvdInfo[] validAvds = avdManager.getValidAvds(); + final SdkManager sdkManager = sdkObject.getSdkManager(); + try { + final AvdManager avdManager = new AvdManager(sdkManager, new MessageBuildingSdkLog()); + final AvdInfo[] validAvds = avdManager.getValidAvds(); - final String[] avdNames = new String[validAvds.length]; - for (int i = 0; i < validAvds.length; i++) { - avdNames[i] = validAvds[i].getName(); - } - return avdNames; - } - catch (AndroidLocation.AndroidLocationException e) { - LOG.info(e); + final String[] avdNames = new String[validAvds.length]; + for (int i = 0; i < validAvds.length; i++) { + avdNames[i] = validAvds[i].getName(); } + return avdNames; + } + catch (AndroidLocation.AndroidLocationException e) { + LOG.info(e); + return ArrayUtil.EMPTY_STRING_ARRAY; } - return ArrayUtil.EMPTY_STRING_ARRAY; } } diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java index 54e28b8b1012..9cd023bc9b39 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunConfigurationBase.java @@ -51,8 +51,6 @@ import org.jetbrains.android.facet.AndroidFacetConfiguration; import org.jetbrains.android.logcat.AndroidLogFilterModel; import org.jetbrains.android.logcat.AndroidLogcatFiltersPreferences; import org.jetbrains.android.sdk.AndroidPlatform; -import org.jetbrains.android.sdk.AndroidSdk; -import org.jetbrains.android.sdk.AndroidSdkImpl; import org.jetbrains.android.util.AndroidBundle; import org.jetbrains.android.util.AndroidUtils; import org.jetbrains.annotations.NotNull; @@ -108,22 +106,17 @@ public abstract class AndroidRunConfigurationBase extends ModuleBasedConfigurati if (PREFERRED_AVD.length() > 0) { AvdManager avdManager = facet.getAvdManagerSilently(); if (avdManager == null) { - AndroidSdk sdk = facet.getConfiguration().getAndroidSdk(); - if (sdk instanceof AndroidSdkImpl) { - throw new RuntimeConfigurationError(AndroidBundle.message("avd.cannot.be.loaded.error")); - } + throw new RuntimeConfigurationError(AndroidBundle.message("avd.cannot.be.loaded.error")); } - if (avdManager != null) { - AvdInfo avdInfo = avdManager.getAvd(PREFERRED_AVD, false); - if (avdInfo == null) { - throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.found.error", PREFERRED_AVD)); - } - if (!facet.isCompatibleAvd(avdInfo)) { - throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.compatible.error", PREFERRED_AVD)); - } - if (avdInfo.getStatus() != AvdInfo.AvdStatus.OK) { - throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.valid.error", PREFERRED_AVD)); - } + AvdInfo avdInfo = avdManager.getAvd(PREFERRED_AVD, false); + if (avdInfo == null) { + throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.found.error", PREFERRED_AVD)); + } + if (!facet.isCompatibleAvd(avdInfo)) { + throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.compatible.error", PREFERRED_AVD)); + } + if (avdInfo.getStatus() != AvdInfo.AvdStatus.OK) { + throw new RuntimeConfigurationError(AndroidBundle.message("avd.not.valid.error", PREFERRED_AVD)); } } checkConfiguration(facet); diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java index 976b7eb14a90..5c6e736d7662 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java @@ -54,7 +54,6 @@ import com.intellij.xdebugger.DefaultDebugProcessHandler; import org.jetbrains.android.actions.AndroidEnableDdmsAction; import org.jetbrains.android.facet.AndroidFacet; import org.jetbrains.android.facet.AvdsNotSupportedException; -import org.jetbrains.android.sdk.AndroidSdkImpl; import org.jetbrains.android.util.AndroidBundle; import org.jetbrains.android.util.AndroidOutputReceiver; import org.jetbrains.android.util.AndroidUtils; @@ -426,22 +425,17 @@ public abstract class AndroidRunningState implements RunProfileState, AndroidDeb myTargetDevices = targetDevices; } else if (myTargetChooser instanceof EmulatorTargetChooser) { - if (isAndroidSdk15OrHigher()) { - if (myAvdName == null) { - chooseAvd(); - } - if (myAvdName != null) { - myFacet.launchEmulator(myAvdName, myCommandLine, getProcessHandler()); - } - else if (getProcessHandler().isStartNotified()) { - message("Canceled", STDERR); - getProcessHandler().destroyProcess(); - return false; - } + if (myAvdName == null) { + chooseAvd(); } - else { + if (myAvdName != null) { myFacet.launchEmulator(myAvdName, myCommandLine, getProcessHandler()); } + else if (getProcessHandler().isStartNotified()) { + message("Canceled", STDERR); + getProcessHandler().destroyProcess(); + return false; + } } else { message("USB device not found", STDERR); @@ -485,10 +479,6 @@ public abstract class AndroidRunningState implements RunProfileState, AndroidDeb getProcessHandler().notifyTextAvailable(message + '\n', outputKey); } - private boolean isAndroidSdk15OrHigher() { - return myFacet.getConfiguration().getAndroidSdk() instanceof AndroidSdkImpl; - } - public void clientChanged(Client client, int changeMask) { synchronized (myDebugLock) { if (myDebugLauncher == null) { @@ -529,10 +519,6 @@ public abstract class AndroidRunningState implements RunProfileState, AndroidDeb @Nullable private Boolean isCompatibleDevice(@NotNull IDevice device) { - if (!isAndroidSdk15OrHigher()) { - return true; - } - if (myTargetChooser instanceof EmulatorTargetChooser) { if (device.isEmulator()) { String avdName = device.isEmulator() ? device.getAvdName() : null; diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdk.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdk.java index 58f9fbbd139e..16cbe8ae5be0 100644 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdk.java +++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdk.java @@ -18,10 +18,8 @@ package org.jetbrains.android.sdk; import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.DdmPreferences; -import com.android.sdklib.IAndroidTarget; -import com.android.sdklib.ISdkLog; -import com.android.sdklib.SdkConstants; -import com.android.sdklib.SdkManager; +import com.android.sdklib.*; +import com.android.sdklib.internal.project.ProjectProperties; import com.intellij.CommonBundle; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; @@ -33,8 +31,10 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.io.FileUtil; import com.intellij.reference.SoftReference; import com.intellij.util.containers.HashMap; +import gnu.trove.TIntObjectHashMap; import org.jetbrains.android.actions.AndroidEnableDdmsAction; import org.jetbrains.android.util.AndroidUtils; +import org.jetbrains.android.util.BufferingFileWrapper; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -45,13 +45,9 @@ import java.util.Map; import static org.jetbrains.android.util.AndroidUtils.ADB; /** - * Created by IntelliJ IDEA. - * User: Eugene.Kudelevsky - * Date: Jun 2, 2009 - * Time: 2:35:49 PM - * To change this template use File | Settings | File Templates. + * @author Eugene.Kudelevsky */ -public abstract class AndroidSdk { +public class AndroidSdk { private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.sdk.AndroidSdk"); private static volatile boolean myDdmLibInitialized = false; @@ -63,11 +59,58 @@ public abstract class AndroidSdk { private final Map> myTargetDatas = new HashMap>(); - @NotNull - public abstract String getLocation(); + private final SdkManager mySdkManager; + private IAndroidTarget[] myTargets = null; + + private final int myPlatformToolsRevision; + + public AndroidSdk(@NotNull SdkManager sdkManager, @NotNull String sdkDirOsPath) { + mySdkManager = sdkManager; + + final File platformToolsPropFile = + new File(sdkDirOsPath + File.separatorChar + SdkConstants.FD_PLATFORM_TOOLS + File.separatorChar + SdkConstants.FN_SOURCE_PROP); + int platformToolsRevision = -1; + if (platformToolsPropFile.exists() && platformToolsPropFile.isFile()) { + final Map map = + ProjectProperties.parsePropertyFile(new BufferingFileWrapper(platformToolsPropFile), new MessageBuildingSdkLog()); + final String revision = map.get("Pkg.Revision"); + if (revision != null) { + try { + platformToolsRevision = Integer.parseInt(revision); + } + catch (NumberFormatException e) { + LOG.info(e); + } + } + } + myPlatformToolsRevision = platformToolsRevision > 0 ? platformToolsRevision : -1; + } @NotNull - public abstract IAndroidTarget[] getTargets(); + public String getLocation() { + String location = mySdkManager.getLocation(); + if (location.length() > 0) { + char lastChar = location.charAt(location.length() - 1); + if (lastChar == '/' || lastChar == File.separatorChar) { + return location.substring(0, location.length() - 1); + } + } + return location; + } + + @NotNull + public IAndroidTarget[] getTargets() { + if (myTargets == null) { + IAndroidTarget[] targets = mySdkManager.getTargets(); + if (targets != null) { + myTargets = new IAndroidTarget[targets.length]; + for (int i = 0; i < targets.length; i++) { + myTargets[i] = new MyTargetWrapper(targets[i]); + } + } + } + return myTargets; + } // be careful! target name is NOT unique @@ -108,18 +151,19 @@ public abstract class AndroidSdk { return null; } - public abstract IAndroidTarget findTargetByHashString(@NotNull String hashString); + public IAndroidTarget findTargetByHashString(@NotNull String hashString) { + final IAndroidTarget target = mySdkManager.getTargetFromHashString(hashString); + return target != null ? new MyTargetWrapper(target) : null; + } - public abstract int getPlatformToolsRevision(); + public int getPlatformToolsRevision() { + return myPlatformToolsRevision; + } @Nullable public static AndroidSdk parse(@NotNull String path, @NotNull ISdkLog log) { final SdkManager manager = AndroidSdkUtils.createSdkManager(path, log); - - if (manager != null) { - return new AndroidSdkImpl(manager, path); - } - return null; + return manager != null ? new AndroidSdk(manager, path) : null; } @Nullable @@ -181,8 +225,9 @@ public abstract class AndroidSdk { if (!finished) { int result = Messages - .showOkCancelDialog(project, "ADB not responding. Please, kill \"" + SdkConstants.FN_ADB + "\" process manually and click 'Retry'", - CommonBundle.getErrorTitle(), "&Retry", "&Cancel", Messages.getErrorIcon()); + .showOkCancelDialog(project, + "ADB not responding. Please, kill \"" + SdkConstants.FN_ADB + "\" process manually and click 'Retry'", + CommonBundle.getErrorTitle(), "&Retry", "&Cancel", Messages.getErrorIcon()); if (result == 1) { forceInterrupt(t); @@ -286,6 +331,11 @@ public abstract class AndroidSdk { return AndroidDebugBridge.getBridge(); } + @NotNull + public SdkManager getSdkManager() { + return mySdkManager; + } + @Nullable public AndroidTargetData getTargetData(@NotNull IAndroidTarget target) { final SoftReference targetDataRef = myTargetDatas.get(target); @@ -356,4 +406,206 @@ public abstract class AndroidSdk { } } } + + private static class MyTargetWrapper implements IAndroidTarget { + private final TIntObjectHashMap myAlternativePaths; + private final IAndroidTarget myWrapee; + + private MyTargetWrapper(@NotNull IAndroidTarget wrapee) { + myWrapee = wrapee; + myAlternativePaths = new TIntObjectHashMap(); + String oldPlatformToolsFolderPath = getOldPlatformToolsFolderPath(); + if (!canFindTool(AAPT)) { + myAlternativePaths.put(AAPT, oldPlatformToolsFolderPath + SdkConstants.FN_AAPT); + } + if (!canFindTool(AIDL)) { + myAlternativePaths.put(AIDL, oldPlatformToolsFolderPath + SdkConstants.FN_AIDL); + } + if (!canFindTool(DX)) { + myAlternativePaths.put(DX, oldPlatformToolsFolderPath + SdkConstants.FN_DX); + } + if (!canFindTool(DX_JAR)) { + myAlternativePaths.put(DX_JAR, oldPlatformToolsFolderPath + SdkConstants.FD_LIB + File.separator + SdkConstants.FN_DX_JAR); + } + } + + @Nullable + private String getOldPlatformToolsFolderPath() { + String platformLocation; + if (myWrapee.isPlatform()) { + platformLocation = myWrapee.getLocation(); + } + else { + IAndroidTarget parent = myWrapee.getParent(); + platformLocation = parent != null ? parent.getLocation() : null; + } + if (platformLocation == null) { + return null; + } + return platformLocation + SdkConstants.FD_TOOLS + File.separator; + } + + private boolean canFindTool(int pathId) { + String path = myWrapee.getPath(pathId); + return path != null && new File(path).exists(); + } + + @Override + public String getLocation() { + return myWrapee.getLocation(); + } + + @Override + public String getVendor() { + return myWrapee.getVendor(); + } + + @Override + public String getName() { + return myWrapee.getName(); + } + + @Override + public String getFullName() { + return myWrapee.getFullName(); + } + + @Override + public String getClasspathName() { + return myWrapee.getClasspathName(); + } + + @Override + public String getShortClasspathName() { + return myWrapee.getShortClasspathName(); + } + + @Override + public String getDescription() { + return myWrapee.getDescription(); + } + + @Override + public AndroidVersion getVersion() { + return myWrapee.getVersion(); + } + + @Override + public String getVersionName() { + return myWrapee.getVersionName(); + } + + @Override + public int getRevision() { + return myWrapee.getRevision(); + } + + @Override + public boolean isPlatform() { + return myWrapee.isPlatform(); + } + + @Override + public IAndroidTarget getParent() { + return myWrapee.getParent(); + } + + @Override + public String getPath(int pathId) { + String path = myAlternativePaths.get(pathId); + if (path != null) { + return path; + } + return myWrapee.getPath(pathId); + } + + @Override + public boolean hasRenderingLibrary() { + return myWrapee.hasRenderingLibrary(); + } + + @Override + public String[] getSkins() { + return myWrapee.getSkins(); + } + + @Override + public String getDefaultSkin() { + return myWrapee.getDefaultSkin(); + } + + @Override + public IOptionalLibrary[] getOptionalLibraries() { + return myWrapee.getOptionalLibraries(); + } + + @Override + public String[] getPlatformLibraries() { + return myWrapee.getPlatformLibraries(); + } + + @Override + public String getProperty(String name) { + return myWrapee.getProperty(name); + } + + @Override + public Integer getProperty(String name, Integer defaultValue) { + return myWrapee.getProperty(name, defaultValue); + } + + @Override + public Boolean getProperty(String name, Boolean defaultValue) { + return myWrapee.getProperty(name, defaultValue); + } + + @Override + public Map getProperties() { + return myWrapee.getProperties(); + } + + @Override + public int getUsbVendorId() { + return myWrapee.getUsbVendorId(); + } + + @Override + public ISystemImage[] getSystemImages() { + return myWrapee.getSystemImages(); + } + + @Override + public ISystemImage getSystemImage(String abiType) { + return myWrapee.getSystemImage(abiType); + } + + @Override + public boolean canRunOn(IAndroidTarget target) { + return myWrapee.canRunOn(target); + } + + @Override + public String hashString() { + return myWrapee.hashString(); + } + + @Override + public int compareTo(IAndroidTarget o) { + return myWrapee.compareTo(o); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof MyTargetWrapper)) { + return false; + } + MyTargetWrapper other = (MyTargetWrapper)obj; + return myWrapee.equals(other.myWrapee); + } + + @Override + public int hashCode() { + return myWrapee.hashCode(); + } + } } diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkImpl.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkImpl.java deleted file mode 100644 index f3911830d763..000000000000 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkImpl.java +++ /dev/null @@ -1,308 +0,0 @@ -/* - * Copyright 2000-2010 JetBrains s.r.o. - * - * 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 org.jetbrains.android.sdk; - -import com.android.sdklib.*; -import com.android.sdklib.internal.project.ProjectProperties; -import com.intellij.openapi.diagnostic.Logger; -import gnu.trove.TIntObjectHashMap; -import org.jetbrains.android.util.BufferingFileWrapper; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.io.File; -import java.util.Map; - -/** - * Created by IntelliJ IDEA. - * User: Eugene.Kudelevsky - * Date: Jun 2, 2009 - * Time: 2:37:00 PM - * To change this template use File | Settings | File Templates. - */ -public class AndroidSdkImpl extends AndroidSdk { - private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.sdk.AndroidSdkImpl"); - private final SdkManager mySdkManager; - private IAndroidTarget[] myTargets = null; - - private final int myPlatformToolsRevision; - - public AndroidSdkImpl(@NotNull SdkManager sdkManager, @NotNull String sdkDirOsPath) { - mySdkManager = sdkManager; - - final File platformToolsPropFile = - new File(sdkDirOsPath + File.separatorChar + SdkConstants.FD_PLATFORM_TOOLS + File.separatorChar + SdkConstants.FN_SOURCE_PROP); - int platformToolsRevision = -1; - if (platformToolsPropFile.exists() && platformToolsPropFile.isFile()) { - final Map map = - ProjectProperties.parsePropertyFile(new BufferingFileWrapper(platformToolsPropFile), new MessageBuildingSdkLog()); - final String revision = map.get("Pkg.Revision"); - if (revision != null) { - try { - platformToolsRevision = Integer.parseInt(revision); - } - catch (NumberFormatException e) { - LOG.info(e); - } - } - } - myPlatformToolsRevision = platformToolsRevision > 0 ? platformToolsRevision : -1; - } - - @NotNull - public String getLocation() { - String location = mySdkManager.getLocation(); - if (location.length() > 0) { - char lastChar = location.charAt(location.length() - 1); - if (lastChar == '/' || lastChar == File.separatorChar) { - return location.substring(0, location.length() - 1); - } - } - return location; - } - - @NotNull - public IAndroidTarget[] getTargets() { - if (myTargets == null) { - IAndroidTarget[] targets = mySdkManager.getTargets(); - if (targets != null) { - myTargets = new IAndroidTarget[targets.length]; - for (int i = 0; i < targets.length; i++) { - myTargets[i] = new MyTargetWrapper(targets[i]); - } - } - } - return myTargets; - } - - @Override - public IAndroidTarget findTargetByHashString(@NotNull String hashString) { - final IAndroidTarget target = mySdkManager.getTargetFromHashString(hashString); - return target != null ? new MyTargetWrapper(target) : null; - } - - @NotNull - public SdkManager getSdkManager() { - return mySdkManager; - } - - public int getPlatformToolsRevision() { - return myPlatformToolsRevision; - } - - private static class MyTargetWrapper implements IAndroidTarget { - private final TIntObjectHashMap myAlternativePaths; - private final IAndroidTarget myWrapee; - - private MyTargetWrapper(@NotNull IAndroidTarget wrapee) { - myWrapee = wrapee; - myAlternativePaths = new TIntObjectHashMap(); - String oldPlatformToolsFolderPath = getOldPlatformToolsFolderPath(); - if (!canFindTool(AAPT)) { - myAlternativePaths.put(AAPT, oldPlatformToolsFolderPath + SdkConstants.FN_AAPT); - } - if (!canFindTool(AIDL)) { - myAlternativePaths.put(AIDL, oldPlatformToolsFolderPath + SdkConstants.FN_AIDL); - } - if (!canFindTool(DX)) { - myAlternativePaths.put(DX, oldPlatformToolsFolderPath + SdkConstants.FN_DX); - } - if (!canFindTool(DX_JAR)) { - myAlternativePaths.put(DX_JAR, oldPlatformToolsFolderPath + SdkConstants.FD_LIB + File.separator + SdkConstants.FN_DX_JAR); - } - } - - @Nullable - private String getOldPlatformToolsFolderPath() { - String platformLocation; - if (myWrapee.isPlatform()) { - platformLocation = myWrapee.getLocation(); - } - else { - IAndroidTarget parent = myWrapee.getParent(); - platformLocation = parent != null ? parent.getLocation() : null; - } - if (platformLocation == null) { - return null; - } - return platformLocation + SdkConstants.FD_TOOLS + File.separator; - } - - private boolean canFindTool(int pathId) { - String path = myWrapee.getPath(pathId); - return path != null && new File(path).exists(); - } - - @Override - public String getLocation() { - return myWrapee.getLocation(); - } - - @Override - public String getVendor() { - return myWrapee.getVendor(); - } - - @Override - public String getName() { - return myWrapee.getName(); - } - - @Override - public String getFullName() { - return myWrapee.getFullName(); - } - - @Override - public String getClasspathName() { - return myWrapee.getClasspathName(); - } - - @Override - public String getShortClasspathName() { - return myWrapee.getShortClasspathName(); - } - - @Override - public String getDescription() { - return myWrapee.getDescription(); - } - - @Override - public AndroidVersion getVersion() { - return myWrapee.getVersion(); - } - - @Override - public String getVersionName() { - return myWrapee.getVersionName(); - } - - @Override - public int getRevision() { - return myWrapee.getRevision(); - } - - @Override - public boolean isPlatform() { - return myWrapee.isPlatform(); - } - - @Override - public IAndroidTarget getParent() { - return myWrapee.getParent(); - } - - @Override - public String getPath(int pathId) { - String path = myAlternativePaths.get(pathId); - if (path != null) { - return path; - } - return myWrapee.getPath(pathId); - } - - @Override - public boolean hasRenderingLibrary() { - return myWrapee.hasRenderingLibrary(); - } - - @Override - public String[] getSkins() { - return myWrapee.getSkins(); - } - - @Override - public String getDefaultSkin() { - return myWrapee.getDefaultSkin(); - } - - @Override - public IOptionalLibrary[] getOptionalLibraries() { - return myWrapee.getOptionalLibraries(); - } - - @Override - public String[] getPlatformLibraries() { - return myWrapee.getPlatformLibraries(); - } - - @Override - public String getProperty(String name) { - return myWrapee.getProperty(name); - } - - @Override - public Integer getProperty(String name, Integer defaultValue) { - return myWrapee.getProperty(name, defaultValue); - } - - @Override - public Boolean getProperty(String name, Boolean defaultValue) { - return myWrapee.getProperty(name, defaultValue); - } - - @Override - public Map getProperties() { - return myWrapee.getProperties(); - } - - @Override - public int getUsbVendorId() { - return myWrapee.getUsbVendorId(); - } - - @Override - public ISystemImage[] getSystemImages() { - return myWrapee.getSystemImages(); - } - - @Override - public ISystemImage getSystemImage(String abiType) { - return myWrapee.getSystemImage(abiType); - } - - @Override - public boolean canRunOn(IAndroidTarget target) { - return myWrapee.canRunOn(target); - } - - @Override - public String hashString() { - return myWrapee.hashString(); - } - - @Override - public int compareTo(IAndroidTarget o) { - return myWrapee.compareTo(o); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof MyTargetWrapper)) { - return false; - } - MyTargetWrapper other = (MyTargetWrapper)obj; - return myWrapee.equals(other.myWrapee); - } - - @Override - public int hashCode() { - return myWrapee.hashCode(); - } - } -}