From 9044b9a20b078ab281e89d70c1a8739d99d054ee Mon Sep 17 00:00:00 2001 From: Eugene Kudelevsky Date: Thu, 29 Nov 2012 15:56:48 +0400 Subject: [PATCH] EA-41264 fix ISE --- .../jetbrains/android/facet/AndroidFacet.java | 11 +++-- .../android/run/AndroidRunningState.java | 13 ++++- .../android/sdk/AndroidSdkUtils.java | 47 ------------------- .../jetbrains/android/sdk/AvdManagerLog.java | 39 +++++++++++++++ 4 files changed, 57 insertions(+), 53 deletions(-) create mode 100644 plugins/android/src/org/jetbrains/android/sdk/AvdManagerLog.java diff --git a/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java b/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java index 333b462e2a75..37d0d0d61144 100644 --- a/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java +++ b/plugins/android/src/org/jetbrains/android/facet/AndroidFacet.java @@ -15,15 +15,16 @@ */ package org.jetbrains.android.facet; +import com.android.SdkConstants; import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.IDevice; import com.android.prefs.AndroidLocation; import com.android.sdklib.AndroidVersion; import com.android.sdklib.IAndroidTarget; -import com.android.SdkConstants; import com.android.sdklib.SdkManager; import com.android.sdklib.internal.avd.AvdInfo; import com.android.sdklib.internal.avd.AvdManager; +import com.android.utils.ILogger; import com.intellij.CommonBundle; import com.intellij.ProjectTopics; import com.intellij.execution.ExecutionException; @@ -373,7 +374,7 @@ public class AndroidFacet extends Facet { @Nullable public AvdManager getAvdManagerSilently() { try { - return getAvdManager(); + return getAvdManager(new AvdManagerLog()); } catch (AvdsNotSupportedException ignored) { } @@ -383,14 +384,14 @@ public class AndroidFacet extends Facet { } @NotNull - public AvdManager getAvdManager() throws AvdsNotSupportedException, AndroidLocation.AndroidLocationException { + public AvdManager getAvdManager(ILogger log) throws AvdsNotSupportedException, AndroidLocation.AndroidLocationException { if (myAvdManager == null) { AndroidPlatform platform = getConfiguration().getAndroidPlatform(); AndroidSdkData sdkData = platform != null ? platform.getSdkData() : null; - Project project = getModule().getProject(); + if (sdkData != null) { SdkManager sdkManager = sdkData.getSdkManager(); - myAvdManager = AvdManager.getInstance(sdkManager, AndroidSdkUtils.getSdkLog(project)); + myAvdManager = AvdManager.getInstance(sdkManager, log); } else { throw new AvdsNotSupportedException(); diff --git a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java index 2c37ca7cee73..44650110a63a 100644 --- a/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java +++ b/plugins/android/src/org/jetbrains/android/run/AndroidRunningState.java @@ -66,6 +66,7 @@ import org.jetbrains.android.logcat.AndroidLogcatToolWindowFactory; import org.jetbrains.android.logcat.AndroidLogcatView; import org.jetbrains.android.logcat.AndroidLogcatUtil; import org.jetbrains.android.sdk.AndroidSdkUtils; +import org.jetbrains.android.sdk.AvdManagerLog; import org.jetbrains.android.util.AndroidBundle; import org.jetbrains.android.util.AndroidOutputReceiver; import org.jetbrains.android.util.AndroidUtils; @@ -389,7 +390,17 @@ public class AndroidRunningState implements RunProfileState, AndroidDebugBridge. final Project project = myFacet.getModule().getProject(); AvdManager manager = null; try { - manager = myFacet.getAvdManager(); + manager = myFacet.getAvdManager(new AvdManagerLog() { + @Override + public void error(Throwable t, String errorFormat, Object... args) { + super.error(t, errorFormat, args); + + if (errorFormat != null) { + final String msg = String.format(errorFormat, args); + message(msg, STDERR); + } + } + }); } catch (AvdsNotSupportedException e) { // can't be diff --git a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkUtils.java b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkUtils.java index 8f2b7fb161d0..ed7c6b4ca6ee 100644 --- a/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkUtils.java +++ b/plugins/android/src/org/jetbrains/android/sdk/AndroidSdkUtils.java @@ -17,14 +17,11 @@ package org.jetbrains.android.sdk; import com.android.SdkConstants; -import com.android.annotations.NonNull; import com.android.ddmlib.AndroidDebugBridge; import com.android.ddmlib.Client; import com.android.ddmlib.ClientData; import com.android.ddmlib.IDevice; import com.android.sdklib.IAndroidTarget; -import com.android.utils.ILogger; -import com.intellij.CommonBundle; import com.intellij.execution.process.OSProcessHandler; import com.intellij.execution.process.OSProcessManager; import com.intellij.facet.ProjectFacetManager; @@ -64,9 +61,7 @@ import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.awt.*; import java.util.*; -import java.util.List; /** * @author Eugene.Kudelevsky @@ -410,48 +405,6 @@ public class AndroidSdkUtils { ProjectSettingsService.getInstance(module.getProject()).openModuleDependenciesSettings(module, null); } - @NotNull - public static ILogger getSdkLog(@NotNull final Object o) { - if (!(o instanceof Component || o instanceof Project)) { - throw new IllegalArgumentException(); - } - - return new ILogger() { - public void warning(String warningFormat, Object... args) { - if (warningFormat != null) { - LOG.warn(String.format(warningFormat, args)); - } - } - - @Override - public void info(@NonNull String msgFormat, Object... args) { - if (msgFormat != null) { - LOG.debug(String.format(msgFormat, args)); - } - } - - @Override - public void verbose(@NonNull String msgFormat, Object... args) { - } - - public void error(Throwable t, String errorFormat, Object... args) { - if (t != null) { - LOG.info(t); - } - if (errorFormat != null) { - String message = String.format(errorFormat, args); - LOG.info(message); - if (o instanceof Project) { - Messages.showErrorDialog((Project)o, message, CommonBundle.getErrorTitle()); - } - else { - Messages.showErrorDialog((Component)o, message, CommonBundle.getErrorTitle()); - } - } - } - }; - } - @Nullable public static Sdk findAppropriateAndroidPlatform(@NotNull IAndroidTarget target, @NotNull AndroidSdkData sdkData) { for (Sdk library : ProjectJdkTable.getInstance().getAllJdks()) { diff --git a/plugins/android/src/org/jetbrains/android/sdk/AvdManagerLog.java b/plugins/android/src/org/jetbrains/android/sdk/AvdManagerLog.java new file mode 100644 index 000000000000..975f95cfd284 --- /dev/null +++ b/plugins/android/src/org/jetbrains/android/sdk/AvdManagerLog.java @@ -0,0 +1,39 @@ +package org.jetbrains.android.sdk; + +import com.android.annotations.NonNull; +import com.android.utils.ILogger; +import com.intellij.openapi.diagnostic.Logger; + +/** +* @author Eugene.Kudelevsky +*/ +public class AvdManagerLog implements ILogger { + private static final Logger LOG = Logger.getInstance("#org.jetbrains.android.sdk.AvdManagerLog"); + + public void warning(String warningFormat, Object... args) { + if (warningFormat != null) { + LOG.debug(String.format(warningFormat, args)); + } + } + + @Override + public void info(@NonNull String msgFormat, Object... args) { + if (msgFormat != null) { + LOG.debug(String.format(msgFormat, args)); + } + } + + @Override + public void verbose(@NonNull String msgFormat, Object... args) { + } + + public void error(Throwable t, String errorFormat, Object... args) { + if (t != null) { + LOG.debug(t); + } + if (errorFormat != null) { + String message = String.format(errorFormat, args); + LOG.debug(message); + } + } +}