diff options
-rw-r--r-- | offapi/com/sun/star/rdf/XDocumentRepository.idl | 1 | ||||
-rw-r--r-- | unoxml/source/rdf/librdf_repository.cxx | 31 |
2 files changed, 19 insertions, 13 deletions
diff --git a/offapi/com/sun/star/rdf/XDocumentRepository.idl b/offapi/com/sun/star/rdf/XDocumentRepository.idl index ff1ee9bab923..039e376994f5 100644 --- a/offapi/com/sun/star/rdf/XDocumentRepository.idl +++ b/offapi/com/sun/star/rdf/XDocumentRepository.idl @@ -169,7 +169,6 @@ interface XDocumentRepository : XRepository com::sun::star::beans::Pair< sequence<Statement>, boolean > getStatementRDFa([in] XMetadatable Element) raises( com::sun::star::lang::IllegalArgumentException, - com::sun::star::container::NoSuchElementException, RepositoryException ); /** gets matching RDFa statements from the repository. diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx index dd0dec63a277..2ce52b71856a 100644 --- a/unoxml/source/rdf/librdf_repository.cxx +++ b/unoxml/source/rdf/librdf_repository.cxx @@ -359,7 +359,6 @@ public: virtual beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL getStatementRDFa(uno::Reference< rdf::XMetadatable > const& i_xElement) throw (uno::RuntimeException, lang::IllegalArgumentException, - container::NoSuchElementException, rdf::RepositoryException, std::exception) SAL_OVERRIDE; virtual uno::Reference< container::XEnumeration > SAL_CALL getStatementsRDFa( @@ -1647,7 +1646,6 @@ beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > SAL_CALL librdf_Repository::getStatementRDFa( const uno::Reference< rdf::XMetadatable > & i_xElement) throw (uno::RuntimeException, lang::IllegalArgumentException, - container::NoSuchElementException, rdf::RepositoryException, std::exception) { if (!i_xElement.is()) { @@ -1671,18 +1669,27 @@ throw (uno::RuntimeException, lang::IllegalArgumentException, } ::comphelper::SequenceAsVector< rdf::Statement > ret; - const uno::Reference<container::XEnumeration> xIter( - getStatementsGraph_NoLock(0, 0, 0, xXmlId, true) ); - OSL_ENSURE(xIter.is(), "getStatementRDFa: no result?"); - if (!xIter.is()) throw uno::RuntimeException(); - while (xIter->hasMoreElements()) { - rdf::Statement stmt; - if (!(xIter->nextElement() >>= stmt)) { - OSL_FAIL("getStatementRDFa: result of wrong type?"); - } else { - ret.push_back(stmt); + try + { + const uno::Reference<container::XEnumeration> xIter( + getStatementsGraph_NoLock(0, 0, 0, xXmlId, true) ); + OSL_ENSURE(xIter.is(), "getStatementRDFa: no result?"); + if (!xIter.is()) throw uno::RuntimeException(); + while (xIter->hasMoreElements()) { + rdf::Statement stmt; + if (!(xIter->nextElement() >>= stmt)) { + OSL_FAIL("getStatementRDFa: result of wrong type?"); + } else { + ret.push_back(stmt); + } } } + catch (const container::NoSuchElementException& e) + { + throw lang::WrappedTargetRuntimeException( + "librdf_Repository::getStatementRDFa: " + "cannot getStatementsGraph", *this, uno::makeAny(e)); + } ::osl::MutexGuard g(m_aMutex); // don't call i_x* with mutex locked |