All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.exist.http.RESTServerParameter Maven / Gradle / Ivy

There is a newer version: 6.3.0
Show newest version
/*
 * eXist Open Source Native XML Database
 * Copyright (C) 2013 The eXist Project
 * http://exist-db.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 *
 *  $Id$
 */
package org.exist.http;

/**
 * Enumeration of each Parameter
 * used by the RESTServer
 * 
 * @author Adam Retter
 */
enum RESTServerParameter {
        
    /**
     * The results of XPath and XQuery executions
     * by the REST Server are cached if the Cache Parameter is set.
     * This can be used in the Query String of a GET request
     * to release the cached results of a query.
     * 
     * The value of the parameter should be the cached session id.
     * 
     * Contexts: GET
     */
    Release,

    /**
     * Can be used in the Query String of a GET request
     * to provide an XPath to execute. The context of the XPath
     * is the resource or collection indicated in the URI.
     * 
     * The value of the parameter should be an XPath expression.
     * 
     * Contexts: GET
     */
    XPath,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request to provide an XQuery
     * to execute. The context of the XQuery is the resource or
     * collection indicated in the URI.
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter when used in the query string of a GET
     * request should be a valid XQuery.
     * 
     * The value of this parameter used in the body of POST requests
     * has the following format:
     * 
     * 
     *      (exist:text,
     *      exist:variables?,
     *      exist:properties?)
     * 
     */
    Query,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request to specify values for
     * any XQuery external variables that you wish to bind.
     * 
     * Contexts: GET, POST
     * 
     * The value of this parameter, is an XML element with the format:
     * 
     *  
     *      (exist:variable+)
     *  
     */
    Variables,

    /**
     * XML description can be used inside Variables
     * in either the Query String of a GET request or
     * in the body of a POST request to specify the name
     * and value of an external XQuery variable.
     * 
     * Contexts: GET, POST
     * 
     * The value of this parameter, is an XML element with the format:
     * 
     *  
     *      (exist:qname,
     *      sx:sequence)
     *  
     * 
     *  
     *      (exist:prefix?,
     *       exist:localname,
     *       exist:namespace?)
     *  
     * 
     *  
     *      (sx:value+)
     *  
     * 
     *  
     *      (text() | element())
     *  
     */
    Variable,

    /**
     * Can be used in the Query String of a GET request when
     * supplying an XPath or XQuery to indicate how many
     * results should be returned (if the query returns a sequence
     * of items).
     * 
     * Contexts: GET
     * 
     * The value of the parameter should be a number greater than zero.
     * 
     * See Max for POST requests.
     */
    HowMany,

    /**
     * Can be used in the body of a POST request when
     * supplying an XQuery to indicate how many
     * results should be returned (if the query returns a sequence
     * of items).
     * 
     * Contexts: POST
     * 
     * The value of the parameter should be a number greater than zero.
     * 
     * See HowMany for GET requests.
     */
    Max,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request when supplying an XPath or XQuery
     * to  indicate where the result sequence should start from
     * (if the query returns a sequence of items)
     * 
     * For GET requests the result subsequence is Start => results <= HowMany
     * 
     * For POST requests the result subsequence is Start => results <= Max
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter should be a positive number.
     */
    Start,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request when supplying an XPath or XQuery,
     * it causes the results of the query to be annotated with data type
     * information.
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter should be either "yes" or "no".
     */
    Typed,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request when supplying an XPath or XQuery,
     * it causes the results of the query to be wrapped in an exist:result
     * element with some detail about the results.
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter should be either "yes" or "no".
     * 
     * The format of the wrapper has the format:
     * 
     * 
     *      any*
     * 
     */
    Wrap,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request when supplying an XPath or XQuery,
     * it causes the results of the query to be cached on the server.
     * 
     * This parameter is useful in combination with Start and HowMany/Max
     * to enable you to execute a query once, and then retrieve the results
     * in pages.
     * 
     * Cached results are assigned a Session ID which you need to use in 
     * subsequent requests. The Session ID is returned in the
     * exist:result/@session attribute if you have used the Wrap parameter,
     * and also in the HTTP Response Header X-Session-Id
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter should be either "yes" or "no".
     */
    Cache,

    /**
     * Can be used in the Query String of a GET request
     * to indicate that an XML result should be indented.
     * 
     * Contexts: GET
     * 
     * The value of the parameter should be either "yes" or "no".
     */
    Indent,

    /**
     * Can be used in the Query String of a GET request to retrieve
     * the Source Code of an XQuery or XProc resource rather than
     * executing the resource.
     * 
     * Contexts: GET
     * 
     * The value of the parameter should be either "yes" or "no".
     */
    Source,

    /**
     * Can be used in either the Query String of a GET request
     * or in the body of a POST request when supplying an XPath or XQuery,
     * it identified the results of a previous query that were cached on the
     * server.
     * 
     * Contexts: GET, POST
     * 
     * The value of the parameter should be a Session ID previously assigned
     * by eXist from a request made using the Cache parameter.
     */
    Session,

    /**
     * Can be used in the Query String of a GET request to enable or 
     * disable expansion of XSL Processing Instructions by the serializer
     * operating on the result of the request.
     * It can also be used to specify a specific XSL to be used by the
     * serializer.
     * 
     * Contexts: GET
     * 
     * The value of the parameter should be either "yes", "no", or a path
     * to an XSL file in the database.
     * 
     * Note - The expansion of XSL Processing Instruction is also enabled or
     * disabled in conf.xml.
     */
    XSL,

    /**
     * Can be used in the Query String of a GET or HEAD request to specify
     * the character encoding to be used to form the response.
     * 
     * Contexts: GET, HEAD
     */
    Encoding,

    /**
     * Enclose is a synonym for Wrap.
     * See Wrap.
     * 
     * Contexts: POST
     */
    Enclose,

    /**
     * Can be used in the body of a POST request when supplying an XQuery,
     * it causes the results of the query to be serialized just the supplied
     * serializer method.
     * 
     * Contexts: POST
     * 
     * The value of the parameter must be a valid serialization method,
     * currently this is one of:
     *  "xml", "xhtml", "html", "html5", "json" or "text"
     */
    Method,

    /**
     * TODO This is not currently implemented.
     */
    Mime,

    /**
     * Can be used in the body of a POST request when supplying an XQuery,
     * it contains the XQuery itself. Typically the XQuery is first placed
     * in a CDATA section to escape any non-XML characters.
     * 
     * Contexts: POST
     * 
     * 
     *  {current-dateTime()}
     *  ]]>
     * 
     */
    Text,

    /**
     * Can be used in the body of a POST request when supplying an XQuery,
     * it contains extra properties for the serializer. See Property.
     * 
     * Contexts: POST
     * 
     * 
     *  (exist:property+)
     * 
     */
    Properties,

    /**
     * Can be used in the body of a POST request when supplying an XQuery,
     * it contains a property definition for the serializer
     *  e.g. 
     * 
     * Contexts: POST
     * 
     * 
     */
    Property;

    /**
     * Get the parameter key that is
     * to be used in a URL Query String.
     * 
     * @return The parameter key, suitable for use in a URL
     */
    public String queryStringKey() {
        return "_" + xmlKey();
    }

    /**
     * Get the parameter key that is to
     * be used in an XML document as
     * either an element or attribute name.
     * 
     * @return The parameter key, suitable for use in an XML document
     */
    public String xmlKey() {
        return name().toLowerCase();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy