Class DataSourcePropertyStore

  • All Implemented Interfaces:
    WebdavServlet.PropertyStore

    public class DataSourcePropertyStore
    extends java.lang.Object
    implements WebdavServlet.PropertyStore
    WebDAV dead properties storage using a DataSource.

    A single properties table with four columns is used:

    • path: the resource path
    • namespace: the node namespace
    • name: the local name in the namespace
    • node: the full serialized XML node including the name
    The table name used can be configured using the tableName property of the store.

    Example table schema: CREATE TABLE properties ( path VARCHAR(1024) NOT NULL, namespace VARCHAR(64) NOT NULL, name VARCHAR(64) NOT NULL, node VARCHAR(2048) NOT NULL, PRIMARY KEY (path, namespace, name) )

    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected javax.sql.DataSource dataSource
      DataSource instance being used.
      protected static StringManager sm
      The string manager for this package.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void copy​(java.lang.String source, java.lang.String destination)
      Copy resource.
      void delete​(java.lang.String resource)
      Delete specified resource.
      void destroy()
      Destroy the store.
      java.lang.String getDataSourceName()
      Return the DataSource JNDI name, will be prefixed with java:comp/env for the lookup.
      java.lang.String getTableName()
      Return the table name that will be used in the database.
      void init()
      Initialize the store.
      void periodicEvent()
      Periodic event for maintenance tasks.
      boolean propfind​(java.lang.String resource, org.w3c.dom.Node property, boolean nameOnly, XMLWriter generatedXML)
      Generate propfind XML fragments for dead properties.
      void proppatch​(java.lang.String resource, java.util.ArrayList<WebdavServlet.ProppatchOperation> operations)
      Apply proppatch to the specified resource.
      void setDataSourceName​(java.lang.String dataSourceName)
      Set the DataSource JNDI name, will be prefixed with java:comp/env for the lookup.
      void setTableName​(java.lang.String tableName)
      Set the table name to use in the database.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • sm

        protected static final StringManager sm
        The string manager for this package.
      • dataSource

        protected javax.sql.DataSource dataSource
        DataSource instance being used.
    • Constructor Detail

      • DataSourcePropertyStore

        public DataSourcePropertyStore()
        Default constructor.
    • Method Detail

      • getDataSourceName

        public java.lang.String getDataSourceName()
        Return the DataSource JNDI name, will be prefixed with java:comp/env for the lookup.
        Returns:
        the DataSource JNDI name
      • setDataSourceName

        public void setDataSourceName​(java.lang.String dataSourceName)
        Set the DataSource JNDI name, will be prefixed with java:comp/env for the lookup.
        Parameters:
        dataSourceName - the DataSource JNDI name
      • getTableName

        public java.lang.String getTableName()
        Return the table name that will be used in the database.
        Returns:
        the table name
      • setTableName

        public void setTableName​(java.lang.String tableName)
        Set the table name to use in the database.
        Parameters:
        tableName - the table name
      • copy

        public void copy​(java.lang.String source,
                         java.lang.String destination)
        Description copied from interface: WebdavServlet.PropertyStore
        Copy resource. Dead properties should be copied to the destination path.
        Specified by:
        copy in interface WebdavServlet.PropertyStore
        Parameters:
        source - the copy source path
        destination - the copy destination path
      • delete

        public void delete​(java.lang.String resource)
        Description copied from interface: WebdavServlet.PropertyStore
        Delete specified resource. Dead properties on a deleted resource should be deleted.
        Specified by:
        delete in interface WebdavServlet.PropertyStore
        Parameters:
        resource - the path of the resource to delete
      • propfind

        public boolean propfind​(java.lang.String resource,
                                org.w3c.dom.Node property,
                                boolean nameOnly,
                                XMLWriter generatedXML)
        Description copied from interface: WebdavServlet.PropertyStore
        Generate propfind XML fragments for dead properties.
        Specified by:
        propfind in interface WebdavServlet.PropertyStore
        Parameters:
        resource - the resource path
        property - the dead property, if null then all dead properties must be written
        nameOnly - true if only the property name element should be generated
        generatedXML - the current generated XML for the PROPFIND response
        Returns:
        true if a property was specified and a corresponding dead property was found on the resource, false otherwise
      • proppatch

        public void proppatch​(java.lang.String resource,
                              java.util.ArrayList<WebdavServlet.ProppatchOperation> operations)
        Description copied from interface: WebdavServlet.PropertyStore
        Apply proppatch to the specified resource.
        Specified by:
        proppatch in interface WebdavServlet.PropertyStore
        Parameters:
        resource - the resource path on which to apply the proppatch
        operations - the set and remove to apply, the final status codes of the result should be set on each operation