From 09619742df11641c4f53b00f46ebe85496f1a316 Mon Sep 17 00:00:00 2001 From: sb Date: Mon, 4 Oct 2010 13:59:08 +0200 Subject: sb133: #i114705# for performance reasons, call configmgr::writeModFile asynchronously --- configmgr/source/components.cxx | 81 +++++++++++++++++++++++++++++- configmgr/source/components.hxx | 8 +++ configmgr/source/configurationprovider.cxx | 16 +++++- 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx index cc5ea1e1e739..d1ffa8629a5f 100644 --- a/configmgr/source/components.cxx +++ b/configmgr/source/components.cxx @@ -29,6 +29,7 @@ #include "sal/config.h" #include +#include #include #include "com/sun/star/beans/Optional.hpp" @@ -43,8 +44,11 @@ #include "com/sun/star/uno/RuntimeException.hpp" #include "com/sun/star/uno/XComponentContext.hpp" #include "com/sun/star/uno/XInterface.hpp" +#include "osl/conditn.hxx" #include "osl/diagnose.h" #include "osl/file.hxx" +#include "osl/mutex.hxx" +#include "osl/thread.hxx" #include "rtl/bootstrap.hxx" #include "rtl/logfile.h" #include "rtl/ref.hxx" @@ -53,10 +57,12 @@ #include "rtl/ustring.h" #include "rtl/ustring.hxx" #include "sal/types.h" +#include "salhelper/simplereferenceobject.hxx" #include "additions.hxx" #include "components.hxx" #include "data.hxx" +#include "lock.hxx" #include "modifications.hxx" #include "node.hxx" #include "nodemap.hxx" @@ -148,6 +154,63 @@ static Components * singleton = 0; } +class Components::WriteThread: + public osl::Thread, public salhelper::SimpleReferenceObject +{ +public: + static void * operator new(std::size_t size) + { return Thread::operator new(size); } + + static void operator delete(void * pointer) + { Thread::operator delete(pointer); } + + WriteThread( + rtl::Reference< WriteThread > * reference, Components & components, + rtl::OUString const & url, Data const & data); + + void flush() { delay_.set(); } + +private: + virtual ~WriteThread() {} + + virtual void SAL_CALL run(); + + rtl::Reference< WriteThread > * reference_; + Components & components_; + rtl::OUString url_; + Data const & data_; + osl::Condition delay_; +}; + +Components::WriteThread::WriteThread( + rtl::Reference< WriteThread > * reference, Components & components, + rtl::OUString const & url, Data const & data): + reference_(reference), components_(components), url_(url), data_(data) +{ + OSL_ASSERT(reference != 0); +} + +void Components::WriteThread::run() { + TimeValue t = { 1, 0 }; // 1 sec + delay_.wait(&t); // must not throw; result_error is harmless and ignored + osl::MutexGuard g(lock); // must not throw + try { + try { + writeModFile(components_, url_, data_); + } catch (css::uno::RuntimeException & e) { + // Silently ignore write errors, instead of aborting: + OSL_TRACE( + "configmgr error writing modifications: %s", + rtl::OUStringToOString( + e.Message, RTL_TEXTENCODING_UTF8).getStr()); + } + } catch (...) { + reference_->clear(); + throw; + } + reference_->clear(); +} + void Components::initSingleton( css::uno::Reference< css::uno::XComponentContext > const & context) { @@ -238,7 +301,23 @@ void Components::addModification(Path const & path) { } void Components::writeModifications() { - writeModFile(*this, getModificationFileUrl(), data_); + if (!writeThread_.is()) { + writeThread_ = new WriteThread( + &writeThread_, *this, getModificationFileUrl(), data_); + writeThread_->create(); + } +} + +void Components::flushModifications() { + rtl::Reference< WriteThread > thread; + { + osl::MutexGuard g(lock); + thread = writeThread_; + } + if (thread.is()) { + thread->flush(); + thread->join(); + } } void Components::insertExtensionXcsFile( diff --git a/configmgr/source/components.hxx b/configmgr/source/components.hxx index 4fc47f791821..1c735efca6ba 100644 --- a/configmgr/source/components.hxx +++ b/configmgr/source/components.hxx @@ -94,6 +94,11 @@ public: void writeModifications(); + void flushModifications(); + // must be called with configmgr::lock unaquired; must be called before + // shutdown if writeModifications has ever been called (probably + // indirectly, via removeExtensionXcuFile) + void insertExtensionXcsFile(bool shared, rtl::OUString const & fileUri); void insertExtensionXcuFile( @@ -160,11 +165,14 @@ private: com::sun::star::beans::XPropertySet > > ExternalServices; + class WriteThread; + com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > context_; Data data_; WeakRootSet roots_; ExternalServices externalServices_; + rtl::Reference< WriteThread > writeThread_; }; } diff --git a/configmgr/source/configurationprovider.cxx b/configmgr/source/configurationprovider.cxx index a89540a88158..688361a77354 100644 --- a/configmgr/source/configurationprovider.cxx +++ b/configmgr/source/configurationprovider.cxx @@ -114,6 +114,8 @@ public: private: virtual ~Service() {} + virtual void SAL_CALL disposing() { flushModifications(); } + virtual rtl::OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException) { return configuration_provider::getImplementationName(); } @@ -166,6 +168,8 @@ private: virtual css::lang::Locale SAL_CALL getLocale() throw (css::uno::RuntimeException); + void flushModifications() const; + css::uno::Reference< css::uno::XComponentContext > context_; rtl::OUString locale_; }; @@ -326,7 +330,7 @@ void Service::removeRefreshListener( } void Service::flush() throw (css::uno::RuntimeException) { - //TODO + flushModifications(); cppu::OInterfaceContainerHelper * cont = rBHelper.getContainer( cppu::UnoType< css::util::XFlushListener >::get()); if (cont != 0) { @@ -380,6 +384,16 @@ css::lang::Locale Service::getLocale() throw (css::uno::RuntimeException) { return loc; } +void Service::flushModifications() const { + Components * components; + { + osl::MutexGuard guard(lock); + Components::initSingleton(context_); + components = &Components::getSingleton(); + } + components->flushModifications(); +} + class Factory: public cppu::WeakImplHelper1< css::lang::XSingleComponentFactory >, private boost::noncopyable -- cgit v1.2.3 From 2cdf3404665ee5e2293bf548251b07e5785141ba Mon Sep 17 00:00:00 2001 From: sb Date: Mon, 4 Oct 2010 16:02:38 +0200 Subject: sb133: #i114705# osl::Thread::onTerminated must not be called on deleted object --- configmgr/source/components.cxx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx index d1ffa8629a5f..d812e54498ac 100644 --- a/configmgr/source/components.cxx +++ b/configmgr/source/components.cxx @@ -175,6 +175,8 @@ private: virtual void SAL_CALL run(); + virtual void SAL_CALL onTerminated() { release(); } + rtl::Reference< WriteThread > * reference_; Components & components_; rtl::OUString url_; @@ -188,6 +190,7 @@ Components::WriteThread::WriteThread( reference_(reference), components_(components), url_(url), data_(data) { OSL_ASSERT(reference != 0); + acquire(); } void Components::WriteThread::run() { -- cgit v1.2.3 From b7a4a131ef8efa92d1aca33c1290e6a9218a3bf8 Mon Sep 17 00:00:00 2001 From: sb Date: Wed, 6 Oct 2010 09:24:31 +0200 Subject: sb133: #i114705# flush configmgr on every soffice exit path --- desktop/inc/app.hxx | 1 + desktop/source/app/app.cxx | 32 ++++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/desktop/inc/app.hxx b/desktop/inc/app.hxx index fa7550812bbe..8eb4dd3cc25b 100644 --- a/desktop/inc/app.hxx +++ b/desktop/inc/app.hxx @@ -155,6 +155,7 @@ class Desktop : public Application sal_Bool InitializeInstallation( const rtl::OUString& rAppFilename ); sal_Bool InitializeConfiguration(); + void FlushConfiguration(); sal_Bool InitializeQuickstartMode( com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rSMgr ); void HandleBootstrapPathErrors( ::utl::Bootstrap::Status, const ::rtl::OUString& aMsg ); diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index f5d6979bc4b1..e77c1dcf48ac 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -754,6 +754,7 @@ void Desktop::DeInit() // instead of removing of the configManager just let it commit all the changes RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); utl::ConfigManager::GetConfigManager()->StoreConfigItems(); + FlushConfiguration(); RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); // close splashscreen if it's still open @@ -784,6 +785,7 @@ BOOL Desktop::QueryExit() { RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); utl::ConfigManager::GetConfigManager()->StoreConfigItems(); + FlushConfiguration(); RTL_LOGFILE_CONTEXT_TRACE( aLog, "<- store config items" ); } catch ( RuntimeException& ) @@ -1436,18 +1438,7 @@ USHORT Desktop::Exception(USHORT nError) if ( bAllowRecoveryAndSessionManagement ) bRestart = SaveTasks(); - // because there is no method to flush the condiguration data, we must dispose the ConfigManager - Reference < XFlushable > xCFGFlush( ::utl::ConfigManager::GetConfigManager()->GetConfigurationProvider(), UNO_QUERY ); - if (xCFGFlush.is()) - { - xCFGFlush->flush(); - } - else - { - Reference < XComponent > xCFGDispose( ::utl::ConfigManager::GetConfigManager()->GetConfigurationProvider(), UNO_QUERY ); - if (xCFGDispose.is()) - xCFGDispose->dispose(); - } + FlushConfiguration(); switch( nError & EXC_MAJORTYPE ) { @@ -1976,6 +1967,7 @@ void Desktop::Main() // remove temp directory RemoveTemporaryDirectory(); + FlushConfiguration(); // The acceptors in the AcceptorMap must be released (in DeregisterServices) // with the solar mutex unlocked, to avoid deadlock: nAcquireCount = Application::ReleaseSolarMutex(); @@ -2073,6 +2065,22 @@ sal_Bool Desktop::InitializeConfiguration() return bOk; } +void Desktop::FlushConfiguration() +{ + Reference < XFlushable > xCFGFlush( ::utl::ConfigManager::GetConfigManager()->GetConfigurationProvider(), UNO_QUERY ); + if (xCFGFlush.is()) + { + xCFGFlush->flush(); + } + else + { + // because there is no method to flush the condiguration data, we must dispose the ConfigManager + Reference < XComponent > xCFGDispose( ::utl::ConfigManager::GetConfigManager()->GetConfigurationProvider(), UNO_QUERY ); + if (xCFGDispose.is()) + xCFGDispose->dispose(); + } +} + sal_Bool Desktop::InitializeQuickstartMode( Reference< XMultiServiceFactory >& rSMgr ) { try -- cgit v1.2.3 From 8c1f6c9b46671bc9d3a7dc16d1343cd12a9d0411 Mon Sep 17 00:00:00 2001 From: Joachim Lingner Date: Thu, 7 Oct 2010 17:20:55 +0200 Subject: jl161 #i114933# solve deadlock problem when adding an extension --- .../deployment/manager/dp_commandenvironments.cxx | 38 ++ .../deployment/manager/dp_commandenvironments.hxx | 23 ++ .../deployment/manager/dp_extensionmanager.cxx | 409 ++++++++++++++------- .../deployment/manager/dp_extensionmanager.hxx | 20 + 4 files changed, 358 insertions(+), 132 deletions(-) diff --git a/desktop/source/deployment/manager/dp_commandenvironments.cxx b/desktop/source/deployment/manager/dp_commandenvironments.cxx index c2801ba1d965..0de1f9e96e91 100644 --- a/desktop/source/deployment/manager/dp_commandenvironments.cxx +++ b/desktop/source/deployment/manager/dp_commandenvironments.cxx @@ -31,6 +31,8 @@ #include "com/sun/star/deployment/VersionException.hpp" #include "com/sun/star/deployment/LicenseException.hpp" #include "com/sun/star/deployment/InstallException.hpp" +#include "com/sun/star/deployment/DependencyException.hpp" +#include "com/sun/star/deployment/PlatformException.hpp" #include "com/sun/star/task/XInteractionApprove.hpp" #include "com/sun/star/task/XInteractionAbort.hpp" #include "com/sun/star/task/XInteractionHandler.hpp" @@ -250,7 +252,43 @@ void NoLicenseCommandEnv::handle( handle_(approve, abort, xRequest); } +// SilentCheckPrerequisitesCommandEnv::SilentCheckPrerequisitesCommandEnv( +// css::uno::Reference< css::task::XInteractionHandler> const & handler): +// BaseCommandEnv(handler) +// { +// } +SilentCheckPrerequisitesCommandEnv::SilentCheckPrerequisitesCommandEnv() +{ +} + +void SilentCheckPrerequisitesCommandEnv::handle( + Reference< task::XInteractionRequest> const & xRequest ) + throw (uno::RuntimeException) +{ + uno::Any request( xRequest->getRequest() ); + OSL_ASSERT( request.getValueTypeClass() == uno::TypeClass_EXCEPTION ); + deployment::LicenseException licExc; + deployment::PlatformException platformExc; + deployment::DependencyException depExc; + bool approve = false; + bool abort = false; + + if (request >>= licExc) + { + approve = true; + handle_(approve, abort, xRequest); + } + else if ((request >>= platformExc) + || (request >>= depExc)) + { + m_Exception = request; + } + else + { + m_UnknownException = request; + } +} // NoExceptionCommandEnv::NoExceptionCommandEnv( // css::uno::Reference< css::task::XInteractionHandler> const & handler, // css::uno::Type const & type): diff --git a/desktop/source/deployment/manager/dp_commandenvironments.hxx b/desktop/source/deployment/manager/dp_commandenvironments.hxx index aa21f8281c72..bea11586d462 100644 --- a/desktop/source/deployment/manager/dp_commandenvironments.hxx +++ b/desktop/source/deployment/manager/dp_commandenvironments.hxx @@ -135,6 +135,29 @@ public: }; +/* For use in XExtensionManager::addExtension in the call to + XPackage::checkPrerequisites + It prevents all user interactions. The license is always accepted. + It remembers if there was a platform or a dependency exception in + the member m_bException. if there was any other exception then m_bUnknownException + is set. + + */ +class SilentCheckPrerequisitesCommandEnv : public BaseCommandEnv +{ +public: + SilentCheckPrerequisitesCommandEnv(); + // XInteractionHandler + virtual void SAL_CALL handle( + css::uno::Reference const & xRequest ) + throw (css::uno::RuntimeException); + + // Set to true if a PlatformException or a DependencyException were handled. + css::uno::Any m_Exception; + // Set to true if an unknown exception was handled. + css::uno::Any m_UnknownException; +}; + // class NoExceptionCommandEnv : public BaseCommandEnv // { // css::uno::Type m_type; diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx index c82973f1b680..23fb36ed6a43 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.cxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx @@ -139,6 +139,37 @@ void writeLastModified(OUString & url, Reference const OUSTR("Failed to update") + url, 0, exc); } } + +class ExtensionRemoveGuard +{ + css::uno::Reference m_extension; + css::uno::Reference m_xPackageManager; + +public: + ExtensionRemoveGuard( + css::uno::Reference const & extension, + css::uno::Reference const & xPackageManager): + m_extension(extension), m_xPackageManager(xPackageManager) {} + ~ExtensionRemoveGuard(); + + void reset(css::uno::Reference const & extension) { + m_extension = extension; + } +}; + +ExtensionRemoveGuard::~ExtensionRemoveGuard() +{ + try { + if (m_xPackageManager.is() && m_extension.is()) + m_xPackageManager->removePackage( + dp_misc::getIdentifier(m_extension), ::rtl::OUString(), + css::uno::Reference(), + css::uno::Reference()); + } catch (...) { + OSL_ASSERT(0); + } +} + } //end namespace namespace dp_manager { @@ -501,6 +532,103 @@ ExtensionManager::getSupportedPackageTypes() return m_userRepository->getSupportedPackageTypes(); } +bool ExtensionManager::doChecksForAddExtension( + Reference const & xPackageMgr, + uno::Sequence const & properties, + css::uno::Reference const & xTmpExtension, + Reference const & xAbortChannel, + Reference const & xCmdEnv, + Reference & out_existingExtension ) + throw (deploy::DeploymentException, + ucb::CommandFailedException, + ucb::CommandAbortedException, + lang::IllegalArgumentException, + uno::RuntimeException) +{ + try + { + Reference xOldExtension; + const OUString sIdentifier = dp_misc::getIdentifier(xTmpExtension); + const OUString sFileName = xTmpExtension->getName(); + const OUString sDisplayName = xTmpExtension->getDisplayName(); + const OUString sVersion = xTmpExtension->getVersion(); + + try + { + xOldExtension = xPackageMgr->getDeployedPackage( + sIdentifier, sFileName, xCmdEnv); + out_existingExtension = xOldExtension; + } + catch (lang::IllegalArgumentException &) + { + } + bool bCanInstall = false; + + //This part is not guarded against other threads removing, adding, disabling ... + //etc. the same extension. + //checkInstall is safe because it notifies the user if the extension is not yet + //installed in the same repository. Because addExtension has its own guard + //(m_addMutex), another thread cannot add the extension in the meantime. + //checkUpdate is called if the same extension exists in the same + //repository. The user is asked if they want to replace it. Another + //thread + //could already remove the extension. So asking the user was not + //necessary. No harm is done. The other thread may also ask the user + //if he wants to remove the extension. This depends on the + //XCommandEnvironment which it passes to removeExtension. + if (xOldExtension.is()) + { + //throws a CommandFailedException if the user cancels + //the action. + checkUpdate(sVersion, sDisplayName,xOldExtension, xCmdEnv); + } + else + { + //throws a CommandFailedException if the user cancels + //the action. + checkInstall(sDisplayName, xCmdEnv); + } + //Prevent showing the license if requested. + Reference _xCmdEnv(xCmdEnv); + ExtensionProperties props(OUString(), properties, Reference()); + + dp_misc::DescriptionInfoset info(dp_misc::getDescriptionInfoset(xTmpExtension->getURL())); + const ::boost::optional licenseAttributes = + info.getSimpleLicenseAttributes(); + + if (licenseAttributes && licenseAttributes->suppressIfRequired + && props.isSuppressedLicense()) + _xCmdEnv = Reference( + new NoLicenseCommandEnv(xCmdEnv->getInteractionHandler())); + + bCanInstall = xTmpExtension->checkPrerequisites( + xAbortChannel, _xCmdEnv, xOldExtension.is() || props.isExtensionUpdate()) == 0 ? true : false; + + return bCanInstall; + } + catch (deploy::DeploymentException& ) { + throw; + } catch (ucb::CommandFailedException & ) { + throw; + } catch (ucb::CommandAbortedException & ) { + throw; + } catch (lang::IllegalArgumentException &) { + throw; + } catch (uno::RuntimeException &) { + throw; + } catch (uno::Exception &) { + uno::Any excOccurred = ::cppu::getCaughtException(); + deploy::DeploymentException exc( + OUSTR("Extension Manager: exception in doChecksForAddExtension"), + static_cast(this), excOccurred); + throw exc; + } catch (...) { + throw uno::RuntimeException( + OUSTR("Extension Manager: unexpected exception in doChecksForAddExtension"), + static_cast(this)); + } +} + // Only add to shared and user repository Reference ExtensionManager::addExtension( OUString const & url, uno::Sequence const & properties, @@ -524,165 +652,182 @@ Reference ExtensionManager::addExtension( throw lang::IllegalArgumentException( OUSTR("No valid repository name provided."), static_cast(this), 0); - ::osl::MutexGuard guard(getMutex()); + //We must make sure that the xTmpExtension is not create twice, because this + //would remove the first one. + ::osl::MutexGuard addGuard(m_addMutex); + Reference xTmpExtension = getTempExtension(url, xAbortChannel, xCmdEnv); + //Make sure the extension is removed from the tmp repository in case + //of an exception + ExtensionRemoveGuard tmpExtensionRemoveGuard(xTmpExtension, m_tmpRepository); const OUString sIdentifier = dp_misc::getIdentifier(xTmpExtension); const OUString sFileName = xTmpExtension->getName(); - const OUString sDisplayName = xTmpExtension->getDisplayName(); - const OUString sVersion = xTmpExtension->getVersion(); - dp_misc::DescriptionInfoset info(dp_misc::getDescriptionInfoset(xTmpExtension->getURL())); - const ::boost::optional licenseAttributes = - info.getSimpleLicenseAttributes(); Reference xOldExtension; Reference xExtensionBackup; - uno::Any excOccurred1; uno::Any excOccurred2; bool bUserDisabled = false; - try + bool bCanInstall = doChecksForAddExtension( + xPackageManager, + properties, + xTmpExtension, + xAbortChannel, + xCmdEnv, + xOldExtension ); + { - bUserDisabled = isUserDisabled(sIdentifier, sFileName); - try - { - xOldExtension = xPackageManager->getDeployedPackage( - sIdentifier, sFileName, xCmdEnv); - } - catch (lang::IllegalArgumentException &) - { - } - bool bCanInstall = false; - try + // In this garded section (getMutex) we must not use the argument xCmdEnv + // because it may bring up dialogs (XInteractionHandler::handle) this + //may potententially deadlock. See issue + //http://qa.openoffice.org/issues/show_bug.cgi?id=114933 + //By not providing xCmdEnv the underlying APIs will throw an exception if + //the XInteractionRequest cannot be handled + ::osl::MutexGuard guard(getMutex()); + + if (bCanInstall) { - if (xOldExtension.is()) + try { - //throws a CommandFailedException if the user cancels - //the action. - checkUpdate(sVersion, sDisplayName,xOldExtension, xCmdEnv); + bUserDisabled = isUserDisabled(sIdentifier, sFileName); + if (xOldExtension.is()) + { + try + { + xOldExtension->revokePackage( + xAbortChannel, Reference()); + //save the old user extension in case the user aborts + //store the extension in the tmp repository, this will overwrite + //xTmpPackage (same identifier). Do not let the user abort or + //interact + //importing the old extension in the tmp repository will remove + //the xTmpExtension + //no command environment supplied, only this class shall interact + //with the user! + xExtensionBackup = m_tmpRepository->importExtension( + xOldExtension, Reference(), + Reference()); + tmpExtensionRemoveGuard.reset(xExtensionBackup); + xTmpExtension = xExtensionBackup; + OSL_ASSERT(xTmpExtension.is()); + } + catch (lang::DisposedException &) + { + //Another thread might have removed the extension meanwhile + } + } + //check again dependencies but prevent user interaction, + //We can disregard the license, because the user must have already + //accepted it, whe we called checkPrerequisites the first time + SilentCheckPrerequisitesCommandEnv * pSilentCommandEnv = + new SilentCheckPrerequisitesCommandEnv(); + Reference silentCommandEnv(pSilentCommandEnv); + + sal_Int32 failedPrereq = xTmpExtension->checkPrerequisites( + xAbortChannel, silentCommandEnv, true); + if (failedPrereq == 0) + { + xNewExtension = xPackageManager->addPackage( + url, properties, OUString(), xAbortChannel, + Reference()); + //If we add a user extension and there is already one which was + //disabled by a user, then the newly installed one is enabled. If we + //add to another repository then the user extension remains + //disabled. + bool bUserDisabled2 = bUserDisabled; + if (repository.equals(OUSTR("user"))) + bUserDisabled2 = false; + + activateExtension( + dp_misc::getIdentifier(xNewExtension), + xNewExtension->getName(), bUserDisabled2, false, xAbortChannel, + Reference()); + } + else + { + if (pSilentCommandEnv->m_Exception.hasValue()) + ::cppu::throwException(pSilentCommandEnv->m_Exception); + else if ( pSilentCommandEnv->m_UnknownException.hasValue()) + ::cppu::throwException(pSilentCommandEnv->m_UnknownException); + else + throw deploy::DeploymentException ( + OUSTR("Extension Manager: exception during addExtension, ckeckPrerequisites failed"), + static_cast(this), uno::Any()); + } } - else - { - //throws a CommandFailedException if the user cancels - //the action. - checkInstall(sDisplayName, xCmdEnv); + catch (deploy::DeploymentException& ) { + excOccurred2 = ::cppu::getCaughtException(); + } catch (ucb::CommandFailedException & ) { + excOccurred2 = ::cppu::getCaughtException(); + } catch (ucb::CommandAbortedException & ) { + excOccurred2 = ::cppu::getCaughtException(); + } catch (lang::IllegalArgumentException &) { + excOccurred2 = ::cppu::getCaughtException(); + } catch (uno::RuntimeException &) { + excOccurred2 = ::cppu::getCaughtException(); + } catch (...) { + excOccurred2 = ::cppu::getCaughtException(); + deploy::DeploymentException exc( + OUSTR("Extension Manager: exception during addExtension, url: ") + + url, static_cast(this), excOccurred2); + excOccurred2 <<= exc; } - //Prevent showing the license if requested. - Reference _xCmdEnv(xCmdEnv); - ExtensionProperties props(OUString(), properties, Reference()); - if (licenseAttributes && licenseAttributes->suppressIfRequired - && props.isSuppressedLicense()) - _xCmdEnv = Reference( - new NoLicenseCommandEnv(xCmdEnv->getInteractionHandler())); - - bCanInstall = xTmpExtension->checkPrerequisites( - xAbortChannel, _xCmdEnv, xOldExtension.is() || props.isExtensionUpdate()) == 0 ? true : false; - } - catch (deploy::DeploymentException& ) { - excOccurred1 = ::cppu::getCaughtException(); - } catch (ucb::CommandFailedException & ) { - excOccurred1 = ::cppu::getCaughtException(); - } catch (ucb::CommandAbortedException & ) { - excOccurred1 = ::cppu::getCaughtException(); - } catch (lang::IllegalArgumentException &) { - excOccurred1 = ::cppu::getCaughtException(); - } catch (uno::RuntimeException &) { - excOccurred1 = ::cppu::getCaughtException(); - } catch (...) { - excOccurred1 = ::cppu::getCaughtException(); - deploy::DeploymentException exc( - OUSTR("Extension Manager: exception during addExtension, url: ") - + url, static_cast(this), excOccurred1); - excOccurred1 <<= exc; } - if (bCanInstall) + if (excOccurred2.hasValue()) { - if (xOldExtension.is()) + //It does not matter what exception is thrown. We try to + //recover the original status. + //If the user aborted installation then a ucb::CommandAbortedException + //is thrown. + //Use a private AbortChannel so the user cannot interrupt. + try { - xOldExtension->revokePackage(xAbortChannel, xCmdEnv); - //save the old user extension in case the user aborts - //store the extension in the tmp repository, this will overwrite - //xTmpPackage (same identifier). Do not let the user abort or - //interact Reference tmpCmdEnv( - new TmpRepositoryCommandEnv(xCmdEnv->getInteractionHandler())); - //importing the old extension in the tmp repository will remove - //the xTmpExtension - xTmpExtension = 0; - xExtensionBackup = m_tmpRepository->importExtension( - xOldExtension, Reference(), - tmpCmdEnv); + new TmpRepositoryCommandEnv()); + if (xExtensionBackup.is()) + { + Reference xRestored = + xPackageManager->importExtension( + xExtensionBackup, Reference(), + tmpCmdEnv); + } + activateExtension( + sIdentifier, sFileName, bUserDisabled, false, + Reference(), tmpCmdEnv); } - xNewExtension = xPackageManager->addPackage( - url, properties, OUString(), xAbortChannel, xCmdEnv); - //If we add a user extension and there is already one which was - //disabled by a user, then the newly installed one is enabled. If we - //add to another repository then the user extension remains - //disabled. - bool bUserDisabled2 = bUserDisabled; - if (repository.equals(OUSTR("user"))) - bUserDisabled2 = false; - activateExtension( - dp_misc::getIdentifier(xNewExtension), - xNewExtension->getName(), bUserDisabled2, false, xAbortChannel, xCmdEnv); - fireModified(); + catch (...) + { + } + ::cppu::throwException(excOccurred2); } - } - catch (deploy::DeploymentException& ) { - excOccurred2 = ::cppu::getCaughtException(); + } // leaving the garded section (getMutex()) + + try + { + fireModified(); + + }catch (deploy::DeploymentException& ) { + throw; } catch (ucb::CommandFailedException & ) { - excOccurred2 = ::cppu::getCaughtException(); + throw; } catch (ucb::CommandAbortedException & ) { - excOccurred2 = ::cppu::getCaughtException(); + throw; } catch (lang::IllegalArgumentException &) { - excOccurred2 = ::cppu::getCaughtException(); + throw; } catch (uno::RuntimeException &) { - excOccurred2 = ::cppu::getCaughtException(); - } catch (...) { - excOccurred2 = ::cppu::getCaughtException(); + throw; + } catch (uno::Exception &) { + uno::Any excOccurred = ::cppu::getCaughtException(); deploy::DeploymentException exc( - OUSTR("Extension Manager: exception during addExtension, url: ") - + url, static_cast(this), excOccurred2); - excOccurred2 <<= exc; - } - - if (excOccurred2.hasValue()) - { - //It does not matter what exception is thrown. We try to - //recover the original status. - //If the user aborted installation then a ucb::CommandAbortedException - //is thrown. - //Use a private AbortChannel so the user cannot interrupt. - try - { - Reference tmpCmdEnv( - new TmpRepositoryCommandEnv(xCmdEnv->getInteractionHandler())); - if (xExtensionBackup.is()) - { - Reference xRestored = - xPackageManager->importExtension( - xExtensionBackup, Reference(), - tmpCmdEnv); - } - activateExtension( - sIdentifier, sFileName, bUserDisabled, false, - Reference(), tmpCmdEnv); - if (xTmpExtension.is() || xExtensionBackup.is()) - m_tmpRepository->removePackage( - sIdentifier, OUString(), xAbortChannel, xCmdEnv); - fireModified(); - } - catch (...) - { - } - ::cppu::throwException(excOccurred2); + OUSTR("Extension Manager: exception in doChecksForAddExtension"), + static_cast(this), excOccurred); + throw exc; + } catch (...) { + throw uno::RuntimeException( + OUSTR("Extension Manager: unexpected exception in doChecksForAddExtension"), + static_cast(this)); } - if (xTmpExtension.is() || xExtensionBackup.is()) - m_tmpRepository->removePackage( - sIdentifier,OUString(), xAbortChannel, xCmdEnv); - - if (excOccurred1.hasValue()) - ::cppu::throwException(excOccurred1); return xNewExtension; } diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx index 64cada7da3ac..d0cb4bb8339f 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.hxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx @@ -235,6 +235,8 @@ private: css::uno::Reference m_bundledRepository; css::uno::Reference m_tmpRepository; + //only to be used within addExtension + ::osl::Mutex m_addMutex; /* contains the names of all repositories (except tmp) in order of there priority. That is, the first element is "user" follod by "shared" and then "bundled" @@ -296,6 +298,24 @@ private: css::uno::Reference getPackageManager(::rtl::OUString const & repository) throw (css::lang::IllegalArgumentException); + + //Do some necessary checks and user interaction. This function does not + //aquire the extension manager mutex. + //Returns true if the extension can be installed. + bool doChecksForAddExtension( + css::uno::Reference const & xPackageMgr, + css::uno::Sequence const & properties, + css::uno::Reference const & xTmpExtension, + css::uno::Reference const & xAbortChannel, + css::uno::Reference const & xCmdEnv, + css::uno::Reference & out_existingExtension ) + throw (css::deployment::DeploymentException, + css::ucb::CommandFailedException, + css::ucb::CommandAbortedException, + css::lang::IllegalArgumentException, + css::uno::RuntimeException); + + }; } -- cgit v1.2.3 From 2f3358d7e0957236319942c6d539a99234698c57 Mon Sep 17 00:00:00 2001 From: Joachim Lingner Date: Fri, 8 Oct 2010 08:44:14 +0200 Subject: jl161 #i114933# solve deadlock problem when adding an extension --- desktop/source/deployment/manager/dp_extensionmanager.cxx | 15 ++++++++++----- desktop/source/deployment/manager/dp_extensionmanager.hxx | 3 --- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/desktop/source/deployment/manager/dp_extensionmanager.cxx b/desktop/source/deployment/manager/dp_extensionmanager.cxx index 23fb36ed6a43..709cca86c631 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.cxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.cxx @@ -531,7 +531,11 @@ ExtensionManager::getSupportedPackageTypes() { return m_userRepository->getSupportedPackageTypes(); } - +//Do some necessary checks and user interaction. This function does not +//aquire the extension manager mutex and that mutex must not be aquired +//when this function is called. doChecksForAddExtension does synchronous +//user interactions which may require aquiring the solar mutex. +//Returns true if the extension can be installed. bool ExtensionManager::doChecksForAddExtension( Reference const & xPackageMgr, uno::Sequence const & properties, @@ -708,6 +712,9 @@ Reference ExtensionManager::addExtension( xOldExtension, Reference(), Reference()); tmpExtensionRemoveGuard.reset(xExtensionBackup); + //xTmpExtension will later be used to check the dependencies + //again. However, only xExtensionBackup will be later removed + //from the tmp repository xTmpExtension = xExtensionBackup; OSL_ASSERT(xTmpExtension.is()); } @@ -783,18 +790,16 @@ Reference ExtensionManager::addExtension( //Use a private AbortChannel so the user cannot interrupt. try { - Reference tmpCmdEnv( - new TmpRepositoryCommandEnv()); if (xExtensionBackup.is()) { Reference xRestored = xPackageManager->importExtension( xExtensionBackup, Reference(), - tmpCmdEnv); + Reference()); } activateExtension( sIdentifier, sFileName, bUserDisabled, false, - Reference(), tmpCmdEnv); + Reference(), Reference()); } catch (...) { diff --git a/desktop/source/deployment/manager/dp_extensionmanager.hxx b/desktop/source/deployment/manager/dp_extensionmanager.hxx index d0cb4bb8339f..683f45a1bd6e 100644 --- a/desktop/source/deployment/manager/dp_extensionmanager.hxx +++ b/desktop/source/deployment/manager/dp_extensionmanager.hxx @@ -299,9 +299,6 @@ private: getPackageManager(::rtl::OUString const & repository) throw (css::lang::IllegalArgumentException); - //Do some necessary checks and user interaction. This function does not - //aquire the extension manager mutex. - //Returns true if the extension can be installed. bool doChecksForAddExtension( css::uno::Reference const & xPackageMgr, css::uno::Sequence const & properties, -- cgit v1.2.3 From a73f5314a55e087b43cf6fbf598a6347c25bb7ce Mon Sep 17 00:00:00 2001 From: Thorsten Bosbach Date: Tue, 12 Oct 2010 15:11:14 +0200 Subject: #i114831# fix outcome from tl83 cws --- testautomation/math/optional/includes/m_105.inc | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/testautomation/math/optional/includes/m_105.inc b/testautomation/math/optional/includes/m_105.inc index 9d35f36ffdea..e7b97e705bab 100644 --- a/testautomation/math/optional/includes/m_105.inc +++ b/testautomation/math/optional/includes/m_105.inc @@ -302,8 +302,8 @@ testcase tToolsCatalog dim bChecked as boolean dim sFileName as string dim sAllSymbols as string - dim lAllSymbols(100) as string - dim lAllSymbolsSort(100) as string + dim lAllSymbols(200) as string + dim lAllSymbolsSort(200) as string dim iTimeOut as integer dim sFilterName as string dim sFilter as string @@ -335,8 +335,8 @@ testcase tToolsCatalog '/// There are 2 Symbol sets: 1. 'Greek' with 54 entries and 2. 'Special' with 12 entries ///' '///+ These symbol set names are availble in 2 listboxes 1. 'Old Symbol Set' and 2. 'Symbol Set' ///' iSymbolSets = OldSymbolSet.GetItemCount - if (iSymbolSets <> 2) then - WarnLog "- OldSymbolSet: '" + iSymbolSets + "' is not 2; expected is 2. ('Special' and 'Greek')" + if (iSymbolSets <> 3) then + WarnLog "- OldSymbolSet: '" + iSymbolSets + "' is not 3; expected is 3. ('Special' and 'Greek' and 'iGreek')" for i = 1 to iSymbolSets qaErrorLog "- " + i + ": '" + OldSymbolSet.GetItemText(i) + "'" next i @@ -448,12 +448,12 @@ testcase tToolsCatalog '///+ insert the copied text into the document ///' DocumentWriter.typeKeys " - " + sTemp + ": " + j + "" sAllSymbols = sAllSymbols + sTemp - listAppend(lAllSymbols(), sTemp) + listAppend(lAllSymbols(), rTrim(sTemp)) next j next i - if (listCount(lAllSymbols()) <> 66) then - warnlog "There have to be 66 Symbols, but there are: " + listCount(lAllSymbols()) + if (listCount(lAllSymbols()) <> 106) then + warnlog "There have to be 106 Symbols, but there are: " + listCount(lAllSymbols()) endif ' TODO: check sAllSymbols for not allowed characters! listCopy(lAllSymbols(),lAllSymbolsSort()) @@ -509,8 +509,8 @@ testcase tToolsCatalogNew Kontext "EditSymbols" if EditSymbols.exists then iStartingSymbolSetCount = SymbolSet.getItemCount - if iStartingSymbolSetCount <> 2 then - qaErrorLog "There are already other symbolsets, instead of 2: " + iStartingSymbolSetCount + if iStartingSymbolSetCount <> 3 then + qaErrorLog "There are already other symbolsets, instead of 3: " + iStartingSymbolSetCount for i = 1 to iStartingSymbolSetCount printlog "("+i+"/"+iStartingSymbolSetCount+"): '" + SymbolSet.getItemText (i) + "'" next i @@ -673,8 +673,8 @@ testcase tToolsCatalogNew endif Kontext "SymboleMath" j = symbolset.getItemCount - if j <> 2 then - warnlog "There is a number != 2 of symbollists listed" + if j <> 3 then + warnlog "There is a number != 3 of symbollists listed" else printlog "Everything is cleaned up." endif -- cgit v1.2.3 From 8bddc4f7590dd09f7b8c473ab0806c6804d0e4b7 Mon Sep 17 00:00:00 2001 From: "Oliver Craemer [oc]" Date: Tue, 12 Oct 2010 15:22:57 +0200 Subject: #163885 # Correction of mispelled testownername --- testautomation/xml/optional/c_datapilot_pagefields.bas | 2 +- testautomation/xml/optional/c_xml_print_scale.bas | 2 +- testautomation/xml/optional/c_xml_scenario.bas | 2 +- testautomation/xml/optional/calc_xml_7_export.bas | 2 +- testautomation/xml/optional/ch_xml_japanese_candlestick.bas | 2 +- testautomation/xml/optional/includes/c_xml_print_scale.inc | 2 +- testautomation/xml/optional/includes/c_xml_scenario.inc | 2 +- testautomation/xml/optional/includes/sxc7_01.inc | 2 +- testautomation/xml/optional/includes/sxc7_02.inc | 2 +- testautomation/xml/optional/includes/sxc7_03.inc | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/testautomation/xml/optional/c_datapilot_pagefields.bas b/testautomation/xml/optional/c_datapilot_pagefields.bas index 80c41c98b1db..5552322607f6 100755 --- a/testautomation/xml/optional/c_datapilot_pagefields.bas +++ b/testautomation/xml/optional/c_datapilot_pagefields.bas @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@Sun.COM +'* owner : oliver.craemer@Sun.COM '* '* short description : Lookup for correct attributes of datapilot pagefields '* diff --git a/testautomation/xml/optional/c_xml_print_scale.bas b/testautomation/xml/optional/c_xml_print_scale.bas index 97a5eaab3e66..479ad76d255e 100755 --- a/testautomation/xml/optional/c_xml_print_scale.bas +++ b/testautomation/xml/optional/c_xml_print_scale.bas @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@Sun.COM +'* owner : oliver.craemer@Sun.COM '* '* short description : Lookup for correct attributes for calc print scaling '* diff --git a/testautomation/xml/optional/c_xml_scenario.bas b/testautomation/xml/optional/c_xml_scenario.bas index 982e965ed483..c22ed31fb1db 100755 --- a/testautomation/xml/optional/c_xml_scenario.bas +++ b/testautomation/xml/optional/c_xml_scenario.bas @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@Sun.COM +'* owner : oliver.craemer@Sun.COM '* '* short description : Lookup for correct attributes of calc scenarios '* diff --git a/testautomation/xml/optional/calc_xml_7_export.bas b/testautomation/xml/optional/calc_xml_7_export.bas index 2c85dd62a3d3..37cc950ec735 100755 --- a/testautomation/xml/optional/calc_xml_7_export.bas +++ b/testautomation/xml/optional/calc_xml_7_export.bas @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : Export test for the Calc XML 6.0/7/OOo 1.x format '* diff --git a/testautomation/xml/optional/ch_xml_japanese_candlestick.bas b/testautomation/xml/optional/ch_xml_japanese_candlestick.bas index 23cfea116bce..e9d824afe889 100755 --- a/testautomation/xml/optional/ch_xml_japanese_candlestick.bas +++ b/testautomation/xml/optional/ch_xml_japanese_candlestick.bas @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@Sun.COM +'* owner : oliver.craemer@Sun.COM '* '* short description : Detailed test of the chart types '* diff --git a/testautomation/xml/optional/includes/c_xml_print_scale.inc b/testautomation/xml/optional/includes/c_xml_print_scale.inc index b9e924a31f79..48201f17feb4 100644 --- a/testautomation/xml/optional/includes/c_xml_print_scale.inc +++ b/testautomation/xml/optional/includes/c_xml_print_scale.inc @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : Check content.xml and styles.xml for correct print scaling settings '* diff --git a/testautomation/xml/optional/includes/c_xml_scenario.inc b/testautomation/xml/optional/includes/c_xml_scenario.inc index f98b8db41df9..ddaf8fbcd18c 100644 --- a/testautomation/xml/optional/includes/c_xml_scenario.inc +++ b/testautomation/xml/optional/includes/c_xml_scenario.inc @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : Check content.xml for correct scenario attributes '* diff --git a/testautomation/xml/optional/includes/sxc7_01.inc b/testautomation/xml/optional/includes/sxc7_01.inc index d32b7b357a5d..0dace41f0ca4 100755 --- a/testautomation/xml/optional/includes/sxc7_01.inc +++ b/testautomation/xml/optional/includes/sxc7_01.inc @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : XML Calc Include File '* diff --git a/testautomation/xml/optional/includes/sxc7_02.inc b/testautomation/xml/optional/includes/sxc7_02.inc index 304a15b2ab60..8696cb359954 100755 --- a/testautomation/xml/optional/includes/sxc7_02.inc +++ b/testautomation/xml/optional/includes/sxc7_02.inc @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : XML Calc Include File '* diff --git a/testautomation/xml/optional/includes/sxc7_03.inc b/testautomation/xml/optional/includes/sxc7_03.inc index e6c4d9945bd8..5c8661303cb3 100755 --- a/testautomation/xml/optional/includes/sxc7_03.inc +++ b/testautomation/xml/optional/includes/sxc7_03.inc @@ -25,7 +25,7 @@ ' '/************************************************************************ '* -'* owner : oliver.creamer@oracle.com +'* owner : oliver.craemer@oracle.com '* '* short description : XML Calc Include File '* -- cgit v1.2.3 From 94d4cf1aff5eb0d9af319d1671daa3d801e22265 Mon Sep 17 00:00:00 2001 From: Niklas Nebel Date: Wed, 13 Oct 2010 13:34:07 +0200 Subject: calc60: #i115025# SetRowHeightRange: compare height directly to mpRowHeights sum value --- sc/source/core/data/table2.cxx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sc/source/core/data/table2.cxx b/sc/source/core/data/table2.cxx index 4223c05c4f83..9bb22b68d2ad 100644 --- a/sc/source/core/data/table2.cxx +++ b/sc/source/core/data/table2.cxx @@ -2255,7 +2255,9 @@ BOOL ScTable::SetRowHeightRange( SCROW nStartRow, SCROW nEndRow, USHORT nNewHeig { if (pDrawLayer) { - unsigned long nOldHeights = GetRowHeight(nStartRow, nEndRow); + // #i115025# When comparing to nNewHeight for the whole range, the height + // including hidden rows has to be used (same behavior as 3.2). + unsigned long nOldHeights = mpRowHeights->getSumValue(nStartRow, nEndRow); // FIXME: should we test for overflows? long nHeightDif = (long) (unsigned long) nNewHeight * (nEndRow - nStartRow + 1) - nOldHeights; -- cgit v1.2.3 From c77edfc8242f44cfa57f6004f300eb7dc3a6a269 Mon Sep 17 00:00:00 2001 From: Ingo Schmidt Date: Wed, 13 Oct 2010 14:56:29 +0200 Subject: native338 #i115046# new jre6u22 --- setup_native/source/java/javaversion.dat | 26 +++++++++++++------------- setup_native/source/java/javaversion2.dat | 26 +++++++++++++------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/setup_native/source/java/javaversion.dat b/setup_native/source/java/javaversion.dat index bb935ac2ce58..a647694a7619 100755 --- a/setup_native/source/java/javaversion.dat +++ b/setup_native/source/java/javaversion.dat @@ -26,30 +26,30 @@ #************************************************************************* # GUI String in the installer ("Java Runtime Environment (${JAVAVERSION})") -JAVAVERSION=Java 6 Update 21 -WINDOWSJAVAVERSION=Java 6 Update 21 +JAVAVERSION=Java 6 Update 22 +WINDOWSJAVAVERSION=Java 6 Update 22 # Windows (scp2 and downloadtemplate.nsi) -WINDOWSJAVAFILENAME=jre-6u21-windows-i586.exe -WINDOWSJAVAREGISTRYENTRY=1.6.0_21 +WINDOWSJAVAFILENAME=jre-6u22-windows-i586.exe +WINDOWSJAVAREGISTRYENTRY=1.6.0_22 # Linux (scp2) -LINUXJAVAFILENAME=jre-6u21-linux-i586.rpm +LINUXJAVAFILENAME=jre-6u22-linux-i586.rpm # Linux (rpmUnit.xml, rpm -qp ) -LINUXJAVANAME=jre-1.6.0_21-fcs +LINUXJAVANAME=jre-1.6.0_22-fcs # Linux-x64 (scp2) -LINUXX64JAVAFILENAME=jre-6u21-linux-amd64.rpm +LINUXX64JAVAFILENAME=jre-6u22-linux-amd64.rpm # Solaris Sparc (scp2) -SOLSJAVARTPACKED=SUNWj6rt_1_6_0_21_sparc.tar.gz -SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_21_sparc.tar.gz -SOLSJAVAMANPACKED=SUNWj6man_1_6_0_21_sparc.tar.gz +SOLSJAVARTPACKED=SUNWj6rt_1_6_0_22_sparc.tar.gz +SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_22_sparc.tar.gz +SOLSJAVAMANPACKED=SUNWj6man_1_6_0_22_sparc.tar.gz # Solaris x86 (scp2) -SOLIJAVARTPACKED=SUNWj6rt_1_6_0_21_x86.tar.gz -SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_21_x86.tar.gz -SOLIJAVAMANPACKED=SUNWj6man_1_6_0_21_x86.tar.gz +SOLIJAVARTPACKED=SUNWj6rt_1_6_0_22_x86.tar.gz +SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_22_x86.tar.gz +SOLIJAVAMANPACKED=SUNWj6man_1_6_0_22_x86.tar.gz # Solaris (pkgUnit.xml, needs only to be changed in major changes) SOLARISJAVART=SUNWj6rt diff --git a/setup_native/source/java/javaversion2.dat b/setup_native/source/java/javaversion2.dat index bb935ac2ce58..a647694a7619 100644 --- a/setup_native/source/java/javaversion2.dat +++ b/setup_native/source/java/javaversion2.dat @@ -26,30 +26,30 @@ #************************************************************************* # GUI String in the installer ("Java Runtime Environment (${JAVAVERSION})") -JAVAVERSION=Java 6 Update 21 -WINDOWSJAVAVERSION=Java 6 Update 21 +JAVAVERSION=Java 6 Update 22 +WINDOWSJAVAVERSION=Java 6 Update 22 # Windows (scp2 and downloadtemplate.nsi) -WINDOWSJAVAFILENAME=jre-6u21-windows-i586.exe -WINDOWSJAVAREGISTRYENTRY=1.6.0_21 +WINDOWSJAVAFILENAME=jre-6u22-windows-i586.exe +WINDOWSJAVAREGISTRYENTRY=1.6.0_22 # Linux (scp2) -LINUXJAVAFILENAME=jre-6u21-linux-i586.rpm +LINUXJAVAFILENAME=jre-6u22-linux-i586.rpm # Linux (rpmUnit.xml, rpm -qp ) -LINUXJAVANAME=jre-1.6.0_21-fcs +LINUXJAVANAME=jre-1.6.0_22-fcs # Linux-x64 (scp2) -LINUXX64JAVAFILENAME=jre-6u21-linux-amd64.rpm +LINUXX64JAVAFILENAME=jre-6u22-linux-amd64.rpm # Solaris Sparc (scp2) -SOLSJAVARTPACKED=SUNWj6rt_1_6_0_21_sparc.tar.gz -SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_21_sparc.tar.gz -SOLSJAVAMANPACKED=SUNWj6man_1_6_0_21_sparc.tar.gz +SOLSJAVARTPACKED=SUNWj6rt_1_6_0_22_sparc.tar.gz +SOLSJAVACFGPACKED=SUNWj6cfg_1_6_0_22_sparc.tar.gz +SOLSJAVAMANPACKED=SUNWj6man_1_6_0_22_sparc.tar.gz # Solaris x86 (scp2) -SOLIJAVARTPACKED=SUNWj6rt_1_6_0_21_x86.tar.gz -SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_21_x86.tar.gz -SOLIJAVAMANPACKED=SUNWj6man_1_6_0_21_x86.tar.gz +SOLIJAVARTPACKED=SUNWj6rt_1_6_0_22_x86.tar.gz +SOLIJAVACFGPACKED=SUNWj6cfg_1_6_0_22_x86.tar.gz +SOLIJAVAMANPACKED=SUNWj6man_1_6_0_22_x86.tar.gz # Solaris (pkgUnit.xml, needs only to be changed in major changes) SOLARISJAVART=SUNWj6rt -- cgit v1.2.3 From 8e1ca18f2b942397a12d50aeed2448ee859901fe Mon Sep 17 00:00:00 2001 From: "Joerg Skottke [jsk]" Date: Thu, 14 Oct 2010 08:09:38 +0200 Subject: automationooo330m9: #i115026 - Fuzzy list matching to avoid warnings if the office is installed in some special - non standard - way. As we have no standard, this applies to all installations. --- .../framework/required/includes/script_organizers.inc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/testautomation/framework/required/includes/script_organizers.inc b/testautomation/framework/required/includes/script_organizers.inc index b9ed8420134e..3a70c8051808 100755 --- a/testautomation/framework/required/includes/script_organizers.inc +++ b/testautomation/framework/required/includes/script_organizers.inc @@ -78,6 +78,7 @@ testcase tUpdtScripts dim iCurrentDialog as integer dim iDiffCount as integer + dim max_diffcount as integer hInitSingleDoc() @@ -109,25 +110,33 @@ testcase tUpdtScripts case DLG_JAVASCRIPT: ToolsMacrosOrganizeMacrosJavaScript kontext "ScriptOrganizer" hGetAllNodeNames( ScriptTreeList, cScriptNamesList() ) + max_diffcount = 0 case DLG_BEANSHELL: ToolsMacrosOrganizeMacrosBeanShell kontext "ScriptOrganizer" hGetAllNodeNames( ScriptTreeList, cScriptNamesList() ) + max_diffcount = 0 case DLG_PYTHON: ToolsMacrosOrganizeMacrosPython kontext "ScriptOrganizer" hGetAllNodeNames( ScriptTreeList, cScriptNamesList() ) + max_diffcount = 0 case DLG_BASIC_ORG: ToolsMacro_uno Kontext "Makro" hGetScriptNames( MakroAus, MakroListe, cScriptNamesList() ) + max_diffcount = 6 case DLG_RUN_MACRO: ToolsMacrosRunMacro kontext "ScriptSelector" hGetScriptNames( LibraryTreeList, ScriptList, cScriptNamesList() ) + max_diffcount = 6 end select printlog( "Compare to reference list, create new one if differences were found" ) - iDiffCount = hManageComparisionList( sFileIn, sFileOut, cScriptNamesList() ) - - if ( iDiffCount <> 0 ) then warnlog( "The number of scripts has changed, please review." ) + iDiffCount = abs( hManageComparisionList( sFileIn, sFileOut, cScriptNamesList() ) ) + ' Usually we should have 0 differences in the list. However, as we do not have + ' a unique way of installing the office (Root-Installation, archives and + ' others) we need a little tolerance here. If a number of bundled extensions + ' are installed, we have more scripts. + if ( iDiffCount > max_diffcount ) then warnlog( "The number of scripts has changed, please review." ) printlog( "Close <" & sDialog & ">" ) select case ( sDialog ) -- cgit v1.2.3 From e57216cc0141e38d707a2c06513c6ee2f213a92d Mon Sep 17 00:00:00 2001 From: Jens-Heiner Rechtien Date: Thu, 14 Oct 2010 17:59:23 +0200 Subject: OOO330 --- solenv/inc/minor.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk index 23f622f607a0..5d43eae3771b 100644 --- a/solenv/inc/minor.mk +++ b/solenv/inc/minor.mk @@ -1,5 +1,5 @@ RSCVERSION=330 -RSCREVISION=330m10(Build:9533) -BUILD=9533 -LAST_MINOR=m10 +RSCREVISION=330m11(Build:9535) +BUILD=9535 +LAST_MINOR=m11 SOURCEVERSION=OOO330 -- cgit v1.2.3 From bdee30babe44d99f59e6bb5e3ec6df3abfb0b260 Mon Sep 17 00:00:00 2001 From: Jens-Heiner Rechtien Date: Thu, 14 Oct 2010 18:41:44 +0200 Subject: masterfix OOO330: #i10000#: release mode language configuration --- instsetoo_native/util/pack.lst | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) mode change 100755 => 100644 instsetoo_native/util/pack.lst diff --git a/instsetoo_native/util/pack.lst b/instsetoo_native/util/pack.lst old mode 100755 new mode 100644 index c19039118909..28898c38b988 --- a/instsetoo_native/util/pack.lst +++ b/instsetoo_native/util/pack.lst @@ -7,18 +7,18 @@ # Product List_of_platforms List_of_languages Target -OpenOffice unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US openoffice -OpenOffice unxlngi6,unxmacxi,unxsoli4,unxsols4,wntmsci12 en-US openoffice -#BrOffice pt-BR broffice -#OpenOffice_wJRE unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,wntmsci12 en-US openofficewithjre -#BrOffice_wJRE pt-BR brofficewithjre -OpenOffice_Dev unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxmacxi.pro,unxlngx6.pro en-US openofficedev +OpenOffice unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US|ar|bg|bn|ca|ca-XV|cs|da|de|el|en-GB|es|et|eu|fi|fr|ga|gl|he|hu|it|ja|km|ko|lt|mk|nb|nl|om|pl|pt|pt-BR|ru|sh|sl|sr|sv|tr|vi|zh-CN|zh-TW openoffice +#OpenOffice unxlngi6,unxmacxi,unxsoli4,unxsols4,wntmsci12 en-US openoffice +BrOffice unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro pt-BR broffice +OpenOffice_wJRE unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US|ar|bg|bn|ca|ca-XV|cs|da|de|el|en-GB|es|et|eu|fi|fr|ga|gl|he|hu|it|ja|km|ko|lt|mk|nb|nl|om|pl|pt|pt-BR|ru|sh|sl|sr|sv|tr|vi|zh-CN|zh-TW openofficewithjre +BrOffice_wJRE unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro pt-BR brofficewithjre +#OpenOffice_Dev unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxmacxi.pro,unxlngx6.pro en-US openofficedev #BrOffice_Dev pt-BR brofficedev -#OpenOffice_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxlngi6,unxmacxi,unxsoli4,unxsols4,wntmsci12 en-US sdkoo -OpenOffice_Dev_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxlngi6,unxmacxi,unxsoli4,unxsols4,wntmsci12 en-US sdkoodev +OpenOffice_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoo +#OpenOffice_Dev_SDK unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US sdkoodev #URE unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngi6,unxsoli4,unxsols4,wntmsci12 en-US ure -OpenOfficeLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxmacxi.pro de ooolanguagepack -OpenOfficeLanguagepack unxlngi6,unxsoli4,unxsols4,wntmsci12,unxmacxi de ooolanguagepack -OpenOfficeDevLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxmacxi.pro de|fr|ja|ar|ru ooodevlanguagepack +OpenOfficeLanguagepack unxlngi6.pro,unxmacxi.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro en-US|ar|as|ast|be-BY|bg|bn|ca|ca-XV|cs|da|de|dz|el|en-GB|eo|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|ka|km|kn|ko|ku|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ro|ru|sh|si|sk|sl|sr|sv|ta|te|th|tr|ug|uk|uz|vi|zh-CN|zh-TW ooolanguagepack +#OpenOfficeLanguagepack unxlngi6,unxsoli4,unxsols4,wntmsci12,unxmacxi de ooolanguagepack +#OpenOfficeDevLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro,unxmacxi.pro ar|as|ast|bg|bn|ca|ca-XV|cs|da|de|dz|el|en-GB|es|et|eu|fi|fr|ga|gl|gu|he|hi|hu|id|is|it|ja|km|kn|ko|lt|lv|mk|ml|mr|my|nb|nl|nn|oc|om|or|pa-IN|pl|pt|pt-BR|ru|sh|si|sk|sl|sr|sv|ta|te|th|tr|ug|uk|vi|zh-CN|zh-TW ooodevlanguagepack #BrOfficeLanguagepack unxlngi6.pro,unxsoli4.pro,unxsols4.pro,wntmsci12.pro,unxlngx6.pro pt-BR broolanguagepack -- cgit v1.2.3