Browse Source

Merge pull request #4450 in DESIGN/design from feature/10.0 to research/10.0

* commit 'b70fb5421c20a0387525fba3fe49092fbefc3963':
  REPORT-51683 对象/classloader过滤缩略图 剪枝加速查找
  REPORT-52987   修复dataoperator的兼容问题;顺带修复发现的引用bug
research/10.0
superman 3 years ago
parent
commit
be13f6d642
  1. 26
      designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java
  2. 3
      designer-base/src/main/java/com/fr/design/file/filter/ClassFilter.java
  3. 3
      designer-base/src/main/java/com/fr/design/mod/ModClassFilter.java

26
designer-base/src/main/java/com/fr/design/data/datapane/connect/DatabaseConnectionPane.java

@ -6,7 +6,7 @@ package com.fr.design.data.datapane.connect;
import com.fr.data.impl.Connection;
import com.fr.data.impl.JDBCDatabaseConnection;
import com.fr.data.impl.JNDIDatabaseConnection;
import com.fr.data.operator.DataOperator;
import com.fr.data.operator.DataOperatorProvider;
import com.fr.data.solution.ExceptionSolutionSelector;
import com.fr.data.solution.entity.DriverPage;
import com.fr.data.solution.processor.ClassNotFoundExceptionSolutionProcessor;
@ -22,9 +22,12 @@ import com.fr.design.layout.FRGUIPaneFactory;
import com.fr.design.scrollruler.ModLineBorder;
import com.fr.design.utils.gui.GUICoreUtils;
import com.fr.log.FineLoggerFactory;
import com.fr.rpc.ExceptionHandler;
import com.fr.rpc.RPCInvokerExceptionInfo;
import com.fr.stable.ArrayUtils;
import com.fr.stable.EncodeConstants;
import com.fr.stable.StringUtils;
import com.fr.workspace.WorkContext;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
@ -93,7 +96,26 @@ public abstract class DatabaseConnectionPane<E extends com.fr.data.impl.Connecti
Connection database = DatabaseConnectionPane.this.updateBean();
// 返回连接结果
DriverPage.updateCache();
DataOperator.getInstance().testConnectionWithException(database);
final Exception[] exception = new Exception[1];
WorkContext.getCurrent().get(DataOperatorProvider.class, new ExceptionHandler() {
@Override
public Object callHandler(RPCInvokerExceptionInfo exceptionInfo) {
// 正常调用发生的异常也会被捕获,因此需要对异常类型进行判断,如果是NoSuchMethodException 就要去调用 testConnection
// 如果不是 NoSuchMethodException 保存下异常上下文
// 两种情况下异常都需要抛出
if (exceptionInfo.getException() instanceof NoSuchMethodException) {
if (!WorkContext.getCurrent().get(DataOperatorProvider.class).testConnection(database)) {
exception[0] = new Exception(Toolkit.i18nText("Fine-Design_Description_Of_Test_Connection"));
}
} else {
exception[0] = exceptionInfo.getException();
}
return null;
}
}).testConnectionWithException(database);
if (exception[0] != null) {
throw exception[0];
}
return null;
}

3
designer-base/src/main/java/com/fr/design/file/filter/ClassFilter.java

@ -5,6 +5,8 @@ import java.util.HashSet;
import java.util.Set;
/**
* classloader查找过滤器
*
* 过滤无需遍历的jdk class
*
* @author hades
@ -26,6 +28,7 @@ public class ClassFilter implements Filter<String> {
FILTER_SET.add("java.awt.image.BufferedImage");
FILTER_SET.add("sun.awt.AppContext");
FILTER_SET.add("com.fr.poly.creator.ECBlockCreator");
FILTER_SET.add("com.fr.form.ui.ElementCaseImage");
}
@Override

3
designer-base/src/main/java/com/fr/design/mod/ModClassFilter.java

@ -5,6 +5,8 @@ import java.util.HashSet;
import java.util.Set;
/**
* 联动修改的类过滤器
*
* @author hades
* @version 10.0
* Created by hades on 2021/5/31
@ -24,6 +26,7 @@ public class ModClassFilter implements Filter<String> {
FILTER_SET.add("sun.awt.AppContext");
FILTER_SET.add("com.fr.poly.creator.ECBlockCreator");
FILTER_SET.add("io.netty.channel.nio.SelectedSelectionKeySet");
FILTER_SET.add("com.fr.form.ui.ElementCaseImage");
}
@Override

Loading…
Cancel
Save