Skip to content

Commit e1609b5

Browse files
committed
Fix EdtExecutorService compatibility
1 parent 253410e commit e1609b5

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/main/java/com/cybrosis/catdea/toolWindow/CatdeaToolWindowFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import com.android.ddmlib.AndroidDebugBridge;
2020
import com.android.tools.idea.adb.AdbService;
21-
import com.intellij.util.concurrency.EdtExecutorService;
21+
import com.cybrosis.catdea.utils.CompatibilityUtil.EdtExecutorService;
2222
import com.google.common.util.concurrent.FutureCallback;
2323
import com.google.common.util.concurrent.Futures;
2424
import com.google.common.util.concurrent.ListenableFuture;

src/main/java/com/cybrosis/catdea/utils/CompatibilityUtil.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,13 @@
1919
import com.android.ddmlib.logcat.LogCatHeader;
2020
import com.android.ddmlib.logcat.LogCatTimestamp;
2121

22+
import java.lang.reflect.Field;
2223
import java.lang.reflect.Method;
2324
import java.time.Instant;
2425
import java.time.LocalDateTime;
2526
import java.time.ZoneId;
2627
import java.time.format.DateTimeFormatter;
28+
import java.util.concurrent.Executor;
2729

2830
/**
2931
* @author cybrosis
@@ -54,4 +56,24 @@ public static String getTimestamp(LogCatHeader header) {
5456
return LocalDateTime.ofInstant(instant, ZONE).format(FORMATTER);
5557
}
5658
}
59+
60+
public static class EdtExecutorService {
61+
public static Executor getInstance() {
62+
try {
63+
final Class<?> clazz = Class.forName("com.intellij.util.concurrency.EdtExecutorService");
64+
final Method method = clazz.getDeclaredMethod("getInstance");
65+
return (Executor) method.invoke(null);
66+
} catch (ReflectiveOperationException ignored) {
67+
try {
68+
final Class<?> clazz = Class.forName("com.android.tools.idea.concurrent.EdtExecutor");
69+
final Field field = clazz.getDeclaredField("INSTANCE");
70+
return (Executor) field.get(null);
71+
} catch (ReflectiveOperationException e) {
72+
final NoClassDefFoundError error = new NoClassDefFoundError("Either com.intellij.util.concurrency.EdtExecutorService or com.android.tools.idea.concurrent.EdtExecutor should exist");
73+
error.initCause(e);
74+
throw error;
75+
}
76+
}
77+
}
78+
}
5779
}

0 commit comments

Comments
 (0)