xref: /trunk/main/ucb/source/core/provprox.hxx (revision 6df1ea1f)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _PROVPROX_HXX
25 #define _PROVPROX_HXX
26 
27 #include <osl/mutex.hxx>
28 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
29 #include <com/sun/star/lang/XTypeProvider.hpp>
30 #include <com/sun/star/lang/XServiceInfo.hpp>
31 #include <com/sun/star/ucb/XContentProviderFactory.hpp>
32 #include <com/sun/star/ucb/XContentProvider.hpp>
33 #include <com/sun/star/ucb/XParameterizedContentProvider.hpp>
34 #include <com/sun/star/ucb/XContentProviderSupplier.hpp>
35 #include <cppuhelper/weak.hxx>
36 #include <ucbhelper/macros.hxx>
37 
38 //=========================================================================
39 
40 #define PROVIDER_FACTORY_SERVICE_NAME \
41 							"com.sun.star.ucb.ContentProviderProxyFactory"
42 #define PROVIDER_PROXY_SERVICE_NAME \
43 							"com.sun.star.ucb.ContentProviderProxy"
44 
45 //============================================================================
46 //
47 // class UcbContentProviderProxyFactory.
48 //
49 //============================================================================
50 
51 class UcbContentProviderProxyFactory :
52 				public cppu::OWeakObject,
53 				public com::sun::star::lang::XTypeProvider,
54 				public com::sun::star::lang::XServiceInfo,
55 				public com::sun::star::ucb::XContentProviderFactory
56 {
57 	com::sun::star::uno::Reference<	com::sun::star::lang::XMultiServiceFactory >
58 								m_xSMgr;
59 
60 public:
61 	UcbContentProviderProxyFactory(
62 			const com::sun::star::uno::Reference<
63 				com::sun::star::lang::XMultiServiceFactory >& rxSMgr );
64 	virtual ~UcbContentProviderProxyFactory();
65 
66 	// XInterface
67 	XINTERFACE_DECL()
68 
69 	// XTypeProvider
70 	XTYPEPROVIDER_DECL()
71 
72     // XServiceInfo
73 	XSERVICEINFO_DECL()
74 
75 	// XContentProviderFactory
76     virtual ::com::sun::star::uno::Reference<
77 		::com::sun::star::ucb::XContentProvider > SAL_CALL
78 	createContentProvider( const ::rtl::OUString& Service )
79 		throw( ::com::sun::star::uno::RuntimeException );
80 };
81 
82 //============================================================================
83 //
84 // class UcbContentProviderProxy.
85 //
86 //============================================================================
87 
88 class UcbContentProviderProxy :
89 				public cppu::OWeakObject,
90 				public com::sun::star::lang::XTypeProvider,
91 				public com::sun::star::lang::XServiceInfo,
92 				public com::sun::star::ucb::XContentProviderSupplier,
93 				public com::sun::star::ucb::XContentProvider,
94 				public com::sun::star::ucb::XParameterizedContentProvider
95 {
96 	::osl::Mutex 	m_aMutex;
97 	::rtl::OUString m_aService;
98 	::rtl::OUString m_aTemplate;
99 	::rtl::OUString m_aArguments;
100 	sal_Bool		m_bReplace;
101 	sal_Bool		m_bRegister;
102 
103 	com::sun::star::uno::Reference<	com::sun::star::lang::XMultiServiceFactory >
104 								m_xSMgr;
105 	com::sun::star::uno::Reference<	com::sun::star::ucb::XContentProvider >
106 								m_xProvider;
107 	com::sun::star::uno::Reference<	com::sun::star::ucb::XContentProvider >
108 								m_xTargetProvider;
109 
110 public:
111 	UcbContentProviderProxy(
112 			const com::sun::star::uno::Reference<
113 				com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
114 			const ::rtl::OUString& Service );
115 	virtual ~UcbContentProviderProxy();
116 
117 	// XInterface
118 	XINTERFACE_DECL()
119 
120 	// XTypeProvider
121 	XTYPEPROVIDER_DECL()
122 
123     // XServiceInfo
124 	XSERVICEINFO_NOFACTORY_DECL()
125 
126 	// XContentProviderSupplier
127     virtual ::com::sun::star::uno::Reference<
128 		::com::sun::star::ucb::XContentProvider > SAL_CALL
129 	getContentProvider()
130 		throw( ::com::sun::star::uno::RuntimeException );
131 
132 	// XContentProvider
133     virtual ::com::sun::star::uno::Reference<
134 		::com::sun::star::ucb::XContent > SAL_CALL
135 	queryContent( const ::com::sun::star::uno::Reference<
136 					::com::sun::star::ucb::XContentIdentifier >& Identifier )
137 		throw( ::com::sun::star::ucb::IllegalIdentifierException,
138 			   ::com::sun::star::uno::RuntimeException );
139     virtual sal_Int32 SAL_CALL
140 	compareContentIds( const ::com::sun::star::uno::Reference<
141 						::com::sun::star::ucb::XContentIdentifier >& Id1,
142 					   const ::com::sun::star::uno::Reference<
143 					   	::com::sun::star::ucb::XContentIdentifier >& Id2 )
144 		throw( ::com::sun::star::uno::RuntimeException );
145 
146 	// XParameterizedContentProvider
147     virtual ::com::sun::star::uno::Reference<
148 		::com::sun::star::ucb::XContentProvider > SAL_CALL
149 	registerInstance( const ::rtl::OUString& Template,
150 					  const ::rtl::OUString& Arguments,
151 					  sal_Bool ReplaceExisting )
152 		throw( ::com::sun::star::lang::IllegalArgumentException,
153 			   ::com::sun::star::uno::RuntimeException );
154     virtual ::com::sun::star::uno::Reference<
155 		::com::sun::star::ucb::XContentProvider > SAL_CALL
156 	deregisterInstance( const ::rtl::OUString& Template,
157 						const ::rtl::OUString& Arguments )
158 		throw( ::com::sun::star::lang::IllegalArgumentException,
159 			   ::com::sun::star::uno::RuntimeException );
160 };
161 
162 #endif /* !_PROVPROX_HXX */
163