1f8e07b45SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3f8e07b45SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4f8e07b45SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5f8e07b45SAndrew Rist  * distributed with this work for additional information
6f8e07b45SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7f8e07b45SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8f8e07b45SAndrew Rist  * "License"); you may not use this file except in compliance
9f8e07b45SAndrew Rist  * with the License.  You may obtain a copy of the License at
10f8e07b45SAndrew Rist  *
11f8e07b45SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12f8e07b45SAndrew Rist  *
13f8e07b45SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14f8e07b45SAndrew Rist  * software distributed under the License is distributed on an
15f8e07b45SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16f8e07b45SAndrew Rist  * KIND, either express or implied.  See the License for the
17f8e07b45SAndrew Rist  * specific language governing permissions and limitations
18f8e07b45SAndrew Rist  * under the License.
19f8e07b45SAndrew Rist  *
20f8e07b45SAndrew Rist  *************************************************************/
21f8e07b45SAndrew Rist 
22f8e07b45SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef __FRAMEWORK_SERVICES_DETECTORFACTORY_HXX_
25cdf0e10cSrcweir #define __FRAMEWORK_SERVICES_DETECTORFACTORY_HXX_
26cdf0e10cSrcweir 
27cdf0e10cSrcweir //_______________________________________________
28cdf0e10cSrcweir // includes of own project
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include <classes/filtercache.hxx>
31cdf0e10cSrcweir #include <threadhelp/threadhelpbase.hxx>
32cdf0e10cSrcweir #include <macros/xinterface.hxx>
33cdf0e10cSrcweir #include <macros/xtypeprovider.hxx>
34cdf0e10cSrcweir #include <macros/xserviceinfo.hxx>
35cdf0e10cSrcweir #include <macros/generic.hxx>
36cdf0e10cSrcweir #include <macros/debug.hxx>
37cdf0e10cSrcweir #include <general.h>
38cdf0e10cSrcweir 
39cdf0e10cSrcweir //_______________________________________________
40cdf0e10cSrcweir // includes of interfaces
41cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
42cdf0e10cSrcweir #include <com/sun/star/lang/XInitialization.hpp>
43cdf0e10cSrcweir #include <com/sun/star/lang/WrappedTargetException.hpp>
44cdf0e10cSrcweir #include <com/sun/star/lang/IllegalArgumentException.hpp>
45cdf0e10cSrcweir #include <com/sun/star/container/ElementExistException.hpp>
46cdf0e10cSrcweir #include <com/sun/star/container/NoSuchElementException.hpp>
47cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp>
48cdf0e10cSrcweir #include <com/sun/star/container/NoSuchElementException.hpp>
49cdf0e10cSrcweir #include <com/sun/star/io/XInputStream.hpp>
50cdf0e10cSrcweir #include <com/sun/star/util/XFlushable.hpp>
51cdf0e10cSrcweir 
52cdf0e10cSrcweir //_______________________________________________
53cdf0e10cSrcweir // includes of other projects
54cdf0e10cSrcweir #include <cppuhelper/interfacecontainer.hxx>
55cdf0e10cSrcweir #include <cppuhelper/weak.hxx>
56cdf0e10cSrcweir 
57cdf0e10cSrcweir //_______________________________________________
58cdf0e10cSrcweir // namespace
59cdf0e10cSrcweir 
60cdf0e10cSrcweir namespace framework{
61cdf0e10cSrcweir 
62cdf0e10cSrcweir //_______________________________________________
63cdf0e10cSrcweir // exported const
64cdf0e10cSrcweir 
65cdf0e10cSrcweir //_______________________________________________
66cdf0e10cSrcweir // exported definitions
67cdf0e10cSrcweir 
68cdf0e10cSrcweir /// @HTML
69cdf0e10cSrcweir /** @short      factory to create detect service objects and initialize it in the right way.
70cdf0e10cSrcweir 
71cdf0e10cSrcweir     @descr      This class can be used to create new detect services for specified contents.
72cdf0e10cSrcweir                 It uses cached values of the configuration to lay down, which detector match
73cdf0e10cSrcweir                 a given name. Further this class provides full access to the configuration data
74cdf0e10cSrcweir                 of such detect services and following implementations will support some special
75cdf0e10cSrcweir                 query modes.
76cdf0e10cSrcweir 
77cdf0e10cSrcweir     @author     as96863
78cdf0e10cSrcweir 
79cdf0e10cSrcweir     @docdate    07.03.2003 by as96863
80cdf0e10cSrcweir 
81cdf0e10cSrcweir     @todo       <ul>
82cdf0e10cSrcweir                     <li>implementation of query mode</li>
83cdf0e10cSrcweir                     <li>simple restore mechanism of last consistent cache state,
84cdf0e10cSrcweir                         if flush failed</li>
85cdf0e10cSrcweir                 </ul>
86cdf0e10cSrcweir  */
87cdf0e10cSrcweir /// @NOHTML
88cdf0e10cSrcweir 
89cdf0e10cSrcweir class DetectorFactory : // interfaces
90cdf0e10cSrcweir 						public	css::lang::XTypeProvider			,
91cdf0e10cSrcweir 						public	css::lang::XServiceInfo				,
92cdf0e10cSrcweir 						public	css::lang::XMultiServiceFactory		,
93cdf0e10cSrcweir 						public	css::container::XNameContainer		,		// => XNameReplace => XNameAccess => XElementAccess
94cdf0e10cSrcweir 						public	css::util::XFlushable				,
95cdf0e10cSrcweir 						// base classes
9607a3d7f1SPedro Giffuni 						// Order is necessary for right initialization of it!
97cdf0e10cSrcweir                         private ThreadHelpBase                      ,
98cdf0e10cSrcweir 						public	::cppu::OWeakObject
99cdf0e10cSrcweir {
100cdf0e10cSrcweir     //-------------------------------------------
101cdf0e10cSrcweir     // member
102cdf0e10cSrcweir 
103cdf0e10cSrcweir     private:
104cdf0e10cSrcweir 
105cdf0e10cSrcweir         /** reference to the global uno service manager.
106cdf0e10cSrcweir             It will be used to create own needed services on demand. */
107cdf0e10cSrcweir         css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
108cdf0e10cSrcweir 
109cdf0e10cSrcweir         /** singleton, which contains all needed configuration data and provides
110cdf0e10cSrcweir             read/write access on it. */
111cdf0e10cSrcweir         FilterCache m_aCache;
112cdf0e10cSrcweir 
113cdf0e10cSrcweir         /** contains all registered listener. */
114cdf0e10cSrcweir         ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer;
115cdf0e10cSrcweir 
116cdf0e10cSrcweir     //-------------------------------------------
117cdf0e10cSrcweir     // interface
118cdf0e10cSrcweir 
119cdf0e10cSrcweir 	public:
120cdf0e10cSrcweir 
121cdf0e10cSrcweir         //---------------------------------------
122cdf0e10cSrcweir         // XInterface, XTypeProvider, XServiceInfo
123cdf0e10cSrcweir 
124cdf0e10cSrcweir         DECLARE_XINTERFACE
125cdf0e10cSrcweir         DECLARE_XTYPEPROVIDER
126cdf0e10cSrcweir         DECLARE_XSERVICEINFO
127cdf0e10cSrcweir 
128cdf0e10cSrcweir         #ifdef ENABLE_AUTODOC_FIX
129cdf0e10cSrcweir         ;
130cdf0e10cSrcweir         #endif
131cdf0e10cSrcweir 
132cdf0e10cSrcweir         //---------------------------------------
133cdf0e10cSrcweir 
134cdf0e10cSrcweir         /** @short  initialize new instance of this class.
135cdf0e10cSrcweir 
136cdf0e10cSrcweir             @param  xSMGR
137cdf0e10cSrcweir                     reference to the global uno service manager, which created this new factory instance.
138cdf0e10cSrcweir                     It must be used during runtime to create own needed services.
139cdf0e10cSrcweir          */
140cdf0e10cSrcweir 
141cdf0e10cSrcweir         DetectorFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR );
142cdf0e10cSrcweir 
143cdf0e10cSrcweir         //---------------------------------------
144cdf0e10cSrcweir 
145cdf0e10cSrcweir         /** @short  release internal structures.
146cdf0e10cSrcweir          */
147cdf0e10cSrcweir 
148cdf0e10cSrcweir         virtual ~DetectorFactory();
149cdf0e10cSrcweir 
150cdf0e10cSrcweir         //---------------------------------------
151cdf0e10cSrcweir         // XMultiServiceFactory
152cdf0e10cSrcweir 
153cdf0e10cSrcweir         /** @short  create a new detect service and initialize it with it's own configuration data.
154cdf0e10cSrcweir 
155cdf0e10cSrcweir             @param  sName
156cdf0e10cSrcweir                     means the uno implementation name of a detect service.
157cdf0e10cSrcweir 
158cdf0e10cSrcweir             @exception  com::sun::star::uno::Exception
159cdf0e10cSrcweir                         if the requested service could not be created or initialized.
160cdf0e10cSrcweir          */
161cdf0e10cSrcweir 
162cdf0e10cSrcweir         virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& sName )
163cdf0e10cSrcweir             throw(css::uno::Exception       ,
164cdf0e10cSrcweir                   css::uno::RuntimeException);
165cdf0e10cSrcweir 
166cdf0e10cSrcweir         //---------------------------------------
167cdf0e10cSrcweir         // XMultiServiceFactory
168cdf0e10cSrcweir 
169cdf0e10cSrcweir         /** @short  does the same as createInstance() method, but initialize created detect service with some
170cdf0e10cSrcweir                     additional data.
171cdf0e10cSrcweir 
172cdf0e10cSrcweir             @param  sName
173cdf0e10cSrcweir                     means the uno implementation name of a detect service.
174cdf0e10cSrcweir 
175cdf0e10cSrcweir             @param  lArguments
176cdf0e10cSrcweir                     the optional arguments, which are passed to the created detect service against
177cdf0e10cSrcweir                     it's own configuration data.
178cdf0e10cSrcweir 
179cdf0e10cSrcweir             @exception  com::sun::star::uno::Exception
180cdf0e10cSrcweir                         if the requested service could not be created or initialized.
181cdf0e10cSrcweir          */
182cdf0e10cSrcweir 
183cdf0e10cSrcweir         virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::rtl::OUString&                     sName      ,
184cdf0e10cSrcweir                                                                                                   const css::uno::Sequence< css::uno::Any >& lArguments )
185cdf0e10cSrcweir             throw(css::uno::Exception       ,
186cdf0e10cSrcweir                   css::uno::RuntimeException);
187cdf0e10cSrcweir 
188cdf0e10cSrcweir         //---------------------------------------
189cdf0e10cSrcweir         // XMultiServiceFactory
190cdf0e10cSrcweir 
191cdf0e10cSrcweir         /** @short  return list of all well know detect services, which can be created by this factory.
192cdf0e10cSrcweir 
193cdf0e10cSrcweir             @attention  Because this service implements read/write access to the configuration too,
194cdf0e10cSrcweir                         this list is dynamic. Means: in multithreaded environments some items of this
195cdf0e10cSrcweir                         return list could be invalid next time!
196cdf0e10cSrcweir 
197cdf0e10cSrcweir             @return A list of all registered detect services.
198cdf0e10cSrcweir          */
199cdf0e10cSrcweir 
200cdf0e10cSrcweir         virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames()
201cdf0e10cSrcweir             throw(css::uno::RuntimeException);
202cdf0e10cSrcweir 
203cdf0e10cSrcweir         //---------------------------------------
204cdf0e10cSrcweir         // XNameContainer
205cdf0e10cSrcweir 
206cdf0e10cSrcweir         /** @short  add new detect service entry to this container.
207cdf0e10cSrcweir 
208cdf0e10cSrcweir             @descr  This will change all internal structures only!
209cdf0e10cSrcweir                     Updating of the configuration layer and notify of all registered
210cdf0e10cSrcweir                     listener will be done inside API call XFlushable::flush() on this
211cdf0e10cSrcweir                     container.
212cdf0e10cSrcweir 
213cdf0e10cSrcweir             @param  sName
214cdf0e10cSrcweir                     means the uno implementation name of this new detect service entry.
215cdf0e10cSrcweir 
216cdf0e10cSrcweir             @param  aPropertySet [sequence< com::sun::star::beans::PropertyValue >!]
217cdf0e10cSrcweir                     describe this new entry. For a list of all supported properties
218cdf0e10cSrcweir                     have a look on method >>getByName()<<.
219cdf0e10cSrcweir                     Note: Missing values will be created with defaults!
220cdf0e10cSrcweir 
221cdf0e10cSrcweir             @exception  com::sun::star::lang::IllegalArgumentException
222*cfd52e18Smseidel                         if one of the incoming parameters seems to be invalid.
223cdf0e10cSrcweir                         That doesn't include the check, if this item already exist!
224cdf0e10cSrcweir 
225cdf0e10cSrcweir             @exception  com::sun::star::container::ElementExistException
226cdf0e10cSrcweir                         if this item already exist inside this container.
227cdf0e10cSrcweir 
228cdf0e10cSrcweir             @exception  com::sun::star::lang::WrappedTargetException
229cdf0e10cSrcweir                         f creation of the internal structures failed.
230cdf0e10cSrcweir          */
231cdf0e10cSrcweir 
232cdf0e10cSrcweir         virtual void SAL_CALL insertByName( const ::rtl::OUString& sName        ,
233cdf0e10cSrcweir                                             const css::uno::Any&   aPropertySet )
234cdf0e10cSrcweir             throw(css::lang::IllegalArgumentException  ,
235cdf0e10cSrcweir                   css::container::ElementExistException,
236cdf0e10cSrcweir                   css::lang::WrappedTargetException    ,
237cdf0e10cSrcweir                   css::uno::RuntimeException           );
238cdf0e10cSrcweir 
239cdf0e10cSrcweir         //---------------------------------------
240cdf0e10cSrcweir         // XNameContainer
241cdf0e10cSrcweir 
242cdf0e10cSrcweir         /** @short  remove a detect service entry from this container.
243cdf0e10cSrcweir 
244cdf0e10cSrcweir             @descr  This will change all internal structures only!
245cdf0e10cSrcweir                     Updating of the configuration layer and notify of all registered
246cdf0e10cSrcweir                     listener will be done inside API call XFlushable::flush() on this
247cdf0e10cSrcweir                     container.
248cdf0e10cSrcweir 
249cdf0e10cSrcweir             @param  sName
250cdf0e10cSrcweir                     means the uno implementation name of a detect service entry.
251cdf0e10cSrcweir 
252cdf0e10cSrcweir             @exception  com::sun::star::container::NoSuchElementException
253cdf0e10cSrcweir                         if the requested item does not exist inside this container.
254cdf0e10cSrcweir 
255cdf0e10cSrcweir             @exception  com::sun::star::lang::WrappedTargetException
256cdf0e10cSrcweir                         if creation of the internal structures failed.
257cdf0e10cSrcweir          */
258cdf0e10cSrcweir 
259cdf0e10cSrcweir         virtual void SAL_CALL removeByName( const ::rtl::OUString& sName )
260cdf0e10cSrcweir             throw(css::container::NoSuchElementException,
261cdf0e10cSrcweir                   css::lang::WrappedTargetException     ,
262cdf0e10cSrcweir                   css::uno::RuntimeException            );
263cdf0e10cSrcweir 
264cdf0e10cSrcweir         //---------------------------------------
265cdf0e10cSrcweir         // XNameReplace
266cdf0e10cSrcweir 
267cdf0e10cSrcweir         /** @short  change a detect service entry inside this container.
268cdf0e10cSrcweir 
269cdf0e10cSrcweir             @descr  This will change all internal structures only!
270cdf0e10cSrcweir                     Updating of the configuration layer and notify of all registered
271cdf0e10cSrcweir                     listener will be done inside API call XFlushable::flush() on this
272cdf0e10cSrcweir                     container.
273cdf0e10cSrcweir 
274cdf0e10cSrcweir             @param  sName
275cdf0e10cSrcweir                     means the uno implementation name of a detect service entry.
276cdf0e10cSrcweir 
277cdf0e10cSrcweir             @param  aPropertySet [sequence< com::sun::star::beans::PropertyValue >!]
278cdf0e10cSrcweir                     describe the changes on this entry. For a list of all supported properties
279cdf0e10cSrcweir                     have a look on method getByName().
280cdf0e10cSrcweir                     Note: Missing properties will be untouched.
281cdf0e10cSrcweir 
282cdf0e10cSrcweir             @exception  com::sun::star::lang::IllegalArgumentException
283*cfd52e18Smseidel                         if one of the incoming parameters seems to be invalid.
284cdf0e10cSrcweir                         That doesn't include the check, if this item exist!
285cdf0e10cSrcweir 
286cdf0e10cSrcweir             @exception  com::sun::star::container::NoSuchElementException
287cdf0e10cSrcweir                         if the requested item does not exist inside this container.
288cdf0e10cSrcweir 
289cdf0e10cSrcweir             @exception  com::sun::star::lang::WrappedTargetException
290cdf0e10cSrcweir                         if updating of the internal structures failed.
291cdf0e10cSrcweir          */
292cdf0e10cSrcweir 
293cdf0e10cSrcweir         virtual void SAL_CALL replaceByName( const ::rtl::OUString& sName        ,
294cdf0e10cSrcweir                                              const css::uno::Any&   aPropertySet )
295cdf0e10cSrcweir             throw(css::lang::IllegalArgumentException   ,
296cdf0e10cSrcweir                   css::container::NoSuchElementException,
297cdf0e10cSrcweir                   css::lang::WrappedTargetException     ,
298cdf0e10cSrcweir                   css::uno::RuntimeException            );
299cdf0e10cSrcweir 
300cdf0e10cSrcweir         //---------------------------------------
301cdf0e10cSrcweir         // XNameAccess
302cdf0e10cSrcweir 
303cdf0e10cSrcweir         /// @HTML
304cdf0e10cSrcweir         /** @short  return properties of queried detector item.
305cdf0e10cSrcweir 
306cdf0e10cSrcweir             @descr  Use this method to get all informations about a detector item of this cache.
307cdf0e10cSrcweir                     A sequence< com::sun::star::beans::PropertyValue > packed inside an Any will be returned.
308cdf0e10cSrcweir                     Following properties are defined:
309cdf0e10cSrcweir                     <table border=1>
310cdf0e10cSrcweir                     <tr>
311cdf0e10cSrcweir                         <td><b>Property</b></td>
312cdf0e10cSrcweir                         <td><b>Value<b></td>
313cdf0e10cSrcweir                         <td><b>Description<b></td>
314cdf0e10cSrcweir                     </tr>
315cdf0e10cSrcweir                     <tr>
316cdf0e10cSrcweir                         <td>Name</td>
317cdf0e10cSrcweir                         <td>[string]</td>
318cdf0e10cSrcweir                             <td>the uno implementation name for this detect service</td>
319cdf0e10cSrcweir                     </tr>
320cdf0e10cSrcweir                     <tr>
321cdf0e10cSrcweir                         <td>Types</td>
322cdf0e10cSrcweir                         <td>[sequence< string >]</td>
323cdf0e10cSrcweir                         <td>a list of all internbal type names, which this detect service is registered for</td>
324cdf0e10cSrcweir                     </tr>
325cdf0e10cSrcweir                     </table>
326cdf0e10cSrcweir 
327cdf0e10cSrcweir             @param  sName
328cdf0e10cSrcweir                     the uno implementation name the requested detector.
329cdf0e10cSrcweir 
33006fea5ebSmseidel             @return A property set, which describes this detect service.
33106fea5ebSmseidel                     It uses a sequence< com::sun::star::beans::PropertyValue > internally.
332cdf0e10cSrcweir 
333cdf0e10cSrcweir             @exception  com::sun::star::container::NoSuchElementException
334cdf0e10cSrcweir                         if the requested entry does not exist inside this container.
335cdf0e10cSrcweir          */
336cdf0e10cSrcweir         /// @NOHTML
337cdf0e10cSrcweir 
338cdf0e10cSrcweir         virtual css::uno::Any SAL_CALL getByName( const ::rtl::OUString& sName )
339cdf0e10cSrcweir             throw(css::container::NoSuchElementException,
340cdf0e10cSrcweir                   css::lang::WrappedTargetException     ,
341cdf0e10cSrcweir                   css::uno::RuntimeException            );
342cdf0e10cSrcweir 
343cdf0e10cSrcweir         //---------------------------------------
344cdf0e10cSrcweir         // XNameAccess
345cdf0e10cSrcweir 
346cdf0e10cSrcweir         /** @short  return list of all well know container entries available on this container.
347cdf0e10cSrcweir 
348cdf0e10cSrcweir             @attention  Because this service implements read/write access to the configuration too,
349cdf0e10cSrcweir                         this list is dynamic. Means: in multithreaded environments some items of this
350cdf0e10cSrcweir                         return list could be invalid next time!
351cdf0e10cSrcweir 
352cdf0e10cSrcweir             @return A list of all well known container items.
353cdf0e10cSrcweir          */
354cdf0e10cSrcweir 
355cdf0e10cSrcweir         virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames()
356cdf0e10cSrcweir             throw(css::uno::RuntimeException);
357cdf0e10cSrcweir 
358cdf0e10cSrcweir         //---------------------------------------
359cdf0e10cSrcweir         // XNameAccess
360cdf0e10cSrcweir 
361cdf0e10cSrcweir         /** @short  check if searched entry exist inside this container.
362cdf0e10cSrcweir 
363cdf0e10cSrcweir             @attention  In multithreaded environments it's not guaranteed, that a
36407a3d7f1SPedro Giffuni                         queried item exist next time really! It can be deleted by
365cdf0e10cSrcweir                         another thread ...
366cdf0e10cSrcweir 
367cdf0e10cSrcweir             @param  sName
368cdf0e10cSrcweir                     the name of the queried container entry.
369cdf0e10cSrcweir 
370cdf0e10cSrcweir             @return sal_True if the requested item exist; sal_False otherwise.
371cdf0e10cSrcweir          */
372cdf0e10cSrcweir 
373cdf0e10cSrcweir         virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& sName )
374cdf0e10cSrcweir             throw(css::uno::RuntimeException);
375cdf0e10cSrcweir 
376cdf0e10cSrcweir         //---------------------------------------
377cdf0e10cSrcweir         // XElementAccess
378cdf0e10cSrcweir 
379cdf0e10cSrcweir         /** @short  return the uno type, which is used for all container items.
380cdf0e10cSrcweir 
38107a3d7f1SPedro Giffuni             @return Type of sequence< com::sun::star::beans::PropertyValue > every time - because it's fix.
382cdf0e10cSrcweir          */
383cdf0e10cSrcweir 
384cdf0e10cSrcweir         virtual css::uno::Type SAL_CALL getElementType()
385cdf0e10cSrcweir             throw(css::uno::RuntimeException);
386cdf0e10cSrcweir 
387cdf0e10cSrcweir         //---------------------------------------
388cdf0e10cSrcweir         // XElementAccess
389cdf0e10cSrcweir 
390cdf0e10cSrcweir         /** @short  return fill state of this cache.
391cdf0e10cSrcweir 
39215289133Smseidel             @return sal_True if any item exist inside this conatiner; sal_False otherwise.
393cdf0e10cSrcweir          */
394cdf0e10cSrcweir 
395cdf0e10cSrcweir         virtual sal_Bool SAL_CALL hasElements()
396cdf0e10cSrcweir             throw(css::uno::RuntimeException);
397cdf0e10cSrcweir 
398cdf0e10cSrcweir         //---------------------------------------
399cdf0e10cSrcweir         // XFlushable
400cdf0e10cSrcweir 
401cdf0e10cSrcweir         /** @short  update the configuration layer and notify all registered listener.
402cdf0e10cSrcweir 
403cdf0e10cSrcweir             @descr  All container interface methods update the internal structures of
404cdf0e10cSrcweir                     this container only. But the underlying configuration layer and
405cdf0e10cSrcweir                     may some possible other caches was not updated.
406cdf0e10cSrcweir                     Calling of flush() will do that.
407cdf0e10cSrcweir                     At the same time all currently registered flush listener will be informed,
408cdf0e10cSrcweir                     so they can update her structures too.
40907a3d7f1SPedro Giffuni                     Note: Before all these operations are started really, all changes will be
41007a3d7f1SPedro Giffuni                     verified and if necessary some corrections will be done.
411cdf0e10cSrcweir                     In case the cache will be invalid and could not be repaired an exception is thrown!
4122e3a1b6eSmseidel                     Normally this container will not work correctly afterwards ...
413cdf0e10cSrcweir 
414cdf0e10cSrcweir             @exception  com::sun::star::uno::RuntimeException
415cdf0e10cSrcweir                         if the changes on this container was invald and could not be repaired.
416cdf0e10cSrcweir          */
417cdf0e10cSrcweir 
418cdf0e10cSrcweir         virtual void SAL_CALL flush()
419cdf0e10cSrcweir             throw(css::uno::RuntimeException);
420cdf0e10cSrcweir 
421cdf0e10cSrcweir         //---------------------------------------
422cdf0e10cSrcweir         // XFlushable
423cdf0e10cSrcweir 
424cdf0e10cSrcweir         /** @short  register listener for container updates.
425cdf0e10cSrcweir 
426cdf0e10cSrcweir             @param  xListener
427cdf0e10cSrcweir                     reference to listener, which wish to be registered.
428cdf0e10cSrcweir 
429cdf0e10cSrcweir             @exception  com::sun::star::uno::RuntimeException
430cdf0e10cSrcweir                         if the given listener is an invalid reference.
431cdf0e10cSrcweir                         Note: multiple calls of this method for the same listener won't be checked!
432cdf0e10cSrcweir          */
433cdf0e10cSrcweir 
434cdf0e10cSrcweir         virtual void SAL_CALL addFlushListener( const css::uno::Reference< css::util::XFlushListener >& xListener )
435cdf0e10cSrcweir             throw(css::uno::RuntimeException);
436cdf0e10cSrcweir 
437cdf0e10cSrcweir         //---------------------------------------
438cdf0e10cSrcweir         // XFlushable
439cdf0e10cSrcweir 
440cdf0e10cSrcweir         /** @short  deregister listener for container updates.
441cdf0e10cSrcweir 
442cdf0e10cSrcweir             @param  xListener
443cdf0e10cSrcweir                     reference to listener, which wish to be deregistered.
444cdf0e10cSrcweir 
445cdf0e10cSrcweir             @exception  com::sun::star::uno::RuntimeException
446cdf0e10cSrcweir                         if the given listener is an invalid reference.
447cdf0e10cSrcweir                         Note: multiple calls of this method for the same listener won't be checked!
448cdf0e10cSrcweir          */
449cdf0e10cSrcweir 
450cdf0e10cSrcweir         virtual void SAL_CALL removeFlushListener( const css::uno::Reference< css::util::XFlushListener >& xListener )
451cdf0e10cSrcweir             throw(css::uno::RuntimeException);
452cdf0e10cSrcweir 
453cdf0e10cSrcweir }; // class DetectorFactory
454cdf0e10cSrcweir 
455cdf0e10cSrcweir } // namespace framework
456cdf0e10cSrcweir 
457cdf0e10cSrcweir #endif // #ifndef __FRAMEWORK_SERVICES_DETECTORFACTORY_HXX_
458