Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 227

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="Function: DAV lock manipulation functions - Virtuoso Functions Guide" />
  <meta name="dc.subject" content="Function: DAV lock manipulation functions - Virtuoso Functions Guide" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="functions.html" title="Chapter Contents" />
  <link rel="prev" href="appendixa.html" title="Appendix" />
  <link rel="next" href="functions.html#.html" title="" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>Function: DAV lock manipulation functions - Virtuoso Functions Guide</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="fn_dav_api_lock" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>22. Virtuoso Functions Guide - DAV lock manipulation functions</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_dav_api_change.html" title="DAV manipulation functions">Prev</a> | <a class="link" href="fn_dav_api_search.html" title="DAV search functions">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div>
      <a class="selected" href="functions.html">Virtuoso Functions Guide</a>
   </div>
    <br />
   <div>
      <a href="functions.html#admin">Administration</a>
   </div>
   <div>
      <a href="functions.html#aggr">Aggregate Functions</a>
   </div>
   <div>
      <a href="functions.html#array">Array Manipulation</a>
   </div>
   <div>
      <a href="functions.html#bpel">BPEL APIs</a>
   </div>
   <div>
      <a href="functions.html#backup">Backup</a>
   </div>
   <div>
      <a href="functions.html#compression">Compression</a>
   </div>
   <div>
      <a href="functions.html#cursors">Cursor</a>
   </div>
   <div>
      <a href="functions.html#time">Date &amp; Time Manipulation</a>
   </div>
   <div>
      <a href="functions.html#debug">Debug</a>
   </div>
   <div>
      <a href="functions.html#dict">Dictionary Manipulation</a>
   </div>
   <div>
      <a href="functions.html#encoding">Encoding &amp; Decoding</a>
   </div>
   <div>
      <a href="functions.html#file">File Manipulation</a>
   </div>
   <div>
      <a href="functions.html#ft">Free Text</a>
   </div>
   <div>
      <a href="functions.html#hash">Hashing / Cryptographic</a>
   </div>
   <div>
      <a href="functions.html#ldap">LDAP</a>
   </div>
   <div>
      <a href="functions.html#localization">Locale</a>
   </div>
   <div>
      <a href="functions.html#mail">Mail</a>
   </div>
   <div>
      <a href="functions.html#misc">Miscellaneous</a>
   </div>
   <div>
      <a href="functions.html#number">Number</a>
   </div>
   <div>
      <a href="functions.html#phrz">Phrases</a>
   </div>
   <div>
      <a href="functions.html#rdf">RDF data</a>
   </div>
   <div>
      <a href="functions.html#rmt">Remote SQL Data Source</a>
   </div>
   <div>
      <a href="functions.html#repl">Replication</a>
   </div>
   <div>
      <a href="functions.html#soap">SOAP</a>
   </div>
   <div>
      <a href="functions.html#sql">SQL</a>
   </div>
   <div>
      <a href="functions.html#string">String</a>
   </div>
   <div>
      <a href="functions.html#txn">Transaction</a>
   </div>
   <div>
      <a href="functions.html#type">Type Mapping</a>
   </div>
   <div>
      <a href="functions.html#uddi">UDDI</a>
   </div>
   <div>
      <a href="functions.html#udt">User Defined Types &amp; The CLR</a>
   </div>
   <div>
      <a href="functions.html#vad">VAD</a>
   </div>
   <div>
      <a href="functions.html#jvmpl">Virtuoso Java PL API</a>
   </div>
   <div>
      <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a>
   </div>
   <div>
      <a class="selected" href="functions.html#ws">Web &amp; Internet</a>
   </div>
   <div class="selected">
    <div>
        <a href="fn_dav_api_add.html">dav add &amp; update fun...</a>
    </div>
    <div>
        <a class="selected" href="fn_dav_api_lock.html">dav lock manipulatio...</a>
    </div>
    <div>
        <a href="fn_dav_api_change.html">dav manipulation fun...</a>
    </div>
    <div>
        <a href="fn_dav_api_search.html">dav search functions</a>
    </div>
    <div>
        <a href="fn_dav_exp.html">dav_exp</a>
    </div>
    <div>
        <a href="fn_lfs_exp.html">lfs_exp</a>
    </div>
    <div>
        <a href="fn_serv_queue_top.html">serv_queue_top</a>
    </div>
    <div>
        <a href="fn_urlrewrite_create_regex_rule.html">urlrewrite_create_re...</a>
    </div>
    <div>
        <a href="fn_USER_KEY_LOAD.html">user_key_load</a>
    </div>
    <div>
        <a href="fn_vhost_define.html">vhost_define</a>
    </div>
    <div>
        <a href="fn_vhost_remove.html">vhost_remove</a>
    </div>
    <div>
        <a href="fn_dav_api_user.html">webdav users &amp; group...</a>
    </div>
    <div>
        <a href="fn_client_attr.html">client_attr</a>
    </div>
    <div>
        <a href="fn_connection_get.html">connection_get</a>
    </div>
    <div>
        <a href="fn_connection_id.html">connection_id</a>
    </div>
    <div>
        <a href="fn_connection_is_dirty.html">connection_is_dirty</a>
    </div>
    <div>
        <a href="fn_connection_set.html">connection_set</a>
    </div>
    <div>
        <a href="fn_connection_vars.html">connection_vars</a>
    </div>
    <div>
        <a href="fn_connection_vars_set.html">connection_vars_set</a>
    </div>
    <div>
        <a href="fn_dbname.html">dbname</a>
    </div>
    <div>
        <a href="fn_ftp_get.html">ftp_get</a>
    </div>
    <div>
        <a href="fn_ftp_ls.html">ftp_ls</a>
    </div>
    <div>
        <a href="fn_ftp_put.html">ftp_put</a>
    </div>
    <div>
        <a href="fn_get_certificate_info.html">get_certificate_info</a>
    </div>
    <div>
        <a href="fn_get_keyword.html">get_keyword</a>
    </div>
    <div>
        <a href="fn_get_keyword_ucase.html">get_keyword_ucase</a>
    </div>
    <div>
        <a href="fn_http.html">http</a>
    </div>
    <div>
        <a href="fn_http_acl_get.html">http_acl_get</a>
    </div>
    <div>
        <a href="fn_http_acl_remove.html">http_acl_remove</a>
    </div>
    <div>
        <a href="fn_http_acl_set.html">http_acl_set</a>
    </div>
    <div>
        <a href="fn_http_body_read.html">http_body_read</a>
    </div>
    <div>
        <a href="fn_http_client.html">http_client</a>
    </div>
    <div>
        <a href="fn_http_client_ext.html">http_client_ext</a>
    </div>
    <div>
        <a href="fn_http_client_ip.html">http_client_ip</a>
    </div>
    <div>
        <a href="fn_http_debug_log.html">http_debug_log</a>
    </div>
    <div>
        <a href="fn_http_enable_gz.html">http_enable_gz</a>
    </div>
    <div>
        <a href="fn_http_file.html">http_file</a>
    </div>
    <div>
        <a href="fn_http_flush.html">http_flush</a>
    </div>
    <div>
        <a href="fn_http_get.html">http_get</a>
    </div>
    <div>
        <a href="fn_http_header.html">http_header</a>
    </div>
    <div>
        <a href="fn_http_header_get.html">http_header_get</a>
    </div>
    <div>
        <a href="fn_http_kill.html">http_kill</a>
    </div>
    <div>
        <a href="fn_http_listen_host.html">http_listen_host</a>
    </div>
    <div>
        <a href="fn_http_lock.html">http_lock</a>
    </div>
    <div>
        <a href="fn_http_map_get.html">http_map_get</a>
    </div>
    <div>
        <a href="fn_http_map_table.html">http_map_table</a>
    </div>
    <div>
        <a href="fn_http_param.html">http_param</a>
    </div>
    <div>
        <a href="fn_http_path.html">http_path</a>
    </div>
    <div>
        <a href="fn_http_pending_req.html">http_pending_req</a>
    </div>
    <div>
        <a href="fn_http_physical_path.html">http_physical_path</a>
    </div>
    <div>
        <a href="fn_http_proxy.html">http_proxy</a>
    </div>
    <div>
        <a href="fn_http_request_get.html">http_request_get</a>
    </div>
    <div>
        <a href="fn_http_request_header.html">http_request_header</a>
    </div>
    <div>
        <a href="fn_http_request_status.html">http_request_status</a>
    </div>
    <div>
        <a href="fn_http_rewrite.html">http_rewrite</a>
    </div>
    <div>
        <a href="fn_http_root.html">http_root</a>
    </div>
    <div>
        <a href="fn_http_unlock.html">http_unlock</a>
    </div>
    <div>
        <a href="fn_http_url.html">http_url</a>
    </div>
    <div>
        <a href="fn_http_value.html">http_value</a>
    </div>
    <div>
        <a href="fn_http_xslt.html">http_xslt</a>
    </div>
    <div>
        <a href="fn_json_parse.html">json_parse</a>
    </div>
    <div>
        <a href="fn_ses_connect.html">ses_connect</a>
    </div>
    <div>
        <a href="fn_ses_disconnect.html">ses_disconnect</a>
    </div>
    <div>
        <a href="fn_ses_read_line.html">ses_read_line</a>
    </div>
    <div>
        <a href="fn_ses_write.html">ses_write</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyaddr.html">tcpip_gethostbyaddr</a>
    </div>
    <div>
        <a href="fn_tcpip_gethostbyname.html">tcpip_gethostbyname</a>
    </div>
    <div>
        <a href="fn_vsp_calculate_digest.html">vsp_calculate_digest</a>
    </div>
    <div>
        <a href="fn_wsdl_import_udt.html">wsdl_import_udt</a>
    </div>
   </div>
   <div>
      <a href="functions.html#xml">XML</a>
   </div>
   <div>
      <a href="functions.html#XPATH">XPATH &amp; XQUERY</a>
   </div>
    <br />
   <div>
      <a href="functionidx.html">Functions Index</a>
   </div>
    <br />
  </div>
  <div id="text">
    <h2>DAV lock manipulation functions</h2>
    <div class="refpurpose">Operations on locks of DAV collections and resources</div>
    <div class="funcsynopsis">
        <span class="funcdef">integer <span class="function">DAV_IS_LOCKED</span>
      </span>
        (<span class="paramdef">in <span class="parameter">id</span> any</span>, 
        <span class="paramdef">in <span class="parameter">type</span> char(1)</span>, 
        <span class="paramdef">in <span class="parameter">owned_tokens</span> any := 1</span>);
      </div>
    <div class="funcsynopsis">
        <span class="funcdef">integer <span class="function">DAV_LIST_LOCKS</span>
      </span>
        (<span class="paramdef">in <span class="parameter">id</span> any</span>, 
        <span class="paramdef">in <span class="parameter">type</span> char(1)</span>);
      </div>
    <div class="funcsynopsis">
        <span class="funcdef">integer <span class="function">DAV_LOCK</span>
      </span>
        (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">locktype</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">scope</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">token</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">owner_name</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">owned_tokens</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">depth</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">timeout_sec</span> integer</span>, 
        <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>);
      </div>
    <div class="funcsynopsis">
        <span class="funcdef">any <span class="function">DAV_UNLOCK</span>
      </span>
        (<span class="paramdef">in <span class="parameter">path</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">token</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">auth_uname</span> varchar</span>, 
        <span class="paramdef">in <span class="parameter">auth_pwd</span> varchar</span>);
      </div>
  
  
  
  <div class="refsect1">
      <div class="refsect1title">Description</div>
    <p>
        <span class="computeroutput">DAV_LOCK</span> sets a new lock or refresh an existing lock or creates a lock object.</p>
    <p>
        <span class="computeroutput">DAV_UNLOCK</span> releases a lock.</p>
    <p>
        <span class="computeroutput">DAV_IS_LOCKED</span> reports whether the resource or collection is locked.</p>
    <p>
        <span class="computeroutput">DAV_LIST_LOCKS</span> returns a full list of all locks on a resource or collection.</p>
    <p>It is strongly recommended to carefully study DAV standards before using these functions in applications.
Improper use of DAV locks may result in subtle application errors that are hard to debug.</p>
  </div>
  <div class="refsect1">
      <div class="refsect1title">Parameters</div>
    <div class="refsect2">
        <span class="refsect2title">path – </span>
      Resource or collection path.
As usual, collection names must end with &#39;/&#39; and both sorts of path strings should begin with &#39;/&#39;.
If the path specifies a non-existing resource in an existing collection then a lock object is created and only lock owner can create a resource with this name in future.

    </div>
    <div class="refsect2">
        <span class="refsect2title">locktype – </span>
      The type of lock. Current set of DAV standards specifies only one type of locks, called &#39;D:write&#39;; the parameter value is stored &#39;as is&#39; and never used, so the recommended value is an empty string.
    </div>
    <div class="refsect2">
        <span class="refsect2title">scope – </span>
      The scope of lock as a single-char string: &#39;S&#39; for shared lock, &#39;X&#39; for exclusive.
    </div>
    <div class="refsect2">
        <span class="refsect2title">token – </span>
      The token to update. Empty string or NULL means creation of a new lock, not an update of the existing one.
    </div>
    <div class="refsect2">
        <span class="refsect2title">owner_name – </span>
      Lock owner name as it will be displayed to other users that will query for existing locks. It is strongly recommended to provide commonly used names such as e-mails to let users ask each other to remove forgotten locks.
    </div>
    <div class="refsect2">
        <span class="refsect2title">owned_tokens – </span>
      String of tokens owned by a user, to let user ignore his own tokens. The string should match syntax of DAV HTTP &#39;If&#39; parameter.
This can be also an integer, this will work as empty list of tokens.
    </div>
    <div class="refsect2">
        <span class="refsect2title">depth – </span>
      This specifies the recursive depth of the lock.
The string can be &#39;0&#39; to lock the specified collection only, &#39;1&#39; to lock the collection and its subcollections, &#39;infinity&#39; to lock the whole subtree.
When the lock is added to a resource, the value &#39;0&#39; is used, for obvious reason.
If NULL is passed to the function then the effective value is &#39;infinity&#39; for collection lock or &#39;0&#39; for resource lock.
    </div>
    <div class="refsect2">
        <span class="refsect2title">timeout_sec – </span>
      Expiration interval for the lock, in seconds. If 0 or NULL is passed then HTTP DAV default is used that is equal to 604800 seconds (one week).
    </div>
    <div class="refsect2">
        <span class="refsect2title">auth_uname – </span>
      DAV user name to authenticate access. Lock, Lock refresh and unlock operations on existing resource or collection require write permission.
To create a lock object in a collection, user should have write permission on that collection.
This may cause problem when user first locks a resource and then loose write permission for some reason: the user is unable to remove his own lock.
Default is NULL that means public access.

    </div>
    <div class="refsect2">
        <span class="refsect2title">auth_pwd – </span>
      User password. Default is NULL.
    </div>
    <div class="refsect2">
        <span class="refsect2title">id – </span>
      Internal identifier of a resource or collection as returned by DAV_SEARCH_ID().
    </div>
  </div>

<div class="refsect1">
      <div class="refsect1title">Examples</div>
    <a name="ex_dav_api_lock_1" />
      <div class="example">
        <div class="exampletitle">Two concurrent users</div>
      <p>The following example shows how two users can prevent each other from undesired operations.</p>
      <p>The sample function DAV_LOCK_DEMO() uses a function DUMP_VEC() that print the content of vector in Virtuoso/PL syntax.
Yon can find the implementation of this function as one of examples for <a href="fn_vector.html">vector()</a> Virtuoso/PL function.</p>
      <div>
          <pre class="screen">
create procedure DAV_LOCK_DEMO (in dav_passwd varchar := &#39;dav&#39;)
{
  declare ACTION, RETVAL, token_s1, token_s2, token_x varchar;
  result_names (ACTION, RETVAL);
  result (&#39;Adding group lock_demo_grp:&#39;,
    DAV_ADD_GROUP (&#39;lock_demo_grp&#39;, &#39;dav&#39;, dav_passwd) );
  result (&#39;Adding user lock_u1:&#39;,
    DAV_ADD_USER (&#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;, &#39;lock_demo_grp&#39;, &#39;110110000T&#39;, 0, &#39;/DAV/lock_demo_u1_home/&#39;, &#39;First User of lock demo&#39;, &#39;lock_u1@localhost&#39;, &#39;dav&#39;, dav_passwd) );
  result (&#39;Adding user lock_u2:&#39;,
    DAV_ADD_USER (&#39;lock_u2&#39;, &#39;lock_u2_pwd&#39;, &#39;lock_demo_grp&#39;, &#39;110110000T&#39;, 0, &#39;/DAV/lock_demo_u2_home/&#39;, &#39;Second User of lock demo&#39;, &#39;lock_u2@localhost&#39;, &#39;dav&#39;, dav_passwd) );
  result (&#39;Adding a collection:&#39;,
    DAV_COL_CREATE (&#39;/DAV/lock_demo/&#39;, &#39;110110000R&#39;, &#39;lock_u1&#39;, &#39;lock_demo_grp&#39;, &#39;dav&#39;, dav_passwd) );
  result (&#39;Uploading /DAV/lock_demo/sample.htm:&#39;,
    DAV_RES_UPLOAD (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&lt;html&gt;&lt;body&gt;This is /DAV/lock_demo/sample.htm&lt;/body&gt;&lt;/html&gt;&#39;, &#39;text/plain&#39;, &#39;110110000R&#39;, &#39;lock_u1&#39;, &#39;lock_demo_grp&#39;, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;) );
  token_s1 := DAV_LOCK (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&#39;, &#39;S&#39;, NULL, &#39;user1@example.com&#39;, &#39;&#39;, &#39;0&#39;, NULL, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;);
  result (&#39;First user set a shared lock:&#39;, token_s1);
  token_s2 := DAV_LOCK (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&#39;, &#39;S&#39;, NULL, &#39;user2@example.com&#39;, &#39;&#39;, &#39;0&#39;, NULL, &#39;lock_u2&#39;, &#39;lock_u2_pwd&#39;);
  result (&#39;Second user set a shared lock:&#39;, token_s2);
  token_x := DAV_LOCK (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&#39;, &#39;X&#39;, NULL, &#39;user1@example.com&#39;, token_s1, &#39;0&#39;, NULL, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;);
  result (&#39;Lock dump&#39;,
    DUMP_VEC (DAV_LIST_LOCKS (DAV_SEARCH_ID (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;R&#39;), &#39;R&#39;)) );
  result (&#39;First user tries to set an exclusive lock:&#39;, token_x);
  result (&#39;Second user releases his lock:&#39;,
    DAV_UNLOCK (&#39;/DAV/lock_demo/sample.htm&#39;, token_s2, &#39;lock_u2&#39;, &#39;lock_u2_pwd&#39;) );
  token_x := DAV_LOCK (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&#39;, &#39;X&#39;, NULL, &#39;user1@example.com&#39;, token_s1, &#39;0&#39;, NULL, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;);
  result (&#39;First user sets an exclusive lock:&#39;, token_x);
  result (&#39;First user releases his lock:&#39;,
    DAV_UNLOCK (&#39;/DAV/lock_demo/sample.htm&#39;, token_s1, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;) );
  token_x := DAV_LOCK (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;&#39;, &#39;X&#39;, NULL, &#39;user1@example.com&#39;, token_s1, &#39;0&#39;, NULL, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;);
  result (&#39;First user sets an exclusive lock:&#39;, token_x);
  result (&#39;Second user tries to add a property to the resource:&#39;,
    DAV_PROP_SET (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;sample_prop&#39;, &#39;sample value&#39;, &#39;lock_u2&#39;, &#39;lock_u2_pwd&#39;) );
  result (&#39;First user releases his shared:&#39;,
    DAV_UNLOCK (&#39;/DAV/lock_demo/sample.htm&#39;, token_x, &#39;lock_u1&#39;, &#39;lock_u1_pwd&#39;) );
  result (&#39;Second user adds a property to the resource:&#39;,
    DAV_PROP_SET (&#39;/DAV/lock_demo/sample.htm&#39;, &#39;sample_prop&#39;, &#39;sample value&#39;, &#39;lock_u2&#39;, &#39;lock_u2_pwd&#39;) );
}

DAV_LOCK_DEMO ();
ACTION   RETVAL
VARCHAR  VARCHAR
_______________________________________________________________________________

Adding group lock_demo_grp:  107
Adding user lock_u1:  108
Adding user lock_u2:  109
Adding a collection:  171
Uploading /DAV/lock_demo/sample.htm:  1103
First user set a shared lock:  1545ce54-3599-11da-8697-8f3efbd86ef2
Second user set a shared lock:  15460590-3599-11da-8697-8f3efbd86ef2
Lock dump  
vector (
vector (&#39;&#39;, &#39;S&#39;, &#39;1545ce54-3599-11da-8697-8f3efbd86ef2&#39;, 604800, 108, &#39;user1@example.com&#39;), 
vector (&#39;&#39;, &#39;S&#39;, &#39;15460590-3599-11da-8697-8f3efbd86ef2&#39;, 604800, 109, &#39;user2@example.com&#39;))
First user tries to set an exclusive lock:  -8
Second user releases his lock:  15460590-3599-11da-8697-8f3efbd86ef2
First user sets an exclusive lock:  -8
First user releases his lock:  1545ce54-3599-11da-8697-8f3efbd86ef2
First user sets an exclusive lock:  1547251a-3599-11da-8697-8f3efbd86ef2
Second user tries to add a property to the resource:  -8
First user releases his shared:  1547251a-3599-11da-8697-8f3efbd86ef2
Second user adds a property to the resource:  1321

      </pre>
        </div>
    </div>
  </div>
  
   <div class="refsect1">
      <div class="refsect1title">See Also</div>
    <p>
        <a href="fn_dav_api_add.html">DAV content add/update/delete functions</a>
      </p>
    <p>
        <a href="fn_dav_api_change.html">DAV content manipulation functions</a>
      </p>
    <p>
        <a href="fn_dav_api_search.html">DAV search functions</a>
      </p>
    <p>
        <a href="fn_dav_api_user.html">DAV user management functions</a>
      </p>
  </div>

</div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>