1*cdf0e10cSrcweir/************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir#ifndef __com_sun_star_uri_UriReferenceFactory_idl__ 29*cdf0e10cSrcweir#define __com_sun_star_uri_UriReferenceFactory_idl__ 30*cdf0e10cSrcweir 31*cdf0e10cSrcweirmodule com { module sun { module star { module uri { 32*cdf0e10cSrcweir 33*cdf0e10cSrcweirpublished interface XUriReferenceFactory; 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir/** 36*cdf0e10cSrcweir creates URI references. 37*cdf0e10cSrcweir 38*cdf0e10cSrcweir <p>See <a href="http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a> for a 39*cdf0e10cSrcweir description of URI references and related terms.</p> 40*cdf0e10cSrcweir 41*cdf0e10cSrcweir <p>For parsing absolute URI references, this service tries to use a 42*cdf0e10cSrcweir scheme-specific parser. Such a scheme-specific parser will typically enforce 43*cdf0e10cSrcweir additional restrictions during parsing, and will typically return objects 44*cdf0e10cSrcweir that support extra, scheme-specific interfaces in addition to 45*cdf0e10cSrcweir <type scope="com::sun::star::uri">XUriReference</type>. If no such parser 46*cdf0e10cSrcweir is found, and for relative URI references, a generic parser is used, which 47*cdf0e10cSrcweir returns objects that only support 48*cdf0e10cSrcweir <type scope="com::sun::star::uri">XUriReference</type>.</p> 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir <p>Locating a scheme-specific parser works as follows: A scheme consists of 51*cdf0e10cSrcweir Latin captial letters 52*cdf0e10cSrcweir “<code>A</code>”–“<code>Z</code>”, Latin small 53*cdf0e10cSrcweir letters “<code>a</code>”–“<code>z</code>”, 54*cdf0e10cSrcweir digits “<code>0</code>”–“<code>9</code>”, 55*cdf0e10cSrcweir “<code>+</code>”, “<code>-</code>”, and 56*cdf0e10cSrcweir “<code>.</code>”. A scheme <var>s</var> is transformed into 57*cdf0e10cSrcweir a string <var>s</var>′ character-by-character, by translating 58*cdf0e10cSrcweir Lating capital letters to their small counterparts, translating 59*cdf0e10cSrcweir “<code>+</code>” to “<code>PLUS</code>”, 60*cdf0e10cSrcweir “<code>-</code>” to “<code>HYPHEN</code>”, 61*cdf0e10cSrcweir “<code>.</code>” to “<code>DOT</code>”, and copying 62*cdf0e10cSrcweir Latin small letters and digits unchanged. If the component context used 63*cdf0e10cSrcweir while creating this <code>UriReferenceFactory</code> instance offers a 64*cdf0e10cSrcweir service manager, and there is a service available at that service manager 65*cdf0e10cSrcweir whose name is the concatenation of 66*cdf0e10cSrcweir “<code>com.sun.star.uri.UriSchemeParser_</code>” and 67*cdf0e10cSrcweir <var>s</var>′, then that service is used. It is an error if that 68*cdf0e10cSrcweir service does not support 69*cdf0e10cSrcweir <type scope="com::sun::star::uri">XUriSchemeParser</type>.</p> 70*cdf0e10cSrcweir 71*cdf0e10cSrcweir @since OOo 2.0 72*cdf0e10cSrcweir */ 73*cdf0e10cSrcweirpublished service UriReferenceFactory: XUriReferenceFactory; 74*cdf0e10cSrcweir 75*cdf0e10cSrcweir}; }; }; }; 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir#endif 78