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#ifndef __com_sun_star_ucb_XContentProviderManager_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_ucb_XContentProviderManager_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_XContentProvider_idl__ 31*b1cdbd2cSJim Jagielski#include <com/sun/star/ucb/XContentProvider.idl> 32*b1cdbd2cSJim Jagielski#endif 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_DuplicateProviderException_idl__ 35*b1cdbd2cSJim Jagielski#include <com/sun/star/ucb/DuplicateProviderException.idl> 36*b1cdbd2cSJim Jagielski#endif 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_ucb_ContentProviderInfo_idl__ 39*b1cdbd2cSJim Jagielski#include <com/sun/star/ucb/ContentProviderInfo.idl> 40*b1cdbd2cSJim Jagielski#endif 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski//============================================================================= 44*b1cdbd2cSJim Jagielski 45*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module ucb { 46*b1cdbd2cSJim Jagielski 47*b1cdbd2cSJim Jagielski//============================================================================= 48*b1cdbd2cSJim Jagielski/** makes it possible to query/register/deregister content providers. 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski @version 1.0 51*b1cdbd2cSJim Jagielski @author Kai Sommerfeld 52*b1cdbd2cSJim Jagielski @see XContentProvider 53*b1cdbd2cSJim Jagielski*/ 54*b1cdbd2cSJim Jagielskipublished interface XContentProviderManager: com::sun::star::uno::XInterface 55*b1cdbd2cSJim Jagielski{ 56*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 57*b1cdbd2cSJim Jagielski /** registers a content provider for a specific URL template. 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski @see XContentIdentifier 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski @param Provider 62*b1cdbd2cSJim Jagielski the content provider to register. 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski <p>This may be <NULL/>, in which case a later 65*b1cdbd2cSJim Jagielski <member>XContentProvider::queryContent</member> with an 66*b1cdbd2cSJim Jagielski <type>XContentIdentifier</type> that matches the <var>Scheme</var> 67*b1cdbd2cSJim Jagielski will simply return <NULL/>. These "dummy" content providers are useful 68*b1cdbd2cSJim Jagielski in combination with other content providers that are registered on a 69*b1cdbd2cSJim Jagielski wildcard URL template: For example, imagine that you want to route all 70*b1cdbd2cSJim Jagielski http URLs to a HTTP content provider, but want to block all URLs for 71*b1cdbd2cSJim Jagielski the server <code>www.dont.go</code>. One solution would be to register 72*b1cdbd2cSJim Jagielski the HTTP content provider on the <var>Scheme</var> <code>http</code>, 73*b1cdbd2cSJim Jagielski and to register a "dummy" (i.e., <NULL/>) content provider on the 74*b1cdbd2cSJim Jagielski <var>Scheme</var> <code>"http://www.dont.go"([/?#].*)?</code>. 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski @param Scheme 77*b1cdbd2cSJim Jagielski the URL scheme for the provided contents. More generally, this may not 78*b1cdbd2cSJim Jagielski only be a URL scheme, but a URL template. 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski <p>A URL template is a regular expression (represented as a string) that 81*b1cdbd2cSJim Jagielski specifies a subset of the set of all possible URLs (this subset 82*b1cdbd2cSJim Jagielski consists of exactly those URLs that match the regular expression). The 83*b1cdbd2cSJim Jagielski language to denote the regular expressions is initially quite limited, 84*b1cdbd2cSJim Jagielski but it may be extended in the future: 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski <p><ul> 87*b1cdbd2cSJim Jagielski <li><code>regexp = scheme / simple / translation</code></li> 88*b1cdbd2cSJim Jagielski <li><code>scheme = ALPHA *(ALPHA / DIGIT / "+" / "-" / ".")</code></li> 89*b1cdbd2cSJim Jagielski <li><code>simple = simple-prefix / simple-authority / simple-domain</code></li> 90*b1cdbd2cSJim Jagielski <li><code>translation = trans-prefix / trans-authority / trans-domain</code></li> 91*b1cdbd2cSJim Jagielski <li><code>simple-prefix = [string] ".*"</code></li> 92*b1cdbd2cSJim Jagielski <li><code>trans-prefix = [string] "(.*)->" [string] "\1"</code></li> 93*b1cdbd2cSJim Jagielski <li><code>simple-authority = [string] "([/?#].*)?"</code></li> 94*b1cdbd2cSJim Jagielski <li><code>trans-authority = [string] "(([/?#].*)?)->" string "\1"</code></li> 95*b1cdbd2cSJim Jagielski <li><code>simple-domain = [string] "[^/?#]*" string "([/?#].*)?"</code></li> 96*b1cdbd2cSJim Jagielski <li><code>trans-domain = [string] "([^/?#]*" string "([/?#].*)?)->" string "\1"</code></li> 97*b1cdbd2cSJim Jagielski <li><code>string = DQUOTE 1*(schar / sescape) DQUOTE ; DQUOTE is "</code></li> 98*b1cdbd2cSJim Jagielski <li><code>schar = < any UTF-16 character except " or \></code></li> 99*b1cdbd2cSJim Jagielski <li><code>sescape = "\" (DQUOTE / "\")</code></li> 100*b1cdbd2cSJim Jagielski </ul> 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski <p>A <code><scheme>:</code> matches any URL of exactly the given 103*b1cdbd2cSJim Jagielski scheme (ignoring case), keeping the extension from URL schemes to URL 104*b1cdbd2cSJim Jagielski templates backwards compatible. The <code><simple>:</code> 105*b1cdbd2cSJim Jagielski regexps match any URL starting with a given string literal, followed 106*b1cdbd2cSJim Jagielski by arbitrary characters (<code><simple-prefix>:</code>), or 107*b1cdbd2cSJim Jagielski by arbitrary characters that start with one of '/', '?', or '#', if any 108*b1cdbd2cSJim Jagielski (<code><simple-authority>:</code>), or by arbitrary characters not 109*b1cdbd2cSJim Jagielski including any of '/', '?', or '#', followed by a given string literal, 110*b1cdbd2cSJim Jagielski followed by arbitrary characters that start with one of '/', '?', or 111*b1cdbd2cSJim Jagielski '#', if any. The comparision of string literals is done ignoring the 112*b1cdbd2cSJim Jagielski case of ASCII letters. The <code><translation>:</code> regexps 113*b1cdbd2cSJim Jagielski match the same URLs as their <code><simple>:</code> counterparts, 114*b1cdbd2cSJim Jagielski but they also describe how a (local) URL is mapped to another (remote) 115*b1cdbd2cSJim Jagielski URL. This mapping is only relevant for methods of the 116*b1cdbd2cSJim Jagielski <type>RemoteAccessContentProvider</type>'s 117*b1cdbd2cSJim Jagielski <type>XParameterizedContentProvider</type> interface; in all other 118*b1cdbd2cSJim Jagielski cases, <code><translation>:</code> regexps have the same semantics 119*b1cdbd2cSJim Jagielski as their <code><simple>:</code> counterparts. 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski @param ReplaceExisting 122*b1cdbd2cSJim Jagielski <TRUE/>: replace the provider possibly registered for the given URL 123*b1cdbd2cSJim Jagielski template. The replaced provider will not be deregistered automatically! 124*b1cdbd2cSJim Jagielski If the superseding provider gets deregistered, the superseded one will 125*b1cdbd2cSJim Jagielski become active again. 126*b1cdbd2cSJim Jagielski <p><FALSE/>: do not register, if another provider is already registered 127*b1cdbd2cSJim Jagielski for the given URL template. 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski @returns 130*b1cdbd2cSJim Jagielski the replaced content provider, if there was one. 131*b1cdbd2cSJim Jagielski */ 132*b1cdbd2cSJim Jagielski com::sun::star::ucb::XContentProvider registerContentProvider( 133*b1cdbd2cSJim Jagielski [in] com::sun::star::ucb::XContentProvider Provider, 134*b1cdbd2cSJim Jagielski [in] string Scheme, 135*b1cdbd2cSJim Jagielski [in] boolean ReplaceExisting ) 136*b1cdbd2cSJim Jagielski raises( com::sun::star::ucb::DuplicateProviderException ); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 139*b1cdbd2cSJim Jagielski /** deregisters a content provider. 140*b1cdbd2cSJim Jagielski 141*b1cdbd2cSJim Jagielski @param Provider 142*b1cdbd2cSJim Jagielski a content provider to deregister. 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski @param Scheme 145*b1cdbd2cSJim Jagielski the URL scheme for the provided contents. More generally, this 146*b1cdbd2cSJim Jagielski may not only be a URL scheme, but a URL template (see 147*b1cdbd2cSJim Jagielski <member>registerContentProvider</member> for a discussion of URL 148*b1cdbd2cSJim Jagielski templates). 149*b1cdbd2cSJim Jagielski */ 150*b1cdbd2cSJim Jagielski [oneway] void deregisterContentProvider( 151*b1cdbd2cSJim Jagielski [in] com::sun::star::ucb::XContentProvider Provider, 152*b1cdbd2cSJim Jagielski [in] string Scheme ); 153*b1cdbd2cSJim Jagielski 154*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 155*b1cdbd2cSJim Jagielski /** returns a list of information on all registered content providers. 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski @returns 158*b1cdbd2cSJim Jagielski a list information on content providers. 159*b1cdbd2cSJim Jagielski */ 160*b1cdbd2cSJim Jagielski sequence<com::sun::star::ucb::ContentProviderInfo> queryContentProviders(); 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 163*b1cdbd2cSJim Jagielski /** returns the currently active content provider for a content 164*b1cdbd2cSJim Jagielski identifier. 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski @param Identifier 167*b1cdbd2cSJim Jagielski a content identifier (i.e., a URL). 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski @returns 170*b1cdbd2cSJim Jagielski a content provider. 171*b1cdbd2cSJim Jagielski */ 172*b1cdbd2cSJim Jagielski com::sun::star::ucb::XContentProvider queryContentProvider( 173*b1cdbd2cSJim Jagielski [in] string Identifier ); 174*b1cdbd2cSJim Jagielski}; 175*b1cdbd2cSJim Jagielski 176*b1cdbd2cSJim Jagielski//============================================================================= 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski}; }; }; }; 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski#endif 181