Class SearchMethod

  • All Implemented Interfaces:
    org.apache.commons.httpclient.HttpMethod

    public class SearchMethod
    extends XMLResponseMethodBase
    This class implements the WebDAV SEARCH Method.

    The SEARCH method initiates a server-side search. The body of the request defines the query. The server responds with a text/xml entity matching the WebDAV PROPFIND response.

    According to the DASL draft a typical request looks like this:

     SEARCH /folder/ HTTP/1.1
     Host: www.foo.bar
     Content-type: text/xml; charset="utf-8"
     Content-Length: xxxx
    
     <?xml version="1.0"?>
     <D:searchrequest xmlns:D = "DAV:" >
     <D:basicsearch>
       <D:select>
         <D:prop><D:getcontentlength/></D:prop>
       </D:select>
       <D:from>
         <D:scope>
           <D:href>/folder/</D:href>
           <D:depth>infinity</D:depth>
         </D:scope>
       </D:from>
     </D:basicsearch>
     </D:searchrequest>
     

    However, other query grammars may be used. A typical request using the SQL-based grammar implemented in Microsoft's Web Storage System (currently shipping with Exchange 2000 and SharePoint Portal Server) looks like this:

     SEARCH /folder/ HTTP/1.1
     Host: www.foo.bar
     Content-type: text/xml; charset="utf-8"
     Content-Length: xxxx
    
     <?xml version="1.0"?>
     <D:searchrequest xmlns:D = "DAV:" >
       <D:sql>
       SELECT "DAV:contentclass", "DAV:displayname"
         FROM "/folder/"
        WHERE "DAV:ishidden" = false
          AND "DAV:isfolder" = false
       </D:sql>
     </D:searchrequest>
     
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.lang.String prefix
      The namespace abbreviation that prefixes DAV tags
      • Fields inherited from class org.apache.commons.httpclient.HttpMethodBase

        effectiveVersion, statusLine
    • Constructor Summary

      Constructors 
      Constructor Description
      SearchMethod()
      Method constructor.
      SearchMethod​(java.lang.String path)
      Method constructor.
      SearchMethod​(java.lang.String path, java.lang.String query)
      Construct a SearchMethod using the given XML request body.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addRequestHeaders​(org.apache.commons.httpclient.HttpState state, org.apache.commons.httpclient.HttpConnection conn)
      Generate additional headers needed by the request.
      protected java.lang.String generateRequestBody()
      DAV requests that contain a body must override this function to generate that body.
      java.util.Enumeration getAllResponseURLs()
      This method returns an enumeration of URL paths.
      java.lang.String getName()  
      java.util.Enumeration getResponseProperties​(java.lang.String urlPath)
      Returns an enumeration of Property objects.
      void parseResponse​(java.io.InputStream input, org.apache.commons.httpclient.HttpState state, org.apache.commons.httpclient.HttpConnection conn)
      Parse response.
      void recycle()
      Reset the State of the class to its initial state, so that it can be used again.
      • Methods inherited from class org.apache.commons.httpclient.HttpMethodBase

        abort, addCookieRequestHeader, addHostRequestHeader, addProxyConnectionHeader, addRequestHeader, addRequestHeader, addResponseFooter, addUserAgentRequestHeader, checkNotUsed, checkUsed, execute, generateRequestLine, getAuthenticationRealm, getContentCharSet, getDoAuthentication, getEffectiveVersion, getFollowRedirects, getHostAuthState, getHostConfiguration, getMethodRetryHandler, getParams, getPath, getProxyAuthenticationRealm, getProxyAuthState, getQueryString, getRecoverableExceptionCount, getRequestCharSet, getRequestHeader, getRequestHeaderGroup, getRequestHeaders, getRequestHeaders, getResponseBody, getResponseBody, getResponseBodyAsStream, getResponseBodyAsString, getResponseBodyAsString, getResponseCharSet, getResponseContentLength, getResponseFooter, getResponseFooters, getResponseHeader, getResponseHeaderGroup, getResponseHeaders, getResponseHeaders, getResponseStream, getResponseTrailerHeaderGroup, getStatusCode, getStatusLine, getStatusText, getURI, hasBeenUsed, isAborted, isConnectionCloseForced, isHttp11, isRequestSent, isStrictMode, processCookieHeaders, processResponseBody, processResponseHeaders, processStatusLine, readResponse, readResponseHeaders, readStatusLine, releaseConnection, removeRequestHeader, removeRequestHeader, responseBodyConsumed, setConnectionCloseForced, setDoAuthentication, setFollowRedirects, setHostConfiguration, setHttp11, setMethodRetryHandler, setParams, setPath, setQueryString, setQueryString, setRequestHeader, setRequestHeader, setResponseStream, setStrictMode, setURI, shouldCloseConnection, validate, writeRequest, writeRequestHeaders, writeRequestLine
      • Methods inherited from class java.lang.Object

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

      • prefix

        protected java.lang.String prefix
        The namespace abbreviation that prefixes DAV tags
    • Constructor Detail

      • SearchMethod

        public SearchMethod()
        Method constructor.
      • SearchMethod

        public SearchMethod​(java.lang.String path)
        Method constructor.
      • SearchMethod

        public SearchMethod​(java.lang.String path,
                            java.lang.String query)
        Construct a SearchMethod using the given XML request body.
        Parameters:
        path - Relative path to the WebDAV resource (presumably a collection).
        query - Complete request body in XML including a search query in your favorite grammar.
    • Method Detail

      • getName

        public java.lang.String getName()
        Specified by:
        getName in interface org.apache.commons.httpclient.HttpMethod
        Specified by:
        getName in class org.apache.commons.httpclient.HttpMethodBase
      • recycle

        public void recycle()
        Description copied from class: XMLResponseMethodBase
        Reset the State of the class to its initial state, so that it can be used again.
        Specified by:
        recycle in interface org.apache.commons.httpclient.HttpMethod
        Overrides:
        recycle in class XMLResponseMethodBase
      • addRequestHeaders

        public void addRequestHeaders​(org.apache.commons.httpclient.HttpState state,
                                      org.apache.commons.httpclient.HttpConnection conn)
                               throws java.io.IOException,
                                      org.apache.commons.httpclient.HttpException
        Generate additional headers needed by the request.
        Overrides:
        addRequestHeaders in class org.apache.commons.httpclient.HttpMethodBase
        Parameters:
        state - State token
        conn - the connection
        Throws:
        java.io.IOException
        org.apache.commons.httpclient.HttpException
      • generateRequestBody

        protected java.lang.String generateRequestBody()
        DAV requests that contain a body must override this function to generate that body.

        The default behavior simply returns an empty body.

        Overrides:
        generateRequestBody in class XMLResponseMethodBase
      • getAllResponseURLs

        public java.util.Enumeration getAllResponseURLs()
        This method returns an enumeration of URL paths. If the PropFindMethod was sent to the URL of a collection, then there will be multiple URLs. The URLs are picked out of the <D:href> elements of the response.
        Returns:
        an enumeration of URL paths as Strings
      • getResponseProperties

        public java.util.Enumeration getResponseProperties​(java.lang.String urlPath)
        Returns an enumeration of Property objects.
      • parseResponse

        public void parseResponse​(java.io.InputStream input,
                                  org.apache.commons.httpclient.HttpState state,
                                  org.apache.commons.httpclient.HttpConnection conn)
                           throws java.io.IOException,
                                  org.apache.commons.httpclient.HttpException
        Parse response.
        Overrides:
        parseResponse in class XMLResponseMethodBase
        Parameters:
        input - Input stream
        Throws:
        java.io.IOException
        org.apache.commons.httpclient.HttpException