Class SearchMethod

java.lang.Object
org.apache.commons.httpclient.HttpMethodBase
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 <ahref="http://www.webdav.org/dasl/protocol/draft-dasl-protocol-00.html"> 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 <ahref="http://msdn.microsoft.com/library/default.asp?URL=/library/psdk/exchsv2k/_exch2k_sql_web_storage_system_sql.htm"> 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 Details

    • prefix

      protected String prefix
      The namespace abbreviation that prefixes DAV tags
  • Constructor Details

    • SearchMethod

      public SearchMethod()
      Method constructor.
    • SearchMethod

      public SearchMethod(String path)
      Method constructor.
    • SearchMethod

      public SearchMethod(String path, 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 Details

    • getName

      public 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 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:
      IOException
      org.apache.commons.httpclient.HttpException
    • generateRequestBody

      protected 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 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 Enumeration getResponseProperties(String urlPath)
      Returns an enumeration of Property objects.
    • parseResponse

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