Class BaseRemoteStore

java.lang.Object
org.springframework.extensions.webscripts.AbstractWebScript
org.alfresco.repo.web.scripts.bean.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
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String
     
    protected MimetypeService
     
    static final String
     
    static final String
     
    protected static ThreadLocal<Transformer>
     
    protected static final TransformerFactory
     
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected abstract void
    createDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, InputStream content)
    Creates a document.
    protected abstract void
    createDocuments(org.springframework.extensions.webscripts.WebScriptResponse res, String store, InputStream content)
    Creates multiple XML documents encapsulated in a single one.
    protected abstract void
    deleteDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path)
    Deletes an existing document.
    protected static String
     
    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, String store, String path)
    Gets a document.
    protected List<String>
    getPathParts(String[] extPaths)
    Helper to break down webscript extension path into path component elements
    protected abstract void
    hasDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path)
    Determines if the document exists.
    protected abstract void
    lastModified(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path)
    Gets the last modified timestamp for the document.
    protected abstract void
    listDocuments(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, boolean recurse)
    Lists the document paths under a given path.
    protected abstract void
    listDocuments(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, String pattern)
    Lists the document paths matching a file pattern under a given path.
    void
     
    void
    setStore(String defaultStore)
     
    protected abstract void
    updateDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, 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 Details

  • Constructor Details

    • BaseRemoteStore

      public BaseRemoteStore()
  • Method Details

    • setStore

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

      public void setMimetypeService(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 IOException
      Execute the webscript based on the request parameters
      Throws:
      IOException
    • getPathParts

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

      protected abstract void lastModified(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path) throws 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:
      IOException
    • hasDocument

      protected abstract void hasDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path) throws 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:
      IOException
    • getDocument

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

      protected abstract void listDocuments(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, boolean recurse) throws 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:
      IOException - if an error occurs listing the documents
    • listDocuments

      protected abstract void listDocuments(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, String pattern) throws 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:
      IOException - if an error occurs listing the documents
    • createDocument

      protected abstract void createDocument(org.springframework.extensions.webscripts.WebScriptResponse res, String store, String path, 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, String store, 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, String store, String path, 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, String store, String path)
      Deletes an existing document.
      Parameters:
      store - the store id
      path - document path
    • encodePath

      protected static String encodePath(String s)