coverity#706394 Uncaught exception

and hopefully a bunch more of those in dbaccess

Change-Id: I5aefcfe56a697f9e6b18dfe167fdd8a4f54ab6e0
This commit is contained in:
Caolán McNamara
2014-05-30 15:35:46 +01:00
parent 535780bd4b
commit 48a697ef1c
2 changed files with 108 additions and 55 deletions

View File

@@ -628,7 +628,7 @@ namespace
sal_Bool SAL_CALL ODatabaseDocument::wasModifiedSinceLastSave() throw ( RuntimeException, std::exception ) sal_Bool SAL_CALL ODatabaseDocument::wasModifiedSinceLastSave() throw ( RuntimeException, std::exception )
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
// The implementation here is somewhat sloppy, in that it returns whether *any* part of the whole // The implementation here is somewhat sloppy, in that it returns whether *any* part of the whole
// database document, including opened sub components, is modified. This is more than what is requested: // database document, including opened sub components, is modified. This is more than what is requested:
@@ -666,7 +666,7 @@ sal_Bool SAL_CALL ODatabaseDocument::wasModifiedSinceLastSave() throw ( RuntimeE
void SAL_CALL ODatabaseDocument::storeToRecoveryFile( const OUString& i_TargetLocation, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException, std::exception ) void SAL_CALL ODatabaseDocument::storeToRecoveryFile( const OUString& i_TargetLocation, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException, std::exception )
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
ModifyLock aLock( *this ); ModifyLock aLock( *this );
try try
@@ -810,7 +810,7 @@ Sequence< PropertyValue > SAL_CALL ODatabaseDocument::getArgs( ) throw (Runtime
void SAL_CALL ODatabaseDocument::connectController( const Reference< XController >& _xController ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::connectController( const Reference< XController >& _xController ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
#if OSL_DEBUG_LEVEL > 0 #if OSL_DEBUG_LEVEL > 0
for ( Controllers::const_iterator controller = m_aControllers.begin(); for ( Controllers::const_iterator controller = m_aControllers.begin();
@@ -842,7 +842,7 @@ void SAL_CALL ODatabaseDocument::disconnectController( const Reference< XControl
// SYNCHRONIZED -> // SYNCHRONIZED ->
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
Controllers::iterator pos = ::std::find( m_aControllers.begin(), m_aControllers.end(), _xController ); Controllers::iterator pos = ::std::find( m_aControllers.begin(), m_aControllers.end(), _xController );
OSL_ENSURE( pos != m_aControllers.end(), "ODatabaseDocument::disconnectController: don't know this controller!" ); OSL_ENSURE( pos != m_aControllers.end(), "ODatabaseDocument::disconnectController: don't know this controller!" );
@@ -880,35 +880,35 @@ void SAL_CALL ODatabaseDocument::disconnectController( const Reference< XControl
void SAL_CALL ODatabaseDocument::lockControllers( ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::lockControllers( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
++m_pImpl->m_nControllerLockCount; ++m_pImpl->m_nControllerLockCount;
} }
void SAL_CALL ODatabaseDocument::unlockControllers( ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::unlockControllers( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
--m_pImpl->m_nControllerLockCount; --m_pImpl->m_nControllerLockCount;
} }
sal_Bool SAL_CALL ODatabaseDocument::hasControllersLocked( ) throw (RuntimeException, std::exception) sal_Bool SAL_CALL ODatabaseDocument::hasControllersLocked( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_pImpl->m_nControllerLockCount != 0; return m_pImpl->m_nControllerLockCount != 0;
} }
Reference< XController > SAL_CALL ODatabaseDocument::getCurrentController() throw (RuntimeException, std::exception) Reference< XController > SAL_CALL ODatabaseDocument::getCurrentController() throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_xCurrentController.is() ? m_xCurrentController : ( m_aControllers.empty() ? Reference< XController >() : *m_aControllers.begin() ); return m_xCurrentController.is() ? m_xCurrentController : ( m_aControllers.empty() ? Reference< XController >() : *m_aControllers.begin() );
} }
void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XController >& _xController ) throw (NoSuchElementException, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XController >& _xController ) throw (NoSuchElementException, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_xCurrentController = _xController; m_xCurrentController = _xController;
@@ -937,7 +937,7 @@ void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XControl
Reference< XInterface > SAL_CALL ODatabaseDocument::getCurrentSelection( ) throw (RuntimeException, std::exception) Reference< XInterface > SAL_CALL ODatabaseDocument::getCurrentSelection( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
Reference< XInterface > xRet; Reference< XInterface > xRet;
Reference< XSelectionSupplier > xDocView( getCurrentController(), UNO_QUERY ); Reference< XSelectionSupplier > xDocView( getCurrentController(), UNO_QUERY );
@@ -969,7 +969,7 @@ sal_Bool SAL_CALL ODatabaseDocument::isReadonly( ) throw (RuntimeException, std
void SAL_CALL ODatabaseDocument::store( ) throw (IOException, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::store( ) throw (IOException, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
OUString sDocumentURL( m_pImpl->getURL() ); OUString sDocumentURL( m_pImpl->getURL() );
if ( !sDocumentURL.isEmpty() ) if ( !sDocumentURL.isEmpty() )
@@ -1224,7 +1224,7 @@ void ODatabaseDocument::impl_storeToStorage_throw( const Reference< XStorage >&
void SAL_CALL ODatabaseDocument::storeToURL( const OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (IOException, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::storeToURL( const OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (IOException, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
ModifyLock aLock( *this ); ModifyLock aLock( *this );
{ {
@@ -1266,20 +1266,20 @@ void SAL_CALL ODatabaseDocument::storeToURL( const OUString& _rURL, const Sequen
// XModifyBroadcaster // XModifyBroadcaster
void SAL_CALL ODatabaseDocument::addModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::addModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aModifyListeners.addInterface(_xListener); m_aModifyListeners.addInterface(_xListener);
} }
void SAL_CALL ODatabaseDocument::removeModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::removeModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aModifyListeners.removeInterface(_xListener); m_aModifyListeners.removeInterface(_xListener);
} }
// XModifiable // XModifiable
sal_Bool SAL_CALL ODatabaseDocument::isModified( ) throw (RuntimeException, std::exception) sal_Bool SAL_CALL ODatabaseDocument::isModified( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_pImpl->m_bModified; return m_pImpl->m_bModified;
} }
@@ -1341,7 +1341,7 @@ void SAL_CALL ODatabaseDocument::notifyDocumentEvent( const OUString& _EventName
throw IllegalArgumentException( OUString(), *this, 1 ); throw IllegalArgumentException( OUString(), *this, 1 );
// SYNCHRONIZED -> // SYNCHRONIZED ->
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
if ( !DocumentEvents::needsSynchronousNotification( _EventName ) ) if ( !DocumentEvents::needsSynchronousNotification( _EventName ) )
{ {
@@ -1481,7 +1481,7 @@ void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (Clo
// the checks for being disposed and the like // the checks for being disposed and the like
// SYNCHRONIZED -> // SYNCHRONIZED ->
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_bClosing = true; m_bClosing = true;
} }
// <- SYNCHRONIZED // <- SYNCHRONIZED
@@ -1517,13 +1517,13 @@ void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (Clo
void SAL_CALL ODatabaseDocument::addCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::addCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aCloseListener.addInterface(Listener); m_aCloseListener.addInterface(Listener);
} }
void SAL_CALL ODatabaseDocument::removeCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::removeCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aCloseListener.removeInterface(Listener); m_aCloseListener.removeInterface(Listener);
} }
@@ -1682,7 +1682,7 @@ Reference< XUIConfigurationManager > SAL_CALL ODatabaseDocument::getUIConfigurat
Reference< XUIConfigurationManager2 > ODatabaseDocument::getUIConfigurationManager2( ) throw (RuntimeException) Reference< XUIConfigurationManager2 > ODatabaseDocument::getUIConfigurationManager2( ) throw (RuntimeException)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
if ( !m_xUIConfigurationManager.is() ) if ( !m_xUIConfigurationManager.is() )
{ {
@@ -1717,7 +1717,7 @@ Reference< XUIConfigurationManager2 > ODatabaseDocument::getUIConfigurationManag
Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentSubStorage( const OUString& aStorageName, sal_Int32 nMode ) throw (RuntimeException, std::exception) Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentSubStorage( const OUString& aStorageName, sal_Int32 nMode ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
Reference< XDocumentSubStorageSupplier > xStorageAccess( m_pImpl->getDocumentSubStorageSupplier() ); Reference< XDocumentSubStorageSupplier > xStorageAccess( m_pImpl->getDocumentSubStorageSupplier() );
return xStorageAccess->getDocumentSubStorage( aStorageName, nMode ); return xStorageAccess->getDocumentSubStorage( aStorageName, nMode );
@@ -1881,7 +1881,7 @@ Reference< XDataSource > SAL_CALL ODatabaseDocument::getDataSource() throw (Runt
void SAL_CALL ODatabaseDocument::loadFromStorage( const Reference< XStorage >& /*xStorage*/, const Sequence< PropertyValue >& /*aMediaDescriptor*/ ) throw (IllegalArgumentException, DoubleInitializationException, IOException, Exception, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::loadFromStorage( const Reference< XStorage >& /*xStorage*/, const Sequence< PropertyValue >& /*aMediaDescriptor*/ ) throw (IllegalArgumentException, DoubleInitializationException, IOException, Exception, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
throw Exception( throw Exception(
DBACORE_RESSTRING( RID_STR_NO_EMBEDDING ), DBACORE_RESSTRING( RID_STR_NO_EMBEDDING ),
@@ -1891,13 +1891,13 @@ void SAL_CALL ODatabaseDocument::loadFromStorage( const Reference< XStorage >& /
void SAL_CALL ODatabaseDocument::storeToStorage( const Reference< XStorage >& _rxStorage, const Sequence< PropertyValue >& _rMediaDescriptor ) throw (IllegalArgumentException, IOException, Exception, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::storeToStorage( const Reference< XStorage >& _rxStorage, const Sequence< PropertyValue >& _rMediaDescriptor ) throw (IllegalArgumentException, IOException, Exception, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
impl_storeToStorage_throw( _rxStorage, _rMediaDescriptor, aGuard ); impl_storeToStorage_throw( _rxStorage, _rMediaDescriptor, aGuard );
} }
void SAL_CALL ODatabaseDocument::switchToStorage( const Reference< XStorage >& _rxNewRootStorage ) throw (IllegalArgumentException, IOException, Exception, RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::switchToStorage( const Reference< XStorage >& _rxNewRootStorage ) throw (IllegalArgumentException, IOException, Exception, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
Reference< XStorage > xNewRootStorage( m_pImpl->switchToStorage( _rxNewRootStorage ) ); Reference< XStorage > xNewRootStorage( m_pImpl->switchToStorage( _rxNewRootStorage ) );
@@ -1907,19 +1907,19 @@ void SAL_CALL ODatabaseDocument::switchToStorage( const Reference< XStorage >& _
Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentStorage( ) throw (IOException, Exception, RuntimeException, std::exception) Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentStorage( ) throw (IOException, Exception, RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_pImpl->getOrCreateRootStorage(); return m_pImpl->getOrCreateRootStorage();
} }
void SAL_CALL ODatabaseDocument::addStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::addStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aStorageListeners.addInterface( _Listener ); m_aStorageListeners.addInterface( _Listener );
} }
void SAL_CALL ODatabaseDocument::removeStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException, std::exception) void SAL_CALL ODatabaseDocument::removeStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
m_aStorageListeners.addInterface( _Listener ); m_aStorageListeners.addInterface( _Listener );
} }
@@ -1931,25 +1931,25 @@ Reference< XStorageBasedLibraryContainer > SAL_CALL ODatabaseDocument::getBasicL
Reference< XStorageBasedLibraryContainer > SAL_CALL ODatabaseDocument::getDialogLibraries() throw (RuntimeException, std::exception) Reference< XStorageBasedLibraryContainer > SAL_CALL ODatabaseDocument::getDialogLibraries() throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_pImpl->getLibraryContainer( false ); return m_pImpl->getLibraryContainer( false );
} }
sal_Bool SAL_CALL ODatabaseDocument::getAllowMacroExecution() throw (RuntimeException, std::exception) sal_Bool SAL_CALL ODatabaseDocument::getAllowMacroExecution() throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return m_pImpl->adjustMacroMode_AutoReject(); return m_pImpl->adjustMacroMode_AutoReject();
} }
Reference< XEmbeddedScripts > SAL_CALL ODatabaseDocument::getScriptContainer() throw (RuntimeException, std::exception) Reference< XEmbeddedScripts > SAL_CALL ODatabaseDocument::getScriptContainer() throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return this; return this;
} }
Reference< provider::XScriptProvider > SAL_CALL ODatabaseDocument::getScriptProvider( ) throw (RuntimeException, std::exception) Reference< provider::XScriptProvider > SAL_CALL ODatabaseDocument::getScriptProvider( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
Reference< XScriptProvider > xScriptProvider( m_xScriptProvider ); Reference< XScriptProvider > xScriptProvider( m_xScriptProvider );
if ( !xScriptProvider.is() ) if ( !xScriptProvider.is() )
@@ -1996,7 +1996,7 @@ struct CreateAny : public ::std::unary_function< Reference<XController>, Any>
// XModel2 // XModel2
Reference< XEnumeration > SAL_CALL ODatabaseDocument::getControllers( ) throw (RuntimeException, std::exception) Reference< XEnumeration > SAL_CALL ODatabaseDocument::getControllers( ) throw (RuntimeException, std::exception)
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
uno::Sequence< Any> aController( m_aControllers.size() ); uno::Sequence< Any> aController( m_aControllers.size() );
::std::transform( m_aControllers.begin(), m_aControllers.end(), aController.getArray(), CreateAny() ); ::std::transform( m_aControllers.begin(), m_aControllers.end(), aController.getArray(), CreateAny() );
return new ::comphelper::OAnyEnumeration(aController); return new ::comphelper::OAnyEnumeration(aController);
@@ -2021,7 +2021,7 @@ Reference< XController2 > SAL_CALL ODatabaseDocument::createViewController( cons
if ( !_Frame.is() ) if ( !_Frame.is() )
throw IllegalArgumentException( OUString(), *this, 3 ); throw IllegalArgumentException( OUString(), *this, 3 );
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
aGuard.clear(); aGuard.clear();
Reference< XController2 > xController( Reference< XController2 > xController(
@@ -2100,7 +2100,7 @@ void SAL_CALL ODatabaseDocument::setTitle( const OUString& sTitle )
throw (uno::RuntimeException, std::exception) throw (uno::RuntimeException, std::exception)
{ {
// SYNCHRONIZED -> // SYNCHRONIZED ->
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
impl_getTitleHelper_throw()->setTitle( sTitle ); impl_getTitleHelper_throw()->setTitle( sTitle );
m_aEventNotifier.notifyDocumentEventAsync( "OnTitleChanged" ); m_aEventNotifier.notifyDocumentEventAsync( "OnTitleChanged" );
// <- SYNCHRONIZED // <- SYNCHRONIZED
@@ -2111,7 +2111,7 @@ void SAL_CALL ODatabaseDocument::addTitleChangeListener( const uno::Reference< f
throw (uno::RuntimeException, std::exception) throw (uno::RuntimeException, std::exception)
{ {
// SYNCHRONIZED -> // SYNCHRONIZED ->
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW ); uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW );
xBroadcaster->addTitleChangeListener( xListener ); xBroadcaster->addTitleChangeListener( xListener );
@@ -2122,7 +2122,7 @@ void SAL_CALL ODatabaseDocument::removeTitleChangeListener( const uno::Reference
throw (uno::RuntimeException, std::exception) throw (uno::RuntimeException, std::exception)
{ {
// SYNCHRONIZED -> // SYNCHRONIZED ->
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW ); uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW );
xBroadcaster->removeTitleChangeListener( xListener ); xBroadcaster->removeTitleChangeListener( xListener );
@@ -2133,7 +2133,7 @@ void SAL_CALL ODatabaseDocument::removeTitleChangeListener( const uno::Reference
throw (lang::IllegalArgumentException, throw (lang::IllegalArgumentException,
uno::RuntimeException, std::exception ) uno::RuntimeException, std::exception )
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
return impl_getUntitledHelper_throw(xComponent)->leaseNumber (xComponent); return impl_getUntitledHelper_throw(xComponent)->leaseNumber (xComponent);
} }
@@ -2142,7 +2142,7 @@ void SAL_CALL ODatabaseDocument::releaseNumber( ::sal_Int32 nNumber )
throw (lang::IllegalArgumentException, throw (lang::IllegalArgumentException,
uno::RuntimeException, std::exception ) uno::RuntimeException, std::exception )
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
impl_getUntitledHelper_throw()->releaseNumber (nNumber); impl_getUntitledHelper_throw()->releaseNumber (nNumber);
} }
@@ -2151,7 +2151,7 @@ void SAL_CALL ODatabaseDocument::releaseNumberForComponent( const uno::Reference
throw (lang::IllegalArgumentException, throw (lang::IllegalArgumentException,
uno::RuntimeException, std::exception ) uno::RuntimeException, std::exception )
{ {
DocumentGuard aGuard( *this ); DocumentGuard aGuard(*this, DocumentGuard::DefaultMethod);
impl_getUntitledHelper_throw(xComponent)->releaseNumberForComponent (xComponent); impl_getUntitledHelper_throw(xComponent)->releaseNumberForComponent (xComponent);
} }

View File

@@ -631,18 +631,49 @@ private:
class DocumentGuard : private ModelMethodGuard class DocumentGuard : private ModelMethodGuard
{ {
public: public:
enum MethodType enum __InitMethod
{ {
// a method which is to initialize the document // a method which is to initialize the document
InitMethod, InitMethod,
};
enum __DefaultMethod
{
// a default method // a default method
DefaultMethod, DefaultMethod
};
enum __MethodUsedDuringInit
{
// a method which is used (externally) during the initialization phase // a method which is used (externally) during the initialization phase
MethodUsedDuringInit, MethodUsedDuringInit
};
enum __MethodWithoutInit
{
// a method which does not need initialization - use with care! // a method which does not need initialization - use with care!
MethodWithoutInit MethodWithoutInit
}; };
/** constructs the guard
@param _document
the ODatabaseDocument instance
@throws ::com::sun::star::lang::DisposedException
If the given component is already disposed
@throws ::com::sun::star::lang::NotInitializedException
if the given component is not yet initialized
*/
DocumentGuard(const ODatabaseDocument& _document, __DefaultMethod)
: ModelMethodGuard(_document)
, m_document(_document )
{
m_document.checkInitialized();
}
/** constructs the guard /** constructs the guard
@param _document @param _document
@@ -652,24 +683,46 @@ public:
If the given component is already disposed If the given component is already disposed
@throws ::com::sun::star::frame::DoubleInitializationException @throws ::com::sun::star::frame::DoubleInitializationException
if _eType is InitMethod, and the given component is already initialized, or currently being initialized. if the given component is already initialized, or currently being initialized.
*/
DocumentGuard(const ODatabaseDocument& _document, __InitMethod)
: ModelMethodGuard(_document)
, m_document(_document)
{
m_document.checkNotInitialized();
}
/** constructs the guard
@param _document
the ODatabaseDocument instance
@throws ::com::sun::star::lang::DisposedException
If the given component is already disposed
@throws ::com::sun::star::lang::NotInitializedException @throws ::com::sun::star::lang::NotInitializedException
if _eType is DefaultMethod, and the given component is not yet initialized; or if _eType if the component is still uninitialized, and not in the initialization
is MethodUsedDuringInit, and the component is still uninitialized, and not in the initialization
phase currently. phase currently.
*/ */
DocumentGuard( const ODatabaseDocument& _document, MethodType _eType = DefaultMethod ) DocumentGuard(const ODatabaseDocument& _document, __MethodUsedDuringInit)
:ModelMethodGuard( _document ) : ModelMethodGuard(_document)
,m_document( _document ) , m_document(_document)
{
m_document.checkNotUninitilized();
}
/** constructs the guard
@param _document
the ODatabaseDocument instance
@throws ::com::sun::star::lang::DisposedException
If the given component is already disposed
*/
DocumentGuard(const ODatabaseDocument& _document, __MethodWithoutInit)
: ModelMethodGuard( _document )
, m_document( _document )
{ {
switch ( _eType )
{
case InitMethod: m_document.checkNotInitialized(); break;
case DefaultMethod: m_document.checkInitialized(); break;
case MethodUsedDuringInit: m_document.checkNotUninitilized(); break;
case MethodWithoutInit: break;
}
} }
~DocumentGuard() ~DocumentGuard()