## org.exist.xmldb
Class LocalXPathQueryService

    java.lang.Object
      org.exist.xmldb.LocalXPathQueryService

All Implemented Interfaces:
  Configurable, Service, XPathQueryService, XPathQueryServiceImpl, XQueryService, XQueryService

public class LocalXPathQueryService
extends java.lang.Object
implements XPathQueryServiceImpl, XQueryService

Field Summary

Fields inherited from interface org.xmldb.api.modules.XPathQueryService
`SERVICE_NAME`

Fields inherited from interface org.xmldb.api.modules.XQueryService
`SERVICE_NAME`

Constructor Summary
`LocalXPathQueryService(User user, BrokerPool pool, LocalCollection collection, AccessContext accessCtx)`

Method Summary
`void` `beginProtected()` Execute all following queries in a protected environment.
`void` `clearNamespaces()` Removes all namespace mappings stored in the internal namespace map.
`CompiledExpression` `compile(java.lang.String query)` Compiles the specified XQuery and returns a handle to the compiled code, which can then be passed to `execute(CompiledExpression)`.
`CompiledExpression` `compileAndCheck(java.lang.String query)` Tries to compile the specified XQuery and returns a handle to the compiled code, which can then be passed to `execute(CompiledExpression)`.
`void` `declareVariable(java.lang.String qname, java.lang.Object initialValue)` Declare an external XPath variable and assign a value to it.
`void` `dump(CompiledExpression expression, java.io.Writer writer)` Return a diagnostic dump of the query.
`void` `endProtected()` Close the protected environment.
`ResourceSet` `execute(CompiledExpression expression)` Execute a compiled XQuery.
`ResourceSet` `execute(Source source)`
`ResourceSet` `execute(XMLResource res, CompiledExpression expression)`
`java.lang.String` `getName()` Returns the name associated with the Service instance.
`java.lang.String` `getNamespace(java.lang.String prefix)` Returns the URI string associated with `prefix` from the internal namespace map.
`java.lang.String` `getProperty(java.lang.String property)` Returns the value of the property identified by `name`.
`java.lang.String` `getVersion()` Gets the Version attribute of the Service object
`ResourceSet` `query(java.lang.String query)` Execute the specified query and return the results as a `ResourceSet`.
`ResourceSet` `query(java.lang.String query, java.lang.String sortBy)` Process an XPath query and sort the results by applying a second XPath expression to each of the search results.
`ResourceSet` `query(XMLResource res, java.lang.String query)` Process an XPath query based on the result of a previous query.
`ResourceSet` `query(XMLResource res, java.lang.String query, java.lang.String sortBy)` Process an XPath query based on the result of a previous query and sort the results using the second XPath expression.
`ResourceSet` `queryResource(java.lang.String resource, java.lang.String query)` Run an XPath query against an XML resource stored in the `Collection` associated with this service.
`void` `removeNamespace(java.lang.String ns)` Removes the namespace mapping associated with `prefix` from the internal namespace map.
`void` `setCollection(Collection col)` Sets the Collection attribute of the Service object
`void` `setModuleLoadPath(java.lang.String path)`
`void` `setNamespace(java.lang.String prefix, java.lang.String namespace)` Sets a namespace mapping in the internal namespace map used to evaluate queries.
`void` `setProperty(java.lang.String property, java.lang.String value)` Sets the property `name` to have the value provided in `value`.
`void` `setXPathCompatibility(boolean backwardsCompatible)` Enable or disable XPath 1.0 compatibility mode.

Methods inherited from class java.lang.Object
`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### LocalXPathQueryService

    public LocalXPathQueryService(User user,
                                  BrokerPool pool,
                                  LocalCollection collection,
                                  AccessContext accessCtx)

Method Detail

### clearNamespaces

    public void clearNamespaces()
                         throws XMLDBException

  Description copied from interface: `XPathQueryService`
  Removes all namespace mappings stored in the internal namespace map.

  Specified by:
    `clearNamespaces` in interface `XPathQueryService`
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### getName

    public java.lang.String getName()
                             throws XMLDBException

  Description copied from interface: `Service`
  Returns the name associated with the Service instance.

  Specified by:
    `getName` in interface `Service`
  Returns:
    the name of the object.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### getNamespace

    public java.lang.String getNamespace(java.lang.String prefix)
                                  throws XMLDBException

  Description copied from interface: `XQueryService`
  Returns the URI string associated with `prefix` from the internal namespace map. If `prefix` is null or empty the URI for the default namespace will be returned. If a mapping for the `prefix` can not be found null is returned.

  Specified by:
    `getNamespace` in interface `XPathQueryService`
  Parameters:
    `prefix` - The prefix to retrieve from the namespace map.
  Returns:
    The URI associated with `prefix`
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### getProperty

    public java.lang.String getProperty(java.lang.String property)
                                 throws XMLDBException

  Description copied from interface: `Configurable`
  Returns the value of the property identified by `name`.

  Specified by:
    `getProperty` in interface `Configurable`
  Parameters:
    `property` - the name of the property to retrieve.
  Returns:
    the property value or null if no property exists.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### getVersion

    public java.lang.String getVersion()
                                throws XMLDBException

  Description copied from interface: `Service`
  Gets the Version attribute of the Service object

  Specified by:
    `getVersion` in interface `Service`
  Returns:
    The Version value
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### query

    public ResourceSet query(java.lang.String query)
                      throws XMLDBException

  Description copied from interface: `XQueryService`
  Execute the specified query and return the results as a `ResourceSet`.

  Specified by:
    `query` in interface `XPathQueryService`
  Parameters:
    `query` - The XPath query string to use.
  Returns:
    A `ResourceSet` containing the results of the query.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### query

    public ResourceSet query(XMLResource res,
                             java.lang.String query)
                      throws XMLDBException

  Description copied from interface: `XPathQueryServiceImpl`
  Process an XPath query based on the result of a previous query. The XMLResource contains the result received from a previous query.

  Specified by:
    `query` in interface `XPathQueryServiceImpl`
  Parameters:
    `res` - an XMLResource as obtained from a previous query.
    `query` - the XPath query
  Throws:
    `XMLDBException`

### query

    public ResourceSet query(java.lang.String query,
                             java.lang.String sortBy)
                      throws XMLDBException

  Description copied from interface: `XPathQueryServiceImpl`
  Process an XPath query and sort the results by applying a second XPath expression to each of the search results. The result of applying the sort expression is converted into a string, which is then used to sort the set of results.

  Specified by:
    `query` in interface `XPathQueryServiceImpl`
  Parameters:
    `query` - the XPath query
    `sortBy` - another XPath expression, which is executed relative to the results of the primary expression.
  Throws:
    `XMLDBException`

### query

    public ResourceSet query(XMLResource res,
                             java.lang.String query,
                             java.lang.String sortBy)
                      throws XMLDBException

  Description copied from interface: `XPathQueryServiceImpl`
  Process an XPath query based on the result of a previous query and sort the results using the second XPath expression. The XMLResource contains the result received from a previous query.

  Specified by:
    `query` in interface `XPathQueryServiceImpl`
  Parameters:
    `res` - an XMLResource as obtained from a previous query
    `query` - the XPath query
    `sortBy` - another XPath expression, which is executed relative to the results of the primary expression. The result of applying sortExpr is converted to a string value, which is then used to sort the results.
  Throws:
    `XMLDBException`

### execute

    public ResourceSet execute(CompiledExpression expression)
                        throws XMLDBException

  Description copied from interface: `XQueryService`
  Execute a compiled XQuery. The implementation should pass all namespaces and variables declared through `XQueryService` to the compiled XQuery code.

  Specified by:
    `execute` in interface `XQueryService`
  Parameters:
    `expression` -
  Throws:
    `XMLDBException`

### execute

    public ResourceSet execute(XMLResource res,
                               CompiledExpression expression)
                        throws XMLDBException

  Specified by:
    `execute` in interface `XQueryService`
  Throws:
    `XMLDBException`

### execute

    public ResourceSet execute(Source source)
                        throws XMLDBException

  Specified by:
    `execute` in interface `XQueryService`
  Throws:
    `XMLDBException`

### compile

    public CompiledExpression compile(java.lang.String query)
                               throws XMLDBException

  Description copied from interface: `XQueryService`
  Compiles the specified XQuery and returns a handle to the compiled code, which can then be passed to `XQueryService.execute(CompiledExpression)`.

  Specified by:
    `compile` in interface `XQueryService`
  Parameters:
    `query` -
  Throws:
    `XMLDBException`

### compileAndCheck

    public CompiledExpression compileAndCheck(java.lang.String query)
                                       throws XMLDBException,
                                              XPathException

  Description copied from interface: `XQueryService`
  Tries to compile the specified XQuery and returns a handle to the compiled code, which can then be passed to `XQueryService.execute(CompiledExpression)`. If a static error is detected, an `XPathException` will be thrown.

  Specified by:
    `compileAndCheck` in interface `XQueryService`
  Parameters:
    `query` -
  Throws:
    `XMLDBException`
    `XPathException`

### queryResource

    public ResourceSet queryResource(java.lang.String resource,
                                     java.lang.String query)
                              throws XMLDBException

  Description copied from interface: `XPathQueryService`
  Run an XPath query against an XML resource stored in the `Collection` associated with this service. The result is a `ResourceSet` containing the results of the query. Any namespaces used in the `query` string will be evaluated using the mappings setup using `setNamespace`.

  Specified by:
    `queryResource` in interface `XPathQueryService`
  Parameters:
    `query` - The XPath query string to use.
    `resource` - The id of the document to run the query against.
  Returns:
    A `ResourceSet` containing the results of the query.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### beginProtected

    public void beginProtected()

  Execute all following queries in a protected environment. Protected means: it is guaranteed that documents referenced by the query or the result set are not modified by other threads until `endProtected()` is called.

  Specified by:
    `beginProtected` in interface `XPathQueryServiceImpl`

### endProtected

    public void endProtected()

  Close the protected environment. All locks held by the current thread are released. The result set is no longer guaranteed to be stable.

  Specified by:
    `endProtected` in interface `XPathQueryServiceImpl`

### removeNamespace

    public void removeNamespace(java.lang.String ns)
                         throws XMLDBException

  Description copied from interface: `XQueryService`
  Removes the namespace mapping associated with `prefix` from the internal namespace map. If `prefix` is null or empty the mapping for the default namespace will be removed.

  Specified by:
    `removeNamespace` in interface `XPathQueryService`
  Parameters:
    `ns` - The prefix to remove from the namespace map. If `prefix` is null or empty the mapping for the default namespace will be removed.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### setCollection

    public void setCollection(Collection col)
                       throws XMLDBException

  Description copied from interface: `Service`
  Sets the Collection attribute of the Service object

  Specified by:
    `setCollection` in interface `Service`
  Parameters:
    `col` - The new Collection value
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### setNamespace

    public void setNamespace(java.lang.String prefix,
                             java.lang.String namespace)
                      throws XMLDBException

  Description copied from interface: `XQueryService`
  Sets a namespace mapping in the internal namespace map used to evaluate queries. If `prefix` is null or empty the default namespace is associated with the provided URI. A null or empty `uri` results in an exception being thrown.

  Specified by:
    `setNamespace` in interface `XPathQueryService`
  Parameters:
    `prefix` - The prefix to set in the map. If `prefix` is empty or null the default namespace will be associated with the provided URI.
    `namespace` - The URI for the namespace to be associated with prefix.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.
    TODO: probably need some special error here.

### setProperty

    public void setProperty(java.lang.String property,
                            java.lang.String value)
                     throws XMLDBException

  Description copied from interface: `Configurable`
  Sets the property `name` to have the value provided in `value`.

  Specified by:
    `setProperty` in interface `Configurable`
  Parameters:
    `property` - the name of the property to set.
    `value` - the value to set for the property.
  Throws:
    `XMLDBException` - with expected error codes.
    `ErrorCodes.VENDOR_ERROR` for any vendor specific errors that occur.

### declareVariable

    public void declareVariable(java.lang.String qname,
                                java.lang.Object initialValue)
                         throws XMLDBException

  Description copied from interface: `XPathQueryServiceImpl`
  Declare an external XPath variable and assign a value to it. A variable can be referenced inside an XPath expression as $variable. For example, if you declare a variable with

       	declareVariable("name", "HAMLET");

  you may use the variable in an XPath expression as follows:

       	//SPEECH[SPEAKER=$name]

  Any Java object may be passed as initial value. The query engine will try to map this into a corresponding XPath value. You may also pass an XMLResource as obtained from another XPath expression. This will be converted into a node.

  Specified by:
    `declareVariable` in interface `XPathQueryServiceImpl`
  Parameters:
    `qname` - a valid QName by which the variable is identified. Any prefix should have been mapped to a namespace, i.e. if a variable is called x:name, there should be a prefix/namespace mapping for the prefix x
    `initialValue` - the initial value, which is assigned to the variable
  Throws:
    `XMLDBException`

### setXPathCompatibility

    public void setXPathCompatibility(boolean backwardsCompatible)

  Description copied from interface: `XQueryService`
  Enable or disable XPath 1.0 compatibility mode. In XPath 1.0 compatibility mode, some XQuery expressions will behave different. In particular, additional automatic type conversions will be applied to the operands of numeric operators.

  Specified by:
    `setXPathCompatibility` in interface `XQueryService`
  Parameters:
    `backwardsCompatible` -

### setModuleLoadPath

    public void setModuleLoadPath(java.lang.String path)

  Specified by:
    `setModuleLoadPath` in interface `XQueryService`

### dump

    public void dump(CompiledExpression expression,
                     java.io.Writer writer)
              throws XMLDBException

  Description copied from interface: `XQueryService`
  Return a diagnostic dump of the query. The query should have been executed before calling this function.

  Specified by:
    `dump` in interface `XQueryService`
  Parameters:
    `expression` -
    `writer` -
  Throws:
    `XMLDBException`

Copyright (C) Wolfgang Meier. All rights reserved.