Class AbstractLocatorFactory

  • All Implemented Interfaces:
    DavLocatorFactory
    Direct Known Subclasses:
    DavLocatorFactoryImpl, LocatorFactoryImplEx

    public abstract class AbstractLocatorFactory
    extends Object
    implements DavLocatorFactory
    AbstractLocatorFactory is an implementation of the DavLocatorFactory interface that defines how a given URI is split to workspace path and resource path and how it's implementation of DavResourceLocator builds the href. In contrast, the conversion from repository path to resource path and vice versa is left to subclasses.
    • Constructor Detail

      • AbstractLocatorFactory

        public AbstractLocatorFactory​(String pathPrefix)
        Create a new factory
        Parameters:
        pathPrefix - Prefix, that needs to be removed in order to retrieve the path of the repository item from a given DavResourceLocator.
    • Method Detail

      • createResourceLocator

        public DavResourceLocator createResourceLocator​(String prefix,
                                                        String href)
        Create a new DavResourceLocator. Any leading prefix and path-prefix (as defined with the constructor) are removed from the given request handle. The same applies for trailing '/'. The remaining String is called the 'resource handle' and it's first segment is treated as workspace name. If resource handle (and therefore workspace name) are missing, both values are set to null.

        Examples:

         http://www.foo.bar/ (path prefix missing)
         -> workspace path = null
         -> resource path  = null
         -> href           = http://www.foo.bar/pathPrefix/
        
         http://www.foo.bar/pathPrefix/
         -> workspace path = null
         -> resource path  = null
         -> href           = http://www.foo.bar/pathPrefix/
        
         http://www.foo.bar/pathPrefix/wspName
         -> workspace path = /wspName
         -> resource path  = /wspName
         -> href           = http://www.foo.bar/pathPrefix/wspName
        
         http://www.foo.bar/pathPrefix/wspName/anypath
         -> workspace path = /wspName
         -> resource path  = /wspName/anypath
         -> href           = http://www.foo.bar/pathPrefix/wspName/anypath
         
        NOTE: If the given href is an absolute URI it must start with the specified prefix.
        Specified by:
        createResourceLocator in interface DavLocatorFactory
        Parameters:
        prefix -
        href -
        Returns:
        a new DavResourceLocator
        Throws:
        IllegalArgumentException - if the given href is null
      • createResourceLocator

        public DavResourceLocator createResourceLocator​(String prefix,
                                                        String workspacePath,
                                                        String resourcePath)
        Create a new DavResourceLocator from the specified prefix, workspace path and resource path, without modifying the specified Strings. Note, that it is expected that the resource path starts with the given workspace path unless both values are null.
        Specified by:
        createResourceLocator in interface DavLocatorFactory
        Parameters:
        prefix -
        workspacePath - path or the workspace containing this resource or null.
        resourcePath - Path of the resource or null. Any non null value must start with the specified workspace path.
        Returns:
        a new DavResourceLocator
        See Also:
        DavLocatorFactory.createResourceLocator(String, String, String)
      • getRepositoryPath

        protected abstract String getRepositoryPath​(String resourcePath,
                                                    String wspPath)
        Subclasses must defined how the repository path is built from the given resource and workspace path.
        Parameters:
        resourcePath -
        wspPath -
        Returns:
      • getResourcePath

        protected abstract String getResourcePath​(String repositoryPath,
                                                  String wspPath)
        Subclasses must defined how the resource path is built from the given repository and workspace path.
        Parameters:
        repositoryPath -
        wspPath -
        Returns: