Class AbstractLocatorFactory

java.lang.Object
org.apache.jackrabbit.webdav.AbstractLocatorFactory
All Implemented Interfaces:
DavLocatorFactory

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 Details

    • 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 Details

    • 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 href, boolean forDestination)
      Like createResourceLocator(String, String), but by setting forDestination to true any special processing of URI suffixes can be disabled.
    • 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:
    • createResourceLocator

      public DavResourceLocator createResourceLocator(String prefix, String workspacePath, String path, boolean isResourcePath)
      Create a new DavResourceLocator from the specified prefix, workspace path and resource path. If isResourcePath is set to false, the given 'resourcePath' is converted by calling getResourcePath(String, String). Otherwise the same restriction applies as for createResourceLocator(String, String, String).
      Specified by:
      createResourceLocator in interface DavLocatorFactory
      Parameters:
      prefix -
      workspacePath -
      path -
      isResourcePath -
      Returns:
      See Also:
    • 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: