summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.cxx2
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.cxx4
-rw-r--r--dbaccess/source/filter/xml/dbloader2.cxx2
-rw-r--r--dbaccess/source/inc/stringconstants.hrc1
-rw-r--r--dbaccess/source/inc/stringconstants.inc1
-rw-r--r--dbaccess/source/ui/browser/brwctrlr.cxx2
-rw-r--r--dbaccess/source/ui/browser/unodatbr.cxx2
-rw-r--r--dbaccess/source/ui/dlg/dbwizsetup.cxx2
-rw-r--r--dbaccess/source/ui/misc/UITools.cxx4
-rw-r--r--dbaccess/source/ui/misc/datasourceconnector.cxx4
-rw-r--r--dbaccess/source/ui/uno/copytablewizard.cxx2
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.cxx102
-rw-r--r--dbaccess/source/ui/uno/dbinteraction.hxx102
13 files changed, 144 insertions, 86 deletions
diff --git a/dbaccess/source/core/dataaccess/databasecontext.cxx b/dbaccess/source/core/dataaccess/databasecontext.cxx
index 84dbdff17d13..ca8fe4e0eda7 100644
--- a/dbaccess/source/core/dataaccess/databasecontext.cxx
+++ b/dbaccess/source/core/dataaccess/databasecontext.cxx
@@ -420,7 +420,7 @@ Reference< XInterface > ODatabaseContext::loadObjectFromURL(const ::rtl::OUStrin
::comphelper::NamedValueCollection aArgs;
aArgs.put( "URL", _sURL );
aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG );
- aArgs.put( "InteractionHandler", m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler" ) );
+ aArgs.put( "InteractionHandler", m_aContext.createComponent( "com.sun.star.task.InteractionHandler" ) );
Sequence< PropertyValue > aResource( aArgs.getPropertyValues() );
xLoad->load( aResource );
diff --git a/dbaccess/source/core/dataaccess/documentdefinition.cxx b/dbaccess/source/core/dataaccess/documentdefinition.cxx
index 1cacaa802259..46b77e87b021 100644
--- a/dbaccess/source/core/dataaccess/documentdefinition.cxx
+++ b/dbaccess/source/core/dataaccess/documentdefinition.cxx
@@ -1466,7 +1466,7 @@ sal_Bool ODocumentDefinition::save(sal_Bool _bApprove)
pRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler( m_aContext.createComponent( (::rtl::OUString)SERVICE_SDB_INTERACTION_HANDLER ), UNO_QUERY );
+ Reference< XInteractionHandler > xHandler( m_aContext.createComponent( (::rtl::OUString)SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY );
if ( xHandler.is() )
xHandler->handle(xRequest);
@@ -1541,7 +1541,7 @@ sal_Bool ODocumentDefinition::saveAs()
pRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler(m_aContext.createComponent(::rtl::OUString(SERVICE_SDB_INTERACTION_HANDLER)), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(m_aContext.createComponent(::rtl::OUString(SERVICE_TASK_INTERACTION_HANDLER)), UNO_QUERY);
if ( xHandler.is() )
xHandler->handle(xRequest);
diff --git a/dbaccess/source/filter/xml/dbloader2.cxx b/dbaccess/source/filter/xml/dbloader2.cxx
index d3ec0d3ed356..781531a0e2a8 100644
--- a/dbaccess/source/filter/xml/dbloader2.cxx
+++ b/dbaccess/source/filter/xml/dbloader2.cxx
@@ -448,7 +448,7 @@ void SAL_CALL DBContentLoader::load(const Reference< XFrame > & rFrame, const ::
if ( !aMediaDesc.has( "InteractionHandler" ) )
{
Reference< XInteractionHandler > xHandler;
- if ( m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler", xHandler ) )
+ if ( m_aContext.createComponent( "com.sun.star.task.InteractionHandler", xHandler ) )
aMediaDesc.put( "InteractionHandler", xHandler );
}
diff --git a/dbaccess/source/inc/stringconstants.hrc b/dbaccess/source/inc/stringconstants.hrc
index 02bb911ef287..384d669226dc 100644
--- a/dbaccess/source/inc/stringconstants.hrc
+++ b/dbaccess/source/inc/stringconstants.hrc
@@ -379,7 +379,6 @@ DECLARE_CONSTASCII_USTRING(SERVICE_SDBCX_TABLES);
DECLARE_CONSTASCII_USTRING(SERVICE_SDB_QUERIES);
DECLARE_CONSTASCII_USTRING(SERVICE_SDBC_DRIVERMANAGER);
DECLARE_CONSTASCII_USTRING(SERVICE_SDBC_CONNECTIONPOOL);
-DECLARE_CONSTASCII_USTRING(SERVICE_SDB_INTERACTION_HANDLER);
DECLARE_CONSTASCII_USTRING(SERVICE_TASK_INTERACTION_HANDLER);
DECLARE_CONSTASCII_USTRING(SERVICE_FRAME_DESKTOP);
DECLARE_CONSTASCII_USTRING(SERVICE_SDB_ADABASCREATIONDIALOG);
diff --git a/dbaccess/source/inc/stringconstants.inc b/dbaccess/source/inc/stringconstants.inc
index 8803d0e0edc7..6d285e44564f 100644
--- a/dbaccess/source/inc/stringconstants.inc
+++ b/dbaccess/source/inc/stringconstants.inc
@@ -222,7 +222,6 @@ IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBC_DRIVERMANAGER, "com.sun.star.sdbc.Driv
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBC_CONNECTIONPOOL, "com.sun.star.sdbc.ConnectionPool");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBCX_INDEXCOLUMN, "com.sun.star.sdbcx.IndexColumn");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDBCX_KEYCOLUMN, "com.sun.star.sdbcx.KeyColumn");
-IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDB_INTERACTION_HANDLER, "com.sun.star.sdb.InteractionHandler");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_TASK_INTERACTION_HANDLER, "com.sun.star.task.InteractionHandler");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_FRAME_DESKTOP, "com.sun.star.frame.Desktop");
IMPLEMENT_CONSTASCII_USTRING(SERVICE_SDB_ADABASCREATIONDIALOG, "com.sun.star.sdb.AdabasCreationDialog");
diff --git a/dbaccess/source/ui/browser/brwctrlr.cxx b/dbaccess/source/ui/browser/brwctrlr.cxx
index a437c06812e2..68a8cbccd75f 100644
--- a/dbaccess/source/ui/browser/brwctrlr.cxx
+++ b/dbaccess/source/ui/browser/brwctrlr.cxx
@@ -1355,7 +1355,7 @@ sal_Bool SbaXDataBrowserController::approveParameter(const ::com::sun::star::for
pParamRequest->addContinuation(pAbort);
// create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler(getORB()->createInstance(SERVICE_SDB_INTERACTION_HANDLER), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(getORB()->createInstance(SERVICE_TASK_INTERACTION_HANDLER), UNO_QUERY);
if (xHandler.is())
xHandler->handle(xParamRequest);
diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx
index 2dffccfc8148..f0e58fcccbd8 100644
--- a/dbaccess/source/ui/browser/unodatbr.cxx
+++ b/dbaccess/source/ui/browser/unodatbr.cxx
@@ -3410,7 +3410,7 @@ void SbaTableQueryBrowser::implAdministrate( SvLBoxEntry* _pApplyTo )
{
Reference< XInteractionHandler > xInteractionHandler(
getORB()->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.InteractionHandler" ) ) ),
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) ) ),
UNO_QUERY );
OSL_ENSURE( xInteractionHandler.is(), "SbaTableQueryBrowser::implAdministrate: no interaction handler available!" );
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index 149d0c2d2f7a..efca1883fd00 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -1121,7 +1121,7 @@ sal_Bool ODbTypeWizDialogSetup::SaveDatabaseDocument()
m_xFrameLoader.set( m_xDesktop, UNO_QUERY_THROW );
m_xInteractionHandler.set(
_rxORB->createInstance(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.InteractionHandler" ) )
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.task.InteractionHandler" ) )
),
UNO_QUERY_THROW );
}
diff --git a/dbaccess/source/ui/misc/UITools.cxx b/dbaccess/source/ui/misc/UITools.cxx
index 55691d4164ff..b805b6f0daff 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -378,11 +378,11 @@ SQLExceptionInfo createConnection( const Reference< ::com::sun::star::beans::XP
}
else
{ // instantiate the default SDB interaction handler
- Reference< XInteractionHandler > xHandler(_rMF->createInstance(SERVICE_SDB_INTERACTION_HANDLER), UNO_QUERY);
+ Reference< XInteractionHandler > xHandler(_rMF->createInstance(SERVICE_TASK_INTERACTION_HANDLER), UNO_QUERY);
if (!xHandler.is())
{
OSL_ENSURE(sal_False, "createConnection: could not instantiate an interaction handler!");
- // ShowServiceNotAvailableError(NULL, String(SERVICE_SDB_INTERACTION_HANDLER), sal_True);
+ // ShowServiceNotAvailableError(NULL, String(SERVICE_TASK_INTERACTION_HANDLER), sal_True);
// TODO: a real parent!
}
else
diff --git a/dbaccess/source/ui/misc/datasourceconnector.cxx b/dbaccess/source/ui/misc/datasourceconnector.cxx
index 409e86150843..1fc25a14702c 100644
--- a/dbaccess/source/ui/misc/datasourceconnector.cxx
+++ b/dbaccess/source/ui/misc/datasourceconnector.cxx
@@ -195,9 +195,9 @@ namespace dbaui
if ( !xHandler.is() )
{
// instantiate the default SDB interaction handler
- xHandler = Reference< XInteractionHandler >( m_xORB->createInstance( SERVICE_SDB_INTERACTION_HANDLER ), UNO_QUERY );
+ xHandler = Reference< XInteractionHandler >( m_xORB->createInstance( SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY );
if ( !xHandler.is() )
- ShowServiceNotAvailableError(m_pErrorMessageParent, String(SERVICE_SDB_INTERACTION_HANDLER), sal_True);
+ ShowServiceNotAvailableError(m_pErrorMessageParent, (::rtl::OUString)SERVICE_TASK_INTERACTION_HANDLER, sal_True);
}
if ( xHandler.is() )
diff --git a/dbaccess/source/ui/uno/copytablewizard.cxx b/dbaccess/source/ui/uno/copytablewizard.cxx
index 26f859cf2045..0f656c7c372a 100644
--- a/dbaccess/source/ui/uno/copytablewizard.cxx
+++ b/dbaccess/source/ui/uno/copytablewizard.cxx
@@ -1511,7 +1511,7 @@ void SAL_CALL CopyTableWizard::initialize( const Sequence< Any >& _rArguments )
);
}
if ( !m_xInteractionHandler.is() )
- m_xInteractionHandler.set( m_aContext.createComponent( "com.sun.star.sdb.InteractionHandler" ), UNO_QUERY_THROW );
+ m_xInteractionHandler.set( m_aContext.createComponent( "com.sun.star.task.InteractionHandler" ), UNO_QUERY_THROW );
InteractionHandler xSourceDocHandler;
Reference< XPropertySet > xSourceDescriptor( impl_ensureDataAccessDescriptor_throw( _rArguments, 0, m_xSourceConnection, xSourceDocHandler ) );
diff --git a/dbaccess/source/ui/uno/dbinteraction.cxx b/dbaccess/source/ui/uno/dbinteraction.cxx
index b1290f9ee0be..12aee39f308a 100644
--- a/dbaccess/source/ui/uno/dbinteraction.cxx
+++ b/dbaccess/source/ui/uno/dbinteraction.cxx
@@ -100,7 +100,8 @@
extern "C" void SAL_CALL createRegistryInfo_OInteractionHandler()
{
- static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OInteractionHandler > aOInteractionHandler_AutoRegistration;
+ static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::SQLExceptionInteractionHandler > aSQLExceptionInteractionHandler_AutoRegistration;
+ static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::LegacyInteractionHandler > aLegacyInteractionHandler_AutoRegistration;
}
//.........................................................................
@@ -116,62 +117,70 @@ namespace dbaui
using namespace ::dbtools;
//=========================================================================
- //= OInteractionHandler
+ //= BasicInteractionHandler
//=========================================================================
//-------------------------------------------------------------------------
- OInteractionHandler::OInteractionHandler(const Reference< XMultiServiceFactory >& _rxORB)
- :m_xORB(_rxORB)
+ BasicInteractionHandler::BasicInteractionHandler( const Reference< XMultiServiceFactory >& _rxORB, const bool i_bFallbackToGeneric )
+ :m_xORB( _rxORB )
+ ,m_bFallbackToGeneric( i_bFallbackToGeneric )
{
+ OSL_ENSURE( !m_bFallbackToGeneric,
+ "BasicInteractionHandler::BasicInteractionHandler: enabling legacy behavior, there should be no clients of this anymore!" );
}
//-------------------------------------------------------------------------
- IMPLEMENT_SERVICE_INFO1_STATIC(OInteractionHandler, "com.sun.star.comp.dbu.OInteractionHandler", "com.sun.star.sdb.InteractionHandler");
+ ::sal_Bool SAL_CALL BasicInteractionHandler::handleInteractionRequest( const Reference< XInteractionRequest >& i_rRequest ) throw (RuntimeException)
+ {
+ return impl_handle_throw( i_rRequest );
+ }
//-------------------------------------------------------------------------
- void SAL_CALL OInteractionHandler::handle(const Reference< XInteractionRequest >& _rxRequest) throw(RuntimeException)
+ void SAL_CALL BasicInteractionHandler::handle( const Reference< XInteractionRequest >& i_rRequest ) throw(RuntimeException)
{
- Any aRequest;
- if (_rxRequest.is())
- {
- try { aRequest = _rxRequest->getRequest(); }
- catch(RuntimeException&) { }
- }
- DBG_ASSERT(aRequest.hasValue(), "OInteractionHandler::handle: invalid request!");
- if (!aRequest.hasValue())
+ impl_handle_throw( i_rRequest );
+ }
+
+ //-------------------------------------------------------------------------
+ sal_Bool BasicInteractionHandler::impl_handle_throw( const Reference< XInteractionRequest >& i_Request )
+ {
+ Any aRequest( i_Request->getRequest() );
+ DBG_ASSERT(aRequest.hasValue(), "BasicInteractionHandler::handle: invalid request!");
+ if ( !aRequest.hasValue() )
// no request -> no handling
- return;
+ return sal_False;
- Sequence< Reference< XInteractionContinuation > > aContinuations;
- try { aContinuations = _rxRequest->getContinuations(); }
- catch(RuntimeException&) { }
+ Sequence< Reference< XInteractionContinuation > > aContinuations( i_Request->getContinuations() );
// try to extract an SQLException (or one of it's derived members
- SQLExceptionInfo aInfo(aRequest);
- if (aInfo.isValid())
+ SQLExceptionInfo aInfo( aRequest );
+ if ( aInfo.isValid() )
{
- implHandle(aInfo, aContinuations);
- return;
+ implHandle( aInfo, aContinuations );
+ return sal_True;
}
ParametersRequest aParamRequest;
- if (aRequest >>= aParamRequest)
- { // it's an authentication request
- implHandle(aParamRequest, aContinuations);
- return;
+ if ( aRequest >>= aParamRequest )
+ {
+ implHandle( aParamRequest, aContinuations );
+ return sal_True;
}
DocumentSaveRequest aDocuRequest;
- if (aRequest >>= aDocuRequest)
- { // it's an document request
- implHandle(aDocuRequest, aContinuations);
- return;
+ if ( aRequest >>= aDocuRequest )
+ {
+ implHandle( aDocuRequest, aContinuations );
+ return sal_True;
}
- OSL_VERIFY( implHandleUnknown( _rxRequest ) );
+ if ( m_bFallbackToGeneric )
+ return implHandleUnknown( i_Request );
+
+ return sal_False;
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const ParametersRequest& _rParamRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const ParametersRequest& _rParamRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -182,7 +191,7 @@ namespace dbaui
Reference< XInteractionSupplyParameters > xParamCallback;
if (-1 != nParamPos)
xParamCallback = Reference< XInteractionSupplyParameters >(_rContinuations[nParamPos], UNO_QUERY);
- DBG_ASSERT(xParamCallback.is(), "OInteractionHandler::implHandle(ParametersRequest): can't set the parameters without an appropriate interaction handler!s");
+ DBG_ASSERT(xParamCallback.is(), "BasicInteractionHandler::implHandle(ParametersRequest): can't set the parameters without an appropriate interaction handler!s");
// determine the style of the dialog, dependent on the present continuation types
WinBits nDialogStyle = WB_OK | WB_DEF_OK;
@@ -215,7 +224,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const SQLExceptionInfo& _rSqlInfo, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const SQLExceptionInfo& _rSqlInfo, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -257,14 +266,14 @@ namespace dbaui
if ( nApprovePos != -1 )
_rContinuations[ nApprovePos ]->select();
else
- OSL_ENSURE( nResult != RET_YES, "OInteractionHandler::implHandle: no handler for YES!" );
+ OSL_ENSURE( nResult != RET_YES, "BasicInteractionHandler::implHandle: no handler for YES!" );
break;
case RET_NO:
if ( nDisapprovePos != -1 )
_rContinuations[ nDisapprovePos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: no handler for NO!" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: no handler for NO!" );
break;
case RET_CANCEL:
@@ -273,13 +282,13 @@ namespace dbaui
else if ( nDisapprovePos != -1 )
_rContinuations[ nDisapprovePos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: no handler for CANCEL!" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: no handler for CANCEL!" );
break;
case RET_RETRY:
if ( nRetryPos != -1 )
_rContinuations[ nRetryPos ]->select();
else
- OSL_ENSURE( false, "OInteractionHandler::implHandle: where does the RETRY come from?" );
+ OSL_ENSURE( false, "BasicInteractionHandler::implHandle: where does the RETRY come from?" );
break;
}
}
@@ -289,7 +298,7 @@ namespace dbaui
}
}
//-------------------------------------------------------------------------
- void OInteractionHandler::implHandle(const DocumentSaveRequest& _rDocuRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ void BasicInteractionHandler::implHandle(const DocumentSaveRequest& _rDocuRequest, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
::vos::OGuard aGuard(Application::GetSolarMutex());
// want to open a dialog ....
@@ -318,7 +327,7 @@ namespace dbaui
if (-1 != nDocuPos)
{
Reference< XInteractionDocumentSave > xCallback(_rContinuations[nDocuPos], UNO_QUERY);
- DBG_ASSERT(xCallback.is(), "OInteractionHandler::implHandle(DocumentSaveRequest): can't save document without an appropriate interaction handler!s");
+ DBG_ASSERT(xCallback.is(), "BasicInteractionHandler::implHandle(DocumentSaveRequest): can't save document without an appropriate interaction handler!s");
// determine the style of the dialog, dependent on the present continuation types
WinBits nDialogStyle = WB_OK | WB_DEF_OK;
@@ -357,7 +366,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- bool OInteractionHandler::implHandleUnknown( const Reference< XInteractionRequest >& _rxRequest )
+ bool BasicInteractionHandler::implHandleUnknown( const Reference< XInteractionRequest >& _rxRequest )
{
Reference< XInteractionHandler > xFallbackHandler;
if ( m_xORB.is() )
@@ -371,7 +380,7 @@ namespace dbaui
}
//-------------------------------------------------------------------------
- sal_Int32 OInteractionHandler::getContinuation(Continuation _eCont, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
+ sal_Int32 BasicInteractionHandler::getContinuation(Continuation _eCont, const Sequence< Reference< XInteractionContinuation > >& _rContinuations)
{
const Reference< XInteractionContinuation >* pContinuations = _rContinuations.getConstArray();
for (sal_Int32 i=0; i<_rContinuations.getLength(); ++i, ++pContinuations)
@@ -408,6 +417,15 @@ namespace dbaui
return -1;
}
+ //==========================================================================
+ //= SQLExceptionInteractionHandler
+ //==========================================================================
+ IMPLEMENT_SERVICE_INFO1_STATIC( SQLExceptionInteractionHandler, "com.sun.star.comp.dbaccess.DatabaseInteractionHandler", "com.sun.star.sdb.DatabaseInteractionHandler" );
+
+ //==========================================================================
+ //= LegacyInteractionHandler
+ //==========================================================================
+ IMPLEMENT_SERVICE_INFO1_STATIC( LegacyInteractionHandler, "com.sun.star.comp.dbaccess.LegacyInteractionHandler", "com.sun.star.sdb.InteractionHandler" );
//.........................................................................
} // namespace dbaui
diff --git a/dbaccess/source/ui/uno/dbinteraction.hxx b/dbaccess/source/ui/uno/dbinteraction.hxx
index 8c7bba539129..822a55a36a95 100644
--- a/dbaccess/source/ui/uno/dbinteraction.hxx
+++ b/dbaccess/source/ui/uno/dbinteraction.hxx
@@ -35,30 +35,17 @@
#include <cppuhelper/implbase2.hxx>
#endif
-#ifndef _DBAUI_MODULE_DBU_HXX_
#include "moduledbu.hxx"
-#endif
-#ifndef _COM_SUN_STAR_LANG_XSERVICEINFO_HPP_
+#include "apitools.hxx"
+
+/** === begin UNO includes === **/
#include <com/sun/star/lang/XServiceInfo.hpp>
-#endif
-#ifndef _COM_SUN_STAR_TASK_XINTERACTIONHANDLER_HPP_
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#endif
-#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include <com/sun/star/task/XInteractionHandler2.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#endif
-#ifndef _COM_SUN_STAR_UCB_AUTHENTICATIONREQUEST_HPP_
#include <com/sun/star/ucb/AuthenticationRequest.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_PARAMETERSREQUEST_HPP_
#include <com/sun/star/sdb/ParametersRequest.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDB_DOCUMENTSAVEREQUEST_HPP_
#include <com/sun/star/sdb/DocumentSaveRequest.hpp>
-#endif
-#ifndef _DBASHARED_APITOOLS_HXX_
-#include "apitools.hxx"
-#endif
+/** === end UNO includes === **/
namespace dbtools
{
@@ -71,11 +58,11 @@ namespace dbaui
//.........................................................................
//=========================================================================
- //= OInteractionHandler
+ //= BasicInteractionHandler
//=========================================================================
typedef ::cppu::WeakImplHelper2 < ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::task::XInteractionHandler
- > OInteractionHandler_Base;
+ , ::com::sun::star::task::XInteractionHandler2
+ > BasicInteractionHandler_Base;
/** implements an <type scope="com.sun.star.task">XInteractionHandler</type> for
database related interaction requests.
<p/>
@@ -87,22 +74,30 @@ namespace dbaui
standard error dialog for the (maybe chained) exception given</li>
</ul>
*/
- class OInteractionHandler
- :public OInteractionHandler_Base
+ class BasicInteractionHandler
+ :public BasicInteractionHandler_Base
{
- OModuleClient m_aModuleClient;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
- m_xORB;
+ const OModuleClient m_aModuleClient;
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
+ m_xORB;
+ const bool m_bFallbackToGeneric;
+
public:
- OInteractionHandler(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB);
+ BasicInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB,
+ const bool i_bFallbackToGeneric
+ );
- // XServiceInfo
- DECLARE_SERVICE_INFO_STATIC();
+ // XInteractionHandler2
+ virtual ::sal_Bool SAL_CALL handleInteractionRequest( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& Request ) throw (::com::sun::star::uno::RuntimeException);
- // XInteractionHandler
+ // XInteractionHandler
virtual void SAL_CALL handle( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& Request ) throw(::com::sun::star::uno::RuntimeException);
protected:
+ sal_Bool
+ impl_handle_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionRequest >& i_Request );
+
/// handle SQLExceptions (and derived classes)
void implHandle(
const ::dbtools::SQLExceptionInfo& _rSqlInfo,
@@ -141,6 +136,53 @@ namespace dbaui
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionContinuation > >& _rContinuations);
};
+ //=========================================================================
+ //= SQLExceptionInteractionHandler
+ //=========================================================================
+ class SQLExceptionInteractionHandler : public BasicInteractionHandler
+ {
+ public:
+ SQLExceptionInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB
+ )
+ :BasicInteractionHandler( i_rORB, false )
+ {
+ }
+
+ // XServiceInfo
+ DECLARE_SERVICE_INFO_STATIC();
+ };
+
+ //=========================================================================
+ //= SQLExceptionInteractionHandler
+ //=========================================================================
+ /** an implementation for the legacy css.sdb.InteractionHandler
+
+ css.sdb.InteractionHandler is deprecated, as it does not only handle database related interactions,
+ but also delegates all kind of unknown requests to a css.task.InteractionHandler.
+
+ In today's architecture, there's only one central css.task.InteractionHandler, which is to be used
+ for all requests. Depending on configuration information, it decides which handler implementation
+ to delegate a request to.
+
+ SQLExceptionInteractionHandler is the delegatee which handles only database related interactions.
+ LegacyInteractionHandler is the version which first checks for a database related interaction, and
+ forwards everything else to the css.task.InteractionHandler.
+ */
+ class LegacyInteractionHandler : public BasicInteractionHandler
+ {
+ public:
+ LegacyInteractionHandler(
+ const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& i_rORB
+ )
+ :BasicInteractionHandler( i_rORB, true )
+ {
+ }
+
+ // XServiceInfo
+ DECLARE_SERVICE_INFO_STATIC();
+ };
+
//.........................................................................
} // namespace dbaui
//.........................................................................