EA-41264 fix ISE

This commit is contained in:
Eugene Kudelevsky
2012-11-29 17:09:21 +04:00
parent a82c9beb97
commit 9044b9a20b
4 changed files with 57 additions and 53 deletions
@@ -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<AndroidFacetConfiguration> {
@Nullable
public AvdManager getAvdManagerSilently() {
try {
return getAvdManager();
return getAvdManager(new AvdManagerLog());
}
catch (AvdsNotSupportedException ignored) {
}
@@ -383,14 +384,14 @@ public class AndroidFacet extends Facet<AndroidFacetConfiguration> {
}
@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();
@@ -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
@@ -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()) {
@@ -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);
}
}
}