Tag: cws_src680_dba201b User: oj Date: 05/07/06 00:46:56 Modified: /dba/dbaccess/source/core/dataaccess/ definitioncontainer.cxx
Log: #i48015# throw illegalargument exception when object is inserted twice with different name File Changes: Directory: /dba/dbaccess/source/core/dataaccess/ ================================================ File [changed]: definitioncontainer.cxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/core/dataaccess/definitioncontainer.cxx?r1=1.18&r2=1.18.36.1 Delta lines: +28 -4 -------------------- --- definitioncontainer.cxx 23 Mar 2005 09:46:52 -0000 1.18 +++ definitioncontainer.cxx 6 Jul 2005 07:46:54 -0000 1.18.36.1 @@ -2,9 +2,9 @@ * * $RCSfile: definitioncontainer.cxx,v $ * - * $Revision: 1.18 $ + * $Revision: 1.18.36.1 $ * - * last change: $Author: vg $ $Date: 2005/03/23 09:46:52 $ + * last change: $Author: oj $ $Date: 2005/07/06 07:46:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -592,7 +592,31 @@ // ----------------------------------------------------------------------------- sal_Bool ODefinitionContainer::approveNewObject(const ::rtl::OUString& _sName,const Reference< XContent >& _rxObject) const { - return _rxObject.is(); + Reference<XUnoTunnel> xUnoTunnel(_rxObject,UNO_QUERY); + ::rtl::Reference<OContentHelper> pContent = NULL; + sal_Bool bRet = sal_False; + ODefinitionContainer_Impl* pItem = static_cast<ODefinitionContainer_Impl*>(m_pImpl.get()); + ODefinitionContainer_Impl::Documents::iterator aFind = pItem->m_aDocumentMap.find(_sName); + if ( aFind == pItem->m_aDocumentMap.end() ) + { + if ( bRet = xUnoTunnel.is() ) + { + pContent = reinterpret_cast<OContentHelper*>(xUnoTunnel->getSomething(OContentHelper::getUnoTunnelImplementationId())); + TContentPtr pImpl = pContent->getImpl(); + ODefinitionContainer_Impl::Documents::iterator aIter = + ::std::find_if( + pItem->m_aDocumentMap.begin(), + pItem->m_aDocumentMap.end(), + ::std::compose1( + ::std::bind2nd(::std::equal_to<TContentPtr>(), pImpl), + ::std::select2nd<ODefinitionContainer_Impl::Documents::value_type>() + ) + ); + + bRet = aIter == pItem->m_aDocumentMap.end(); + } + } + return bRet; } // ----------------------------------------------------------------------------- // XPropertyChangeListener --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
