Class FileSystemURLFactory

  • All Implemented Interfaces:
    XWikiURLFactory
    Direct Known Subclasses:
    PdfURLFactory

    public class FileSystemURLFactory
    extends XWikiServletURLFactory
    Special URL Factory used during exports, which stores referenced attachments and resources on the filesystem, in a temporary folder, so that they can be included in the export result. The returned URLs point to these resources as file:// links, and not as http:// links.
    Since:
    5.0RC1
    Version:
    $Id: 97f062a7524a4937701584ea40d0a59022ee0220 $
    • Constructor Detail

      • FileSystemURLFactory

        public FileSystemURLFactory()
    • Method Detail

      • createAttachmentURL

        public URL createAttachmentURL​(String filename,
                                       String spaces,
                                       String name,
                                       String action,
                                       String querystring,
                                       String wiki,
                                       XWikiContext context)
        Specified by:
        createAttachmentURL in interface XWikiURLFactory
        Overrides:
        createAttachmentURL in class XWikiServletURLFactory
        spaces - a serialized space reference which can contain one or several spaces (e.g. "space1.space2"). If a space name contains a dot (".") it must be passed escaped as in "space1\.with\.dot.space2"
        querystring - the URL-encoded Query String. It's important to realize that the implementation of this method cannot encode it automatically since the Query String is passed as a String (and it's not possible to differentiate between a '=' character that should be encoded and one that shouldn't. Imagine an input of 'a=&b=c' which can be understood either as 'a' = '&b=c' or as 'a' = '' and 'b' = 'c'). Ideally we would need an API signature that accepts a Map<String, String> for the Query String, for example
      • createAttachmentRevisionURL

        public URL createAttachmentRevisionURL​(String filename,
                                               String spaces,
                                               String name,
                                               String revision,
                                               String wiki,
                                               XWikiContext context)
        Specified by:
        createAttachmentRevisionURL in interface XWikiURLFactory
        Overrides:
        createAttachmentRevisionURL in class XWikiDefaultURLFactory
        spaces - a serialized space reference which can contain one or several spaces (e.g. "space1.space2"). If a space name contains a dot (".") it must be passed escaped as in "space1\.with\.dot.space2"
        wiki - the URL-encoded Query String. It's important to realize that the implementation of this method cannot encode it automatically since the Query String is passed as a String (and it's not possible to differentiate between a '=' character that should be encoded and one that shouldn't. Imagine an input of 'a=&b=c' which can be understood either as 'a' = '&b=c' or as 'a' = '' and 'b' = 'c'). Ideally we would need an API signature that accepts a Map<String, String> for the Query String, for example
      • getURL

        public String getURL​(URL url,
                             XWikiContext context)
        Description copied from class: XWikiServletURLFactory
        Converts a URL to a relative URL if it's a XWiki URL (keeping only the path + query string + anchor) and leave the URL unchanged if it's an external URL.

        An URL is considered to be external if its server component doesn't match the server of the current request URL. This means that URLs are made relative with respect to the current request URL rather than the current wiki set on the XWiki context. Let's take an example:

         
         request URL: http://playground.xwiki.org/xwiki/bin/view/Sandbox/TestURL
         current wiki: code (code.xwiki.org)
         URL (1): http://code.xwiki.org/xwiki/bin/view/Main/WebHome
         URL (2): http://playground.xwiki.org/xwiki/bin/view/Spage/Page
         
         The result will be:
         (1) http://code.xwiki.org/xwiki/bin/view/Main/WebHome
         (2) /xwiki/bin/view/Spage/Page
         
         
        Specified by:
        getURL in interface XWikiURLFactory
        Overrides:
        getURL in class XWikiServletURLFactory
        Parameters:
        url - the URL to convert
        Returns:
        the converted URL as a string
        See Also:
        XWikiDefaultURLFactory.getURL(java.net.URL, com.xpn.xwiki.XWikiContext)