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_FRAMELOADERFACTORY_HXX_
25*b1cdbd2cSJim Jagielski #define __FRAMEWORK_SERVICES_FRAMELOADERFACTORY_HXX_
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
28*b1cdbd2cSJim Jagielski //	my own includes
29*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
30*b1cdbd2cSJim Jagielski 
31*b1cdbd2cSJim Jagielski #include <classes/filtercache.hxx>
32*b1cdbd2cSJim Jagielski #include <threadhelp/threadhelpbase.hxx>
33*b1cdbd2cSJim Jagielski #include <macros/generic.hxx>
34*b1cdbd2cSJim Jagielski #include <macros/debug.hxx>
35*b1cdbd2cSJim Jagielski #include <macros/xinterface.hxx>
36*b1cdbd2cSJim Jagielski #include <macros/xtypeprovider.hxx>
37*b1cdbd2cSJim Jagielski #include <macros/xserviceinfo.hxx>
38*b1cdbd2cSJim Jagielski #include <general.h>
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
41*b1cdbd2cSJim Jagielski //	interface includes
42*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
43*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XInitialization.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/WrappedTargetException.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameAccess.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/container/NoSuchElementException.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/io/XInputStream.hpp>
49*b1cdbd2cSJim Jagielski 
50*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
51*b1cdbd2cSJim Jagielski //	other includes
52*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
53*b1cdbd2cSJim Jagielski #include <cppuhelper/implbase3.hxx>
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
56*b1cdbd2cSJim Jagielski //	namespace
57*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
58*b1cdbd2cSJim Jagielski 
59*b1cdbd2cSJim Jagielski namespace framework{
60*b1cdbd2cSJim Jagielski 
61*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
62*b1cdbd2cSJim Jagielski //	exported const
63*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
66*b1cdbd2cSJim Jagielski //	exported definitions
67*b1cdbd2cSJim Jagielski //_________________________________________________________________________________________________________________
68*b1cdbd2cSJim Jagielski 
69*b1cdbd2cSJim Jagielski struct tIMPLExtractedArguments
70*b1cdbd2cSJim Jagielski {
71*b1cdbd2cSJim Jagielski 	::rtl::OUString									sMimeType			;
72*b1cdbd2cSJim Jagielski 	sal_Int32										nFlags				;
73*b1cdbd2cSJim Jagielski 	::rtl::OUString									sFilterName			;
74*b1cdbd2cSJim Jagielski 	sal_Int32										nClipboardFormat	;
75*b1cdbd2cSJim Jagielski 	::rtl::OUString									sDetectService		;
76*b1cdbd2cSJim Jagielski 	css::uno::Reference< css::io::XInputStream >	xInputStream		;
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski 	sal_Int32										nValidMask			;
79*b1cdbd2cSJim Jagielski };
80*b1cdbd2cSJim Jagielski 
81*b1cdbd2cSJim Jagielski /*-************************************************************************************************************//**
82*b1cdbd2cSJim Jagielski 	@short		factory to create frameloader-objects
83*b1cdbd2cSJim Jagielski 	@descr		These class can be used to create new loader for specified contents.
84*b1cdbd2cSJim Jagielski 				We use cached values of the registry to lay down, wich frameloader match
85*b1cdbd2cSJim Jagielski 				a given URL or filtername. To do this, we use the XMultiServiceFactory-interface.
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski 	@ATTENTION	In a specialmode of these implementation we support a simple filterdetection.
88*b1cdbd2cSJim Jagielski 				But there is no special interface. You must call some existing methods in another context!
89*b1cdbd2cSJim Jagielski 				see createInstanceWithArguments() fo rfurther informations!
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski 	@implements	XInterface
92*b1cdbd2cSJim Jagielski 				XTypeProvider
93*b1cdbd2cSJim Jagielski 				XServiceInfo
94*b1cdbd2cSJim Jagielski 				XMultiServiceFactory
95*b1cdbd2cSJim Jagielski 				XNameAccess
96*b1cdbd2cSJim Jagielski 				XElementAccess
97*b1cdbd2cSJim Jagielski 	@base		ThreadHelpBase
98*b1cdbd2cSJim Jagielski 				OWeakObject
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 	@devstatus	deprecated
101*b1cdbd2cSJim Jagielski *//*-*************************************************************************************************************/
102*b1cdbd2cSJim Jagielski 
103*b1cdbd2cSJim Jagielski class FrameLoaderFactory	:	public ThreadHelpBase							,		// Struct for right initalization of mutex member! Mst first of baseclasses
104*b1cdbd2cSJim Jagielski 								public ::cppu::WeakImplHelper3< ::com::sun::star::lang::XServiceInfo,::com::sun::star::lang::XMultiServiceFactory,::com::sun::star::container::XNameAccess >
105*b1cdbd2cSJim Jagielski {
106*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
107*b1cdbd2cSJim Jagielski 	//	public methods
108*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 	public:
111*b1cdbd2cSJim Jagielski 
112*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
113*b1cdbd2cSJim Jagielski 		//	constructor / destructor
114*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
115*b1cdbd2cSJim Jagielski 
116*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
117*b1cdbd2cSJim Jagielski 			@short		standard constructor
118*b1cdbd2cSJim Jagielski 			@descr		Initialize a new instance and fill the registrycache with values.
119*b1cdbd2cSJim Jagielski 						To do this - xFactory must be valid!
120*b1cdbd2cSJim Jagielski 
121*b1cdbd2cSJim Jagielski 			@seealso	class RegistryCache
122*b1cdbd2cSJim Jagielski 			@seealso	member m_aRegistryCache
123*b1cdbd2cSJim Jagielski 
124*b1cdbd2cSJim Jagielski 			@param		"xFactory", factory which has created us.
125*b1cdbd2cSJim Jagielski 			@return		-
126*b1cdbd2cSJim Jagielski 
127*b1cdbd2cSJim Jagielski 			@onerror	An ASSERTION is thrown in debug version, if xFactory is invalid or cache can't filled.
128*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
129*b1cdbd2cSJim Jagielski 
130*b1cdbd2cSJim Jagielski 	 	FrameLoaderFactory( const css::uno::Reference< css::lang::XMultiServiceFactory >& xFactory );
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
133*b1cdbd2cSJim Jagielski 			@short		standard destructor to delete instance
134*b1cdbd2cSJim Jagielski 			@descr		We use it to clear ouer cache.
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski 			@seealso	class RegistryCache
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski 			@param		-
139*b1cdbd2cSJim Jagielski 			@return		-
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski 			@onerror	-
142*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 		virtual ~FrameLoaderFactory();
145*b1cdbd2cSJim Jagielski 
146*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
147*b1cdbd2cSJim Jagielski 		//	XInterface, XTypeProvider, XServiceInfo
148*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski 		DECLARE_XSERVICEINFO
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
153*b1cdbd2cSJim Jagielski 		//	XMultiServiceFactory
154*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
157*b1cdbd2cSJim Jagielski 			@short		create a new frameloder (without arguments!)
158*b1cdbd2cSJim Jagielski 			@descr		We search for an agreement between given type name and our cache-content.
159*b1cdbd2cSJim Jagielski 						If we found some information, we create the registered frameloader for these type.
160*b1cdbd2cSJim Jagielski 						Otherwise - we return NULL.
161*b1cdbd2cSJim Jagielski 						We search from begin to end of internal loader list!
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski 			@seealso	method impl_createFrameLoader()
164*b1cdbd2cSJim Jagielski 			@seealso	method createInstanceWithArguments()
165*b1cdbd2cSJim Jagielski 
166*b1cdbd2cSJim Jagielski 			@param		"sTypeName", type name of a document to filter, open or save.
167*b1cdbd2cSJim Jagielski 			@return		A reference to a new created frameloader.
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski 			@onerror	A null reference is returned.
170*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
171*b1cdbd2cSJim Jagielski 
172*b1cdbd2cSJim Jagielski 		virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& sTypeName ) throw(	css::uno::Exception			,
173*b1cdbd2cSJim Jagielski 																																css::uno::RuntimeException	);
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
176*b1cdbd2cSJim Jagielski 			@short		create a new frameloder
177*b1cdbd2cSJim Jagielski 			@descr		We search for an agreement between given type name and our cache-content.
178*b1cdbd2cSJim Jagielski 						If we found some information, we create the registered frameloader for these type.
179*b1cdbd2cSJim Jagielski 						Otherwise - we return NULL.
180*b1cdbd2cSJim Jagielski 						You can give us some optional arguments to influence our search!
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski 			@seealso	method impl_createFrameLoader()
183*b1cdbd2cSJim Jagielski 			@seealso	method createInstance()
184*b1cdbd2cSJim Jagielski 
185*b1cdbd2cSJim Jagielski 			@param		"sTypeName", type name of a document to filter, open or save.
186*b1cdbd2cSJim Jagielski 			@param		"seqArguments", list of optional arguments for initializing of new frameloader.
187*b1cdbd2cSJim Jagielski 			@return		A reference to a new created frameloader.
188*b1cdbd2cSJim Jagielski 
189*b1cdbd2cSJim Jagielski 			@onerror	A null reference is returned.
190*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
191*b1cdbd2cSJim Jagielski 
192*b1cdbd2cSJim Jagielski     	virtual css::uno::Reference< css::uno::XInterface > SAL_CALL createInstanceWithArguments(	const	::rtl::OUString&						sTypeName	,
193*b1cdbd2cSJim Jagielski 																									const	css::uno::Sequence< css::uno::Any >&	seqArguments) throw(	css::uno::Exception		,
194*b1cdbd2cSJim Jagielski 																									  																		css::uno::RuntimeException);
195*b1cdbd2cSJim Jagielski 
196*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
197*b1cdbd2cSJim Jagielski 			@short		not supported
198*b1cdbd2cSJim Jagielski 			@descr		Please use XNameAcces instead of these!
199*b1cdbd2cSJim Jagielski 
200*b1cdbd2cSJim Jagielski 			@seealso	-
201*b1cdbd2cSJim Jagielski 
202*b1cdbd2cSJim Jagielski 			@param		-
203*b1cdbd2cSJim Jagielski 			@return		-
204*b1cdbd2cSJim Jagielski 
205*b1cdbd2cSJim Jagielski 			@onerror	-
206*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
207*b1cdbd2cSJim Jagielski 
208*b1cdbd2cSJim Jagielski     	virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames() throw( css::uno::RuntimeException );
209*b1cdbd2cSJim Jagielski 
210*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
211*b1cdbd2cSJim Jagielski 		//	XNameAccess
212*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
215*b1cdbd2cSJim Jagielski 			@short		return properties of registered frame loader specified by his implementation name
216*b1cdbd2cSJim Jagielski 			@descr		Use these method to get all informations about our internal loader cache
217*b1cdbd2cSJim Jagielski 						and a special frame loader.
218*b1cdbd2cSJim Jagielski 						We return a Sequence< PropertyValue > in an Any packed as result.
219*b1cdbd2cSJim Jagielski 
220*b1cdbd2cSJim Jagielski 						structure of return value:
221*b1cdbd2cSJim Jagielski 							[0].Name	=	"Types"
222*b1cdbd2cSJim Jagielski 							[0].Value	=	list of supported types of these loader as [sequence< oustring >]
223*b1cdbd2cSJim Jagielski 
224*b1cdbd2cSJim Jagielski 							[1].Name	=	"UIName"
225*b1cdbd2cSJim Jagielski 							[1].Value	=	localized name of loader as [string]
226*b1cdbd2cSJim Jagielski 
227*b1cdbd2cSJim Jagielski 			@seealso	method getElementNames()
228*b1cdbd2cSJim Jagielski 			@seealso	method hasByName()
229*b1cdbd2cSJim Jagielski 
230*b1cdbd2cSJim Jagielski 			@param		"sName", the name of searched frame loader (use getElementNames() to get it!)
231*b1cdbd2cSJim Jagielski 			@return		A Sequence< PropertyValue > packed in an Any.
232*b1cdbd2cSJim Jagielski 
233*b1cdbd2cSJim Jagielski 			@onerror	If given name not exist a NoSuchElementException is thrown.
234*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski     	virtual css::uno::Any SAL_CALL getByName( const ::rtl::OUString& sName ) throw(	css::container::NoSuchElementException	,
237*b1cdbd2cSJim Jagielski 																						css::lang::WrappedTargetException		,
238*b1cdbd2cSJim Jagielski 																						css::uno::RuntimeException				);
239*b1cdbd2cSJim Jagielski 
240*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
241*b1cdbd2cSJim Jagielski 			@short		return list of all well known loader names from configuration
242*b1cdbd2cSJim Jagielski 			@descr		Use these method to get all names of well known loader.
243*b1cdbd2cSJim Jagielski 						You can use it to get the properties of a loader by calling getByName()!
244*b1cdbd2cSJim Jagielski 
245*b1cdbd2cSJim Jagielski 			@seealso	method getByName()
246*b1cdbd2cSJim Jagielski 			@seealso	method hasByName()
247*b1cdbd2cSJim Jagielski 
248*b1cdbd2cSJim Jagielski 			@param		-
249*b1cdbd2cSJim Jagielski 			@return		A list of well known loader. Is static at runtime!
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski 			@onerror	No error should occure.
252*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski     	virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw( css::uno::RuntimeException );
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
257*b1cdbd2cSJim Jagielski 			@short		check if searched frame loader exist in configuration
258*b1cdbd2cSJim Jagielski 			@descr		Normaly nobody need these method realy (use getElementNames() in combination with getByName()).
259*b1cdbd2cSJim Jagielski 						We guarantee correctness of these mechanism. There is no reason to check for existing elements then ...
260*b1cdbd2cSJim Jagielski 						but if you have an unknwon name and has no fun to search it in returned sequence ...
261*b1cdbd2cSJim Jagielski 						you can call these ...
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski 			@seealso	method getByName()
264*b1cdbd2cSJim Jagielski 			@seealso	method getElementNames()
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 			@param		"sName", implementation name of searched frame loader
267*b1cdbd2cSJim Jagielski 			@return		sal_True if loader exist, sal_False otherwise.
268*b1cdbd2cSJim Jagielski 
269*b1cdbd2cSJim Jagielski 			@onerror	No error should occure.
270*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
271*b1cdbd2cSJim Jagielski 
272*b1cdbd2cSJim Jagielski     	virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& sName ) throw( css::uno::RuntimeException );
273*b1cdbd2cSJim Jagielski 
274*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
275*b1cdbd2cSJim Jagielski 		//	XElementAccess
276*b1cdbd2cSJim Jagielski 		//---------------------------------------------------------------------------------------------------------
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
279*b1cdbd2cSJim Jagielski 			@short		return the type of retrun value of method XNameAccess::getByName()
280*b1cdbd2cSJim Jagielski 			@descr		In these implementation its a Sequence< PropertyValue > everytime!
281*b1cdbd2cSJim Jagielski 
282*b1cdbd2cSJim Jagielski 			@seealso	description of interface XNameAccess
283*b1cdbd2cSJim Jagielski 
284*b1cdbd2cSJim Jagielski 			@param		-
285*b1cdbd2cSJim Jagielski 			@return		Type of Sequence< PropertyValue >.
286*b1cdbd2cSJim Jagielski 
287*b1cdbd2cSJim Jagielski 			@onerror	No error should occure.
288*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski 		virtual css::uno::Type SAL_CALL getElementType() throw( css::uno::RuntimeException );
291*b1cdbd2cSJim Jagielski 
292*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
293*b1cdbd2cSJim Jagielski 			@short		return state if informations about frame loader available
294*b1cdbd2cSJim Jagielski 			@descr		If these method return false - no information could'nt read from configuration ...
295*b1cdbd2cSJim Jagielski 						I think nothing will work then. Normaly we return sal_True!
296*b1cdbd2cSJim Jagielski 
297*b1cdbd2cSJim Jagielski 			@seealso	class FilterCache!
298*b1cdbd2cSJim Jagielski 
299*b1cdbd2cSJim Jagielski 			@param		-
300*b1cdbd2cSJim Jagielski 			@return		sal_True if information available, sal_False otherwise.
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 			@onerror	No error should occure.
303*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
304*b1cdbd2cSJim Jagielski 
305*b1cdbd2cSJim Jagielski     	virtual sal_Bool SAL_CALL hasElements() throw( css::uno::RuntimeException );
306*b1cdbd2cSJim Jagielski 
307*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
308*b1cdbd2cSJim Jagielski 	//	protected methods
309*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
310*b1cdbd2cSJim Jagielski 
311*b1cdbd2cSJim Jagielski 	protected:
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
314*b1cdbd2cSJim Jagielski 	//	private methods
315*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
316*b1cdbd2cSJim Jagielski 
317*b1cdbd2cSJim Jagielski 	private:
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
320*b1cdbd2cSJim Jagielski 			@short		try to set configuration properties at created loader
321*b1cdbd2cSJim Jagielski 			@descr		We support the old async. loader interface ( XFrameLoader ) and the new one XSynchronousFrameLoader.
322*b1cdbd2cSJim Jagielski 						The new one should implement a property set on which we can set his configuration values!
323*b1cdbd2cSJim Jagielski 						We try to cast given loader to these interface - if it's exist we set the values - otherwise not!
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski 			@seealso	service FrameLoader
326*b1cdbd2cSJim Jagielski 			@seealso	service SynchronousFrameLoader
327*b1cdbd2cSJim Jagielski 
328*b1cdbd2cSJim Jagielski 			@param		"xLoader" loader with generic XInterface! (We don't know before which service type is used!)
329*b1cdbd2cSJim Jagielski 			@param		"pLoaderInfo" configuration structure of these loader.
330*b1cdbd2cSJim Jagielski 			@return		-
331*b1cdbd2cSJim Jagielski 
332*b1cdbd2cSJim Jagielski 			@onerror	No error should occure.
333*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
334*b1cdbd2cSJim Jagielski 
335*b1cdbd2cSJim Jagielski 		void impl_initializeLoader( css::uno::Reference< css::uno::XInterface >& xLoader, const Loader& pLoaderInfo );
336*b1cdbd2cSJim Jagielski 
337*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
338*b1cdbd2cSJim Jagielski 	//	debug methods
339*b1cdbd2cSJim Jagielski 	//	(should be private everyway!)
340*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
341*b1cdbd2cSJim Jagielski 
342*b1cdbd2cSJim Jagielski 		/*-****************************************************************************************************//**
343*b1cdbd2cSJim Jagielski 			@short		debug-method to check incoming parameter of some other mehods of this class
344*b1cdbd2cSJim Jagielski 			@descr		The following methods are used to check parameters for other methods
345*b1cdbd2cSJim Jagielski 						of this class. The return value is used directly for an ASSERT(...).
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski 			@seealso	ASSERTs in implementation!
348*b1cdbd2cSJim Jagielski 
349*b1cdbd2cSJim Jagielski 			@param		references to checking variables
350*b1cdbd2cSJim Jagielski 			@return		sal_False ,on invalid parameter
351*b1cdbd2cSJim Jagielski 			@return		sal_True  ,otherwise
352*b1cdbd2cSJim Jagielski 
353*b1cdbd2cSJim Jagielski 			@onerror	-
354*b1cdbd2cSJim Jagielski 		*//*-*****************************************************************************************************/
355*b1cdbd2cSJim Jagielski 
356*b1cdbd2cSJim Jagielski 
357*b1cdbd2cSJim Jagielski 	#ifdef ENABLE_ASSERTIONS
358*b1cdbd2cSJim Jagielski 
359*b1cdbd2cSJim Jagielski 	private:
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski 	 	static sal_Bool impldbg_checkParameter_FrameLoaderFactory			(	const	css::uno::Reference< css::lang::XMultiServiceFactory >&	xFactory	);
362*b1cdbd2cSJim Jagielski 		static sal_Bool impldbg_checkParameter_createInstance				(	const	::rtl::OUString&										sTypeName	);
363*b1cdbd2cSJim Jagielski     	static sal_Bool impldbg_checkParameter_createInstanceWithArguments	(	const	::rtl::OUString&										sTypeName	,
364*b1cdbd2cSJim Jagielski 																				const	css::uno::Sequence< css::uno::Any >&					seqArguments);
365*b1cdbd2cSJim Jagielski     	static sal_Bool impldbg_checkParameter_getByName					(	const	::rtl::OUString&										sName		);
366*b1cdbd2cSJim Jagielski     	static sal_Bool impldbg_checkParameter_hasByName					(	const	::rtl::OUString&										sName		);
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski 	#endif	//	#ifdef ENABLE_ASSERTIONS
369*b1cdbd2cSJim Jagielski 
370*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
371*b1cdbd2cSJim Jagielski 	//	private variables
372*b1cdbd2cSJim Jagielski 	//	(should be private everyway!)
373*b1cdbd2cSJim Jagielski 	//-------------------------------------------------------------------------------------------------------------
374*b1cdbd2cSJim Jagielski 
375*b1cdbd2cSJim Jagielski 	private:
376*b1cdbd2cSJim Jagielski 
377*b1cdbd2cSJim Jagielski 		css::uno::Reference< css::lang::XMultiServiceFactory >		m_xFactory			;
378*b1cdbd2cSJim Jagielski 		FilterCache													m_aCache			;
379*b1cdbd2cSJim Jagielski 
380*b1cdbd2cSJim Jagielski };		//	class FrameLoaderFactory
381*b1cdbd2cSJim Jagielski 
382*b1cdbd2cSJim Jagielski }		//	namespace framework
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski #endif	//	#ifndef __FRAMEWORK_SERVICES_FRAMELOADERFACTORY_HXX_
385