loplugin:flatten in various

Change-Id: I42dca691ffadbddad38a7e8f978b1da9d5d9a7b0
Reviewed-on: https://gerrit.libreoffice.org/42842
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
Noel Grandin 2017-09-27 09:11:35 +02:00
parent b50f595b34
commit cc1ed7fbce
23 changed files with 693 additions and 775 deletions

View File

@ -344,7 +344,7 @@ std::string Flatten::getSourceAsString(SourceRange range)
return std::string( p1, p2 - p1);
}
loplugin::Plugin::Registration< Flatten > X("flatten", false);
loplugin::Plugin::Registration< Flatten > X("flatten", true);
}

View File

@ -293,34 +293,29 @@ void SAL_CALL ODummyEmbeddedObject::setPersistentEntry(
if ( m_bWaitSaveCompleted )
{
if ( nEntryConnectionMode == embed::EntryInitModes::NO_INIT )
saveCompleted( m_xParentStorage != xStorage || m_aEntryName != sEntName );
else
if ( nEntryConnectionMode != embed::EntryInitModes::NO_INIT )
throw embed::WrongStateException(
"The object waits for saveCompleted() call!",
static_cast< ::cppu::OWeakObject* >(this) );
}
if ( nEntryConnectionMode == embed::EntryInitModes::DEFAULT_INIT
|| nEntryConnectionMode == embed::EntryInitModes::NO_INIT )
{
if ( xStorage->hasByName( sEntName ) )
{
m_xParentStorage = xStorage;
m_aEntryName = sEntName;
m_nObjectState = embed::EmbedStates::LOADED;
}
else
throw lang::IllegalArgumentException( "Wrong entry is provided!",
static_cast< ::cppu::OWeakObject* >(this),
2 );
saveCompleted( m_xParentStorage != xStorage || m_aEntryName != sEntName );
}
else
if ( nEntryConnectionMode != embed::EntryInitModes::DEFAULT_INIT
&& nEntryConnectionMode != embed::EntryInitModes::NO_INIT )
throw lang::IllegalArgumentException( "Wrong connection mode is provided!",
static_cast< ::cppu::OWeakObject* >(this),
3 );
if ( !xStorage->hasByName( sEntName ) )
throw lang::IllegalArgumentException( "Wrong entry is provided!",
static_cast< ::cppu::OWeakObject* >(this),
2 );
m_xParentStorage = xStorage;
m_aEntryName = sEntName;
m_nObjectState = embed::EmbedStates::LOADED;
}

View File

@ -903,75 +903,73 @@ void SAL_CALL OleEmbeddedObject::doVerb( sal_Int32 nVerbID )
else
#endif
{
if ( nVerbID == -9 )
{
// the workaround verb to show the object in case no server is available
// if it is possible, the object will be converted to OOo format
if ( !m_bTriedConversion )
{
m_bTriedConversion = true;
if ( TryToConvertToOOo( m_xObjectStream ) )
{
changeState( embed::EmbedStates::ACTIVE );
return;
}
}
if ( !m_xOwnView.is() && m_xObjectStream.is() && m_aFilterName != "Text" )
{
try {
uno::Reference< io::XSeekable > xSeekable( m_xObjectStream, uno::UNO_QUERY );
if ( xSeekable.is() )
xSeekable->seek( 0 );
m_xOwnView = new OwnView_Impl( m_xFactory, m_xObjectStream->getInputStream() );
}
catch( uno::RuntimeException& )
{
throw;
}
catch (uno::Exception const& e)
{
SAL_WARN("embeddedobj.ole", "OleEmbeddedObject::doVerb: "
"-9 fallback path: exception caught: " << e.Message);
}
}
// it may be the OLE Storage, try to extract stream
if ( !m_xOwnView.is() && m_xObjectStream.is() && m_aFilterName == "Text" )
{
uno::Reference< io::XStream > xStream = lcl_ExtractObjectStream( m_xFactory, m_xObjectStream );
if ( TryToConvertToOOo( xStream ) )
{
changeState( embed::EmbedStates::ACTIVE );
return;
}
}
if (!m_xOwnView.is() || !m_xOwnView->Open())
{
//Make a RO copy and see if the OS can find something to at
//least display the content for us
if (m_aTempDumpURL.isEmpty())
m_aTempDumpURL = lcl_ExtractObject(m_xFactory, m_xObjectStream);
if (!m_aTempDumpURL.isEmpty())
{
uno::Reference< css::system::XSystemShellExecute > xSystemShellExecute(
css::system::SystemShellExecute::create(comphelper::getComponentContext(m_xFactory)) );
xSystemShellExecute->execute(m_aTempDumpURL, OUString(), css::system::SystemShellExecuteFlags::URIS_ONLY);
}
else
throw embed::UnreachableStateException();
}
}
else
if ( nVerbID != -9 )
{
throw embed::UnreachableStateException();
}
// the workaround verb to show the object in case no server is available
// if it is possible, the object will be converted to OOo format
if ( !m_bTriedConversion )
{
m_bTriedConversion = true;
if ( TryToConvertToOOo( m_xObjectStream ) )
{
changeState( embed::EmbedStates::ACTIVE );
return;
}
}
if ( !m_xOwnView.is() && m_xObjectStream.is() && m_aFilterName != "Text" )
{
try {
uno::Reference< io::XSeekable > xSeekable( m_xObjectStream, uno::UNO_QUERY );
if ( xSeekable.is() )
xSeekable->seek( 0 );
m_xOwnView = new OwnView_Impl( m_xFactory, m_xObjectStream->getInputStream() );
}
catch( uno::RuntimeException& )
{
throw;
}
catch (uno::Exception const& e)
{
SAL_WARN("embeddedobj.ole", "OleEmbeddedObject::doVerb: "
"-9 fallback path: exception caught: " << e.Message);
}
}
// it may be the OLE Storage, try to extract stream
if ( !m_xOwnView.is() && m_xObjectStream.is() && m_aFilterName == "Text" )
{
uno::Reference< io::XStream > xStream = lcl_ExtractObjectStream( m_xFactory, m_xObjectStream );
if ( TryToConvertToOOo( xStream ) )
{
changeState( embed::EmbedStates::ACTIVE );
return;
}
}
if (!m_xOwnView.is() || !m_xOwnView->Open())
{
//Make a RO copy and see if the OS can find something to at
//least display the content for us
if (m_aTempDumpURL.isEmpty())
m_aTempDumpURL = lcl_ExtractObject(m_xFactory, m_xObjectStream);
if (m_aTempDumpURL.isEmpty())
throw embed::UnreachableStateException();
uno::Reference< css::system::XSystemShellExecute > xSystemShellExecute(
css::system::SystemShellExecute::create(comphelper::getComponentContext(m_xFactory)) );
xSystemShellExecute->execute(m_aTempDumpURL, OUString(), css::system::SystemShellExecuteFlags::URIS_ONLY);
}
}
}

View File

@ -120,15 +120,12 @@ OUString GetNewFilledTempFile_Impl( const uno::Reference< io::XInputStream >& xI
ucb::SimpleFileAccess::create( comphelper::getComponentContext(xFactory) ) );
uno::Reference< io::XOutputStream > xTempOutStream = xTempAccess->openFileWrite( aResult );
if ( xTempOutStream.is() )
{
// copy stream contents to the file
::comphelper::OStorageHelper::CopyInputToOutput( xInStream, xTempOutStream );
xTempOutStream->closeOutput();
xTempOutStream.clear();
}
else
if ( !xTempOutStream.is() )
throw io::IOException(); // TODO:
// copy stream contents to the file
::comphelper::OStorageHelper::CopyInputToOutput( xInStream, xTempOutStream );
xTempOutStream->closeOutput();
xTempOutStream.clear();
}
catch( const packages::WrongPasswordException& )
{
@ -267,14 +264,10 @@ uno::Reference< io::XStream > OleEmbeddedObject::GetNewFilledTempStream_Impl( co
uno::UNO_QUERY_THROW );
uno::Reference< io::XOutputStream > xTempOutStream = xTempFile->getOutputStream();
if ( xTempOutStream.is() )
{
::comphelper::OStorageHelper::CopyInputToOutput( xInStream, xTempOutStream );
xTempOutStream->flush();
}
else
if ( !xTempOutStream.is() )
throw io::IOException(); // TODO:
::comphelper::OStorageHelper::CopyInputToOutput( xInStream, xTempOutStream );
xTempOutStream->flush();
return xTempFile;
}
@ -388,110 +381,108 @@ void OleEmbeddedObject::InsertVisualCache_Impl( const uno::Reference< io::XStrea
uno::Reference< io::XSeekable > xTempSeek( xTempFile, uno::UNO_QUERY_THROW );
uno::Reference< io::XOutputStream > xTempOutStream = xTempFile->getOutputStream();
if ( xTempOutStream.is() )
if ( !xTempOutStream.is() )
throw io::IOException(); // TODO:
// the OlePres stream must have additional header
// TODO/LATER: might need to be extended in future (actually makes sense only for SO7 format)
uno::Reference< io::XInputStream > xInCacheStream = xCachedVisualRepresentation->getInputStream();
if ( !xInCacheStream.is() )
throw uno::RuntimeException();
// write 0xFFFFFFFF at the beginning
uno::Sequence< sal_Int8 > aData( 4 );
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0xFFFFFFFF;
xTempOutStream->writeBytes( aData );
// write clipboard format
uno::Sequence< sal_Int8 > aSigData( 2 );
xInCacheStream->readBytes( aSigData, 2 );
if ( aSigData.getLength() < 2 )
throw io::IOException();
if ( aSigData[0] == 'B' && aSigData[1] == 'M' )
{
// the OlePres stream must have additional header
// TODO/LATER: might need to be extended in future (actually makes sense only for SO7 format)
uno::Reference< io::XInputStream > xInCacheStream = xCachedVisualRepresentation->getInputStream();
if ( !xInCacheStream.is() )
throw uno::RuntimeException();
// write 0xFFFFFFFF at the beginning
uno::Sequence< sal_Int8 > aData( 4 );
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0xFFFFFFFF;
xTempOutStream->writeBytes( aData );
// write clipboard format
uno::Sequence< sal_Int8 > aSigData( 2 );
xInCacheStream->readBytes( aSigData, 2 );
if ( aSigData.getLength() < 2 )
throw io::IOException();
if ( aSigData[0] == 'B' && aSigData[1] == 'M' )
{
// it's a bitmap
aData[0] = 0x02; aData[1] = 0; aData[2] = 0; aData[3] = 0;
}
else
{
// treat it as a metafile
aData[0] = 0x03; aData[1] = 0; aData[2] = 0; aData[3] = 0;
}
xTempOutStream->writeBytes( aData );
// write job related information
aData[0] = 0x04; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write aspect
aData[0] = 0x01; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write l-index
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0xFFFFFFFF;
xTempOutStream->writeBytes( aData );
// write adv. flags
// it's a bitmap
aData[0] = 0x02; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write compression
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0x0;
xTempOutStream->writeBytes( aData );
// get the size
awt::Size aSize = getVisualAreaSize( embed::Aspects::MSOLE_CONTENT );
sal_Int32 nIndex = 0;
// write width
for ( nIndex = 0; nIndex < 4; nIndex++ )
{
aData[nIndex] = (sal_Int8)( aSize.Width % 0x100 );
aSize.Width /= 0x100;
}
xTempOutStream->writeBytes( aData );
// write height
for ( nIndex = 0; nIndex < 4; nIndex++ )
{
aData[nIndex] = (sal_Int8)( aSize.Height % 0x100 );
aSize.Height /= 0x100;
}
xTempOutStream->writeBytes( aData );
// write garbage, it will be overwritten by the size
xTempOutStream->writeBytes( aData );
// write first bytes that was used to detect the type
xTempOutStream->writeBytes( aSigData );
// write the rest of the stream
::comphelper::OStorageHelper::CopyInputToOutput( xInCacheStream, xTempOutStream );
// write the size of the stream
sal_Int64 nLength = xTempSeek->getLength() - 40;
if ( nLength < 0 || nLength >= 0xFFFFFFFF )
{
SAL_WARN( "embeddedobj.ole", "Length is not acceptable!" );
return;
}
for ( sal_Int32 nInd = 0; nInd < 4; nInd++ )
{
aData[nInd] = (sal_Int8)( ( (sal_uInt64) nLength ) % 0x100 );
nLength /= 0x100;
}
xTempSeek->seek( 36 );
xTempOutStream->writeBytes( aData );
xTempOutStream->flush();
xTempSeek->seek( 0 );
if ( xCachedSeek.is() )
xCachedSeek->seek( 0 );
}
else
throw io::IOException(); // TODO:
{
// treat it as a metafile
aData[0] = 0x03; aData[1] = 0; aData[2] = 0; aData[3] = 0;
}
xTempOutStream->writeBytes( aData );
// write job related information
aData[0] = 0x04; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write aspect
aData[0] = 0x01; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write l-index
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0xFFFFFFFF;
xTempOutStream->writeBytes( aData );
// write adv. flags
aData[0] = 0x02; aData[1] = 0; aData[2] = 0; aData[3] = 0;
xTempOutStream->writeBytes( aData );
// write compression
* reinterpret_cast<sal_uInt32*>(aData.getArray()) = 0x0;
xTempOutStream->writeBytes( aData );
// get the size
awt::Size aSize = getVisualAreaSize( embed::Aspects::MSOLE_CONTENT );
sal_Int32 nIndex = 0;
// write width
for ( nIndex = 0; nIndex < 4; nIndex++ )
{
aData[nIndex] = (sal_Int8)( aSize.Width % 0x100 );
aSize.Width /= 0x100;
}
xTempOutStream->writeBytes( aData );
// write height
for ( nIndex = 0; nIndex < 4; nIndex++ )
{
aData[nIndex] = (sal_Int8)( aSize.Height % 0x100 );
aSize.Height /= 0x100;
}
xTempOutStream->writeBytes( aData );
// write garbage, it will be overwritten by the size
xTempOutStream->writeBytes( aData );
// write first bytes that was used to detect the type
xTempOutStream->writeBytes( aSigData );
// write the rest of the stream
::comphelper::OStorageHelper::CopyInputToOutput( xInCacheStream, xTempOutStream );
// write the size of the stream
sal_Int64 nLength = xTempSeek->getLength() - 40;
if ( nLength < 0 || nLength >= 0xFFFFFFFF )
{
SAL_WARN( "embeddedobj.ole", "Length is not acceptable!" );
return;
}
for ( sal_Int32 nInd = 0; nInd < 4; nInd++ )
{
aData[nInd] = (sal_Int8)( ( (sal_uInt64) nLength ) % 0x100 );
nLength /= 0x100;
}
xTempSeek->seek( 36 );
xTempOutStream->writeBytes( aData );
xTempOutStream->flush();
xTempSeek->seek( 0 );
if ( xCachedSeek.is() )
xCachedSeek->seek( 0 );
// insert the result file as replacement image
OUString aCacheName = "\002OlePres000";
@ -1164,7 +1155,7 @@ void OleEmbeddedObject::StoreToLocation_Impl(
}
}
#endif
else
else if (true) // loplugin:flatten
{
throw io::IOException(); // TODO
}
@ -1304,12 +1295,11 @@ void SAL_CALL OleEmbeddedObject::setPersistentEntry(
if ( m_bWaitSaveCompleted )
{
if ( nEntryConnectionMode == embed::EntryInitModes::NO_INIT )
saveCompleted( m_xParentStorage != xStorage || m_aEntryName != sEntName );
else
if ( nEntryConnectionMode != embed::EntryInitModes::NO_INIT )
throw embed::WrongStateException(
"The object waits for saveCompleted() call!",
static_cast< ::cppu::OWeakObject* >(this) );
saveCompleted( m_xParentStorage != xStorage || m_aEntryName != sEntName );
}
uno::Reference< container::XNameAccess > xNameAccess( xStorage, uno::UNO_QUERY_THROW );

View File

@ -127,13 +127,11 @@ public:
const css::uno::Any& aElement ) override
{
T aItem;
if( aElement >>= aItem )
if( hasByName( rName ) )
replace( rName, aItem );
else
throw css::container::NoSuchElementException();
else
if( !(aElement >>= aItem) )
throw css::lang::IllegalArgumentException();
if( !hasByName( rName ) )
throw css::container::NoSuchElementException();
replace( rName, aItem );
}
@ -145,22 +143,19 @@ public:
const css::uno::Any& aElement ) override
{
T aItem;
if( aElement >>= aItem )
if( ! hasByName( rName ) )
insert( rName, aItem );
else
throw css::container::ElementExistException();
else
if( !(aElement >>= aItem) )
throw css::lang::IllegalArgumentException();
if( hasByName( rName ) )
throw css::container::ElementExistException();
insert( rName, aItem );
}
virtual void SAL_CALL removeByName(
const OUString& rName ) override
{
if( hasByName( rName ) )
remove( rName );
else
if( !hasByName( rName ) )
throw css::container::NoSuchElementException();
remove( rName );
}
};

View File

@ -1028,21 +1028,19 @@ void Binding::setValue( const css::uno::Any& aValue )
if( ! supportsType( aValue.getValueType() ) )
throw IncompatibleTypesException( EXCEPT( "type unsupported" ) );
if( maBindingExpression.hasValue() )
{
css::uno::Reference<css::xml::dom::XNode> xNode = maBindingExpression.getNode();
if( xNode.is() )
{
OUString sValue = Convert::get().toXSD( aValue );
bool bSuccess = getModelImpl()->setSimpleContent( xNode, sValue );
if( ! bSuccess )
throw InvalidBindingStateException( EXCEPT( "can't set value" ) );
}
else
throw InvalidBindingStateException( EXCEPT( "no suitable node found" ) );
}
else
if( !maBindingExpression.hasValue() )
throw InvalidBindingStateException( EXCEPT( "no suitable node found" ) );
css::uno::Reference<css::xml::dom::XNode> xNode = maBindingExpression.getNode();
if( !xNode.is() )
throw InvalidBindingStateException( EXCEPT( "no suitable node found" ) );
OUString sValue = Convert::get().toXSD( aValue );
bool bSuccess = getModelImpl()->setSimpleContent( xNode, sValue );
if( ! bSuccess )
throw InvalidBindingStateException( EXCEPT( "can't set value" ) );
}

View File

@ -162,10 +162,9 @@ public:
virtual css::uno::Any SAL_CALL getByIndex( sal_Int32 nIndex ) override
{
if( isValidIndex( nIndex ) )
return css::uno::makeAny( getItem( nIndex ) );
else
if( !isValidIndex( nIndex ) )
throw css::lang::IndexOutOfBoundsException();
return css::uno::makeAny( getItem( nIndex ) );
}
// XIndexReplace : XIndexAccess
@ -173,13 +172,11 @@ public:
const css::uno::Any& aElement ) override
{
T t;
if( isValidIndex( nIndex) )
if( ( aElement >>= t ) && isValid( t ) )
setItem( nIndex, t );
else
throw css::lang::IllegalArgumentException();
else
if( !isValidIndex( nIndex) )
throw css::lang::IndexOutOfBoundsException();
if( !( aElement >>= t ) || !isValid( t ) )
throw css::lang::IllegalArgumentException();
setItem( nIndex, t );
}
// XEnumerationAccess : XElementAccess
@ -199,25 +196,21 @@ public:
virtual void SAL_CALL insert( const css::uno::Any& aElement ) override
{
T t;
if( ( aElement >>= t ) && isValid( t ) )
if( ! hasItem( t ) )
addItem( t );
else
throw css::container::ElementExistException();
else
if( !( aElement >>= t ) || !isValid( t ) )
throw css::lang::IllegalArgumentException();
if( hasItem( t ) )
throw css::container::ElementExistException();
addItem( t );
}
virtual void SAL_CALL remove( const css::uno::Any& aElement ) override
{
T t;
if( aElement >>= t )
if( hasItem( t ) )
removeItem( t );
else
throw css::container::NoSuchElementException();
else
if( !(aElement >>= t) )
throw css::lang::IllegalArgumentException();
if( !hasItem( t ) )
throw css::container::NoSuchElementException();
removeItem( t );
}

View File

@ -98,11 +98,9 @@ public:
virtual css::uno::Any SAL_CALL getByName(
const OUString& aName ) override
{
if( hasItem( aName ) )
return css::uno::makeAny( getItem( aName ) );
else
if( !hasItem( aName ) )
throw css::container::NoSuchElementException();
return css::uno::makeAny( getItem( aName ) );
}
virtual css::uno::Sequence<OUString> SAL_CALL getElementNames() override

View File

@ -79,64 +79,54 @@ void SAL_CALL PropertySetContainer::insertByIndex( sal_Int32 Index, const css::u
sal_Int32 nSize = m_aPropertySetVector.size();
if ( nSize >= Index )
{
Reference< XPropertySet > aPropertySetElement;
if ( Element >>= aPropertySetElement )
{
if ( nSize == Index )
m_aPropertySetVector.push_back( aPropertySetElement );
else
{
PropertySetVector::iterator aIter = m_aPropertySetVector.begin();
aIter += Index;
m_aPropertySetVector.insert( aIter, aPropertySetElement );
}
}
else
{
throw IllegalArgumentException(
WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
}
}
else
if ( nSize < Index )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
Reference< XPropertySet > aPropertySetElement;
if ( !(Element >>= aPropertySetElement) )
{
throw IllegalArgumentException(
WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
}
if ( nSize == Index )
m_aPropertySetVector.push_back( aPropertySetElement );
else
{
PropertySetVector::iterator aIter = m_aPropertySetVector.begin();
aIter += Index;
m_aPropertySetVector.insert( aIter, aPropertySetElement );
}
}
void SAL_CALL PropertySetContainer::removeByIndex( sal_Int32 nIndex )
{
SolarMutexGuard g;
if ( (sal_Int32)m_aPropertySetVector.size() > nIndex )
{
m_aPropertySetVector.erase(m_aPropertySetVector.begin() + nIndex);
}
else
if ( !((sal_Int32)m_aPropertySetVector.size() > nIndex) )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
m_aPropertySetVector.erase(m_aPropertySetVector.begin() + nIndex);
}
// XIndexReplace
void SAL_CALL PropertySetContainer::replaceByIndex( sal_Int32 Index, const css::uno::Any& Element )
{
if ( (sal_Int32)m_aPropertySetVector.size() > Index )
{
Reference< XPropertySet > aPropertySetElement;
if ( Element >>= aPropertySetElement )
{
m_aPropertySetVector[ Index ] = aPropertySetElement;
}
else
{
throw IllegalArgumentException(
WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
}
}
else
if ( !((sal_Int32)m_aPropertySetVector.size() > Index) )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
Reference< XPropertySet > aPropertySetElement;
if ( !(Element >>= aPropertySetElement) )
{
throw IllegalArgumentException(
WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
}
m_aPropertySetVector[ Index ] = aPropertySetElement;
}
// XIndexAccess
@ -151,15 +141,10 @@ Any SAL_CALL PropertySetContainer::getByIndex( sal_Int32 Index )
{
SolarMutexGuard g;
if ( (sal_Int32)m_aPropertySetVector.size() > Index )
{
Any a;
a <<= m_aPropertySetVector[ Index ];
return a;
}
else
if ( (sal_Int32)m_aPropertySetVector.size() <= Index )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
return Any(m_aPropertySetVector[ Index ]);
}
// XElementAccess

View File

@ -166,60 +166,54 @@ sal_Int32 SAL_CALL ItemContainer::getCount()
Any SAL_CALL ItemContainer::getByIndex( sal_Int32 Index )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) > Index )
return makeAny( m_aItemVector[Index] );
else
if ( sal_Int32( m_aItemVector.size()) <= Index )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
return makeAny( m_aItemVector[Index] );
}
// XIndexContainer
void SAL_CALL ItemContainer::insertByIndex( sal_Int32 Index, const Any& aItem )
{
Sequence< PropertyValue > aSeq;
if ( aItem >>= aSeq )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) == Index )
m_aItemVector.push_back( aSeq );
else if ( sal_Int32( m_aItemVector.size()) >Index )
{
std::vector< Sequence< PropertyValue > >::iterator aIter = m_aItemVector.begin();
aIter += Index;
m_aItemVector.insert( aIter, aSeq );
}
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
else
if ( !(aItem >>= aSeq) )
throw IllegalArgumentException( WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
}
void SAL_CALL ItemContainer::removeByIndex( sal_Int32 nIndex )
{
ShareGuard aLock( m_aShareMutex );
if ( (sal_Int32)m_aItemVector.size() > nIndex )
if ( sal_Int32( m_aItemVector.size()) == Index )
m_aItemVector.push_back( aSeq );
else if ( sal_Int32( m_aItemVector.size()) >Index )
{
m_aItemVector.erase(m_aItemVector.begin() + nIndex);
std::vector< Sequence< PropertyValue > >::iterator aIter = m_aItemVector.begin();
aIter += Index;
m_aItemVector.insert( aIter, aSeq );
}
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
void SAL_CALL ItemContainer::removeByIndex( sal_Int32 nIndex )
{
ShareGuard aLock( m_aShareMutex );
if ( (sal_Int32)m_aItemVector.size() <= nIndex )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
m_aItemVector.erase(m_aItemVector.begin() + nIndex);
}
void SAL_CALL ItemContainer::replaceByIndex( sal_Int32 Index, const Any& aItem )
{
Sequence< PropertyValue > aSeq;
if ( aItem >>= aSeq )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) > Index )
m_aItemVector[Index] = aSeq;
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
else
if ( !(aItem >>= aSeq) )
throw IllegalArgumentException( WRONG_TYPE_EXCEPTION,
static_cast<OWeakObject *>(this), 2 );
ShareGuard aLock( m_aShareMutex );
if ( !(sal_Int32( m_aItemVector.size()) > Index) )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
m_aItemVector[Index] = aSeq;
}
} // namespace framework

View File

@ -182,58 +182,52 @@ sal_Int32 SAL_CALL RootItemContainer::getCount()
Any SAL_CALL RootItemContainer::getByIndex( sal_Int32 Index )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) > Index )
return makeAny( m_aItemVector[Index] );
else
if ( sal_Int32( m_aItemVector.size()) <= Index )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
return makeAny( m_aItemVector[Index] );
}
// XIndexContainer
void SAL_CALL RootItemContainer::insertByIndex( sal_Int32 Index, const Any& aItem )
{
Sequence< PropertyValue > aSeq;
if ( aItem >>= aSeq )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) == Index )
m_aItemVector.push_back( aSeq );
else if ( sal_Int32( m_aItemVector.size()) >Index )
{
std::vector< Sequence< PropertyValue > >::iterator aIter = m_aItemVector.begin();
aIter += Index;
m_aItemVector.insert( aIter, aSeq );
}
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
else
if ( !(aItem >>= aSeq) )
throw IllegalArgumentException( WRONG_TYPE_EXCEPTION, static_cast<OWeakObject *>(this), 2 );
}
void SAL_CALL RootItemContainer::removeByIndex( sal_Int32 nIndex )
{
ShareGuard aLock( m_aShareMutex );
if ( (sal_Int32)m_aItemVector.size() > nIndex )
if ( sal_Int32( m_aItemVector.size()) == Index )
m_aItemVector.push_back( aSeq );
else if ( sal_Int32( m_aItemVector.size()) >Index )
{
m_aItemVector.erase(m_aItemVector.begin() + nIndex);
std::vector< Sequence< PropertyValue > >::iterator aIter = m_aItemVector.begin();
aIter += Index;
m_aItemVector.insert( aIter, aSeq );
}
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
void SAL_CALL RootItemContainer::removeByIndex( sal_Int32 nIndex )
{
ShareGuard aLock( m_aShareMutex );
if ( (sal_Int32)m_aItemVector.size() <= nIndex )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
m_aItemVector.erase(m_aItemVector.begin() + nIndex);
}
void SAL_CALL RootItemContainer::replaceByIndex( sal_Int32 Index, const Any& aItem )
{
Sequence< PropertyValue > aSeq;
if ( aItem >>= aSeq )
{
ShareGuard aLock( m_aShareMutex );
if ( sal_Int32( m_aItemVector.size()) > Index )
m_aItemVector[Index] = aSeq;
else
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
}
else
if ( !(aItem >>= aSeq) )
throw IllegalArgumentException( WRONG_TYPE_EXCEPTION, static_cast<OWeakObject *>(this), 2 );
ShareGuard aLock( m_aShareMutex );
if ( !(sal_Int32( m_aItemVector.size()) > Index) )
throw IndexOutOfBoundsException( OUString(), static_cast<OWeakObject *>(this) );
m_aItemVector[Index] = aSeq;
}
Reference< XInterface > SAL_CALL RootItemContainer::createInstanceWithContext( const Reference< XComponentContext >& )

View File

@ -359,61 +359,60 @@ void SAL_CALL ConfigurationAccess_WindowState::insertByName( const OUString& rRe
osl::ResettableMutexGuard g(m_aMutex);
Sequence< PropertyValue > aPropSet;
if ( aPropertySet >>= aPropSet )
if ( !(aPropertySet >>= aPropSet) )
throw IllegalArgumentException();
ResourceURLToInfoCache::const_iterator pIter = m_aResourceURLToInfoCache.find( rResourceURL );
if ( pIter != m_aResourceURLToInfoCache.end() )
throw ElementExistException();
else
{
ResourceURLToInfoCache::const_iterator pIter = m_aResourceURLToInfoCache.find( rResourceURL );
if ( pIter != m_aResourceURLToInfoCache.end() )
throw ElementExistException();
else
if ( !m_bConfigAccessInitialized )
{
if ( !m_bConfigAccessInitialized )
{
impl_initializeConfigAccess();
m_bConfigAccessInitialized = true;
}
impl_initializeConfigAccess();
m_bConfigAccessInitialized = true;
}
// Try to ask our configuration access
if ( m_xConfigAccess.is() )
// Try to ask our configuration access
if ( m_xConfigAccess.is() )
{
if ( m_xConfigAccess->hasByName( rResourceURL ) )
throw ElementExistException();
else
{
if ( m_xConfigAccess->hasByName( rResourceURL ) )
throw ElementExistException();
else
WindowStateInfo aWinStateInfo;
impl_fillStructFromSequence( aWinStateInfo, aPropSet );
m_aResourceURLToInfoCache.emplace( rResourceURL, aWinStateInfo );
// insert must be write-through => insert element into configuration
Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY );
if ( xNameContainer.is() )
{
WindowStateInfo aWinStateInfo;
impl_fillStructFromSequence( aWinStateInfo, aPropSet );
m_aResourceURLToInfoCache.emplace( rResourceURL, aWinStateInfo );
Reference< XSingleServiceFactory > xFactory( m_xConfigAccess, UNO_QUERY );
g.clear();
// insert must be write-through => insert element into configuration
Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY );
if ( xNameContainer.is() )
try
{
Reference< XSingleServiceFactory > xFactory( m_xConfigAccess, UNO_QUERY );
g.clear();
try
{
Reference< XPropertySet > xPropSet( xFactory->createInstance(), UNO_QUERY );
if ( xPropSet.is() )
{
Any a;
impl_putPropertiesFromStruct( aWinStateInfo, xPropSet );
a <<= xPropSet;
xNameContainer->insertByName( rResourceURL, a );
Reference< XChangesBatch > xFlush( xFactory, UNO_QUERY );
if ( xFlush.is() )
xFlush->commitChanges();
}
}
catch ( const Exception& )
Reference< XPropertySet > xPropSet( xFactory->createInstance(), UNO_QUERY );
if ( xPropSet.is() )
{
Any a;
impl_putPropertiesFromStruct( aWinStateInfo, xPropSet );
a <<= xPropSet;
xNameContainer->insertByName( rResourceURL, a );
Reference< XChangesBatch > xFlush( xFactory, UNO_QUERY );
if ( xFlush.is() )
xFlush->commitChanges();
}
}
catch ( const Exception& )
{
}
}
}
}
}
else
throw IllegalArgumentException();
}
// XNameReplace
@ -423,68 +422,66 @@ void SAL_CALL ConfigurationAccess_WindowState::replaceByName( const OUString& rR
osl::ResettableMutexGuard g(m_aMutex);
Sequence< PropertyValue > aPropSet;
if ( aPropertySet >>= aPropSet )
if ( !(aPropertySet >>= aPropSet) )
throw IllegalArgumentException();
ResourceURLToInfoCache::iterator pIter = m_aResourceURLToInfoCache.find( rResourceURL );
if ( pIter != m_aResourceURLToInfoCache.end() )
{
ResourceURLToInfoCache::iterator pIter = m_aResourceURLToInfoCache.find( rResourceURL );
if ( pIter != m_aResourceURLToInfoCache.end() )
WindowStateInfo& rWinStateInfo = pIter->second;
impl_fillStructFromSequence( rWinStateInfo, aPropSet );
m_bModified = true;
}
else
{
if ( !m_bConfigAccessInitialized )
{
WindowStateInfo& rWinStateInfo = pIter->second;
impl_fillStructFromSequence( rWinStateInfo, aPropSet );
m_bModified = true;
}
else
{
if ( !m_bConfigAccessInitialized )
{
impl_initializeConfigAccess();
m_bConfigAccessInitialized = true;
}
// Try to ask our configuration access
Reference< XNameAccess > xNameAccess;
Any a( m_xConfigAccess->getByName( rResourceURL ));
if ( a >>= xNameAccess )
{
WindowStateInfo& rWinStateInfo( impl_insertCacheAndReturnWinState( rResourceURL, xNameAccess ));
impl_fillStructFromSequence( rWinStateInfo, aPropSet );
m_bModified = true;
pIter = m_aResourceURLToInfoCache.find( rResourceURL );
}
else
throw NoSuchElementException();
impl_initializeConfigAccess();
m_bConfigAccessInitialized = true;
}
if ( m_bModified && pIter != m_aResourceURLToInfoCache.end() )
// Try to ask our configuration access
Reference< XNameAccess > xNameAccess;
Any a( m_xConfigAccess->getByName( rResourceURL ));
if ( !(a >>= xNameAccess) )
throw NoSuchElementException();
WindowStateInfo& rWinStateInfo( impl_insertCacheAndReturnWinState( rResourceURL, xNameAccess ));
impl_fillStructFromSequence( rWinStateInfo, aPropSet );
m_bModified = true;
pIter = m_aResourceURLToInfoCache.find( rResourceURL );
}
if ( m_bModified && pIter != m_aResourceURLToInfoCache.end() )
{
Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY );
if ( xNameContainer.is() )
{
Reference< XNameContainer > xNameContainer( m_xConfigAccess, UNO_QUERY );
if ( xNameContainer.is() )
WindowStateInfo aWinStateInfo( pIter->second );
OUString aResourceURL( pIter->first );
m_bModified = false;
g.clear();
try
{
WindowStateInfo aWinStateInfo( pIter->second );
OUString aResourceURL( pIter->first );
m_bModified = false;
g.clear();
try
Reference< XPropertySet > xPropSet;
if ( xNameContainer->getByName( aResourceURL ) >>= xPropSet )
{
Reference< XPropertySet > xPropSet;
if ( xNameContainer->getByName( aResourceURL ) >>= xPropSet )
{
impl_putPropertiesFromStruct( aWinStateInfo, xPropSet );
impl_putPropertiesFromStruct( aWinStateInfo, xPropSet );
Reference< XChangesBatch > xFlush( m_xConfigAccess, UNO_QUERY );
if ( xFlush.is() )
xFlush->commitChanges();
}
}
catch ( const Exception& )
{
Reference< XChangesBatch > xFlush( m_xConfigAccess, UNO_QUERY );
if ( xFlush.is() )
xFlush->commitChanges();
}
}
catch ( const Exception& )
{
}
}
}
else
throw IllegalArgumentException();
}
// container.XContainerListener

View File

@ -277,14 +277,12 @@ Any SAL_CALL MenuBarWrapper::getByName(
fillPopupControllerCache();
PopupControllerCache::const_iterator pIter = m_aPopupControllerCache.find( aName );
if ( pIter != m_aPopupControllerCache.end() )
{
uno::Reference< frame::XDispatchProvider > xDispatchProvider;
xDispatchProvider = pIter->second.m_xDispatchProvider;
return uno::makeAny( xDispatchProvider );
}
else
if ( pIter == m_aPopupControllerCache.end() )
throw container::NoSuchElementException();
uno::Reference< frame::XDispatchProvider > xDispatchProvider;
xDispatchProvider = pIter->second.m_xDispatchProvider;
return uno::makeAny( xDispatchProvider );
}
Sequence< OUString > SAL_CALL MenuBarWrapper::getElementNames()

View File

@ -69,19 +69,18 @@ void SAL_CALL StatusBarWrapper::dispose()
m_aListenerContainer.disposeAndClear( aEvent );
SolarMutexGuard g;
if ( !m_bDisposed )
{
if ( m_xStatusBarManager.is() )
m_xStatusBarManager->dispose();
m_xStatusBarManager.clear();
m_xConfigSource.clear();
m_xConfigData.clear();
m_xContext.clear();
m_bDisposed = true;
}
else
if ( m_bDisposed )
throw DisposedException();
if ( m_xStatusBarManager.is() )
m_xStatusBarManager->dispose();
m_xStatusBarManager.clear();
m_xConfigSource.clear();
m_xConfigData.clear();
m_xContext.clear();
m_bDisposed = true;
}
// XInitialization

View File

@ -187,15 +187,15 @@ void Index::makeIndexKeys(const lang::Locale &rLocale, const OUString &algorithm
continue;
switch(curr) {
case u'-':
if (key_count > 0 && i + 1 < len ) {
case u'-': {
if (key_count <= 0 || i + 1 >= len)
throw RuntimeException();
for (curr = keyStr[++i]; key_count < MAX_KEYS && keys[key_count-1].key < curr; key_count++) {
keys[key_count].key = keys[key_count-1].key+1;
keys[key_count].desc.clear();
}
} else
throw RuntimeException();
break;
break;
}
case u'[':
for (i++; i < len && keyStr[i] != ']'; i++) {
if (unicode::isWhiteSpace(keyStr[i])) {
@ -212,8 +212,10 @@ void Index::makeIndexKeys(const lang::Locale &rLocale, const OUString &algorithm
case u'{':
close = '}';
SAL_FALLTHROUGH;
case u'(':
if (key_count > 0) {
case u'(': {
if (key_count <= 0)
throw RuntimeException();
sal_Int16 end = i+1;
for (; end < len && keyStr[end] != close; end++) ;
@ -228,9 +230,8 @@ void Index::makeIndexKeys(const lang::Locale &rLocale, const OUString &algorithm
keys[key_count++].desc.clear();
}
i=end+1;
} else
throw RuntimeException();
break;
break;
}
default:
keys[key_count].key = curr;
keys[key_count++].desc.clear();

View File

@ -221,83 +221,83 @@ TextConversion_ko::getConversions( const OUString& aText, sal_Int32 nStartPos, s
result.Boundary.startPos = result.Boundary.endPos = 0;
// do conversion only when there are right conversion type and dictionary services.
if (nConversionType == TextConversionType::TO_HANGUL ||
nConversionType == TextConversionType::TO_HANJA) {
sal_Int32 start, end, length = aText.getLength() - nStartPos;
if (nConversionType != TextConversionType::TO_HANGUL &&
nConversionType != TextConversionType::TO_HANJA)
throw NoSupportException(); // Conversion type is not supported in this service.
sal_Int32 start, end, length = aText.getLength() - nStartPos;
if (length < 0 || nStartPos < 0)
length = 0;
else if (length > nLength)
length = nLength;
if (length < 0 || nStartPos < 0)
length = 0;
else if (length > nLength)
length = nLength;
sal_Int16 scriptType = SCRIPT_OTHERS;
sal_Int32 len = 1;
bool toHanja = (nConversionType == TextConversionType::TO_HANJA);
// FROM_LEFT: Hangul -> Hanja
// FROM_RIGHT: Hanja -> Hangul
ConversionDirection eDirection = toHanja ? ConversionDirection_FROM_LEFT : ConversionDirection_FROM_RIGHT;
sal_Int32 maxLength = toHanja ? maxLeftLength : maxRightLength;
if (maxLength == 0) maxLength = 1;
sal_Int16 scriptType = SCRIPT_OTHERS;
sal_Int32 len = 1;
bool toHanja = (nConversionType == TextConversionType::TO_HANJA);
// FROM_LEFT: Hangul -> Hanja
// FROM_RIGHT: Hanja -> Hangul
ConversionDirection eDirection = toHanja ? ConversionDirection_FROM_LEFT : ConversionDirection_FROM_RIGHT;
sal_Int32 maxLength = toHanja ? maxLeftLength : maxRightLength;
if (maxLength == 0) maxLength = 1;
// search for a max length of convertible text
for (start = 0, end = 0; start < length; start++) {
if (end <= start) {
scriptType = checkScriptType(aText[nStartPos + start]);
if (nConversionType == TextConversionType::TO_HANJA) {
if (scriptType != SCRIPT_HANGUL) // skip non-Hangul characters
continue;
} else {
if (scriptType != SCRIPT_HANJA) // skip non-Hanja characters
continue;
}
end = start + 1;
}
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER) {
result.Candidates = getCharConversions(aText, nStartPos + start, len, toHanja); // char2char conversion
// search for a max length of convertible text
for (start = 0, end = 0; start < length; start++) {
if (end <= start) {
scriptType = checkScriptType(aText[nStartPos + start]);
if (nConversionType == TextConversionType::TO_HANJA) {
if (scriptType != SCRIPT_HANGUL) // skip non-Hangul characters
continue;
} else {
for (; end < length && end - start < maxLength; end++)
if (checkScriptType(aText[nStartPos + end]) != scriptType)
break;
for (len = end - start; len > 0; len--) {
if (len > 1) {
try {
if (xCDL.is())
result.Candidates = xCDL->queryConversions(aText, start + nStartPos, len,
aLocale, ConversionDictionaryType::HANGUL_HANJA, eDirection, nConversionOptions); // user dictionary
}
catch ( NoSupportException & ) {
// clear reference (when there is no user dictionary) in order
// to not always have to catch this exception again
// in further calls. (save time)
xCDL = nullptr;
}
catch (...) {
// catch all other exceptions to allow
// querying the system dictionary in the next line
}
if (xCD.is() && toHanja) { // System dictionary would not do Hanja_to_Hangul conversion.
candidates = xCD->getConversions(aText, start + nStartPos, len, eDirection, nConversionOptions);
result.Candidates += candidates;
}
} else if (! toHanja) { // do whole word character 2 character conversion for Hanja to Hangul conversion
result.Candidates = getCharConversions(aText, nStartPos + start, length - start, toHanja);
if (result.Candidates.hasElements())
len = result.Candidates[0].getLength();
}
if (result.Candidates.hasElements())
break;
}
if (scriptType != SCRIPT_HANJA) // skip non-Hanja characters
continue;
}
// found match
if (result.Candidates.hasElements()) {
result.Boundary.startPos = start + nStartPos;
result.Boundary.endPos = start + len + nStartPos;
return result;
end = start + 1;
}
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER) {
result.Candidates = getCharConversions(aText, nStartPos + start, len, toHanja); // char2char conversion
} else {
for (; end < length && end - start < maxLength; end++)
if (checkScriptType(aText[nStartPos + end]) != scriptType)
break;
for (len = end - start; len > 0; len--) {
if (len > 1) {
try {
if (xCDL.is())
result.Candidates = xCDL->queryConversions(aText, start + nStartPos, len,
aLocale, ConversionDictionaryType::HANGUL_HANJA, eDirection, nConversionOptions); // user dictionary
}
catch ( NoSupportException & ) {
// clear reference (when there is no user dictionary) in order
// to not always have to catch this exception again
// in further calls. (save time)
xCDL = nullptr;
}
catch (...) {
// catch all other exceptions to allow
// querying the system dictionary in the next line
}
if (xCD.is() && toHanja) { // System dictionary would not do Hanja_to_Hangul conversion.
candidates = xCD->getConversions(aText, start + nStartPos, len, eDirection, nConversionOptions);
result.Candidates += candidates;
}
} else if (! toHanja) { // do whole word character 2 character conversion for Hanja to Hangul conversion
result.Candidates = getCharConversions(aText, nStartPos + start, length - start, toHanja);
if (result.Candidates.hasElements())
len = result.Candidates[0].getLength();
}
if (result.Candidates.hasElements())
break;
}
}
} else
throw NoSupportException(); // Conversion type is not supported in this service.
// found match
if (result.Candidates.hasElements()) {
result.Boundary.startPos = start + nStartPos;
result.Boundary.endPos = start + len + nStartPos;
return result;
}
}
return result;
}

View File

@ -283,44 +283,42 @@ OUString SAL_CALL
TextConversion_zh::getConversion( const OUString& aText, sal_Int32 nStartPos, sal_Int32 nLength,
const Locale& rLocale, sal_Int16 nConversionType, sal_Int32 nConversionOptions)
{
if (rLocale.Language == "zh" && ( nConversionType == TextConversionType::TO_SCHINESE || nConversionType == TextConversionType::TO_TCHINESE) ) {
aLocale=rLocale;
bool toSChinese = nConversionType == TextConversionType::TO_SCHINESE;
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER)
// char to char dictionary
return getCharConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions);
else {
Sequence <sal_Int32> offset;
// word to word dictionary
return getWordConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions, offset);
}
} else
if (rLocale.Language != "zh" || ( nConversionType != TextConversionType::TO_SCHINESE && nConversionType != TextConversionType::TO_TCHINESE) )
throw NoSupportException(); // Conversion type is not supported in this service.
aLocale=rLocale;
bool toSChinese = nConversionType == TextConversionType::TO_SCHINESE;
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER)
// char to char dictionary
return getCharConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions);
else {
Sequence <sal_Int32> offset;
// word to word dictionary
return getWordConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions, offset);
}
}
OUString SAL_CALL
TextConversion_zh::getConversionWithOffset( const OUString& aText, sal_Int32 nStartPos, sal_Int32 nLength,
const Locale& rLocale, sal_Int16 nConversionType, sal_Int32 nConversionOptions, Sequence<sal_Int32>& offset)
{
if (rLocale.Language == "zh" && ( nConversionType == TextConversionType::TO_SCHINESE || nConversionType == TextConversionType::TO_TCHINESE) ) {
aLocale=rLocale;
bool toSChinese = nConversionType == TextConversionType::TO_SCHINESE;
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER) {
offset.realloc(0);
// char to char dictionary
return getCharConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions);
} else {
if (offset.getLength() < 2*nLength)
offset.realloc(2*nLength);
// word to word dictionary
return getWordConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions, offset);
}
} else
if (rLocale.Language != "zh" || ( nConversionType != TextConversionType::TO_SCHINESE && nConversionType != TextConversionType::TO_TCHINESE) )
throw NoSupportException(); // Conversion type is not supported in this service.
aLocale=rLocale;
bool toSChinese = nConversionType == TextConversionType::TO_SCHINESE;
if (nConversionOptions & TextConversionOption::CHARACTER_BY_CHARACTER) {
offset.realloc(0);
// char to char dictionary
return getCharConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions);
} else {
if (offset.getLength() < 2*nLength)
offset.realloc(2*nLength);
// word to word dictionary
return getWordConversion(aText, nStartPos, nLength, toSChinese, nConversionOptions, offset);
}
}
sal_Bool SAL_CALL

View File

@ -361,49 +361,47 @@ namespace dlgprov
// get input stream provider
Reference< io::XInputStreamProvider > xISP;
if ( xLibContainer.is() )
{
// load dialog library
if ( !xLibContainer->isLibraryLoaded( sLibName ) )
xLibContainer->loadLibrary( sLibName );
// get dialog library
if ( xLibContainer->hasByName( sLibName ) )
{
Any aElement = xLibContainer->getByName( sLibName );
aElement >>= xDialogLib;
}
if ( xDialogLib.is() )
{
// get input stream provider
if ( xDialogLib->hasByName( sDlgName ) )
{
Any aElement = xDialogLib->getByName( sDlgName );
aElement >>= xISP;
}
if ( !xISP.is() )
{
throw IllegalArgumentException(
"DialogProviderImpl::getDialogModel: dialog not found!",
Reference< XInterface >(), 1 );
}
}
else
{
throw IllegalArgumentException(
"DialogProviderImpl::getDialogModel: library not found!",
Reference< XInterface >(), 1 );
}
}
else
if ( !xLibContainer.is() )
{
throw IllegalArgumentException(
"DialogProviderImpl::getDialog: library container not found!",
Reference< XInterface >(), 1 );
}
// load dialog library
if ( !xLibContainer->isLibraryLoaded( sLibName ) )
xLibContainer->loadLibrary( sLibName );
// get dialog library
if ( xLibContainer->hasByName( sLibName ) )
{
Any aElement = xLibContainer->getByName( sLibName );
aElement >>= xDialogLib;
}
if ( !xDialogLib.is() )
{
throw IllegalArgumentException(
"DialogProviderImpl::getDialogModel: library not found!",
Reference< XInterface >(), 1 );
}
// get input stream provider
if ( xDialogLib->hasByName( sDlgName ) )
{
Any aElement = xDialogLib->getByName( sDlgName );
aElement >>= xISP;
}
if ( !xISP.is() )
{
throw IllegalArgumentException(
"DialogProviderImpl::getDialogModel: dialog not found!",
Reference< XInterface >(), 1 );
}
if ( xISP.is() )
xInput = xISP->createInputStream();
msDialogLibName = sLibName;

View File

@ -117,20 +117,19 @@ void SAL_CALL PresenterTextView::initialize (const Sequence<Any>& rArguments)
{
ThrowIfDisposed();
if (rArguments.getLength() == 1)
{
Reference<rendering::XCanvas> xCanvas (rArguments[0], UNO_QUERY_THROW);
if (xCanvas.is())
{
mpImplementation->SetCanvas(
cppcanvas::VCLFactory::createCanvas(xCanvas));
}
}
else
if (!(rArguments.getLength() == 1))
{
throw RuntimeException("PresenterTextView: invalid number of arguments",
static_cast<XWeak*>(this));
}
Reference<rendering::XCanvas> xCanvas (rArguments[0], UNO_QUERY_THROW);
if (xCanvas.is())
{
mpImplementation->SetCanvas(
cppcanvas::VCLFactory::createCanvas(xCanvas));
}
}
Any PresenterTextView::GetPropertyValue (const OUString& rsPropertyName)

View File

@ -511,47 +511,45 @@ readStream(struct DocumentMetadataAccess_Impl & i_rImpl,
try {
if (!splitPath(i_rPath, dir, rest)) throw uno::RuntimeException();
if (dir.isEmpty()) {
if (i_xStorage->isStreamElement(i_rPath)) {
const uno::Reference<io::XStream> xStream(
i_xStorage->openStreamElement(i_rPath,
embed::ElementModes::READ), uno::UNO_SET_THROW);
const uno::Reference<io::XInputStream> xInStream(
xStream->getInputStream(), uno::UNO_SET_THROW );
const uno::Reference<rdf::XURI> xBaseURI(
rdf::URI::create(i_rImpl.m_xContext, i_rBaseURI));
const uno::Reference<rdf::XURI> xURI(
rdf::URI::createNS(i_rImpl.m_xContext,
i_rBaseURI, i_rPath));
i_rImpl.m_xRepository->importGraph(rdf::FileFormat::RDF_XML,
xInStream, xURI, xBaseURI);
} else {
if (!i_xStorage->isStreamElement(i_rPath)) {
throw mkException(
"readStream: is not a stream",
ucb::IOErrorCode_NO_FILE, i_rBaseURI + i_rPath, i_rPath);
}
const uno::Reference<io::XStream> xStream(
i_xStorage->openStreamElement(i_rPath,
embed::ElementModes::READ), uno::UNO_SET_THROW);
const uno::Reference<io::XInputStream> xInStream(
xStream->getInputStream(), uno::UNO_SET_THROW );
const uno::Reference<rdf::XURI> xBaseURI(
rdf::URI::create(i_rImpl.m_xContext, i_rBaseURI));
const uno::Reference<rdf::XURI> xURI(
rdf::URI::createNS(i_rImpl.m_xContext,
i_rBaseURI, i_rPath));
i_rImpl.m_xRepository->importGraph(rdf::FileFormat::RDF_XML,
xInStream, xURI, xBaseURI);
} else {
if (i_xStorage->isStorageElement(dir)) {
const uno::Reference<embed::XStorage> xDir(
i_xStorage->openStorageElement(dir,
embed::ElementModes::READ));
const uno::Reference< beans::XPropertySet > xDirProps(xDir,
uno::UNO_QUERY_THROW);
try {
OUString mimeType;
xDirProps->getPropertyValue(
utl::MediaDescriptor::PROP_MEDIATYPE() )
>>= mimeType;
if (mimeType.startsWith(s_odfmime)) {
SAL_WARN("sfx", "readStream: refusing to recurse into embedded document");
return;
}
} catch (const uno::Exception &) { }
readStream(i_rImpl, xDir, rest, i_rBaseURI+dir+"/" );
} else {
if (!i_xStorage->isStorageElement(dir)) {
throw mkException(
"readStream: is not a directory",
ucb::IOErrorCode_NO_DIRECTORY, i_rBaseURI + dir, dir);
}
const uno::Reference<embed::XStorage> xDir(
i_xStorage->openStorageElement(dir,
embed::ElementModes::READ));
const uno::Reference< beans::XPropertySet > xDirProps(xDir,
uno::UNO_QUERY_THROW);
try {
OUString mimeType;
xDirProps->getPropertyValue(
utl::MediaDescriptor::PROP_MEDIATYPE() )
>>= mimeType;
if (mimeType.startsWith(s_odfmime)) {
SAL_WARN("sfx", "readStream: refusing to recurse into embedded document");
return;
}
} catch (const uno::Exception &) { }
readStream(i_rImpl, xDir, rest, i_rBaseURI+dir+"/" );
}
} catch (const container::NoSuchElementException & e) {
throw mkException(e.Message, ucb::IOErrorCode_NOT_EXISTING_PATH,

View File

@ -1408,61 +1408,59 @@ void ImplementationRegistration::prepareRegister(
// set implLoaderUrl
}
if( m_xSMgr.is() ) {
try
{
Reference < XImplementationLoader > xAct(
m_xSMgr->createInstanceWithContext(activatorName, m_xCtx) , UNO_QUERY );
if (xAct.is())
{
Reference < XSimpleRegistry > xRegistry;
if (xReg.is())
{
// registry supplied by user
xRegistry = xReg;
}
else
{
xRegistry = getRegistryFromServiceManager();
}
if ( xRegistry.is())
{
doRegister(m_xSMgr, m_xCtx, xAct, xRegistry, implementationLoaderUrl,
locationUrl, registeredLocationUrl);
}
}
else
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() - The service "
+ activatorName + " cannot be instantiated" );
}
}
catch( CannotRegisterImplementationException & )
{
throw;
}
catch( const InvalidRegistryException & e )
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() "
"InvalidRegistryException during registration (" + e.Message + ")" );
}
catch( const MergeConflictException & e )
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() "
"MergeConflictException during registration (" + e.Message + ")" );
}
}
else
{
if( !m_xSMgr.is() ) {
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() "
"no componentcontext available to instantiate loader" );
}
try
{
Reference < XImplementationLoader > xAct(
m_xSMgr->createInstanceWithContext(activatorName, m_xCtx) , UNO_QUERY );
if (!xAct.is())
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() - The service "
+ activatorName + " cannot be instantiated" );
}
Reference < XSimpleRegistry > xRegistry;
if (xReg.is())
{
// registry supplied by user
xRegistry = xReg;
}
else
{
xRegistry = getRegistryFromServiceManager();
}
if ( xRegistry.is())
{
doRegister(m_xSMgr, m_xCtx, xAct, xRegistry, implementationLoaderUrl,
locationUrl, registeredLocationUrl);
}
}
catch( CannotRegisterImplementationException & )
{
throw;
}
catch( const InvalidRegistryException & e )
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() "
"InvalidRegistryException during registration (" + e.Message + ")" );
}
catch( const MergeConflictException & e )
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::registerImplementation() "
"MergeConflictException during registration (" + e.Message + ")" );
}
}
@ -1677,24 +1675,23 @@ void ImplementationRegistration::doRegister(
bool bSuccess =
xAct->writeRegistryInfo(xSourceKey, implementationLoaderUrl, locationUrl);
if ( bSuccess )
{
prepareRegistry(xDest, xSourceKey, implementationLoaderUrl, registeredLocationUrl, xCtx);
xSourceKey->closeKey();
xSourceKey = xReg->getRootKey();
Reference < XRegistryKey > xDestKey = xDest->getRootKey();
stoc_impreg::mergeKeys( xDestKey, xSourceKey );
xDestKey->closeKey();
xSourceKey->closeKey();
}
else
if ( !bSuccess )
{
throw CannotRegisterImplementationException(
"ImplementationRegistration::doRegistration() component registration signaled failure" );
}
prepareRegistry(xDest, xSourceKey, implementationLoaderUrl, registeredLocationUrl, xCtx);
xSourceKey->closeKey();
xSourceKey = xReg->getRootKey();
Reference < XRegistryKey > xDestKey = xDest->getRootKey();
stoc_impreg::mergeKeys( xDestKey, xSourceKey );
xDestKey->closeKey();
xSourceKey->closeKey();
// Cleanup Source registry.
if ( xSourceKey->isValid() )
xSourceKey->closeKey();

View File

@ -558,17 +558,16 @@ void SAL_CALL OServiceManagerWrapper::setPropertyValue(
if ( PropertyName == "DefaultContext" )
{
Reference< XComponentContext > xContext;
if (aValue >>= xContext)
{
MutexGuard aGuard( m_mutex );
m_xContext = xContext;
}
else
if (!(aValue >>= xContext))
{
throw IllegalArgumentException(
"no XComponentContext given!",
static_cast<OWeakObject *>(this), 1 );
}
MutexGuard aGuard( m_mutex );
m_xContext = xContext;
}
else
{
@ -698,27 +697,23 @@ void OServiceManager::setPropertyValue(
const OUString& PropertyName, const Any& aValue )
{
check_undisposed();
if ( PropertyName == "DefaultContext" )
{
Reference< XComponentContext > xContext;
if (aValue >>= xContext)
{
MutexGuard aGuard( m_mutex );
m_xContext = xContext;
}
else
{
throw IllegalArgumentException(
"no XComponentContext given!",
static_cast<OWeakObject *>(this), 1 );
}
}
else
if ( PropertyName != "DefaultContext" )
{
throw UnknownPropertyException(
"unknown property " + PropertyName,
static_cast<OWeakObject *>(this) );
}
Reference< XComponentContext > xContext;
if (!(aValue >>= xContext))
{
throw IllegalArgumentException(
"no XComponentContext given!",
static_cast<OWeakObject *>(this), 1 );
}
MutexGuard aGuard( m_mutex );
m_xContext = xContext;
}
Any OServiceManager::getPropertyValue(const OUString& PropertyName)

View File

@ -90,14 +90,7 @@ uno::Any PrivateProfileStringListener::getValueEvent()
{
// get the private profile string
OUString sValue;
if(!maFileName.isEmpty())
{
// get key/value from a file
Config aCfg( maFileName );
aCfg.SetGroup( maGroupName );
sValue = OStringToOUString(aCfg.ReadKey(maKey), RTL_TEXTENCODING_DONTKNOW);
}
else
if(maFileName.isEmpty())
{
// get key/value from Windows registry
#ifdef _WIN32
@ -129,6 +122,12 @@ uno::Any PrivateProfileStringListener::getValueEvent()
#endif
}
// get key/value from a file
Config aCfg( maFileName );
aCfg.SetGroup( maGroupName );
sValue = OStringToOUString(aCfg.ReadKey(maKey), RTL_TEXTENCODING_DONTKNOW);
return uno::makeAny( sValue );
}
@ -137,14 +136,7 @@ void PrivateProfileStringListener::setValueEvent( const css::uno::Any& value )
// set the private profile string
OUString aValue;
value >>= aValue;
if(!maFileName.isEmpty())
{
// set value into a file
Config aCfg( maFileName );
aCfg.SetGroup( maGroupName );
aCfg.WriteKey( maKey, OUStringToOString(aValue, RTL_TEXTENCODING_DONTKNOW) );
}
else
if(maFileName.isEmpty())
{
//set value into Windows registry
#ifdef _WIN32
@ -172,6 +164,12 @@ void PrivateProfileStringListener::setValueEvent( const css::uno::Any& value )
#endif
}
// set value into a file
Config aCfg( maFileName );
aCfg.SetGroup( maGroupName );
aCfg.WriteKey( maKey, OUStringToOString(aValue, RTL_TEXTENCODING_DONTKNOW) );
}
SwVbaSystem::SwVbaSystem( uno::Reference<uno::XComponentContext > const & xContext ): SwVbaSystem_BASE( uno::Reference< XHelperInterface >(), xContext )