@@ -93,7 +93,7 @@ public static void loadPlugins() {
93
93
}
94
94
}
95
95
96
- public static void addPluginForSearch (String prefix , Menu menu ) {
96
+ private static void addPluginForSearch (String prefix , Menu menu ) {
97
97
if (Objects .isNull (menu )) {
98
98
menu = FxUtils .getPluginMenu ();
99
99
}
@@ -127,11 +127,12 @@ public static void loadPlugins(Collection<File> plugins, final boolean checkDisa
127
127
loadPluginFromPrepared ();
128
128
}
129
129
130
- public static void registerPlugin (WePluginInfo info , WePluginSupporter supporter ) {
131
- registerPlugin (info , supporter , true );
130
+ public static void loadPluginForTest (WePluginInfo info ) {
131
+ preparePlugin (FileUtil .file (FileUtils .currentWorkDir ()), info , true );
132
+ loadPluginFromPrepared ();
132
133
}
133
134
134
- private void preparePlugin (File file , boolean checkDisable ) {
135
+ private static void preparePlugin (File file , boolean checkDisable ) {
135
136
if (file .exists () && file .isFile ()) {
136
137
// 包装成 JarFile
137
138
try (JarFile jar = new JarFile (file )) {
@@ -145,35 +146,38 @@ private void preparePlugin(File file, boolean checkDisable) {
145
146
String json = IoUtil .read (jar .getInputStream (entry ), "utf-8" );
146
147
WePluginInfo info = JSON .parseObject (json , WePluginInfo .class );
147
148
BeanFactory .get (WePluginConfig .class ).putInitBootIfNotExists (info , false );
148
-
149
- if (checkDisable && isDisabled (info )) {
150
- // 插件被禁止加载
151
- log .info ("plugin {}-{}-{} disabled" , info .getAuthor (), info .getName (), info .getVersion ());
152
- return ;
153
- }
154
- // 兼容性检测
155
- if (isIncompatible (info )) {
156
- return ;
157
- }
158
- WePlugin plugin = new WePlugin (info , file );
159
- // 检测插件是否已经加载
160
- if (LOADED_PLUGINS .contains (plugin )) {
161
- // 插件已被加载
162
- log .info ("plugin {}-{} already loaded" , info .getAuthor (), info .getName ());
163
- return ;
164
- }
165
- if (info .getIsolated ()) {
166
- // 隔离的插件使用单独的类加载器
167
- plugin .setLoaderName (info .getName ());
168
- }
169
- replaceIfNewer (plugin );
149
+ preparePlugin (file , info , checkDisable );
170
150
} catch (Exception e ) {
171
151
FxDialogs .showException ("plugin file load failed: " + file .getName (), e );
172
152
}
173
153
}
174
154
}
175
155
176
- private static boolean registerPlugin (WePluginInfo info , WePluginSupporter supporter , boolean checkCompatible ) {
156
+ private static void preparePlugin (File jarFile , WePluginInfo info , boolean checkDisable ) {
157
+ if (checkDisable && isDisabled (info )) {
158
+ // 插件被禁止加载
159
+ log .info ("plugin {}-{}-{} disabled" , info .getAuthor (), info .getName (), info .getVersion ());
160
+ return ;
161
+ }
162
+ // 兼容性检测
163
+ if (isIncompatible (info )) {
164
+ return ;
165
+ }
166
+ WePlugin plugin = new WePlugin (info , jarFile );
167
+ // 检测插件是否已经加载
168
+ if (LOADED_PLUGINS .contains (plugin )) {
169
+ // 插件已被加载
170
+ log .info ("plugin {}-{} already loaded" , info .getAuthor (), info .getName ());
171
+ return ;
172
+ }
173
+ if (info .getIsolated ()) {
174
+ // 隔离的插件使用单独的类加载器
175
+ plugin .setLoaderName (info .getName ());
176
+ }
177
+ replaceIfNewer (plugin );
178
+ }
179
+
180
+ private static boolean registerPlugin (WePluginInfo info , WePluginSupporter supporter ) {
177
181
OsInfo osInfo = SystemUtil .getOsInfo ();
178
182
179
183
// @formatter:off
@@ -185,9 +189,6 @@ private static boolean registerPlugin(WePluginInfo info, WePluginSupporter suppo
185
189
log .info ("plugin {}-{}-{} not support this os" , info .getAuthor (), info .getName (), info .getVersion ());
186
190
return false ;
187
191
}
188
- if (checkCompatible && isIncompatible (info )) {
189
- return false ;
190
- }
191
192
// 初始化
192
193
if (!supporter .initialize ()) {
193
194
log .info ("plugin {}-{}-{} initialize failed" , info .getAuthor (), info .getName (), info .getVersion ());
@@ -261,7 +262,7 @@ private static void loadPluginFromPrepared() {
261
262
Class <?> clazz = plugin .getClassLoader ().loadClass (plugin .getPluginInfo ().getSupportedClass ());
262
263
WePluginSupporter supporter = (WePluginSupporter ) ReflectUtil .newInstance (clazz );
263
264
// 添加插件菜单
264
- if (registerPlugin (plugin .getPluginInfo (), supporter , false )) {
265
+ if (registerPlugin (plugin .getPluginInfo (), supporter )) {
265
266
LOADED_PLUGINS .add (plugin );
266
267
}
267
268
} catch (Exception e ) {
0 commit comments