basctl/source/basicide/baside2b.cxx            |    2 -
 basctl/source/basicide/baside3.cxx             |    2 -
 basctl/source/basicide/basides1.cxx            |    4 +-
 basctl/source/basicide/macrodlg.cxx            |    4 +-
 basctl/source/basicide/moduldl2.cxx            |   28 +++++++-------
 basctl/source/basicide/moduldlg.cxx            |   16 ++++----
 basctl/source/basicide/scriptdocument.cxx      |   14 +++----
 basctl/source/inc/scriptdocument.hxx           |    4 +-
 basic/source/basmgr/basicmanagerrepository.cxx |   22 +++++------
 basic/source/basmgr/basmgr.cxx                 |    4 +-
 include/basic/basmgr.hxx                       |   14 +++----
 include/sfx2/app.hxx                           |    6 +--
 include/sfx2/objsh.hxx                         |    6 +--
 sfx2/source/appl/appbas.cxx                    |    6 +--
 sfx2/source/appl/appbaslib.cxx                 |   17 ++------
 sfx2/source/doc/objstor.cxx                    |   50 ++++++++++++++-----------
 sfx2/source/doc/objxtor.cxx                    |   11 ++---
 sfx2/source/doc/sfxbasemodel.cxx               |    4 +-
 sfx2/source/inc/appbaslib.hxx                  |    2 -
 sfx2/source/inc/objshimp.hxx                   |    4 +-
 sw/source/filter/html/htmlbas.cxx              |    6 +--
 21 files changed, 112 insertions(+), 114 deletions(-)

New commits:
commit 216707c79eb9af6151c31d5cfeea6c82dbcf0bd9
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Wed Feb 5 10:22:46 2025 +0000
Commit:     Miklos Vajna <vmik...@collabora.com>
CommitDate: Thu Feb 6 08:43:58 2025 +0100

    avoid uno casting cost, and simplify
    
    these are always XStorageBasedLibraryContainers, so transport
    around as that and can avoid casting and some expensive throw/catches
    
    Change-Id: I772efceea3bb4f38d70be0497345f5f81173494c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/181150
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Miklos Vajna <vmik...@collabora.com>

diff --git a/basctl/source/basicide/baside2b.cxx 
b/basctl/source/basicide/baside2b.cxx
index 33cbbc4787ff..b99054c8338c 100644
--- a/basctl/source/basicide/baside2b.cxx
+++ b/basctl/source/basicide/baside2b.cxx
@@ -1091,7 +1091,7 @@ void EditorWindow::CreateEditEngine()
     // set readonly mode for readonly libraries
     ScriptDocument aDocument(rModulWindow.GetDocument());
     OUString aOULibName(rModulWindow.GetLibName());
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ) );
     if (xModLibContainer.is()
      && xModLibContainer->hasByName(aOULibName)
      && xModLibContainer->isLibraryReadOnly(aOULibName))
diff --git a/basctl/source/basicide/baside3.cxx 
b/basctl/source/basicide/baside3.cxx
index 4a6b1dfbfb5c..481922d2d8aa 100644
--- a/basctl/source/basicide/baside3.cxx
+++ b/basctl/source/basicide/baside3.cxx
@@ -95,7 +95,7 @@ DialogWindow::DialogWindow(DialogWindowLayout* pParent, 
ScriptDocument const& rD
     SetHelpId( HID_BASICIDE_DIALOGWINDOW );
 
     // set readonly mode for readonly libraries
-    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
GetDocument().getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
GetDocument().getLibraryContainer( E_DIALOGS ) );
     if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && 
xDlgLibContainer->isLibraryReadOnly( aLibName ) )
         SetReadOnly(true);
 
diff --git a/basctl/source/basicide/basides1.cxx 
b/basctl/source/basicide/basides1.cxx
index 9ef9f75e3f40..22e0fcaa5ca3 100644
--- a/basctl/source/basicide/basides1.cxx
+++ b/basctl/source/basicide/basides1.cxx
@@ -1213,8 +1213,8 @@ void Shell::GetState(SfxItemSet &rSet)
             case SID_BASICIDE_NEWMODULE:
             case SID_BASICIDE_NEWDIALOG:
             {
-                Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-                Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+                Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
+                Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
                 if ( ( xModLibContainer.is() && xModLibContainer->hasByName( 
m_aCurLibName ) && xModLibContainer->isLibraryReadOnly( m_aCurLibName ) ) ||
                      ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( 
m_aCurLibName ) && xDlgLibContainer->isLibraryReadOnly( m_aCurLibName ) ) )
                     rSet.DisableItem(nWh);
diff --git a/basctl/source/basicide/macrodlg.cxx 
b/basctl/source/basicide/macrodlg.cxx
index 6b4afb79f772..850e93e458af 100644
--- a/basctl/source/basicide/macrodlg.cxx
+++ b/basctl/source/basicide/macrodlg.cxx
@@ -383,8 +383,8 @@ void MacroChooser::CheckButtons()
     {
         const ScriptDocument& aDocument( aDesc.GetDocument() );
         const OUString& aOULibName( aDesc.GetLibName() );
-        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ) );
+        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ) );
         if ( ( xModLibContainer.is() && xModLibContainer->hasByName( 
aOULibName ) && xModLibContainer->isLibraryReadOnly( aOULibName ) ) ||
                 ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( 
aOULibName ) && xDlgLibContainer->isLibraryReadOnly( aOULibName ) ) )
         {
diff --git a/basctl/source/basicide/moduldl2.cxx 
b/basctl/source/basicide/moduldl2.cxx
index 1221b0094218..7d3be6bbb39e 100644
--- a/basctl/source/basicide/moduldl2.cxx
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -255,8 +255,8 @@ IMPL_LINK(LibPage, EditingEntryHdl, const weld::TreeIter&, 
rIter, bool)
     }
 
     // check, if library is readonly
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
+    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
     if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) && 
xModLibContainer->isLibraryReadOnly( aLibName ) && 
!xModLibContainer->isLibraryLink( aLibName ) ) ||
          ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && 
xDlgLibContainer->isLibraryReadOnly( aLibName ) && 
!xDlgLibContainer->isLibraryLink( aLibName ) ) )
     {
@@ -298,11 +298,11 @@ IMPL_LINK(LibPage, EditedEntryHdl, const IterString&, 
rIterString, bool)
     {
         try
         {
-            Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+            Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
             if ( xModLibContainer.is() )
                 xModLibContainer->renameLibrary( aOldName, sNewName );
 
-            Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+            Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
             if ( xDlgLibContainer.is() )
                 xDlgLibContainer->renameLibrary( aOldName, sNewName );
 
@@ -359,8 +359,8 @@ void LibPage::CheckButtons()
         return;
 
     OUString aLibName = m_xLibBox->get_text(*xCur, 0);
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
+    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
 
     if ( m_eCurLocation == LIBRARY_LOCATION_SHARE )
     {
@@ -684,8 +684,8 @@ void LibPage::InsertLib()
                 if (rView.get_toggle(nLib) == TRISTATE_TRUE)
                 {
                     OUString aLibName(rView.get_text(nLib));
-                    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-                    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+                    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
+                    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
 
                     // check, if the library is already existing
                     if ( ( xModLibContainer.is() && 
xModLibContainer->hasByName( aLibName ) ) ||
@@ -911,7 +911,7 @@ void LibPage::Export()
     OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0));
 
     // Password verification
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
 
     if ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) && 
!xModLibContainer->isLibraryLoaded( aLibName ) )
     {
@@ -1137,8 +1137,8 @@ void LibPage::DeleteCurrent()
 
     // check, if library is link
     bool bIsLibraryLink = false;
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
+    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
m_aCurDocument.getLibraryContainer( E_DIALOGS ) );
     if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName ) && 
xModLibContainer->isLibraryLink( aLibName ) ) ||
          ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName ) && 
xDlgLibContainer->isLibraryLink( aLibName ) ) )
     {
@@ -1230,7 +1230,7 @@ void LibPage::ImpInsertLibEntry( const OUString& 
rLibName, int nPos )
 {
     // check, if library is password protected
     bool bProtected = false;
-    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+    Reference< script::XLibraryContainer2 > xModLibContainer( 
m_aCurDocument.getLibraryContainer( E_SCRIPTS ) );
     if ( xModLibContainer.is() && xModLibContainer->hasByName( rLibName ) )
     {
         Reference< script::XLibraryContainerPassword > xPasswd( 
xModLibContainer, UNO_QUERY );
@@ -1324,9 +1324,9 @@ void createLibImpl(weld::Window* pWin, const 
ScriptDocument& rDocument,
             // cannot be renamed/moved since the 
SfxLibraryContainer::renameLibrary
             // moves the folders/files on the file system
             Reference<script::XLibraryContainer2> xModLibContainer(
-                rDocument.getLibraryContainer(E_SCRIPTS), UNO_QUERY);
+                rDocument.getLibraryContainer(E_SCRIPTS));
             Reference<script::XLibraryContainer2> xDlgLibContainer(
-                rDocument.getLibraryContainer(E_DIALOGS), UNO_QUERY);
+                rDocument.getLibraryContainer(E_DIALOGS));
             Reference<script::XPersistentLibraryContainer> 
xModPersLibContainer(xModLibContainer,
                                                                                
 UNO_QUERY);
             if (xModPersLibContainer.is())
diff --git a/basctl/source/basicide/moduldlg.cxx 
b/basctl/source/basicide/moduldlg.cxx
index 4b67e320b5ac..b1c7580d9dad 100644
--- a/basctl/source/basicide/moduldlg.cxx
+++ b/basctl/source/basicide/moduldlg.cxx
@@ -64,8 +64,8 @@ IMPL_LINK(ObjectPage, EditingEntryHdl, const weld::TreeIter&, 
rEntry, bool)
         EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(&rEntry);
         const ScriptDocument& aDocument( aDesc.GetDocument() );
         const OUString& aLibName( aDesc.GetLibName() );
-        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ) );
+        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ) );
         if ( !( ( xModLibContainer.is() && xModLibContainer->hasByName( 
aLibName ) && xModLibContainer->isLibraryReadOnly( aLibName ) ) ||
                 ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( 
aLibName ) && xDlgLibContainer->isLibraryReadOnly( aLibName ) ) ) )
         {
@@ -284,8 +284,8 @@ private:
                     const ScriptDocument& aDocument( aDesc.GetDocument() );
                     const OUString& aLibName( aDesc.GetLibName() );
                     // allow MOVE mode only for libraries, which are not 
readonly
-                    Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-                    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+                    Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ) );
+                    Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ) );
                     if ( !( ( xModLibContainer.is() && 
xModLibContainer->hasByName( aLibName ) && xModLibContainer->isLibraryReadOnly( 
aLibName ) ) ||
                             ( xDlgLibContainer.is() && 
xDlgLibContainer->hasByName( aLibName ) && xDlgLibContainer->isLibraryReadOnly( 
aLibName ) ) ) )
                     {
@@ -356,7 +356,7 @@ private:
             const OUString& aDestLibName = aDestDesc.GetLibName();
 
             // check if module library is not loaded, readonly or password 
protected
-            Reference< script::XLibraryContainer2 > xModLibContainer( 
rDestDoc.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
+            Reference< script::XLibraryContainer2 > xModLibContainer( 
rDestDoc.getLibraryContainer( E_SCRIPTS ) );
             if ( xModLibContainer.is() && xModLibContainer->hasByName( 
aDestLibName ) )
             {
                 if ( !xModLibContainer->isLibraryLoaded( aDestLibName ) )
@@ -371,7 +371,7 @@ private:
             }
 
             // check if dialog library is not loaded or readonly
-            Reference< script::XLibraryContainer2 > xDlgLibContainer( 
rDestDoc.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+            Reference< script::XLibraryContainer2 > xDlgLibContainer( 
rDestDoc.getLibraryContainer( E_DIALOGS ) );
             if ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( 
aDestLibName ) )
             {
                 if ( !xDlgLibContainer->isLibraryLoaded( aDestLibName ) )
@@ -648,8 +648,8 @@ void ObjectPage::CheckButtons()
     bool bReadOnly = false;
     if ( nDepth > 0 )
     {
-        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ), UNO_QUERY );
-        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ), UNO_QUERY );
+        Reference< script::XLibraryContainer2 > xModLibContainer( 
aDocument.getLibraryContainer( E_SCRIPTS ) );
+        Reference< script::XLibraryContainer2 > xDlgLibContainer( 
aDocument.getLibraryContainer( E_DIALOGS ) );
         if ( ( xModLibContainer.is() && xModLibContainer->hasByName( aLibName 
) && xModLibContainer->isLibraryReadOnly( aLibName ) ) ||
              ( xDlgLibContainer.is() && xDlgLibContainer->hasByName( aLibName 
) && xDlgLibContainer->isLibraryReadOnly( aLibName ) ) )
         {
diff --git a/basctl/source/basicide/scriptdocument.cxx 
b/basctl/source/basicide/scriptdocument.cxx
index c435d7a57da7..bf2260f3c83a 100644
--- a/basctl/source/basicide/scriptdocument.cxx
+++ b/basctl/source/basicide/scriptdocument.cxx
@@ -75,6 +75,7 @@ namespace basctl
     using ::com::sun::star::frame::XModel;
     using ::com::sun::star::beans::XPropertySet;
     using ::com::sun::star::script::XLibraryContainer;
+    using ::com::sun::star::script::XStorageBasedLibraryContainer;
     using ::com::sun::star::uno::UNO_QUERY_THROW;
     using ::com::sun::star::uno::UNO_SET_THROW;
     using ::com::sun::star::uno::Exception;
@@ -206,7 +207,7 @@ namespace basctl
                         getDocumentRef() const { return m_xDocument; }
 
         /// returns a library container belonging to the document
-        Reference< XLibraryContainer >
+        Reference< XStorageBasedLibraryContainer >
                     getLibraryContainer( LibraryContainerType _eType ) const;
 
         /// determines whether a given library is part of the shared 
installation
@@ -332,23 +333,22 @@ namespace basctl
         return m_bValid;
     }
 
-    Reference< XLibraryContainer > ScriptDocument::Impl::getLibraryContainer( 
LibraryContainerType _eType ) const
+    Reference<XStorageBasedLibraryContainer> 
ScriptDocument::Impl::getLibraryContainer( LibraryContainerType _eType ) const
     {
         OSL_ENSURE( isValid(), "ScriptDocument::Impl::getLibraryContainer: 
invalid!" );
 
-        Reference< XLibraryContainer > xContainer;
+        Reference<XStorageBasedLibraryContainer> xContainer;
         if ( !isValid() )
             return xContainer;
 
         try
         {
             if ( isApplication() )
-                xContainer.set( _eType == E_SCRIPTS ? 
SfxGetpApp()->GetBasicContainer() : SfxGetpApp()->GetDialogContainer(), 
UNO_QUERY_THROW );
+                xContainer.set(_eType == E_SCRIPTS ? 
SfxGetpApp()->GetBasicContainer() : SfxGetpApp()->GetDialogContainer());
             else
             {
                 xContainer.set(
-                    _eType == E_SCRIPTS ? m_xScriptAccess->getBasicLibraries() 
: m_xScriptAccess->getDialogLibraries(),
-                    UNO_QUERY_THROW );
+                    _eType == E_SCRIPTS ? m_xScriptAccess->getBasicLibraries() 
: m_xScriptAccess->getDialogLibraries());
             }
         }
         catch( const Exception& )
@@ -1160,7 +1160,7 @@ namespace basctl
     }
 
 
-    Reference< XLibraryContainer > ScriptDocument::getLibraryContainer( 
LibraryContainerType _eType ) const
+    Reference< XStorageBasedLibraryContainer > 
ScriptDocument::getLibraryContainer( LibraryContainerType _eType ) const
     {
         return m_pImpl->getLibraryContainer( _eType );
     }
diff --git a/basctl/source/inc/scriptdocument.hxx 
b/basctl/source/inc/scriptdocument.hxx
index da7f2b50d307..7fd5b9bcb7a8 100644
--- a/basctl/source/inc/scriptdocument.hxx
+++ b/basctl/source/inc/scriptdocument.hxx
@@ -19,7 +19,7 @@
 
 #pragma once
 
-#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XStorageBasedLibraryContainer.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/task/XStatusIndicator.hpp>
 #include <com/sun/star/io/XInputStreamProvider.hpp>
@@ -209,7 +209,7 @@ namespace basctl
 
             If the document is not valid, <NULL/> is returned.
         */
-        css::uno::Reference< css::script::XLibraryContainer >
+        css::uno::Reference< css::script::XStorageBasedLibraryContainer >
                     getLibraryContainer( LibraryContainerType _eType ) const;
 
         /** determines whether there exists a library of the given type, with 
the given name
diff --git a/basic/source/basmgr/basicmanagerrepository.cxx 
b/basic/source/basmgr/basicmanagerrepository.cxx
index bf0c6ee53a46..d942927ebd27 100644
--- a/basic/source/basmgr/basicmanagerrepository.cxx
+++ b/basic/source/basmgr/basicmanagerrepository.cxx
@@ -55,7 +55,7 @@ namespace basic
     using ::com::sun::star::uno::XInterface;
     using ::com::sun::star::uno::UNO_QUERY;
     using ::com::sun::star::embed::XStorage;
-    using ::com::sun::star::script::XPersistentLibraryContainer;
+    using ::com::sun::star::script::XStorageBasedLibraryContainer;
     using ::com::sun::star::uno::UNO_QUERY_THROW;
     using ::com::sun::star::uno::Exception;
     using ::com::sun::star::document::XStorageBasedDocument;
@@ -168,15 +168,15 @@ namespace basic
         */
         static bool impl_getDocumentLibraryContainers_nothrow(
                     const Reference< XModel >& _rxDocument,
-                    Reference< XPersistentLibraryContainer >& 
_out_rxBasicLibraries,
-                    Reference< XPersistentLibraryContainer >& 
_out_rxDialogLibraries
+                    Reference<XStorageBasedLibraryContainer>& 
_out_rxBasicLibraries,
+                    Reference<XStorageBasedLibraryContainer>& 
_out_rxDialogLibraries
                 );
 
         /** initializes the given library containers, which belong to a 
document
         */
         static void impl_initDocLibraryContainers_nothrow(
-                    const Reference< XPersistentLibraryContainer >& 
_rxBasicLibraries,
-                    const Reference< XPersistentLibraryContainer >& 
_rxDialogLibraries
+                    const Reference<XStorageBasedLibraryContainer>& 
_rxBasicLibraries,
+                    const Reference<XStorageBasedLibraryContainer>& 
_rxDialogLibraries
                 );
 
         // OEventListenerAdapter overridables
@@ -374,7 +374,7 @@ namespace basic
         return m_aStore.find(xNormalized) != m_aStore.end();
     }
 
-    void ImplRepository::impl_initDocLibraryContainers_nothrow( const 
Reference< XPersistentLibraryContainer >& _rxBasicLibraries, const Reference< 
XPersistentLibraryContainer >& _rxDialogLibraries )
+    void ImplRepository::impl_initDocLibraryContainers_nothrow( const 
Reference<XStorageBasedLibraryContainer>& _rxBasicLibraries, const 
Reference<XStorageBasedLibraryContainer>& _rxDialogLibraries )
     {
         OSL_PRECOND( _rxBasicLibraries.is() && _rxDialogLibraries.is(),
             "ImplRepository::impl_initDocLibraryContainers_nothrow: illegal 
library containers, this will crash!" );
@@ -413,8 +413,8 @@ namespace basic
             // the document is not able to provide the storage it is based on.
             return false;
         }
-        Reference< XPersistentLibraryContainer > xBasicLibs;
-        Reference< XPersistentLibraryContainer > xDialogLibs;
+        Reference<XStorageBasedLibraryContainer> xBasicLibs;
+        Reference<XStorageBasedLibraryContainer> xDialogLibs;
         if ( !impl_getDocumentLibraryContainers_nothrow( _rxDocumentModel, 
xBasicLibs, xDialogLibs ) )
         {
             m_aStore.erase(location);
@@ -519,15 +519,15 @@ namespace basic
 
 
     bool ImplRepository::impl_getDocumentLibraryContainers_nothrow( const 
Reference< XModel >& _rxDocument,
-        Reference< XPersistentLibraryContainer >& _out_rxBasicLibraries, 
Reference< XPersistentLibraryContainer >& _out_rxDialogLibraries )
+        Reference<XStorageBasedLibraryContainer>& _out_rxBasicLibraries, 
Reference<XStorageBasedLibraryContainer>& _out_rxDialogLibraries )
     {
         _out_rxBasicLibraries.clear();
         _out_rxDialogLibraries.clear();
         try
         {
             Reference< XEmbeddedScripts > xScripts( _rxDocument, 
UNO_QUERY_THROW );
-            _out_rxBasicLibraries.set( xScripts->getBasicLibraries(), 
UNO_QUERY_THROW );
-            _out_rxDialogLibraries.set( xScripts->getDialogLibraries(), 
UNO_QUERY_THROW );
+            _out_rxBasicLibraries.set( xScripts->getBasicLibraries() );
+            _out_rxDialogLibraries.set( xScripts->getDialogLibraries() );
         }
         catch( const Exception& )
         {
diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx
index c619bbf1fb6a..df7488b00f35 100644
--- a/basic/source/basmgr/basmgr.cxx
+++ b/basic/source/basmgr/basmgr.cxx
@@ -513,12 +513,12 @@ static void copyToLibraryContainer( StarBASIC* pBasic, 
const LibraryContainerInf
     }
 }
 
-const uno::Reference< script::XPersistentLibraryContainer >& 
BasicManager::GetDialogLibraryContainer()  const
+const uno::Reference< script::XStorageBasedLibraryContainer >& 
BasicManager::GetDialogLibraryContainer()  const
 {
     return maContainerInfo.mxDialogCont;
 }
 
-const uno::Reference< script::XPersistentLibraryContainer >& 
BasicManager::GetScriptLibraryContainer()  const
+const uno::Reference< script::XStorageBasedLibraryContainer >& 
BasicManager::GetScriptLibraryContainer()  const
 {
     return maContainerInfo.mxScriptCont;
 }
diff --git a/include/basic/basmgr.hxx b/include/basic/basmgr.hxx
index 1ef4f77cf16e..82991d122c0e 100644
--- a/include/basic/basmgr.hxx
+++ b/include/basic/basmgr.hxx
@@ -30,7 +30,7 @@
 
 namespace basic { class SfxScriptLibraryContainer; }
 namespace com::sun::star::script { class XLibraryContainer; }
-namespace com::sun::star::script { class XPersistentLibraryContainer; }
+namespace com::sun::star::script { class XStorageBasedLibraryContainer; }
 namespace com::sun::star::script { class XStarBasicAccess; }
 
 class BasicManager;
@@ -71,8 +71,8 @@ namespace basic { class ImplRepository; }
 
 struct LibraryContainerInfo
 {
-    css::uno::Reference< css::script::XPersistentLibraryContainer > 
mxScriptCont;
-    css::uno::Reference< css::script::XPersistentLibraryContainer > 
mxDialogCont;
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer > 
mxScriptCont;
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer > 
mxDialogCont;
     basic::SfxScriptLibraryContainer* mpOldBasicPassword;
 
     LibraryContainerInfo()
@@ -82,8 +82,8 @@ struct LibraryContainerInfo
 
     LibraryContainerInfo
     (
-        css::uno::Reference< css::script::XPersistentLibraryContainer > 
xScriptCont,
-        css::uno::Reference< css::script::XPersistentLibraryContainer > 
xDialogCont,
+        css::uno::Reference< css::script::XStorageBasedLibraryContainer > 
xScriptCont,
+        css::uno::Reference< css::script::XStorageBasedLibraryContainer > 
xDialogCont,
         basic::SfxScriptLibraryContainer* pOldBasicPassword
     )
         : mxScriptCont(std::move( xScriptCont ))
@@ -149,9 +149,9 @@ public:
     */
     void            SetLibraryContainerInfo( const LibraryContainerInfo& rInfo 
);
 
-    const css::uno::Reference< css::script::XPersistentLibraryContainer >&
+    const css::uno::Reference< css::script::XStorageBasedLibraryContainer >&
                     GetDialogLibraryContainer()  const;
-    const css::uno::Reference< css::script::XPersistentLibraryContainer >&
+    const css::uno::Reference< css::script::XStorageBasedLibraryContainer >&
                     GetScriptLibraryContainer()  const;
 
     bool            LoadLib( sal_uInt16 nLib );
diff --git a/include/sfx2/app.hxx b/include/sfx2/app.hxx
index 96bce367fd75..276ef22f1b6b 100644
--- a/include/sfx2/app.hxx
+++ b/include/sfx2/app.hxx
@@ -33,7 +33,7 @@
 #include <sfx2/shell.hxx>
 
 namespace com::sun::star::frame { class XFrame; }
-namespace com::sun::star::script { class XLibraryContainer; }
+namespace com::sun::star::script { class XStorageBasedLibraryContainer; }
 
 namespace weld { class Window; }
 
@@ -148,8 +148,8 @@ public:
     static ErrCode              CallAppBasic( const OUString& i_macroName )
                                 { return CallBasic( i_macroName, 
SfxApplication::GetBasicManager(), nullptr, nullptr ); }
     static BasicManager*        GetBasicManager();
-    css::script::XLibraryContainer * GetDialogContainer();
-    css::script::XLibraryContainer * GetBasicContainer();
+    css::script::XStorageBasedLibraryContainer* GetDialogContainer();
+    css::script::XStorageBasedLibraryContainer* GetBasicContainer();
     static StarBASIC*           GetBasic();
     void                        SaveBasicAndDialogContainer() const;
 
diff --git a/include/sfx2/objsh.hxx b/include/sfx2/objsh.hxx
index 797fcb213f1c..0fbe13c0ff2f 100644
--- a/include/sfx2/objsh.hxx
+++ b/include/sfx2/objsh.hxx
@@ -102,7 +102,7 @@ namespace com::sun::star::embed { class XStorage; }
 namespace com::sun::star::frame { class XModel; }
 namespace com::sun::star::graphic { class XGraphic; }
 namespace com::sun::star::io { class XStream; }
-namespace com::sun::star::script { class XLibraryContainer; }
+namespace com::sun::star::script { class XStorageBasedLibraryContainer ; }
 namespace com::sun::star::security { class XCertificate; }
 namespace com::sun::star::security { class XDocumentDigitalSignatures; }
 namespace com::sun::star::security { struct DocumentSignatureInformation; }
@@ -570,9 +570,9 @@ public:
     sal_uInt16                  GetAutoStyleFilterIndex() const;
     bool                        HasBasic() const;
     BasicManager*               GetBasicManager() const;
-    css::uno::Reference< css::script::XLibraryContainer >
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer >
                                 GetBasicContainer();
-    css::uno::Reference< css::script::XLibraryContainer >
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer >
                                 GetDialogContainer();
     StarBASIC*                  GetBasic() const;
 
diff --git a/sfx2/source/appl/appbas.cxx b/sfx2/source/appl/appbas.cxx
index 1cedcd978540..c022338cca98 100644
--- a/sfx2/source/appl/appbas.cxx
+++ b/sfx2/source/appl/appbas.cxx
@@ -23,7 +23,7 @@
 
 #include <cassert>
 
-#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XStorageBasedLibraryContainer.hpp>
 #include <officecfg/Office/Common.hxx>
 #include <svl/intitem.hxx>
 #include <svl/eitem.hxx>
@@ -71,7 +71,7 @@ BasicManager* SfxApplication::GetBasicManager()
 #endif
 }
 
-XLibraryContainer * SfxApplication::GetDialogContainer()
+XStorageBasedLibraryContainer* SfxApplication::GetDialogContainer()
 {
 #if !HAVE_FEATURE_SCRIPTING
     return nullptr;
@@ -85,7 +85,7 @@ XLibraryContainer * SfxApplication::GetDialogContainer()
 }
 
 
-XLibraryContainer * SfxApplication::GetBasicContainer()
+XStorageBasedLibraryContainer* SfxApplication::GetBasicContainer()
 {
 #if !HAVE_FEATURE_SCRIPTING
     return nullptr;
diff --git a/sfx2/source/appl/appbaslib.cxx b/sfx2/source/appl/appbaslib.cxx
index bfeafa1b1b60..3926eee36f84 100644
--- a/sfx2/source/appl/appbaslib.cxx
+++ b/sfx2/source/appl/appbaslib.cxx
@@ -68,15 +68,8 @@ void SfxBasicManagerHolder::reset( BasicManager* 
_pBasicManager )
         return;
 
     StartListening(*mpBasicManager);
-    try
-    {
-        mxBasicContainer.set( mpBasicManager->GetScriptLibraryContainer(), 
UNO_QUERY_THROW );
-        mxDialogContainer.set( mpBasicManager->GetDialogLibraryContainer(), 
UNO_QUERY_THROW  );
-    }
-    catch( const Exception& )
-    {
-        DBG_UNHANDLED_EXCEPTION("sfx.appl");
-    }
+    mxBasicContainer.set( mpBasicManager->GetScriptLibraryContainer() );
+    mxDialogContainer.set( mpBasicManager->GetDialogLibraryContainer()  );
 #endif
 }
 
@@ -131,7 +124,7 @@ void SfxBasicManagerHolder::storeLibrariesToStorage( const 
Reference< XStorage >
 #endif
 }
 
-XLibraryContainer * SfxBasicManagerHolder::getLibraryContainer( ContainerType 
_eType )
+XStorageBasedLibraryContainer* SfxBasicManagerHolder::getLibraryContainer( 
ContainerType _eType )
 {
     OSL_PRECOND( isValid(), "SfxBasicManagerHolder::getLibraryContainer: not 
initialized!" );
 
@@ -168,7 +161,7 @@ 
com_sun_star_comp_sfx2_ApplicationDialogLibraryContainer_get_implementation(
     css::uno::Sequence<css::uno::Any> const &)
 {
     SfxApplication::GetBasicManager();
-    css::uno::XInterface* pRet = SfxGetpApp()->GetDialogContainer();
+    css::uno::XInterface* pRet = 
static_cast<css::script::XLibraryContainer*>(SfxGetpApp()->GetDialogContainer());
     pRet->acquire();
     return pRet;
 }
@@ -180,7 +173,7 @@ 
com_sun_star_comp_sfx2_ApplicationScriptLibraryContainer_get_implementation(
     css::uno::Sequence<css::uno::Any> const &)
 {
     SfxApplication::GetBasicManager();
-    css::uno::XInterface* pRet = SfxGetpApp()->GetBasicContainer();
+    css::uno::XInterface* pRet = 
static_cast<css::script::XLibraryContainer*>(SfxGetpApp()->GetBasicContainer());
     pRet->acquire();
     return pRet;
 }
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 489221257dc0..d181461e8924 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -1976,21 +1976,24 @@ bool SfxObjectShell::ConnectTmpStorage_Impl(
             {
                 pImpl->aBasicManager.setStorage( xTmpStorage );
 
-                // Get rid of this workaround after issue i113914 is fixed
-                try
+                if (pImpl->xBasicLibraries)
                 {
-                    uno::Reference< script::XStorageBasedLibraryContainer > 
xBasicLibraries( pImpl->xBasicLibraries, uno::UNO_QUERY_THROW );
-                    xBasicLibraries->setRootStorage( xTmpStorage );
+                    try
+                    {
+                        pImpl->xBasicLibraries->setRootStorage( xTmpStorage );
+                    }
+                    catch( uno::Exception& )
+                    {}
                 }
-                catch( uno::Exception& )
-                {}
-                try
+                if (pImpl->xDialogLibraries)
                 {
-                    uno::Reference< script::XStorageBasedLibraryContainer > 
xDialogLibraries( pImpl->xDialogLibraries, uno::UNO_QUERY_THROW );
-                    xDialogLibraries->setRootStorage( xTmpStorage );
+                    try
+                    {
+                        pImpl->xDialogLibraries->setRootStorage( xTmpStorage );
+                    }
+                    catch( uno::Exception& )
+                    {}
                 }
-                catch( uno::Exception& )
-                {}
             }
         }
         catch( uno::Exception& )
@@ -2140,21 +2143,24 @@ bool SfxObjectShell::DoSaveCompleted( SfxMedium* 
pNewMed, bool bRegisterRecent )
         // Set storage in document library containers
         pImpl->aBasicManager.setStorage( xStorage );
 
-        // Get rid of this workaround after issue i113914 is fixed
-        try
+        if (pImpl->xBasicLibraries)
         {
-            uno::Reference< script::XStorageBasedLibraryContainer > 
xBasicLibraries( pImpl->xBasicLibraries, uno::UNO_QUERY_THROW );
-            xBasicLibraries->setRootStorage( xStorage );
+            try
+            {
+                pImpl->xBasicLibraries->setRootStorage( xStorage );
+            }
+            catch( uno::Exception& )
+            {}
         }
-        catch( uno::Exception& )
-        {}
-        try
+        if (pImpl->xDialogLibraries)
         {
-            uno::Reference< script::XStorageBasedLibraryContainer > 
xDialogLibraries( pImpl->xDialogLibraries, uno::UNO_QUERY_THROW );
-            xDialogLibraries->setRootStorage( xStorage );
+            try
+            {
+                pImpl->xDialogLibraries->setRootStorage( xStorage );
+            }
+            catch( uno::Exception& )
+            {}
         }
-        catch( uno::Exception& )
-        {}
     }
     else
     {
diff --git a/sfx2/source/doc/objxtor.cxx b/sfx2/source/doc/objxtor.cxx
index 434c0f17992d..9bd6adef3734 100644
--- a/sfx2/source/doc/objxtor.cxx
+++ b/sfx2/source/doc/objxtor.cxx
@@ -685,8 +685,8 @@ bool SfxObjectShell::HasBasic() const
 #if HAVE_FEATURE_SCRIPTING
 namespace
 {
-    const Reference< XLibraryContainer >&
-    lcl_getOrCreateLibraryContainer( bool _bScript, Reference< 
XLibraryContainer >& _rxContainer,
+    const Reference< XStorageBasedLibraryContainer >&
+    lcl_getOrCreateLibraryContainer( bool _bScript, Reference< 
XStorageBasedLibraryContainer >& _rxContainer,
         const Reference< XModel >& _rxDocument )
     {
         if ( !_rxContainer.is() )
@@ -700,8 +700,7 @@ namespace
                                 ?   DocumentScriptLibraryContainer::create(
                                         xContext, xStorageDoc )
                                 :   DocumentDialogLibraryContainer::create(
-                                        xContext, xStorageDoc )
-                                ,   UNO_QUERY_THROW );
+                                        xContext, xStorageDoc ));
             }
             catch (const Exception&)
             {
@@ -713,7 +712,7 @@ namespace
 }
 #endif
 
-Reference< XLibraryContainer > SfxObjectShell::GetDialogContainer()
+Reference< XStorageBasedLibraryContainer > SfxObjectShell::GetDialogContainer()
 {
 #if HAVE_FEATURE_SCRIPTING
     try
@@ -735,7 +734,7 @@ Reference< XLibraryContainer > 
SfxObjectShell::GetDialogContainer()
     return SfxGetpApp()->GetDialogContainer();
 }
 
-Reference< XLibraryContainer > SfxObjectShell::GetBasicContainer()
+Reference< XStorageBasedLibraryContainer > SfxObjectShell::GetBasicContainer()
 {
 #if HAVE_FEATURE_SCRIPTING
     if (!utl::ConfigManager::IsFuzzing())
diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx
index 1b1bdff80c12..d29d5bed4d87 100644
--- a/sfx2/source/doc/sfxbasemodel.cxx
+++ b/sfx2/source/doc/sfxbasemodel.cxx
@@ -2435,7 +2435,7 @@ Reference< script::XStorageBasedLibraryContainer > 
SAL_CALL SfxBaseModel::getBas
 
     Reference< script::XStorageBasedLibraryContainer > xBasicLibraries;
     if ( m_pData->m_pObjectShell.is() )
-        xBasicLibraries.set(m_pData->m_pObjectShell->GetBasicContainer(), 
UNO_QUERY);
+        xBasicLibraries.set(m_pData->m_pObjectShell->GetBasicContainer());
     return xBasicLibraries;
 }
 
@@ -2445,7 +2445,7 @@ Reference< script::XStorageBasedLibraryContainer > 
SAL_CALL SfxBaseModel::getDia
 
     Reference< script::XStorageBasedLibraryContainer > xDialogLibraries;
     if ( m_pData->m_pObjectShell.is() )
-        xDialogLibraries.set(m_pData->m_pObjectShell->GetDialogContainer(), 
UNO_QUERY);
+        xDialogLibraries.set(m_pData->m_pObjectShell->GetDialogContainer());
     return xDialogLibraries;
 }
 
diff --git a/sfx2/source/inc/appbaslib.hxx b/sfx2/source/inc/appbaslib.hxx
index 04f419996008..34dc04438bef 100644
--- a/sfx2/source/inc/appbaslib.hxx
+++ b/sfx2/source/inc/appbaslib.hxx
@@ -62,7 +62,7 @@ public:
     */
     void    reset( BasicManager* _pBasicManager );
 
-    css::script::XLibraryContainer *
+    css::script::XStorageBasedLibraryContainer*
             getLibraryContainer( ContainerType _eType );
 
     /** calls the storeLibraries at both our script and basic library container
diff --git a/sfx2/source/inc/objshimp.hxx b/sfx2/source/inc/objshimp.hxx
index 88b715a124c3..5224b419053d 100644
--- a/sfx2/source/inc/objshimp.hxx
+++ b/sfx2/source/inc/objshimp.hxx
@@ -54,9 +54,9 @@ struct SfxObjectShell_Impl final : public 
::sfx2::IMacroDocumentAccess
     std::unique_ptr<::comphelper::EmbeddedObjectContainer> mxObjectContainer;
     SfxBasicManagerHolder aBasicManager;
     SfxObjectShell&     rDocShell;
-    css::uno::Reference< css::script::XLibraryContainer >
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer >
                         xBasicLibraries;
-    css::uno::Reference< css::script::XLibraryContainer >
+    css::uno::Reference< css::script::XStorageBasedLibraryContainer >
                         xDialogLibraries;
     ::sfx2::DocumentMacroMode
                         aMacroMode;
diff --git a/sw/source/filter/html/htmlbas.cxx 
b/sw/source/filter/html/htmlbas.cxx
index 3500a631f108..4f640b84fd78 100644
--- a/sw/source/filter/html/htmlbas.cxx
+++ b/sw/source/filter/html/htmlbas.cxx
@@ -30,7 +30,7 @@
 
 #include <com/sun/star/document/XEventsSupplier.hpp>
 #include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/script/XLibraryContainer.hpp>
+#include <com/sun/star/script/XStorageBasedLibraryContainer.hpp>
 #include <com/sun/star/container/XNameContainer.hpp>
 
 #include <fmtfld.hxx>
@@ -114,7 +114,7 @@ void SwHTMLParser::EndScript()
             aLibName = "Standard";
 
         // get module library container
-        Reference< script::XLibraryContainer > xModLibContainer = 
pDocSh->GetBasicContainer();
+        Reference< script::XStorageBasedLibraryContainer > xModLibContainer = 
pDocSh->GetBasicContainer();
 
         if ( xModLibContainer.is() )
         {
@@ -156,7 +156,7 @@ void SwHTMLParser::EndScript()
         }
 
         // get dialog library container
-        Reference< script::XLibraryContainer > xDlgLibContainer = 
pDocSh->GetDialogContainer();
+        Reference< script::XStorageBasedLibraryContainer > xDlgLibContainer = 
pDocSh->GetDialogContainer();
 
         if ( xDlgLibContainer.is() )
         {

Reply via email to