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