<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_13) on Sat Nov 06 11:09:28 CDT 2010 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
WebDAVResponseBuilder (Apache Wink 1.1.2-incubating API)
</TITLE>

<META NAME="date" CONTENT="2010-11-06">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="WebDAVResponseBuilder (Apache Wink 1.1.2-incubating API)";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/WebDAVResponseBuilder.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResource.html" title="class in org.apache.wink.webdav.server"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/wink/webdav/server/WebDAVResponseBuilder.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="WebDAVResponseBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.apache.wink.webdav.server</FONT>
<BR>
Class WebDAVResponseBuilder</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>org.apache.wink.webdav.server.WebDAVResponseBuilder</B>
</PRE>
<HR>
<DL>
<DT><PRE>public class <B>WebDAVResponseBuilder</B><DT>extends java.lang.Object</DL>
</PRE>

<P>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->

<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.CollectionPropertyHandler</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extends the <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.PropertyHandler</CODE></A> to provide additional data for the
 creation of multistatus responses for collections (feeds).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.PropertyHandler</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Used during the creation of a WebDAV multistatus response to get the
 properties and their values.</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html#create(javax.ws.rs.core.UriInfo)">create</A></B>(javax.ws.rs.core.UriInfo&nbsp;uriInfo)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.ws.rs.core.Response</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html#propfind(org.apache.wink.common.model.synd.SyndEntry, java.lang.String)">propfind</A></B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndEntry.html" title="class in org.apache.wink.common.model.synd">SyndEntry</A>&nbsp;entry,
         java.lang.String&nbsp;propfindXml)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process the PROPFIND request for a given entry and create a response
 using the default implementation of <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.PropertyHandler</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.ws.rs.core.Response</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html#propfind(org.apache.wink.common.model.synd.SyndEntry, java.lang.String, org.apache.wink.webdav.server.WebDAVResponseBuilder.PropertyHandler)">propfind</A></B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndEntry.html" title="class in org.apache.wink.common.model.synd">SyndEntry</A>&nbsp;entry,
         java.lang.String&nbsp;propfindXml,
         <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.PropertyHandler</A>&nbsp;handler)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process the PROPFIND request for given document resource and create a
 response.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.ws.rs.core.Response</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html#propfind(org.apache.wink.common.model.synd.SyndFeed, java.lang.String, java.lang.String)">propfind</A></B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndFeed.html" title="class in org.apache.wink.common.model.synd">SyndFeed</A>&nbsp;feed,
         java.lang.String&nbsp;propfindXml,
         java.lang.String&nbsp;depthStr)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process the PROPFIND request for the given feed and create a response
 using the default implementation of <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.CollectionPropertyHandler</CODE></A></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;javax.ws.rs.core.Response</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html#propfind(org.apache.wink.common.model.synd.SyndFeed, java.lang.String, java.lang.String, org.apache.wink.webdav.server.WebDAVResponseBuilder.CollectionPropertyHandler)">propfind</A></B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndFeed.html" title="class in org.apache.wink.common.model.synd">SyndFeed</A>&nbsp;feed,
         java.lang.String&nbsp;propfindXml,
         java.lang.String&nbsp;depthStr,
         <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.CollectionPropertyHandler</A>&nbsp;provider)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Process the PROPFIND request for the given collection resource and create
 a response.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="create(javax.ws.rs.core.UriInfo)"><!-- --></A><H3>
create</H3>
<PRE>
public static <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder</A> <B>create</B>(javax.ws.rs.core.UriInfo&nbsp;uriInfo)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="propfind(org.apache.wink.common.model.synd.SyndEntry, java.lang.String)"><!-- --></A><H3>
propfind</H3>
<PRE>
public javax.ws.rs.core.Response <B>propfind</B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndEntry.html" title="class in org.apache.wink.common.model.synd">SyndEntry</A>&nbsp;entry,
                                          java.lang.String&nbsp;propfindXml)
                                   throws java.io.IOException</PRE>
<DL>
<DD>Process the PROPFIND request for a given entry and create a response
 using the default implementation of <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.PropertyHandler</CODE></A>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>entry</CODE> - the entry containing the data to use to create the propfind
            response<DD><CODE>propfindXml</CODE> - the propfind xml request to create the response for
<DT><B>Returns:</B><DD>a response to the profind request
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="propfind(org.apache.wink.common.model.synd.SyndEntry, java.lang.String, org.apache.wink.webdav.server.WebDAVResponseBuilder.PropertyHandler)"><!-- --></A><H3>
propfind</H3>
<PRE>
public javax.ws.rs.core.Response <B>propfind</B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndEntry.html" title="class in org.apache.wink.common.model.synd">SyndEntry</A>&nbsp;entry,
                                          java.lang.String&nbsp;propfindXml,
                                          <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.PropertyHandler</A>&nbsp;handler)
                                   throws java.io.IOException</PRE>
<DL>
<DD>Process the PROPFIND request for given document resource and create a
 response.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>entry</CODE> - the entry containing the data to use to create the propfind
            response<DD><CODE>propfindXml</CODE> - the propfind xml request to create the response for<DD><CODE>handler</CODE> - a <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.PropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.PropertyHandler</CODE></A> that will be used to retrieve
            the values of properties for the response
<DT><B>Returns:</B><DD>a response to the profind request
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="propfind(org.apache.wink.common.model.synd.SyndFeed, java.lang.String, java.lang.String)"><!-- --></A><H3>
propfind</H3>
<PRE>
public javax.ws.rs.core.Response <B>propfind</B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndFeed.html" title="class in org.apache.wink.common.model.synd">SyndFeed</A>&nbsp;feed,
                                          java.lang.String&nbsp;propfindXml,
                                          java.lang.String&nbsp;depthStr)
                                   throws java.io.IOException</PRE>
<DL>
<DD>Process the PROPFIND request for the given feed and create a response
 using the default implementation of <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server"><CODE>WebDAVResponseBuilder.CollectionPropertyHandler</CODE></A>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>feed</CODE> - the feed containing the data to use to create the propfind
            response<DD><CODE>propfindXml</CODE> - the propfind xml request to create the response for<DD><CODE>depthStr</CODE> - the value of the Depth header
<DT><B>Returns:</B><DD>a response to the profind request
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="propfind(org.apache.wink.common.model.synd.SyndFeed, java.lang.String, java.lang.String, org.apache.wink.webdav.server.WebDAVResponseBuilder.CollectionPropertyHandler)"><!-- --></A><H3>
propfind</H3>
<PRE>
public javax.ws.rs.core.Response <B>propfind</B>(<A HREF="../../../../../org/apache/wink/common/model/synd/SyndFeed.html" title="class in org.apache.wink.common.model.synd">SyndFeed</A>&nbsp;feed,
                                          java.lang.String&nbsp;propfindXml,
                                          java.lang.String&nbsp;depthStr,
                                          <A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server">WebDAVResponseBuilder.CollectionPropertyHandler</A>&nbsp;provider)
                                   throws java.io.IOException</PRE>
<DL>
<DD>Process the PROPFIND request for the given collection resource and create
 a response.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>feed</CODE> - the feed containing the data to use to create the propfind
            response<DD><CODE>propfindXml</CODE> - the propfind xml request to create the response for<DD><CODE>depthStr</CODE> - the value of the Depth header<DD><CODE>provider</CODE> - a CollectionPropertyProvider that will be used to
            retrieve the values of properties for the response
<DT><B>Returns:</B><DD>a response to the profind request
<DT><B>Throws:</B>
<DD><CODE>java.io.IOException</CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/WebDAVResponseBuilder.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResource.html" title="class in org.apache.wink.webdav.server"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../../org/apache/wink/webdav/server/WebDAVResponseBuilder.CollectionPropertyHandler.html" title="class in org.apache.wink.webdav.server"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../../index.html?org/apache/wink/webdav/server/WebDAVResponseBuilder.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="WebDAVResponseBuilder.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>
Copyright &#169; 2009-2010 <a href="http://www.apache.org/">The Apache Software Foundation</a>. All Rights Reserved.
</BODY>
</HTML>
