Class BaseRemoteStore

  • All Implemented Interfaces:
    org.springframework.extensions.webscripts.WebScript
    Direct Known Subclasses:
    ADMRemoteStore

    public abstract class BaseRemoteStore
    extends org.springframework.extensions.webscripts.AbstractWebScript
    Remote Store service.

    Responsible for providing remote HTTP based access to a store. Designed to be accessed from a web-tier application to remotely mirror a WebScript Store instance.

    Request format:

          //[?]
          //s//[?]
          //s//w//[?]
     

    Example:

          /service/remotestore/lastmodified/sites/xyz/pages/page.xml
     

    where:

          /service/remotestore -> service path
          /lastmodified        -> method name
          /sites/../page.xml   -> document path
     

    optional request parameters:

          s                    -> the store id
     

    Note: path is relative to the root path as configured for this webscript bean

    Further URL arguments may be provided if required by specific API methods.

    For content create and update the request should be POSTed and the content sent as the payload of the request content.

    Supported API methods:

          GET lastmodified -> return timestamp of a document in ms since 1970 as a long string value
          GET has -> return true or false string as existence for a document
          GET get -> return raw document content - in addition the appropriate HTTP headers for the
                     character encoding, content type, length and modified date will be set
          GET list -> return the list of available document paths under a path - UTF-8 response text
          GET listall -> return the list of available document paths (recursively) under a given path
                         - UTF-8 response text
          GET listpattern -> return the list of document paths matching a file pattern under a given path
                             - UTF-8 response text
          POST create -> create a new document with request content payload
          POST createmulti -> create multiple new documents with request content payload
          POST update -> update an existing document with request content payload
          DELETE delete -> delete an existing document 
     
    Author:
    Kevin Roast
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.springframework.extensions.webscripts.AbstractWebScript

        org.springframework.extensions.webscripts.AbstractWebScript.ScriptDetails
    • Constructor Summary

      Constructors 
      Constructor Description
      BaseRemoteStore()  
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract void createDocument​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path, java.io.InputStream content)
      Creates a document.
      protected abstract void createDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.io.InputStream content)
      Creates multiple XML documents encapsulated in a single one.
      protected abstract void deleteDocument​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path)
      Deletes an existing document.
      protected static java.lang.String encodePath​(java.lang.String s)  
      void execute​(org.springframework.extensions.webscripts.WebScriptRequest req, org.springframework.extensions.webscripts.WebScriptResponse res)
      Execute the webscript based on the request parameters
      protected abstract void getDocument​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path)
      Gets a document.
      protected java.util.List<java.lang.String> getPathParts​(java.lang.String[] extPaths)
      Helper to break down webscript extension path into path component elements
      protected abstract void hasDocument​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path)
      Determines if the document exists.
      protected abstract void lastModified​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path)
      Gets the last modified timestamp for the document.
      protected abstract void listDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path, boolean recurse)
      Lists the document paths under a given path.
      protected abstract void listDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path, java.lang.String pattern)
      Lists the document paths matching a file pattern under a given path.
      void setMimetypeService​(org.alfresco.service.cmr.repository.MimetypeService mimetypeService)  
      void setStore​(java.lang.String defaultStore)  
      protected abstract void updateDocument​(org.springframework.extensions.webscripts.WebScriptResponse res, java.lang.String store, java.lang.String path, java.io.InputStream content)
      Updates an existing document.
      • Methods inherited from class org.springframework.extensions.webscripts.AbstractWebScript

        addModuleBundleToCache, checkModuleBundleCache, createArgs, createArgsM, createHeaders, createHeadersM, createScriptParameters, createStatusException, createTemplateParameters, executeScript, getContainer, getDescription, getExecuteScript, getResources, getStatusTemplate, init, renderString, renderString, renderTemplate, sendStatus, setURLModelFactory, toString
      • Methods inherited from class java.lang.Object

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

      • REQUEST_PARAM_STORE

        public static final java.lang.String REQUEST_PARAM_STORE
        See Also:
        Constant Field Values
      • defaultStore

        protected java.lang.String defaultStore
      • mimetypeService

        protected org.alfresco.service.cmr.repository.MimetypeService mimetypeService
      • TRANSFORMER_FACTORY

        protected static final javax.xml.transform.TransformerFactory TRANSFORMER_FACTORY
      • transformer

        protected static java.lang.ThreadLocal<javax.xml.transform.Transformer> transformer
    • Constructor Detail

      • BaseRemoteStore

        public BaseRemoteStore()
    • Method Detail

      • setStore

        public void setStore​(java.lang.String defaultStore)
        Parameters:
        defaultStore - the default store name of the store to process document requests against
      • setMimetypeService

        public void setMimetypeService​(org.alfresco.service.cmr.repository.MimetypeService mimetypeService)
        Parameters:
        mimetypeService - the MimetypeService to set
      • execute

        public void execute​(org.springframework.extensions.webscripts.WebScriptRequest req,
                            org.springframework.extensions.webscripts.WebScriptResponse res)
                     throws java.io.IOException
        Execute the webscript based on the request parameters
        Throws:
        java.io.IOException
      • getPathParts

        protected java.util.List<java.lang.String> getPathParts​(java.lang.String[] extPaths)
        Helper to break down webscript extension path into path component elements
      • lastModified

        protected abstract void lastModified​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                             java.lang.String store,
                                             java.lang.String path)
                                      throws java.io.IOException
        Gets the last modified timestamp for the document. The output will be the last modified date as a long toString().
        Parameters:
        store - the store id
        path - document path to an existing document
        Throws:
        java.io.IOException
      • hasDocument

        protected abstract void hasDocument​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                            java.lang.String store,
                                            java.lang.String path)
                                     throws java.io.IOException
        Determines if the document exists. The output will be either the string "true" or the string "false".
        Parameters:
        store - the store id
        path - document path
        Throws:
        java.io.IOException
      • getDocument

        protected abstract void getDocument​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                            java.lang.String store,
                                            java.lang.String path)
                                     throws java.io.IOException
        Gets a document. The output will be the document content stream.
        Parameters:
        store - the store id
        path - document path
        Throws:
        java.io.IOException - if an error occurs retrieving the document
      • listDocuments

        protected abstract void listDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                              java.lang.String store,
                                              java.lang.String path,
                                              boolean recurse)
                                       throws java.io.IOException
        Lists the document paths under a given path. The output will be the list of relative document paths found under the path. Separated by newline characters.
        Parameters:
        store - the store id
        path - document path
        recurse - true to peform a recursive list, false for direct children only.
        Throws:
        java.io.IOException - if an error occurs listing the documents
      • listDocuments

        protected abstract void listDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                              java.lang.String store,
                                              java.lang.String path,
                                              java.lang.String pattern)
                                       throws java.io.IOException
        Lists the document paths matching a file pattern under a given path. The output will be the list of relative document paths found under the path that match the given file pattern. Separated by newline characters.
        Parameters:
        store - the store id
        path - document path
        pattern - file pattern to match - allows wildcards e.g. *.xml or site*.xml
        Throws:
        java.io.IOException - if an error occurs listing the documents
      • createDocument

        protected abstract void createDocument​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                               java.lang.String store,
                                               java.lang.String path,
                                               java.io.InputStream content)
        Creates a document.
        Parameters:
        store - the store id
        path - document path
        content - content of the document to write
      • createDocuments

        protected abstract void createDocuments​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                                java.lang.String store,
                                                java.io.InputStream content)
        Creates multiple XML documents encapsulated in a single one.
        Parameters:
        res - WebScriptResponse
        store - the store id
        content - content of the document to write
      • updateDocument

        protected abstract void updateDocument​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                               java.lang.String store,
                                               java.lang.String path,
                                               java.io.InputStream content)
        Updates an existing document.
        Parameters:
        store - the store id
        path - document path
        content - content to update the document with
      • deleteDocument

        protected abstract void deleteDocument​(org.springframework.extensions.webscripts.WebScriptResponse res,
                                               java.lang.String store,
                                               java.lang.String path)
        Deletes an existing document.
        Parameters:
        store - the store id
        path - document path
      • encodePath

        protected static java.lang.String encodePath​(java.lang.String s)