|
|
|
@ -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; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|