Kaydet (Commit) 57bfb569 authored tarafından Caolán McNamara's avatar Caolán McNamara

Resolves: tdf#94446 if this is a SQLException in disguise, throw that instead

instead of the wrapper exception, so that dbaccess can apply its special
handling for SQLException::ErrorCode of dbtools::ParameterInteractionCancelled
in OLinkedDocumentsAccess::open if ParameterInteractionCancelled was the root
cause

Change-Id: I777893cf7355d8c4a9c48237284903176d81402d
Reviewed-on: https://gerrit.libreoffice.org/64123
Tested-by: Jenkins
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst e8e3b00b
......@@ -38,6 +38,9 @@ import com.sun.star.registry.InvalidRegistryException;
import com.sun.star.registry.InvalidValueException;
import com.sun.star.registry.XRegistryKey;
import com.sun.star.registry.XSimpleRegistry;
import com.sun.star.sdbc.SQLException;
import org.jfree.report.ReportDataFactoryException;
import org.libreoffice.report.DataSourceException;
import org.libreoffice.report.DataSourceFactory;
import org.libreoffice.report.JobProperties;
import org.libreoffice.report.ReportEngineParameterNames;
......@@ -194,6 +197,26 @@ public class SOReportJobFactory
return currentLocale;
}
// tdf#94446 if this is a SQLException in disguise, throw that
// original exception instead of the wrapper exception, so that
// dbaccess can apply its special handling for
// SQLException::ErrorCode of dbtools::ParameterInteractionCancelled
// in OLinkedDocumentsAccess::open if ParameterInteractionCancelled
// was the root cause
public void rethrow_sql_exception(Throwable exception)
throws com.sun.star.sdbc.SQLException
{
if (exception instanceof ReportDataFactoryException == false)
return;
exception = ((ReportDataFactoryException)exception).getParent();
if (exception instanceof DataSourceException == false)
return;
exception = ((DataSourceException)exception).getCause();
if (exception instanceof SQLException == false)
return;
throw (SQLException)exception;
}
public Object execute(final NamedValue[] namedValue)
throws com.sun.star.lang.IllegalArgumentException, com.sun.star.uno.Exception
{
......@@ -223,6 +246,10 @@ public class SOReportJobFactory
Writer result = new StringWriter();
PrintWriter printWriter = new PrintWriter(result);
e.printStackTrace(printWriter);
// if this is a wrapped SQLException, rethrow that instead
rethrow_sql_exception(e.getCause());
throw new com.sun.star.lang.WrappedTargetException(e, e.toString() + '\n' + result.toString(), this, null);
}
catch (java.lang.IncompatibleClassChangeError e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment