diff options
Diffstat (limited to 'desktop/source/deployment/manager/dp_manager.cxx')
-rw-r--r-- | desktop/source/deployment/manager/dp_manager.cxx | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/desktop/source/deployment/manager/dp_manager.cxx b/desktop/source/deployment/manager/dp_manager.cxx index 53877d8188d8..3b7432ae8057 100644 --- a/desktop/source/deployment/manager/dp_manager.cxx +++ b/desktop/source/deployment/manager/dp_manager.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * + * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite @@ -105,7 +105,7 @@ namespace { OUString getExtensionFolder(OUString const & parentFolder, Reference<ucb::XCommandEnvironment> const & xCmdEnv) { - ::ucbhelper::Content tempFolder( + ::ucbhelper::Content tempFolder( parentFolder, xCmdEnv ); Reference<sdbc::XResultSet> xResultSet( tempFolder.createCursor( @@ -154,12 +154,12 @@ void PackageManagerImpl::initActivationLayer( if (title.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "META-INF") ) ) continue; - + ::ucbhelper::Content sourceContent( Reference<XContentAccess>( xResultSet, UNO_QUERY_THROW )->queryContent(), xCmdEnv ); - + OUString mediaType( detectMediaType( sourceContent, false /* no throw */) ); if (mediaType.getLength() >0) @@ -199,13 +199,13 @@ void PackageManagerImpl::initActivationLayer( //The data base can always be written because it it always in the user installation m_activePackagesDB.reset( new ActivePackages( dbName, false ) ); - + if (! m_readOnly && ! m_context.equals(OUSTR("bundled"))) { // clean up activation layer, scan for zombie temp dirs: ActivePackages::Entries id2temp( m_activePackagesDB->getEntries() ); - - ::ucbhelper::Content tempFolder( + + ::ucbhelper::Content tempFolder( m_activePackages_expanded, xCmdEnv ); Reference<sdbc::XResultSet> xResultSet( tempFolder.createCursor( @@ -220,7 +220,7 @@ void PackageManagerImpl::initActivationLayer( Reference<sdbc::XRow>( xResultSet, UNO_QUERY_THROW )->getString( 1 /* Title */ ) ); - + const char extensionRemoved[] = "removed"; if (title.endsWithAsciiL( extensionRemoved, sizeof(extensionRemoved) - 1)) @@ -233,7 +233,7 @@ void PackageManagerImpl::initActivationLayer( remFile, rtl_UriCharClassPchar, rtl_UriEncodeIgnoreEscapes, RTL_TEXTENCODING_UTF8 ) ); - } + } else { tempEntries.push_back( ::rtl::Uri::encode( @@ -294,7 +294,7 @@ void PackageManagerImpl::initActivationLayer( false /* no throw: ignore errors */ ); erase_path( url, Reference<XCommandEnvironment>(), false /* no throw: ignore errors */ ); - //delete the xxx.tmpremoved file + //delete the xxx.tmpremoved file erase_path(url + OUSTR("removed"), Reference<XCommandEnvironment>(), false); } @@ -322,7 +322,7 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create( PackageManagerImpl * that = new PackageManagerImpl( xComponentContext, context ); Reference<deployment::XPackageManager> xPackageManager( that ); - + OUString packages, logFile, stampURL; if (context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("user") )) { that->m_activePackages = OUSTR( @@ -368,7 +368,7 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create( "vnd.sun.star.expand:$BUNDLED_EXTENSIONS_USER/registry"); logFile = OUSTR( "vnd.sun.star.expand:$BUNDLED_EXTENSIONS_USER/log.txt"); - //No stamp file. We assume that bundled is always readonly. It must not be + //No stamp file. We assume that bundled is always readonly. It must not be //modified from ExtensionManager but only by the installer } else if (context.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("tmp") )) { @@ -387,13 +387,13 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create( OUSTR("invalid context given: ") + context, Reference<XInterface>(), static_cast<sal_Int16>(-1) ); } - + Reference<XCommandEnvironment> xCmdEnv; - + try { //There is no stampURL for the bundled folder if (stampURL.getLength() > 0) - { + { #define CURRENT_STAMP "1" try { //The osl file API does not allow to find out if one can write @@ -424,7 +424,7 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create( that->m_readOnly = true; } } - + if (!that->m_readOnly && logFile.getLength() > 0) { const Any any_logFile(logFile); @@ -437,12 +437,12 @@ Reference<deployment::XPackageManager> PackageManagerImpl::create( UNO_QUERY_THROW ); xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv, that->m_xLogFile ) ); } - + that->initRegistryBackends(); that->initActivationLayer( xCmdEnv ); - + return xPackageManager; - + } catch (RuntimeException &) { throw; @@ -488,9 +488,9 @@ void PackageManagerImpl::disposing() m_xRegistry.clear(); m_activePackagesDB.reset(0); m_xComponentContext.clear(); - + t_pm_helper::disposing(); - + } catch (RuntimeException &) { throw; @@ -635,11 +635,11 @@ OUString PackageManagerImpl::insertToActivationLayer( destFolder = makeURL( m_activePackages, tempEntry ); } destFolder += OUSTR("_"); - + // prepare activation folder: ::ucbhelper::Content destFolderContent; create_folder( &destFolderContent, destFolder, xCmdEnv ); - + // copy content into activation temp dir: if (mediaType.matchIgnoreAsciiCaseAsciiL( RTL_CONSTASCII_STRINGPARAM( @@ -665,7 +665,7 @@ OUString PackageManagerImpl::insertToActivationLayer( buf.append(sourceContent.getURL()); } buf.append( static_cast<sal_Unicode>('/') ); - sourceContent = ::ucbhelper::Content( + sourceContent = ::ucbhelper::Content( buf.makeStringAndClear(), xCmdEnv ); } if (! destFolderContent.transferContent( @@ -673,7 +673,7 @@ OUString PackageManagerImpl::insertToActivationLayer( title, NameClash::OVERWRITE )) throw RuntimeException( OUSTR("UCB transferContent() failed!"), 0 ); - + // write to DB: //bundled extensions should only be added by the synchronizeAddedExtensions //functions. Moreover, there is no "temporary folder" for bundled extensions. @@ -697,7 +697,7 @@ void PackageManagerImpl::insertToActivationLayerDB( OUString const & id, ActivePackages::Data const & dbData ) { //access to the database must be guarded. See removePackage - const ::osl::MutexGuard guard( getMutex() ); + const ::osl::MutexGuard guard( getMutex() ); m_activePackagesDB->put( id, dbData ); } @@ -761,7 +761,7 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv_, m_xLogFile ) ); else xCmdEnv.set( xCmdEnv_ ); - + try { ::ucbhelper::Content sourceContent; create_ucb_content( &sourceContent, url, xCmdEnv ); // throws exc @@ -772,11 +772,11 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( rtl_UriEncodeIgnoreEscapes, RTL_TEXTENCODING_UTF8 ) ); OUString destFolder; - + OUString mediaType(mediaType_); if (mediaType.getLength() == 0) mediaType = detectMediaType( sourceContent ); - + Reference<deployment::XPackage> xPackage; // copy file: progressUpdate( @@ -801,7 +801,7 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( // not work, anyway. docContent.setPropertyValue( OUSTR("MediaType"), Any(mediaType) ); - + // xxx todo: obsolete in the future try { docFolderContent.executeCommand( OUSTR("flush"), Any() ); @@ -813,7 +813,7 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( destFolder = insertToActivationLayer( properties, mediaType, sourceContent, title, &dbData ); - + // bind activation package: //Because every shared/user extension will be unpacked in a folder, //which was created with a unique name we will always have two different @@ -821,12 +821,12 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( //Therefore bindPackage does not need a guard here. xPackage = m_xRegistry->bindPackage( makeURL( destFolder, title_enc ), mediaType, false, OUString(), xCmdEnv ); - + OSL_ASSERT( xPackage.is() ); if (xPackage.is()) { bool install = false; - try + try { OUString const id = dp_misc::getIdentifier( xPackage ); @@ -834,7 +834,7 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( if (isInstalled(xPackage)) { //Do not guard the complete function with the getMutex - removePackage(id, xPackage->getName(), xAbortChannel, + removePackage(id, xPackage->getName(), xAbortChannel, xCmdEnv); } install = true; @@ -845,13 +845,13 @@ Reference<deployment::XPackage> PackageManagerImpl::addPackage( deletePackageFromCache( xPackage, destFolder ); throw; } - if (!install) - { + if (!install) + { deletePackageFromCache( xPackage, destFolder ); } //ToDo: We should notify only if the extension is registered fireModified(); - } + } return xPackage; } catch (RuntimeException &) { @@ -882,7 +882,7 @@ void PackageManagerImpl::deletePackageFromCache( OUString const & destFolder) { try_dispose( xPackage ); - + //we remove the package from the uno cache //no service from the package may be loaded at this time!!! erase_path( destFolder, Reference<XCommandEnvironment>(), @@ -903,25 +903,25 @@ void PackageManagerImpl::removePackage( RuntimeException) { check(); - + Reference<XCommandEnvironment> xCmdEnv; if (m_xLogFile.is()) xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv_, m_xLogFile ) ); else xCmdEnv.set( xCmdEnv_ ); - + try { Reference<deployment::XPackage> xPackage; { const ::osl::MutexGuard guard(getMutex()); - //Check if this extension exist and throw an IllegalArgumentException + //Check if this extension exist and throw an IllegalArgumentException //if it does not //If the files of the extension are already removed, or there is a //different extension at the same place, for example after updating the //extension, then the returned object is that which uses the database data. xPackage = getDeployedPackage_(id, fileName, xCmdEnv ); - + //Because the extension is only removed the next time the extension //manager runs after restarting OOo, we need to indicate that a //shared extension was "deleted". When a user starts OOo, then it @@ -940,7 +940,7 @@ void PackageManagerImpl::removePackage( OUString aUserName; ::osl::Security aSecurity; aSecurity.getUserName( aUserName ); - + ::rtl::OString stamp = ::rtl::OUStringToOString(aUserName, RTL_TEXTENCODING_UTF8); Reference<css::io::XInputStream> xData( ::xmlscript::createInputStream( @@ -1007,7 +1007,7 @@ Reference<deployment::XPackage> PackageManagerImpl::getDeployedPackage_( { ActivePackages::Data val; if (m_activePackagesDB->get( &val, id, fileName )) - { + { return getDeployedPackage_( id, val, xCmdEnv, false ); } throw lang::IllegalArgumentException( @@ -1102,7 +1102,7 @@ Reference<deployment::XPackage> PackageManagerImpl::getDeployedPackage( xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv_, m_xLogFile ) ); else xCmdEnv.set( xCmdEnv_ ); - + try { const ::osl::MutexGuard guard( getMutex() ); return getDeployedPackage_( id, fileName, xCmdEnv ); @@ -1147,7 +1147,7 @@ PackageManagerImpl::getDeployedPackages( xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv_, m_xLogFile ) ); else xCmdEnv.set( xCmdEnv_ ); - + try { const ::osl::MutexGuard guard( getMutex() ); return getDeployedPackages_( xCmdEnv ); @@ -1194,17 +1194,17 @@ void PackageManagerImpl::reinstallDeployedPackages( throw RuntimeException( OUSTR("You must close any running Office process before " "reinstalling packages!"), static_cast<OWeakObject *>(this) ); - + Reference<XCommandEnvironment> xCmdEnv; if (m_xLogFile.is()) xCmdEnv.set( new CmdEnvWrapperImpl( xCmdEnv_, m_xLogFile ) ); else xCmdEnv.set( xCmdEnv_ ); - + try { ProgressLevel progress( xCmdEnv, OUSTR("Reinstalling all deployed packages...") ); - + try_dispose( m_xRegistry ); m_xRegistry.clear(); if (m_registryCache.getLength() > 0) @@ -1274,14 +1274,14 @@ bool PackageManagerImpl::synchronizeRemovedExtensions( bool bRemoved = false; //Check if the URL to the extension is still the same ::ucbhelper::Content contentExtension; - + if (!create_ucb_content( &contentExtension, url, Reference<XCommandEnvironment>(), false)) { bRemoved = true; } - + //The folder is in the extension database, but it can still be deleted. //look for the xxx.tmpremoved file //There can also be the case that a different extension was installed @@ -1289,7 +1289,7 @@ bool PackageManagerImpl::synchronizeRemovedExtensions( if (!bRemoved && bShared) { ::ucbhelper::Content contentRemoved; - + if (create_ucb_content( &contentRemoved, m_activePackages_expanded + OUSTR("/") + @@ -1315,7 +1315,7 @@ bool PackageManagerImpl::synchronizeRemovedExtensions( { bRemoved = true; } - + } if (bRemoved) { @@ -1340,7 +1340,7 @@ bool PackageManagerImpl::synchronizeRemovedExtensions( bool PackageManagerImpl::synchronizeAddedExtensions( Reference<task::XAbortChannel> const & xAbortChannel, Reference<css::ucb::XCommandEnvironment> const & xCmdEnv) -{ +{ bool bModified = false; ActivePackages::Entries id2temp( m_activePackagesDB->getEntries() ); //check if the folder exist at all. The shared extension folder @@ -1348,14 +1348,14 @@ bool PackageManagerImpl::synchronizeAddedExtensions( if (!create_ucb_content( NULL, m_activePackages_expanded, Reference<css::ucb::XCommandEnvironment>(), false)) return bModified; - ::ucbhelper::Content tempFolder( + ::ucbhelper::Content tempFolder( m_activePackages_expanded, xCmdEnv ); - + Reference<sdbc::XResultSet> xResultSet( tempFolder.createCursor( Sequence<OUString>( &StrTitle::get(), 1 ), ::ucbhelper::INCLUDE_FOLDERS_ONLY ) ); - + while (xResultSet->next()) { try @@ -1385,7 +1385,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions( if (::std::find_if( id2temp.begin(), id2temp.end(), match ) == id2temp.end()) { - + // The folder was not found in the data base, so it must be // an added extension OUString url(m_activePackages_expanded + OUSTR("/") + titleEncoded); @@ -1399,7 +1399,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions( Reference<XCommandEnvironment>(), false)) continue; sExtFolder = getExtensionFolder( - m_activePackages_expanded + + m_activePackages_expanded + OUString(OUSTR("/")) + titleEncoded + OUSTR("_"), xCmdEnv); url = makeURLAppendSysPathSegment(m_activePackages_expanded, title); url = makeURLAppendSysPathSegment(url, sExtFolder); @@ -1407,7 +1407,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions( Reference<deployment::XPackage> xPackage = m_xRegistry->bindPackage( url, OUString(), false, OUString(), xCmdEnv ); if (xPackage.is()) - { + { //Prepare the database entry ActivePackages::Data dbData; @@ -1421,13 +1421,13 @@ bool PackageManagerImpl::synchronizeAddedExtensions( OSL_ENSURE(dbData.version.getLength() > 0, "Extension Manager: bundled and shared extensions must have " "an identifier and a version"); - + OUString id = dp_misc::getIdentifier( xPackage ); //We provide a special command environment that will prevent //showing a license if simple-licens/@accept-by = "admin" //It will also prevent showing the license for bundled extensions - //which is not supported. + //which is not supported. OSL_ASSERT(!m_context.equals(OUSTR("user"))); // shall the license be suppressed? @@ -1439,7 +1439,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions( bool bNoLicense = false; if (attr && attr->suppressIfRequired && props.isSuppressedLicense()) bNoLicense = true; - + Reference<ucb::XCommandEnvironment> licCmdEnv( new LicenseCommandEnv(xCmdEnv->getInteractionHandler(), bNoLicense, m_context)); @@ -1458,7 +1458,7 @@ bool PackageManagerImpl::synchronizeAddedExtensions( catch (uno::Exception &) { OSL_ASSERT(0); - } + } } return bModified; } @@ -1511,7 +1511,7 @@ Sequence< Reference<deployment::XPackage> > PackageManagerImpl::getExtensionsWit OUString url = makeURL(m_activePackages, i->second.temporaryName); if (bShared) url = makeURLAppendSysPathSegment( url + OUSTR("_"), i->second.fileName); - + Reference<deployment::XPackage> p = m_xRegistry->bindPackage( url, OUString(), false, OUString(), xCmdEnv ); @@ -1560,7 +1560,7 @@ sal_Int32 PackageManagerImpl::checkPrerequisites( throw lang::IllegalArgumentException( OUSTR("PackageManagerImpl::checkPrerequisites: extension is not" " from this repository."), 0, 0); - + ActivePackages::Data dbData; OUString id = dp_misc::getIdentifier(extension); if (m_activePackagesDB->get( &dbData, id, OUString())) @@ -1570,11 +1570,11 @@ sal_Int32 PackageManagerImpl::checkPrerequisites( sal_Int32 prereq = dbData.failedPrerequisites.toInt32(); if ( !(prereq & deployment::Prerequisites::LICENSE)) _xCmdEnv = new NoLicenseCommandEnv(xCmdEnv->getInteractionHandler()); - + sal_Int32 failedPrereq = extension->checkPrerequisites( xAbortChannel, _xCmdEnv, false); dbData.failedPrerequisites = OUString::valueOf(failedPrereq); - insertToActivationLayerDB(id, dbData); + insertToActivationLayerDB(id, dbData); } else { |