blob: 5f72a9aae1b9be08e23ad7e46b7c7b71dad1f97b [file] [log] [blame]
/*
* Copyright 2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jackrabbit.webdav;
import org.apache.jackrabbit.webdav.lock.ActiveLock;
import org.apache.jackrabbit.webdav.xml.XmlSerializable;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* <code>WebdavResponse</code> extends the HttpServletResponse by
* Webdav specific status codes and METHODS.
*/
public interface DavServletResponse extends HttpServletResponse {
/**
* The 102 (Processing) status code is an interim response used to
* inform the client that the server has accepted the complete request,
* but has not yet completed it.
*/
int SC_PROCESSING = 102;
/**
* Status code (207) indicating that the response requires
* providing status for multiple independent operations.
*/
int SC_MULTI_STATUS = 207;
/**
* The 422 (Unprocessable Entity) status code means the server understands
* the content type of the request entity (hence a 415(Unsupported Media Type)
* status code is inappropriate), and the syntax of the request entity is
* correct (thus a 400 (Bad Request) status code is inappropriate) but was
* unable to process the contained instructions. For example, this error
* condition may occur if an XML request body contains well-formed (i.e.,
* syntactically correct), but semantically erroneous XML instructions.
*/
int SC_UNPROCESSABLE_ENTITY = 422;
/**
* Status code (423) indicating the destination resource of a
* method is locked, and either the request did not contain a
* valid Lock-Info header, or the Lock-Info header identifies
* a lock held by another principal.
*/
int SC_LOCKED = 423;
/**
* Status code (424) incidating that the method could not be
* performed on the resource, because the requested action depended
* on another action which failed.
*/
int SC_FAILED_DEPENDENCY = 424;
/**
* Status code (507) indicating that the resource does not have
* sufficient space to record the state of the resource after the
* execution of this method.
*/
int SC_INSUFFICIENT_SPACE_ON_RESOURCE = 507;
/**
* Send a response body given more detailed information about the error
* occured.
*
* @param error
* @throws IOException
*/
public void sendError(DavException error) throws IOException;
/**
* Send the multistatus response to the client. A multistatus response
* is returned in response to a successful PROPFIND and PROPPATCH request.
* In addition multistatus response is required response in case a COPY,
* MOVE, DELETE, LOCK or PROPPATCH request fails.
*
* @param multistatus
* @throws IOException
* @see #SC_MULTI_STATUS
*/
public void sendMultiStatus(MultiStatus multistatus) throws IOException;
/**
* Send the lock response for a successful LOCK request. The given <code>ActiveLock</code>
* object is included in the lockdiscovery property of the response
* body as required by RFC 2518.
*
* @param lock
* @throws IOException
* @see DavConstants#PROPERTY_LOCKDISCOVERY
*/
public void sendLockResponse(ActiveLock lock) throws IOException;
/**
* Send the lock response for a successful LOCK request, that was intended
* to refresh an existing lock. The locks array must contain at least
* a single element; the <code>ActiveLock</code> objects are then
* included in the lockdiscovery property of the response body as required
* by RFC 2518.
*
* @param locks
* @throws IOException
* @see DavConstants#PROPERTY_LOCKDISCOVERY
*/
public void sendRefreshLockResponse(ActiveLock[] locks) throws IOException;
/**
* Generic method to return an Xml response body.
*
* @param serializable object that can be converted to the root Xml element
* of the document to be sent as response body.
* @param status Status code to be used with {@link #setStatus(int)}.
* @throws IOException
*/
public void sendXmlResponse(XmlSerializable serializable, int status) throws IOException;
}