From a517a441f6a59c43aa8cf116939e53f64b94b67b Mon Sep 17 00:00:00 2001 From: pengzhile Date: Thu, 21 Oct 2021 18:21:57 +0800 Subject: [PATCH] fixed gitee issue: I4EVTS --- README.md | 2 +- build.gradle | 4 +- .../ier/listener/ListenerConnector.java | 9 +++- .../ier/listener/PluginInstallListener.java | 54 +++++++++++++++++++ .../intellij/ier/listener/PluginListener.java | 30 +---------- 5 files changed, 66 insertions(+), 33 deletions(-) create mode 100644 src/main/java/io/zhile/research/intellij/ier/listener/PluginInstallListener.java diff --git a/README.md b/README.md index c700e8c..4fb5c3c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Reset Your IDE Eval Information -1. Download and install plugin from [Download Link](https://plugins.zhile.io/files/ide-eval-resetter-2.3.4-62e7c8.zip). +1. Download and install plugin from [Download Link](https://plugins.zhile.io/files/ide-eval-resetter-2.3.5-c80a1d.zip). * Alternative installation method: * Add "Custom Plugin Repository": `https://plugins.zhile.io` manually (`Settings/Preferences` -> `Plugins`) * Search and install plugin: `IDE Eval Reset` diff --git a/build.gradle b/build.gradle index 748630b..323f941 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group 'io.zhile.research.intellij' -version '2.3.4' +version '2.3.5' sourceCompatibility = 1.7 targetCompatibility = 1.7 @@ -29,6 +29,8 @@ intellij { patchPluginXml { changeNotes = """
+Release v2.3.4
+  1. fixed gitee issue: I4EVTS
 Release v2.3.4
   1. update the logic of auto reset option
 Release v2.3.3
diff --git a/src/main/java/io/zhile/research/intellij/ier/listener/ListenerConnector.java b/src/main/java/io/zhile/research/intellij/ier/listener/ListenerConnector.java
index 58347aa..fb1f071 100644
--- a/src/main/java/io/zhile/research/intellij/ier/listener/ListenerConnector.java
+++ b/src/main/java/io/zhile/research/intellij/ier/listener/ListenerConnector.java
@@ -45,7 +45,12 @@ public class ListenerConnector {
     }
 
     private static void callPluginInstallListenerMethod(String methodName) {    // reflection for old versions
-        String className = ListenerConnector.class.getPackage().getName() + ".PluginListener";
+        Class klass = ReflectionHelper.getClass("com.intellij.ide.plugins.PluginStateListener");
+        if (null == klass) {
+            return;
+        }
+
+        String className = ListenerConnector.class.getPackage().getName() + ".PluginInstallListener";
         Method method = ReflectionHelper.getMethod(className, methodName);
         if (null == method) {
             return;
@@ -54,7 +59,7 @@ public class ListenerConnector {
         try {
             method.invoke(null);
         } catch (Exception e) {
-            e.printStackTrace();
+            // ignored
         }
     }
 }
diff --git a/src/main/java/io/zhile/research/intellij/ier/listener/PluginInstallListener.java b/src/main/java/io/zhile/research/intellij/ier/listener/PluginInstallListener.java
new file mode 100644
index 0000000..596ae19
--- /dev/null
+++ b/src/main/java/io/zhile/research/intellij/ier/listener/PluginInstallListener.java
@@ -0,0 +1,54 @@
+package io.zhile.research.intellij.ier.listener;
+
+import com.intellij.ide.plugins.IdeaPluginDescriptor;
+import com.intellij.ide.plugins.PluginInstaller;
+import com.intellij.ide.plugins.PluginStateListener;
+import com.intellij.openapi.application.ApplicationManager;
+import io.zhile.research.intellij.ier.common.Resetter;
+import io.zhile.research.intellij.ier.helper.ReflectionHelper;
+import org.jetbrains.annotations.NotNull;
+
+import java.lang.reflect.Method;
+
+public class PluginInstallListener implements PluginStateListener {
+    private static final PluginStateListener stateListener = new PluginInstallListener();
+
+    private static void reflectionCall(String methodName) throws Exception {
+        Method[] methods = new Method[]{
+                ReflectionHelper.getMethod(PluginInstaller.class, methodName, PluginStateListener.class),
+                ReflectionHelper.getMethod("com.intellij.ide.plugins.PluginStateManager", methodName, PluginStateListener.class),
+        };
+
+        for (Method method : methods) {
+            if (null == method) {
+                continue;
+            }
+
+            method.invoke(null, stateListener);
+            return;
+        }
+    }
+
+    public static void setup() throws Exception {
+        reflectionCall("addStateListener");
+    }
+
+    public static void remove() throws Exception {
+        reflectionCall("removeStateListener");
+    }
+
+    @Override
+    public void install(@NotNull final IdeaPluginDescriptor descriptor) {
+        ApplicationManager.getApplication().invokeLater(new Runnable() {
+            @Override
+            public void run() {
+                Resetter.addPluginLicense(descriptor);
+            }
+        });
+    }
+
+    @Override
+    public void uninstall(@NotNull IdeaPluginDescriptor descriptor) {
+
+    }
+}
diff --git a/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java b/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
index d08e0bb..ab41758 100644
--- a/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
+++ b/src/main/java/io/zhile/research/intellij/ier/listener/PluginListener.java
@@ -2,12 +2,9 @@ package io.zhile.research.intellij.ier.listener;
 
 import com.intellij.ide.plugins.DynamicPluginListener;
 import com.intellij.ide.plugins.IdeaPluginDescriptor;
-import com.intellij.ide.plugins.PluginStateListener;
-import com.intellij.ide.plugins.PluginStateManager;
 import com.intellij.openapi.actionSystem.ActionManager;
 import com.intellij.openapi.actionSystem.AnAction;
 import com.intellij.openapi.actionSystem.DefaultActionGroup;
-import com.intellij.openapi.application.ApplicationManager;
 import io.zhile.research.intellij.ier.common.Resetter;
 import io.zhile.research.intellij.ier.helper.Constants;
 import io.zhile.research.intellij.ier.helper.NotificationHelper;
@@ -16,32 +13,7 @@ import io.zhile.research.intellij.ier.helper.ResetTimeHelper;
 import io.zhile.research.intellij.ier.tw.MainToolWindowFactory;
 import org.jetbrains.annotations.NotNull;
 
-public class PluginListener implements DynamicPluginListener, PluginStateListener {
-    private static final PluginStateListener stateListener = new PluginListener();
-
-    public static void setup() {
-        PluginStateManager.addStateListener(stateListener);
-    }
-
-    public static void remove() {
-        PluginStateManager.removeStateListener(stateListener);
-    }
-
-    @Override
-    public void install(@NotNull final IdeaPluginDescriptor descriptor) {
-        ApplicationManager.getApplication().invokeLater(new Runnable() {
-            @Override
-            public void run() {
-                Resetter.addPluginLicense(descriptor);
-            }
-        });
-    }
-
-    @Override
-    public void uninstall(@NotNull IdeaPluginDescriptor descriptor) {
-
-    }
-
+public class PluginListener implements DynamicPluginListener {
     @Override
     public void pluginLoaded(@NotNull IdeaPluginDescriptor descriptor) {
         if (!PluginHelper.myself(descriptor)) {