1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_PACKAGE_SOURCE_XSTOR_OWRITEABLESTREAM_HXX
21 #define INCLUDED_PACKAGE_SOURCE_XSTOR_OWRITEABLESTREAM_HXX
23 #include <com/sun/star/io/XInputStream.hpp>
24 #include <com/sun/star/io/XOutputStream.hpp>
25 #include <com/sun/star/io/XStream.hpp>
26 #include <com/sun/star/io/XSeekable.hpp>
27 #include <com/sun/star/io/XTruncate.hpp>
28 #include <com/sun/star/packages/XDataSinkEncrSupport.hpp>
29 #include <com/sun/star/packages/NoEncryptionException.hpp>
30 #include <com/sun/star/lang/XEventListener.hpp>
31 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
32 #include <com/sun/star/lang/XComponent.hpp>
33 #include <com/sun/star/embed/XEncryptionProtectedSource2.hpp>
34 #include <com/sun/star/embed/XStorage.hpp>
35 #include <com/sun/star/embed/XRelationshipAccess.hpp>
36 #include <com/sun/star/embed/XExtendedStorageStream.hpp>
37 #include <com/sun/star/embed/XTransactedObject.hpp>
38 #include <com/sun/star/embed/XTransactionBroadcaster.hpp>
39 #include <com/sun/star/container/XNameContainer.hpp>
40 #include <com/sun/star/beans/StringPair.hpp>
41 #include <com/sun/star/logging/XSimpleLogRing.hpp>
43 #include <cppuhelper/implbase1.hxx>
44 #include <cppuhelper/weak.hxx>
45 #include <cppuhelper/interfacecontainer.h>
47 #include <comphelper/sequenceashashmap.hxx>
52 #include "ocompinstream.hxx"
53 #include "mutexholder.hxx"
55 namespace com
{ namespace sun
{ namespace star
{ namespace uno
{
56 class XComponentContext
;
59 struct PreCreationStruct
61 SotMutexHolderRef m_rMutexRef
;
64 : m_rMutexRef( new SotMutexHolder
)
70 bool PackageEncryptionDatasEqual( const ::comphelper::SequenceAsHashMap
& aHash1
, const ::comphelper::SequenceAsHashMap
& aHash2
);
73 struct WSInternalData_Impl
;
75 typedef ::std::list
< OInputCompStream
* > InputStreamsList_Impl
;
80 struct OWriteStream_Impl
: public PreCreationStruct
82 friend struct OStorage_Impl
;
83 friend class OWriteStream
;
84 friend class OInputCompStream
;
86 OWriteStream
* m_pAntiImpl
;
89 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> m_xCacheStream
;
90 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XSeekable
> m_xCacheSeek
;
92 InputStreamsList_Impl m_aInputStreamsList
;
94 bool m_bHasDataToFlush
; // only modified elements will be sent to the original content
95 bool m_bFlushed
; // sending the streams is coordinated by the root storage of the package
97 ::com::sun::star::uno::Reference
< ::com::sun::star::packages::XDataSinkEncrSupport
> m_xPackageStream
;
98 ::com::sun::star::uno::Reference
< ::com::sun::star::logging::XSimpleLogRing
> m_xLogRing
;
100 ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
> m_xContext
;
102 OStorage_Impl
* m_pParent
;
104 ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> m_aProps
;
106 bool m_bForceEncrypted
;
108 bool m_bUseCommonEncryption
;
109 bool m_bHasCachedEncryptionData
;
110 ::comphelper::SequenceAsHashMap m_aEncryptionData
;
112 bool m_bCompressedSetExplicit
;
114 ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XSingleServiceFactory
> m_xPackage
;
116 bool m_bHasInsertedStreamOptimization
;
118 sal_Int32 m_nStorageType
;
120 // Relations info related data, stored in *.rels file in OFOPXML format
121 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> m_xOrigRelInfoStream
;
122 ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> > m_aOrigRelInfo
;
123 bool m_bOrigRelInfoBroken
;
125 ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> > m_aNewRelInfo
;
126 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> m_xNewRelInfoStream
;
127 sal_Int16 m_nRelInfoStatus
;
131 OUString
GetFilledTempFileIfNo( const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& xStream
);
132 OUString
FillTempGetFileName();
133 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> GetTempFileAsStream();
134 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> GetTempFileAsInputStream();
136 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> GetStream_Impl( sal_Int32 nStreamMode
,
137 bool bHierarchyAccess
);
139 ::comphelper::SequenceAsHashMap
GetCommonRootEncryptionData() throw ( ::com::sun::star::packages::NoEncryptionException
);
141 ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> ReadPackageStreamProperties();
142 ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> InsertOwnProps(
143 const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
>& aProps
,
144 bool bUseCommonEncryption
);
148 OStorage_Impl
* pParent
,
149 const ::com::sun::star::uno::Reference
< ::com::sun::star::packages::XDataSinkEncrSupport
>& xPackageStream
,
150 const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XSingleServiceFactory
>& xPackage
,
151 const ::com::sun::star::uno::Reference
< ::com::sun::star::uno::XComponentContext
>& xContext
,
152 bool bForceEncrypted
,
153 sal_Int32 nStorageType
,
154 bool bDefaultCompress
,
155 const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& xRelInfoStream
=
156 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>() );
158 ~OWriteStream_Impl();
160 void CleanCacheStream();
162 void AddLog( const OUString
& aMessage
);
164 bool UsesCommonEncryption_Impl() { return m_bUseCommonEncryption
; }
165 bool HasTempFile_Impl() const { return ( m_aTempURL
.getLength() != 0 ); }
168 bool HasWriteOwner_Impl() const { return ( m_pAntiImpl
!= NULL
); }
170 void InsertIntoPackageFolder(
171 const OUString
& aName
,
172 const ::com::sun::star::uno::Reference
< ::com::sun::star::container::XNameContainer
>& xParentPackageFolder
);
174 void SetToBeCommited() { m_bFlushed
= true; }
176 bool HasCachedEncryptionData() { return m_bHasCachedEncryptionData
; }
177 ::comphelper::SequenceAsHashMap
& GetCachedEncryptionData() { return m_aEncryptionData
; }
179 bool IsModified() { return m_bHasDataToFlush
|| m_bFlushed
; }
183 void SetEncrypted( const ::comphelper::SequenceAsHashMap
& aEncryptionData
);
185 void DisposeWrappers();
187 void InsertStreamDirectly(
188 const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& xInStream
,
189 const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
>& aProps
);
194 void Free( bool bMust
); // allows to try to disconnect from the temporary stream
195 // in case bMust is set to sal_True the method
196 // will throw exception in case the file is still busy
198 void SetModified(); // can be done only by parent storage after renaming
200 ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
> GetStreamProperties();
202 ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> > GetAllRelationshipsIfAny();
204 void CopyInternallyTo_Impl( const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xDestStream
,
205 const ::comphelper::SequenceAsHashMap
& aEncryptionData
);
206 void CopyInternallyTo_Impl( const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xDestStream
);
208 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> GetStream(
209 sal_Int32 nStreamMode
,
210 const ::comphelper::SequenceAsHashMap
& aEncryptionData
,
211 bool bHierarchyAccess
);
213 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> GetStream(
214 sal_Int32 nStreamMode
,
215 bool bHierarchyAccess
);
217 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> GetRawInStream();
218 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> GetPlainRawInStream();
220 void InputStreamDisposed( OInputCompStream
* pStream
);
222 void CreateReadonlyCopyBasedOnData(
223 const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
>& xDataToCopy
,
224 const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::PropertyValue
>& aProps
,
225 bool bUseCommonEncryption
,
226 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xTargetStream
);
228 void GetCopyOfLastCommit( ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xTargetStream
);
229 void GetCopyOfLastCommit(
230 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xTargetStream
,
231 const ::comphelper::SequenceAsHashMap
& aEncryptionData
);
233 void CommitStreamRelInfo(
234 const ::com::sun::star::uno::Reference
< ::com::sun::star::embed::XStorage
>& xRelStorage
,
235 const OUString
& aOrigStreamName
,
236 const OUString
& aNewStreamName
);
238 void ReadRelInfoIfNecessary();
240 sal_Int32
GetNewRelId() { return m_nRelId
++; }
243 class OWriteStream
: ::com::sun::star::lang::XTypeProvider
244 , public ::com::sun::star::io::XInputStream
245 , public ::com::sun::star::io::XOutputStream
246 , public ::com::sun::star::embed::XExtendedStorageStream
247 , public ::com::sun::star::io::XSeekable
248 , public ::com::sun::star::io::XTruncate
249 , public ::com::sun::star::embed::XEncryptionProtectedSource2
250 , public ::com::sun::star::embed::XRelationshipAccess
251 , public ::com::sun::star::embed::XTransactedObject
252 , public ::com::sun::star::embed::XTransactionBroadcaster
253 , public ::com::sun::star::beans::XPropertySet
254 , public ::cppu::OWeakObject
256 friend struct OWriteStream_Impl
;
259 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> m_xInStream
;
260 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XOutputStream
> m_xOutStream
;
261 ::com::sun::star::uno::Reference
< ::com::sun::star::io::XSeekable
> m_xSeekable
;
263 OWriteStream_Impl
* m_pImpl
;
264 std::unique_ptr
<WSInternalData_Impl
> m_pData
;
266 bool m_bInStreamDisconnected
;
267 bool m_bInitOnDemand
;
268 sal_Int64 m_nInitPosition
;
272 OWriteStream( OWriteStream_Impl
* pImpl
, bool bTransacted
);
273 OWriteStream( OWriteStream_Impl
* pImpl
, ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
> xStream
, bool bTransacted
);
275 void CloseOutput_Impl();
277 void CopyToStreamInternally_Impl( const ::com::sun::star::uno::Reference
< ::com::sun::star::io::XStream
>& xStream
);
279 void ModifyParentUnlockMutex_Impl( ::osl::ResettableMutexGuard
& aGuard
);
281 void BroadcastTransaction( sal_Int8 nMessage
);
285 virtual ~OWriteStream();
287 void CheckInitOnDemand();
291 virtual ::com::sun::star::uno::Any SAL_CALL
queryInterface( const ::com::sun::star::uno::Type
& rType
)
292 throw( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
293 virtual void SAL_CALL
acquire() throw() SAL_OVERRIDE
;
294 virtual void SAL_CALL
release() throw() SAL_OVERRIDE
;
297 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Type
> SAL_CALL
getTypes()
298 throw( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
299 virtual ::com::sun::star::uno::Sequence
< sal_Int8
> SAL_CALL
getImplementationId()
300 throw( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
303 virtual sal_Int32 SAL_CALL
readBytes( ::com::sun::star::uno::Sequence
< sal_Int8
>& aData
, sal_Int32 nBytesToRead
)
304 throw(::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
305 virtual sal_Int32 SAL_CALL
readSomeBytes( ::com::sun::star::uno::Sequence
< sal_Int8
>& aData
, sal_Int32 nMaxBytesToRead
) throw(::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
306 virtual void SAL_CALL
skipBytes( sal_Int32 nBytesToSkip
)
307 throw(::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
308 virtual sal_Int32 SAL_CALL
available( )
309 throw(::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
310 virtual void SAL_CALL
closeInput( )
311 throw(::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
314 virtual void SAL_CALL
writeBytes( const ::com::sun::star::uno::Sequence
< sal_Int8
>& aData
) throw (::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
315 virtual void SAL_CALL
flush( ) throw (::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
316 virtual void SAL_CALL
closeOutput( ) throw (::com::sun::star::io::NotConnectedException
, ::com::sun::star::io::BufferSizeExceededException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
319 virtual void SAL_CALL
seek( sal_Int64 location
) throw (::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
320 virtual sal_Int64 SAL_CALL
getPosition() throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
321 virtual sal_Int64 SAL_CALL
getLength() throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
324 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::io::XInputStream
> SAL_CALL
getInputStream( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
325 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::io::XOutputStream
> SAL_CALL
getOutputStream( ) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
328 virtual void SAL_CALL
truncate() throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
331 virtual void SAL_CALL
dispose() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
332 virtual void SAL_CALL
addEventListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
>& xListener
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
333 virtual void SAL_CALL
removeEventListener( const ::com::sun::star::uno::Reference
< ::com::sun::star::lang::XEventListener
>& aListener
) throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
335 //XEncryptionProtectedSource
336 virtual void SAL_CALL
setEncryptionPassword( const OUString
& aPass
)
337 throw ( ::com::sun::star::uno::RuntimeException
,
338 ::com::sun::star::io::IOException
, std::exception
) SAL_OVERRIDE
;
339 virtual void SAL_CALL
removeEncryption()
340 throw ( ::com::sun::star::uno::RuntimeException
,
341 ::com::sun::star::io::IOException
, std::exception
) SAL_OVERRIDE
;
343 //XEncryptionProtectedSource2
344 virtual void SAL_CALL
setEncryptionData( const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::NamedValue
>& aEncryptionData
) throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
345 virtual sal_Bool SAL_CALL
hasEncryptionData() throw (::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
347 //XRelationshipAccess
348 virtual sal_Bool SAL_CALL
hasByID( const OUString
& sID
) throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
349 virtual OUString SAL_CALL
getTargetByID( const OUString
& sID
) throw (::com::sun::star::container::NoSuchElementException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
350 virtual OUString SAL_CALL
getTypeByID( const OUString
& sID
) throw (::com::sun::star::container::NoSuchElementException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
351 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> SAL_CALL
getRelationshipByID( const OUString
& sID
) throw (::com::sun::star::container::NoSuchElementException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
352 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> > SAL_CALL
getRelationshipsByType( const OUString
& sType
) throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
353 virtual ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> > SAL_CALL
getAllRelationships( ) throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
354 virtual void SAL_CALL
insertRelationshipByID( const OUString
& sID
, const ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
>& aEntry
, sal_Bool bReplace
) throw (::com::sun::star::container::ElementExistException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
355 virtual void SAL_CALL
removeRelationshipByID( const OUString
& sID
) throw (::com::sun::star::container::NoSuchElementException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
356 virtual void SAL_CALL
insertRelationships( const ::com::sun::star::uno::Sequence
< ::com::sun::star::uno::Sequence
< ::com::sun::star::beans::StringPair
> >& aEntries
, sal_Bool bReplace
) throw (::com::sun::star::container::ElementExistException
, ::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
357 virtual void SAL_CALL
clearRelationships( ) throw (::com::sun::star::io::IOException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
360 virtual ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertySetInfo
> SAL_CALL
getPropertySetInfo() throw ( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
361 virtual void SAL_CALL
setPropertyValue( const OUString
& aPropertyName
, const ::com::sun::star::uno::Any
& aValue
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::beans::PropertyVetoException
, ::com::sun::star::lang::IllegalArgumentException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
362 virtual ::com::sun::star::uno::Any SAL_CALL
getPropertyValue( const OUString
& PropertyName
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
363 virtual void SAL_CALL
addPropertyChangeListener( const OUString
& aPropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertyChangeListener
>& xListener
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
364 virtual void SAL_CALL
removePropertyChangeListener( const OUString
& aPropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XPropertyChangeListener
>& aListener
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
365 virtual void SAL_CALL
addVetoableChangeListener( const OUString
& PropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XVetoableChangeListener
>& aListener
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
366 virtual void SAL_CALL
removeVetoableChangeListener( const OUString
& PropertyName
, const ::com::sun::star::uno::Reference
< ::com::sun::star::beans::XVetoableChangeListener
>& aListener
) throw ( ::com::sun::star::beans::UnknownPropertyException
, ::com::sun::star::lang::WrappedTargetException
, ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
369 virtual void SAL_CALL
commit()
370 throw ( ::com::sun::star::io::IOException
,
371 ::com::sun::star::embed::StorageWrappedTargetException
,
372 ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
373 virtual void SAL_CALL
revert()
374 throw ( ::com::sun::star::io::IOException
,
375 ::com::sun::star::embed::StorageWrappedTargetException
,
376 ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
378 // XTransactionBroadcaster
379 virtual void SAL_CALL
addTransactionListener(
380 const ::com::sun::star::uno::Reference
< ::com::sun::star::embed::XTransactionListener
>& aListener
)
381 throw ( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
382 virtual void SAL_CALL
removeTransactionListener(
383 const ::com::sun::star::uno::Reference
< ::com::sun::star::embed::XTransactionListener
>& aListener
)
384 throw ( ::com::sun::star::uno::RuntimeException
, std::exception
) SAL_OVERRIDE
;
390 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */