176 lines
8 KiB
Text
176 lines
8 KiB
Text
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*************************************************************************
|
|
*
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
|
*
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
|
*
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
|
*
|
|
* This file is part of OpenOffice.org.
|
|
*
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
* only, as published by the Free Software Foundation.
|
|
*
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License version 3 for more details
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
* <http://www.openoffice.org/license.html>
|
|
* for a copy of the LGPLv3 License.
|
|
*
|
|
************************************************************************/
|
|
#ifndef __com_sun_star_ucb_XContentProviderManager_idl__
|
|
#define __com_sun_star_ucb_XContentProviderManager_idl__
|
|
|
|
#include <com/sun/star/uno/XInterface.idl>
|
|
#include <com/sun/star/ucb/XContentProvider.idl>
|
|
#include <com/sun/star/ucb/DuplicateProviderException.idl>
|
|
#include <com/sun/star/ucb/ContentProviderInfo.idl>
|
|
|
|
|
|
//=============================================================================
|
|
|
|
module com { module sun { module star { module ucb {
|
|
|
|
//=============================================================================
|
|
/** makes it possible to query/register/deregister content providers.
|
|
|
|
@version 1.0
|
|
@author Kai Sommerfeld
|
|
@see XContentProvider
|
|
*/
|
|
published interface XContentProviderManager: com::sun::star::uno::XInterface
|
|
{
|
|
//-------------------------------------------------------------------------
|
|
/** registers a content provider for a specific URL template.
|
|
|
|
@see XContentIdentifier
|
|
|
|
@param Provider
|
|
the content provider to register.
|
|
|
|
<p>This may be <NULL/>, in which case a later
|
|
<member>XContentProvider::queryContent</member> with an
|
|
<type>XContentIdentifier</type> that matches the <var>Scheme</var>
|
|
will simply return <NULL/>. These "dummy" content providers are useful
|
|
in combination with other content providers that are registered on a
|
|
wildcard URL template: For example, imagine that you want to route all
|
|
http URLs to a HTTP content provider, but want to block all URLs for
|
|
the server <code>www.dont.go</code>. One solution would be to register
|
|
the HTTP content provider on the <var>Scheme</var> <code>http</code>,
|
|
and to register a "dummy" (i.e., <NULL/>) content provider on the
|
|
<var>Scheme</var> <code>"http://www.dont.go"([/?#].*)?</code>.
|
|
|
|
@param Scheme
|
|
the URL scheme for the provided contents. More generally, this may not
|
|
only be a URL scheme, but a URL template.
|
|
|
|
<p>A URL template is a regular expression (represented as a string) that
|
|
specifies a subset of the set of all possible URLs (this subset
|
|
consists of exactly those URLs that match the regular expression). The
|
|
language to denote the regular expressions is initially quite limited,
|
|
but it may be extended in the future:
|
|
|
|
<p><ul>
|
|
<li><code>regexp = scheme / simple / translation</code></li>
|
|
<li><code>scheme = ALPHA *(ALPHA / DIGIT / "+" / "-" / ".")</code></li>
|
|
<li><code>simple = simple-prefix / simple-authority / simple-domain</code></li>
|
|
<li><code>translation = trans-prefix / trans-authority / trans-domain</code></li>
|
|
<li><code>simple-prefix = [string] ".*"</code></li>
|
|
<li><code>trans-prefix = [string] "(.*)->" [string] "\1"</code></li>
|
|
<li><code>simple-authority = [string] "([/?#].*)?"</code></li>
|
|
<li><code>trans-authority = [string] "(([/?#].*)?)->" string "\1"</code></li>
|
|
<li><code>simple-domain = [string] "[^/?#]*" string "([/?#].*)?"</code></li>
|
|
<li><code>trans-domain = [string] "([^/?#]*" string "([/?#].*)?)->" string "\1"</code></li>
|
|
<li><code>string = DQUOTE 1*(schar / sescape) DQUOTE ; DQUOTE is "</code></li>
|
|
<li><code>schar = < any UTF-16 character except " or \></code></li>
|
|
<li><code>sescape = "\" (DQUOTE / "\")</code></li>
|
|
</ul>
|
|
|
|
<p>A <code><scheme>:</code> matches any URL of exactly the given
|
|
scheme (ignoring case), keeping the extension from URL schemes to URL
|
|
templates backwards compatible. The <code><simple>:</code>
|
|
regexps match any URL starting with a given string literal, followed
|
|
by arbitrary characters (<code><simple-prefix>:</code>), or
|
|
by arbitrary characters that start with one of '/', '?', or '#', if any
|
|
(<code><simple-authority>:</code>), or by arbitrary characters not
|
|
including any of '/', '?', or '#', followed by a given string literal,
|
|
followed by arbitrary characters that start with one of '/', '?', or
|
|
'#', if any. The comparison of string literals is done ignoring the
|
|
case of ASCII letters. The <code><translation>:</code> regexps
|
|
match the same URLs as their <code><simple>:</code> counterparts,
|
|
but they also describe how a (local) URL is mapped to another (remote)
|
|
URL. This mapping is only relevant for methods of the
|
|
<type>RemoteAccessContentProvider</type>'s
|
|
<type>XParameterizedContentProvider</type> interface; in all other
|
|
cases, <code><translation>:</code> regexps have the same semantics
|
|
as their <code><simple>:</code> counterparts.
|
|
|
|
@param ReplaceExisting
|
|
<TRUE/>: replace the provider possibly registered for the given URL
|
|
template. The replaced provider will not be deregistered automatically!
|
|
If the superseding provider gets deregistered, the superseded one will
|
|
become active again.
|
|
<p><FALSE/>: do not register, if another provider is already registered
|
|
for the given URL template.
|
|
|
|
@returns
|
|
the replaced content provider, if there was one.
|
|
*/
|
|
com::sun::star::ucb::XContentProvider registerContentProvider(
|
|
[in] com::sun::star::ucb::XContentProvider Provider,
|
|
[in] string Scheme,
|
|
[in] boolean ReplaceExisting )
|
|
raises( com::sun::star::ucb::DuplicateProviderException );
|
|
|
|
//-------------------------------------------------------------------------
|
|
/** deregisters a content provider.
|
|
|
|
@param Provider
|
|
a content provider to deregister.
|
|
|
|
@param Scheme
|
|
the URL scheme for the provided contents. More generally, this
|
|
may not only be a URL scheme, but a URL template (see
|
|
<member>registerContentProvider</member> for a discussion of URL
|
|
templates).
|
|
*/
|
|
[oneway] void deregisterContentProvider(
|
|
[in] com::sun::star::ucb::XContentProvider Provider,
|
|
[in] string Scheme );
|
|
|
|
//-------------------------------------------------------------------------
|
|
/** returns a list of information on all registered content providers.
|
|
|
|
@returns
|
|
a list information on content providers.
|
|
*/
|
|
sequence<com::sun::star::ucb::ContentProviderInfo> queryContentProviders();
|
|
|
|
//-------------------------------------------------------------------------
|
|
/** returns the currently active content provider for a content
|
|
identifier.
|
|
|
|
@param Identifier
|
|
a content identifier (i.e., a URL).
|
|
|
|
@returns
|
|
a content provider.
|
|
*/
|
|
com::sun::star::ucb::XContentProvider queryContentProvider(
|
|
[in] string Identifier );
|
|
};
|
|
|
|
//=============================================================================
|
|
|
|
}; }; }; };
|
|
|
|
#endif
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|