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]

Reply via email to