Class JCRWebdavServerServlet

  • All Implemented Interfaces:
    Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig, org.apache.jackrabbit.webdav.DavConstants
    Direct Known Subclasses:
    JcrRemotingServlet

    public abstract class JCRWebdavServerServlet
    extends org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
    JCRWebdavServerServlet provides request/response handling for the JCRWebdavServer.

    Implementations of this abstract class must implement the getRepository() method to access the repository.

    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String CTX_ATTR_RESOURCE_PATH_PREFIX
      Servlet context attribute used to store the path prefix instead of having a static field with this servlet.
      static String INIT_PARAM_CONCURRENCY_LEVEL
      Optional 'concurrency-level' parameter defining the concurrency level within the jcr-server.
      static String INIT_PARAM_RESOURCE_PATH_PREFIX
      Init parameter specifying the prefix used with the resource path.
      protected org.apache.jackrabbit.webdav.observation.SubscriptionManager subscriptionMgr  
      protected TxLockManagerImpl txMgr  
      • Fields inherited from class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet

        DEFAULT_AUTHENTICATE_HEADER, INIT_PARAM_AUTHENTICATE_HEADER, INIT_PARAM_CREATE_ABSOLUTE_URI, INIT_PARAM_CSRF_PROTECTION, INIT_PARAM_MISSING_AUTH_MAPPING
      • Fields inherited from interface org.apache.jackrabbit.webdav.DavConstants

        creationDateFormat, DEPTH_0, DEPTH_1, DEPTH_INFINITY, DEPTH_INFINITY_S, HEADER_AUTHORIZATION, HEADER_CONTENT_LANGUAGE, HEADER_CONTENT_LENGTH, HEADER_CONTENT_TYPE, HEADER_DAV, HEADER_DEPTH, HEADER_DESTINATION, HEADER_ETAG, HEADER_IF, HEADER_LAST_MODIFIED, HEADER_LOCK_TOKEN, HEADER_OVERWRITE, HEADER_TIMEOUT, INFINITE_TIMEOUT, modificationDateFormat, NAMESPACE, OPAQUE_LOCK_TOKEN_PREFIX, PROPERTY_CREATIONDATE, PROPERTY_DISPLAYNAME, PROPERTY_GETCONTENTLANGUAGE, PROPERTY_GETCONTENTLENGTH, PROPERTY_GETCONTENTTYPE, PROPERTY_GETETAG, PROPERTY_GETLASTMODIFIED, PROPERTY_LOCKDISCOVERY, PROPERTY_RESOURCETYPE, PROPERTY_SOURCE, PROPERTY_SUPPORTEDLOCK, PROPFIND_ALL_PROP, PROPFIND_ALL_PROP_INCLUDE, PROPFIND_BY_PROPERTY, PROPFIND_PROPERTY_NAMES, TIMEOUT_INFINITE, UNDEFINED_TIME, UNDEFINED_TIMEOUT, XML_ACTIVELOCK, XML_ALLPROP, XML_COLLECTION, XML_DEPTH, XML_DST, XML_EXCLUSIVE, XML_HREF, XML_INCLUDE, XML_KEEPALIVE, XML_LINK, XML_LOCKENTRY, XML_LOCKINFO, XML_LOCKROOT, XML_LOCKSCOPE, XML_LOCKTOKEN, XML_LOCKTYPE, XML_MULTISTATUS, XML_OMIT, XML_OWNER, XML_PROP, XML_PROPERTYBEHAVIOR, XML_PROPERTYUPDATE, XML_PROPFIND, XML_PROPNAME, XML_PROPSTAT, XML_REMOVE, XML_RESPONSE, XML_RESPONSEDESCRIPTION, XML_SET, XML_SHARED, XML_SOURCE, XML_STATUS, XML_TIMEOUT, XML_WRITE
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected CredentialsProvider getCredentialsProvider()
      Returns a new instanceof BasicCredentialsProvider.
      org.apache.jackrabbit.webdav.DavSessionProvider getDavSessionProvider()
      Returns the DavSessionProvider
      org.apache.jackrabbit.webdav.DavLocatorFactory getLocatorFactory()
      Returns the DavLocatorFactory
      static String getPathPrefix​(javax.servlet.ServletContext ctx)
      Returns the configured path prefix
      protected abstract Repository getRepository()
      Returns the repository to be used by this servlet.
      org.apache.jackrabbit.webdav.DavResourceFactory getResourceFactory()
      Returns the DavResourceFactory.
      protected SessionProvider getSessionProvider()
      Returns a new instanceof SessionProviderImpl.
      void init()
      Initializes the servlet set reads the following parameter from the servlet configuration: resource-path-prefix: optional prefix for all resources.
      protected boolean isPreconditionValid​(org.apache.jackrabbit.webdav.WebdavRequest request, org.apache.jackrabbit.webdav.DavResource resource)
      Returns true if the preconditions are met.
      void setDavSessionProvider​(org.apache.jackrabbit.webdav.DavSessionProvider davSessionProvider)
      Throws UnsupportedOperationException.
      void setLocatorFactory​(org.apache.jackrabbit.webdav.DavLocatorFactory locatorFactory)
      Sets the DavLocatorFactory
      void setResourceFactory​(org.apache.jackrabbit.webdav.DavResourceFactory resourceFactory)
      Sets the DavResourceFactory.
      protected int validateDestination​(org.apache.jackrabbit.webdav.DavResource destResource, org.apache.jackrabbit.webdav.WebdavRequest request, boolean checkHeader)
      Modified variant needed for JCR move and copy that isn't compliant to WebDAV.
      • Methods inherited from class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet

        doAcl, doBaselineControl, doBind, doCheckin, doCheckout, doCopy, doDelete, doGet, doHead, doLabel, doLock, doMerge, doMkActivity, doMkCol, doMkWorkspace, doMove, doOptions, doOrderPatch, doPoll, doPost, doPropFind, doPropPatch, doPut, doRebind, doReport, doSearch, doSubscribe, doUnbind, doUncheckout, doUnlock, doUnsubscribe, doUpdate, doVersionControl, execute, getAuthenticateHeaderValue, getContentCodings, getInputContext, getOutputContext, getSingletonField, isCreateAbsoluteURI, sendUnauthorized, service
      • Methods inherited from class javax.servlet.http.HttpServlet

        doDelete, doGet, doHead, doOptions, doPost, doPut, doTrace, getLastModified, service
      • Methods inherited from class javax.servlet.GenericServlet

        destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, log, log
    • Field Detail

      • INIT_PARAM_RESOURCE_PATH_PREFIX

        public static final String INIT_PARAM_RESOURCE_PATH_PREFIX
        Init parameter specifying the prefix used with the resource path.
        See Also:
        Constant Field Values
      • INIT_PARAM_CONCURRENCY_LEVEL

        public static final String INIT_PARAM_CONCURRENCY_LEVEL
        Optional 'concurrency-level' parameter defining the concurrency level within the jcr-server. If the parameter is omitted the internal default value (50) is used.
        See Also:
        Constant Field Values
      • CTX_ATTR_RESOURCE_PATH_PREFIX

        public static final String CTX_ATTR_RESOURCE_PATH_PREFIX
        Servlet context attribute used to store the path prefix instead of having a static field with this servlet. The latter causes problems when running multiple
        See Also:
        Constant Field Values
      • subscriptionMgr

        protected org.apache.jackrabbit.webdav.observation.SubscriptionManager subscriptionMgr
    • Constructor Detail

      • JCRWebdavServerServlet

        public JCRWebdavServerServlet()
    • Method Detail

      • init

        public void init()
                  throws javax.servlet.ServletException
        Initializes the servlet set reads the following parameter from the servlet configuration:
        • resource-path-prefix: optional prefix for all resources.
        Overrides:
        init in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        Throws:
        javax.servlet.ServletException
      • isPreconditionValid

        protected boolean isPreconditionValid​(org.apache.jackrabbit.webdav.WebdavRequest request,
                                              org.apache.jackrabbit.webdav.DavResource resource)
        Returns true if the preconditions are met. This includes validation of If header and validation of TransactionId header. This method will also return false if the requested resource resides within a different workspace as is assigned to the repository session attached to the given request.
        Specified by:
        isPreconditionValid in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.isPreconditionValid(WebdavRequest, DavResource)
      • getDavSessionProvider

        public org.apache.jackrabbit.webdav.DavSessionProvider getDavSessionProvider()
        Returns the DavSessionProvider
        Specified by:
        getDavSessionProvider in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        Returns:
        server
        See Also:
        AbstractWebdavServlet.getDavSessionProvider()
      • setDavSessionProvider

        public void setDavSessionProvider​(org.apache.jackrabbit.webdav.DavSessionProvider davSessionProvider)
        Throws UnsupportedOperationException.
        Specified by:
        setDavSessionProvider in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.setDavSessionProvider(DavSessionProvider)
      • getLocatorFactory

        public org.apache.jackrabbit.webdav.DavLocatorFactory getLocatorFactory()
        Returns the DavLocatorFactory
        Specified by:
        getLocatorFactory in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.getLocatorFactory()
      • setLocatorFactory

        public void setLocatorFactory​(org.apache.jackrabbit.webdav.DavLocatorFactory locatorFactory)
        Sets the DavLocatorFactory
        Specified by:
        setLocatorFactory in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.setLocatorFactory(DavLocatorFactory)
      • getResourceFactory

        public org.apache.jackrabbit.webdav.DavResourceFactory getResourceFactory()
        Returns the DavResourceFactory.
        Specified by:
        getResourceFactory in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.getResourceFactory()
      • setResourceFactory

        public void setResourceFactory​(org.apache.jackrabbit.webdav.DavResourceFactory resourceFactory)
        Sets the DavResourceFactory.
        Specified by:
        setResourceFactory in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        See Also:
        AbstractWebdavServlet.setResourceFactory(org.apache.jackrabbit.webdav.DavResourceFactory)
      • validateDestination

        protected int validateDestination​(org.apache.jackrabbit.webdav.DavResource destResource,
                                          org.apache.jackrabbit.webdav.WebdavRequest request,
                                          boolean checkHeader)
                                   throws org.apache.jackrabbit.webdav.DavException
        Modified variant needed for JCR move and copy that isn't compliant to WebDAV. The latter requires both methods to fail if the destination already exists and Overwrite is set to F (false); in JCR however this depends on the node type characteristics of the parent (SNSiblings allowed or not).
        Overrides:
        validateDestination in class org.apache.jackrabbit.webdav.server.AbstractWebdavServlet
        Parameters:
        destResource - destination resource to be validated.
        request - The webdav request
        checkHeader - flag indicating if the destination header must be present.
        Returns:
        status code indicating whether the destination is valid.
        Throws:
        org.apache.jackrabbit.webdav.DavException
      • getPathPrefix

        public static String getPathPrefix​(javax.servlet.ServletContext ctx)
        Returns the configured path prefix
        Parameters:
        ctx - The servlet context.
        Returns:
        resourcePathPrefix
        See Also:
        INIT_PARAM_RESOURCE_PATH_PREFIX
      • getRepository

        protected abstract Repository getRepository()
        Returns the repository to be used by this servlet.
        Returns:
        the JCR repository to be used by this servlet
      • getCredentialsProvider

        protected CredentialsProvider getCredentialsProvider()
        Returns a new instanceof BasicCredentialsProvider.
        Returns:
        a new credentials provider
      • getSessionProvider

        protected SessionProvider getSessionProvider()
        Returns a new instanceof SessionProviderImpl.
        Returns:
        a new session provider