summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configmgr/source/components.cxx84
-rw-r--r--configmgr/source/components.hxx8
-rw-r--r--configmgr/source/configurationprovider.cxx16
-rw-r--r--desktop/inc/app.hxx1
-rw-r--r--desktop/source/app/app.cxx32
-rw-r--r--desktop/source/deployment/manager/dp_commandenvironments.cxx38
-rw-r--r--desktop/source/deployment/manager/dp_commandenvironments.hxx23
-rw-r--r--desktop/source/deployment/manager/dp_extensionmanager.cxx416
-rw-r--r--desktop/source/deployment/manager/dp_extensionmanager.hxx17
-rw-r--r--[-rwxr-xr-x]instsetoo_native/util/pack.lst22
-rw-r--r--sc/source/core/data/table2.cxx4
-rwxr-xr-xsetup_native/source/java/javaversion.dat26
-rw-r--r--setup_native/source/java/javaversion2.dat26
-rw-r--r--solenv/inc/minor.mk6
-rwxr-xr-xtestautomation/framework/required/includes/script_organizers.inc15
-rw-r--r--testautomation/math/optional/includes/m_105.inc22
-rwxr-xr-xtestautomation/xml/optional/c_datapilot_pagefields.bas2
-rwxr-xr-xtestautomation/xml/optional/c_xml_print_scale.bas2
-rwxr-xr-xtestautomation/xml/optional/c_xml_scenario.bas2
-rwxr-xr-xtestautomation/xml/optional/calc_xml_7_export.bas2
-rwxr-xr-xtestautomation/xml/optional/ch_xml_japanese_candlestick.bas2
-rw-r--r--testautomation/xml/optional/includes/c_xml_print_scale.inc2
-rw-r--r--testautomation/xml/optional/includes/c_xml_scenario.inc2
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_01.inc2
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_02.inc2
-rwxr-xr-xtestautomation/xml/optional/includes/sxc7_03.inc2
26 files changed, 564 insertions, 212 deletions
diff --git a/configmgr/source/components.cxx b/configmgr/source/components.cxx
index cc5ea1e1e739..d812e54498ac 100644
--- a/configmgr/source/components.cxx
+++ b/configmgr/source/components.cxx
@@ -29,6 +29,7 @@
#include "sal/config.h"
#include <algorithm>
+#include <cstddef>
#include <list>
#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,66 @@ 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();
+
+ virtual void SAL_CALL onTerminated() { release(); }
+
+ 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);
+ acquire();
+}
+
+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 +304,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 78d71e73e7d5..3cd58b145bff 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
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
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<css::task::XInteractionRequest > 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..709cca86c631 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<ucb::XCommandEnvironment> const
OUSTR("Failed to update") + url, 0, exc);
}
}
+
+class ExtensionRemoveGuard
+{
+ css::uno::Reference<css::deployment::XPackage> m_extension;
+ css::uno::Reference<css::deployment::XPackageManager> m_xPackageManager;
+
+public:
+ ExtensionRemoveGuard(
+ css::uno::Reference<css::deployment::XPackage> const & extension,
+ css::uno::Reference<css::deployment::XPackageManager> const & xPackageManager):
+ m_extension(extension), m_xPackageManager(xPackageManager) {}
+ ~ExtensionRemoveGuard();
+
+ void reset(css::uno::Reference<css::deployment::XPackage> 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::task::XAbortChannel>(),
+ css::uno::Reference<css::ucb::XCommandEnvironment>());
+ } catch (...) {
+ OSL_ASSERT(0);
+ }
+}
+
} //end namespace
namespace dp_manager {
@@ -500,6 +531,107 @@ 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<deploy::XPackageManager> const & xPackageMgr,
+ uno::Sequence<beans::NamedValue> const & properties,
+ css::uno::Reference<css::deployment::XPackage> const & xTmpExtension,
+ Reference<task::XAbortChannel> const & xAbortChannel,
+ Reference<ucb::XCommandEnvironment> const & xCmdEnv,
+ Reference<deploy::XPackage> & out_existingExtension )
+ throw (deploy::DeploymentException,
+ ucb::CommandFailedException,
+ ucb::CommandAbortedException,
+ lang::IllegalArgumentException,
+ uno::RuntimeException)
+{
+ try
+ {
+ Reference<deploy::XPackage> 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<ucb::XCommandEnvironment> _xCmdEnv(xCmdEnv);
+ ExtensionProperties props(OUString(), properties, Reference<ucb::XCommandEnvironment>());
+
+ dp_misc::DescriptionInfoset info(dp_misc::getDescriptionInfoset(xTmpExtension->getURL()));
+ const ::boost::optional<dp_misc::SimpleLicenseAttributes> licenseAttributes =
+ info.getSimpleLicenseAttributes();
+
+ if (licenseAttributes && licenseAttributes->suppressIfRequired
+ && props.isSuppressedLicense())
+ _xCmdEnv = Reference<ucb::XCommandEnvironment>(
+ 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<OWeakObject*>(this), excOccurred);
+ throw exc;
+ } catch (...) {
+ throw uno::RuntimeException(
+ OUSTR("Extension Manager: unexpected exception in doChecksForAddExtension"),
+ static_cast<OWeakObject*>(this));
+ }
+}
// Only add to shared and user repository
Reference<deploy::XPackage> ExtensionManager::addExtension(
@@ -524,165 +656,183 @@ Reference<deploy::XPackage> ExtensionManager::addExtension(
throw lang::IllegalArgumentException(
OUSTR("No valid repository name provided."),
static_cast<cppu::OWeakObject*>(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<deploy::XPackage> 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<dp_misc::SimpleLicenseAttributes> licenseAttributes =
- info.getSimpleLicenseAttributes();
Reference<deploy::XPackage> xOldExtension;
Reference<deploy::XPackage> 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<ucb::XCommandEnvironment>());
+ //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<task::XAbortChannel>(),
+ Reference<ucb::XCommandEnvironment>());
+ 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());
+ }
+ 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<ucb::XCommandEnvironment> silentCommandEnv(pSilentCommandEnv);
+
+ sal_Int32 failedPrereq = xTmpExtension->checkPrerequisites(
+ xAbortChannel, silentCommandEnv, true);
+ if (failedPrereq == 0)
+ {
+ xNewExtension = xPackageManager->addPackage(
+ url, properties, OUString(), xAbortChannel,
+ Reference<ucb::XCommandEnvironment>());
+ //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<ucb::XCommandEnvironment>());
+ }
+ 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<OWeakObject*>(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<OWeakObject*>(this), excOccurred2);
+ excOccurred2 <<= exc;
}
- //Prevent showing the license if requested.
- Reference<ucb::XCommandEnvironment> _xCmdEnv(xCmdEnv);
- ExtensionProperties props(OUString(), properties, Reference<ucb::XCommandEnvironment>());
- if (licenseAttributes && licenseAttributes->suppressIfRequired
- && props.isSuppressedLicense())
- _xCmdEnv = Reference<ucb::XCommandEnvironment>(
- 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<OWeakObject*>(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
+ {
+ if (xExtensionBackup.is())
+ {
+ Reference<deploy::XPackage> xRestored =
+ xPackageManager->importExtension(
+ xExtensionBackup, Reference<task::XAbortChannel>(),
+ Reference<ucb::XCommandEnvironment>());
+ }
+ activateExtension(
+ sIdentifier, sFileName, bUserDisabled, false,
+ Reference<task::XAbortChannel>(), Reference<ucb::XCommandEnvironment>());
+ }
+ catch (...)
{
- 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<ucb::XCommandEnvironment> 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<task::XAbortChannel>(),
- 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();
+ ::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<OWeakObject*>(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<ucb::XCommandEnvironment> tmpCmdEnv(
- new TmpRepositoryCommandEnv(xCmdEnv->getInteractionHandler()));
- if (xExtensionBackup.is())
- {
- Reference<deploy::XPackage> xRestored =
- xPackageManager->importExtension(
- xExtensionBackup, Reference<task::XAbortChannel>(),
- tmpCmdEnv);
- }
- activateExtension(
- sIdentifier, sFileName, bUserDisabled, false,
- Reference<task::XAbortChannel>(), 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<OWeakObject*>(this), excOccurred);
+ throw exc;
+ } catch (...) {
+ throw uno::RuntimeException(
+ OUSTR("Extension Manager: unexpected exception in doChecksForAddExtension"),
+ static_cast<OWeakObject*>(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..683f45a1bd6e 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<css::deployment::XPackageManager> m_bundledRepository;
css::uno::Reference<css::deployment::XPackageManager> 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,21 @@ private:
css::uno::Reference<css::deployment::XPackageManager>
getPackageManager(::rtl::OUString const & repository)
throw (css::lang::IllegalArgumentException);
+
+ bool doChecksForAddExtension(
+ css::uno::Reference<css::deployment::XPackageManager> const & xPackageMgr,
+ css::uno::Sequence<css::beans::NamedValue> const & properties,
+ css::uno::Reference<css::deployment::XPackage> const & xTmpExtension,
+ css::uno::Reference<css::task::XAbortChannel> const & xAbortChannel,
+ css::uno::Reference<css::ucb::XCommandEnvironment> const & xCmdEnv,
+ css::uno::Reference<css::deployment::XPackage> & out_existingExtension )
+ throw (css::deployment::DeploymentException,
+ css::ucb::CommandFailedException,
+ css::ucb::CommandAbortedException,
+ css::lang::IllegalArgumentException,
+ css::uno::RuntimeException);
+
+
};
}
diff --git a/instsetoo_native/util/pack.lst b/instsetoo_native/util/pack.lst
index c19039118909..28898c38b988 100755..100644
--- 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
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;
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 <filename> )
-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 <filename> )
-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/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
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 )
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 "<Mod1 End> - " + sTemp + ": " + j + "<Tab>"
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
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
'*