1/*************************************************************************
2 *
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
6 *
7 * OpenOffice.org - a multi-platform office productivity suite
8 *
9 * This file is part of OpenOffice.org.
10 *
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
14 *
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org.  If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
25 *
26 ************************************************************************/
27#ifndef __com_sun_star_ucb_UniversalContentBroker_idl__
28#define __com_sun_star_ucb_UniversalContentBroker_idl__
29
30#ifndef __com_sun_star_lang_XComponent_idl__
31#include <com/sun/star/lang/XComponent.idl>
32#endif
33
34#ifndef __com_sun_star_ucb_XCommandProcessor_idl__
35#include <com/sun/star/ucb/XCommandProcessor.idl>
36#endif
37
38#ifndef __com_sun_star_ucb_XCommandProcessor2_idl__
39#include <com/sun/star/ucb/XCommandProcessor2.idl>
40#endif
41
42#ifndef __com_sun_star_ucb_XContentProviderManager_idl__
43#include <com/sun/star/ucb/XContentProviderManager.idl>
44#endif
45
46#ifndef __com_sun_star_ucb_XContentProvider_idl__
47#include <com/sun/star/ucb/XContentProvider.idl>
48#endif
49
50#ifndef __com_sun_star_ucb_XContentIdentifierFactory_idl__
51#include <com/sun/star/ucb/XContentIdentifierFactory.idl>
52#endif
53
54#ifndef __com_sun_star_lang_XInitialization_idl__
55#include <com/sun/star/lang/XInitialization.idl>
56#endif
57
58//=============================================================================
59
60module com { module sun { module star { module ucb {
61
62//=============================================================================
63/** is a one-instance service that provides access to a set of
64    <type>Content</type>s via <type>ContentProvider</type>s.
65
66	<p>If the instance is created with two arguments of type string,
67	these two strings are used to configure the newly instantiated broker;
68	see the description of the required
69	<type scope="com::sun::star::lang">XInitialization</type> interface for
70	details.
71
72	<p>If the instance is created without arguments, the newly instatiated
73    broker is not configured.
74*/
75published service UniversalContentBroker
76{
77	//-------------------------------------------------------------------------
78	/** must be implemented to make it possible to resolve cyclic object
79	    references.
80
81		<p>Those references i.e. may occure if content provider	implementations
82		hold references to the Broker. The Broker itself always holds its
83		providers. If the Broker shall be released,
84		<member scope="com::sun::star::lang">XComponent::dispose</member>
85		must be called at the Broker. The implementation of this method must
86		call
87		<member scope="com::sun::star::lang">XEventListener::disposing</member>
88		on the registered listeners	(the providers holding the Broker must be
89		those listeners) and release the appropriate object references. At
90		the other hand, the	implementation of XEventListener::disposing must
91		release its appropriate references.
92
93		<p>This interface is required.
94	 */
95	interface com::sun::star::lang::XComponent;
96
97	//-------------------------------------------------------------------------
98	/** provides access to all kind of contents provided by the registered
99		content providers.
100
101		<p>This interface is required.
102	 */
103	interface com::sun::star::ucb::XContentProvider;
104
105	//-------------------------------------------------------------------------
106	/** provides access to a set of content providers registered with the UCB.
107
108		<p>This interface is required.
109	 */
110	interface com::sun::star::ucb::XContentProviderManager;
111
112	//-------------------------------------------------------------------------
113	/** creates <type>XContentIdentifier</type> implementation objects for
114	    all kind of contents provided by the UCB.
115
116		<p>This interface is required.
117	  */
118	interface com::sun::star::ucb::XContentIdentifierFactory;
119
120	//-------------------------------------------------------------------------
121	/**	supports the configuration of a newly created broker.
122
123		<p>The
124		<member scope="com::sun::star::lang">XInitialization::initialize</member>
125		method should be called with two arguments of type string. These strings
126		are used as a pair of keys to retrieve a set of content provider
127		descriptions from the configuration	management (stored at
128		<code>org.openoffice.ucb.Configuration.ContentProviders.<var>key<sub>1</sub></var>.SecondaryKeys.<var>key<sub>2</sub></var>.ProviderData</code>
129		within the configuration management's hierarchy). The retrieved
130		descriptions are in turn used to register the corresponding content
131		provider services at the broker.
132
133		<p>Typical values for the pair of strings would be
134		<code>"Local"</code>/<code>"Office"</code>, to configure a broker that
135		contains all the relevant content providers.
136
137		<p>This interface is required.
138	 */
139	interface com::sun::star::lang::XInitialization;
140
141	//-------------------------------------------------------------------------
142	/**	enables the caller to execute commands at the broker.
143
144		<p>This interface is required.
145
146		<p><pre>
147		=======================================================================
148		Commands:
149		=======================================================================
150
151		[return type]
152			[command name]
153				[parameter type and name]
154
155		-----------------------------------------------------------------------
156		Requiered commands:
157		-----------------------------------------------------------------------
158
159		// This command obtains an interface which allows to query
160		// information on commands supported by the Content Broker.
161
162		<type>XCommandInfo</type>
163			getCommandInfo
164				void
165
166		// This command transfers Contents from one location to another.
167		// Additionally, it can be used to create a link to a Content.
168		// The implementation must be able to handle Contents provided
169		// by any Content Provider. This is different from the command
170		// 'transfer' that can be supported by a Content. That command
171		// typically can only handle <type>Content</type>s provided by one
172		// <type>ContentProvider</type>.
173
174		void
175			globalTransfer
176				<type>GlobalTransferCommandArgument</type>
177		</pre>
178	 */
179    interface com::sun::star::ucb::XCommandProcessor;
180
181    //-------------------------------------------------------------------------
182    /** is an enhanced version of <type>XCommandProcessor</type> that has an
183        additional method for releasing command identifiers obtained via
184        <member>XCommandProcessor::createCommandIdentifier</member> to avoid
185        resource leaks. For a detailed description of the problem refer to
186        <member>XCommandProcessor2::releaseCommandIdentifier</member>.
187
188        <p>Where many existing <type>UniversalContentBroker</type>
189        implementations do not (yet), every new implementation should support
190        this interface.
191     */
192    [optional] interface com::sun::star::ucb::XCommandProcessor2;
193
194};
195
196//=============================================================================
197
198}; }; }; };
199
200#endif
201