org.apache.jackrabbit.webdav.DavServletRequest Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.LockInfo;
import org.apache.jackrabbit.webdav.property.DavPropertyNameSet;
import org.apache.jackrabbit.webdav.property.DavProperty;
import org.apache.jackrabbit.webdav.property.DavPropertyName;
import org.apache.jackrabbit.webdav.property.PropEntry;
import org.w3c.dom.Document;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
/**
* DavServletRequest
extends the HttpServletRequest by Webdav
* specific METHODS.
*/
public interface DavServletRequest extends HttpServletRequest {
/**
* Sets the DavSession
to this request.
*
* @param session
*/
public void setDavSession(DavSession session);
/**
* Returns the {@link DavSession} created for this request.
*
* @return session for this resource
*/
public DavSession getDavSession();
/**
* Return the locator of the requested {@link DavResource resource}.
*
* @return locator of the requested {@link DavResource resource}.
*/
public DavResourceLocator getRequestLocator();
/**
* Parse the {@link DavConstants#HEADER_DESTINATION Destination header}
* and return the locator of the corresponding {@link DavResource resource}.
*
* @return locator of the resource specified with the Destination header.
* @see DavConstants#HEADER_DESTINATION
*/
public DavResourceLocator getDestinationLocator() throws DavException;
/**
* Returns true if the {@link DavConstants#HEADER_OVERWRITE Overwrite header}
* is set to 'T' thus instructing the server to overwrite the state of a
* non-null destination resource during a COPY or MOVE. A Overwrite header
* value of 'F' will return false.
*
* @return true if the Overwrite header is set to 'T', false if it is set
* to 'F'.
* @see DavConstants#HEADER_OVERWRITE
*/
public boolean isOverwrite();
/**
* Return the integer representation of the given {@link DavConstants#HEADER_DEPTH
* Depth header}. 'Infinity' is represented by {@link DavConstants#DEPTH_INFINITY}.
*
* @return integer representation of the {@link DavConstants#HEADER_DEPTH
* Depth header}.
* @see DavConstants#HEADER_DEPTH
*/
public int getDepth();
/**
* Returns the integer representation of the {@link DavConstants#HEADER_DEPTH
* Depth header} or the given defaultValue, if the Depth header is missing.
*
* @param defaultValue to be returned if no Depth header is present.
* @return integer representation of the {@link DavConstants#HEADER_DEPTH
* Depth header} or the given defaultValue.
* @see DavConstants#HEADER_DEPTH
*/
public int getDepth(int defaultValue);
/**
* Returns the token present in the {@link DavConstants#HEADER_LOCK_TOKEN
* Lock-Token Header} or null
if no such header is available.
* Note: The 'Lock-Token' header is sent with UNLOCK requests and with
* lock responses only. For any other request that may be affected by a lock
* the 'If' header field is responsible.
*
* @return the token present in the Lock-Token header.
* @see DavConstants#HEADER_LOCK_TOKEN
*/
public String getLockToken();
/**
* Return the timeout requested in the {@link DavConstants#HEADER_TIMEOUT
* Timeout header} as long
. The representation of the
* 'Infinite' timeout is left to the implementation.
*
* @return long value representation of the Timeout header.
* @see DavConstants#HEADER_TIMEOUT
* @see DavConstants#TIMEOUT_INFINITE
*/
public long getTimeout();
/**
* Parse the Xml request body and return a {@link org.w3c.dom.Document}.
*
* @return Document representing the Xml request body or null
* if no request body is present.
* @throws DavException If the request body cannot be parsed into an Xml
* Document.
*/
public Document getRequestDocument() throws DavException;
/**
* Return the type of PROPFIND request as indicated by the PROPFIND request
* body.
*
* @return type of PROPFIND request
* @see DavConstants#PROPFIND_ALL_PROP
* @see DavConstants#PROPFIND_BY_PROPERTY
* @see DavConstants#PROPFIND_PROPERTY_NAMES
* @see DavConstants#PROPFIND_ALL_PROP_INCLUDE
* @throws DavException If the propfind type could not be determined due to
* an invalid request body.
*/
public int getPropFindType() throws DavException;
/**
* Return the set of properties the client requested with a PROPFIND request
* or an empty set if the type of PROPFIND request was {@link DavConstants#PROPFIND_ALL_PROP}
* or {@link DavConstants#PROPFIND_PROPERTY_NAMES}.
*
* @return set of properties the client requested with a PROPFIND request
* @throws DavException In case of invalid request body
*/
public DavPropertyNameSet getPropFindProperties() throws DavException;
/**
* Return a {@link List} of property change operations. Each entry
* is either of type {@link DavPropertyName}, indicating a <remove>
* operation, or of type {@link DavProperty}, indicating a <set>
* operation. Note that ordering is significant here.
*
* @return {@link List} of property change operations
* @throws DavException In case of invalid request body
*/
public List extends PropEntry> getPropPatchChangeList() throws DavException;
/**
* Return the parsed 'lockinfo' request body, the {@link DavConstants#HEADER_TIMEOUT
* Timeout header} and the {@link DavConstants#HEADER_DEPTH Depth header}
* of a LOCK request as LockInfo
object.
*
* @return LockInfo
object encapsulating the information
* present in the LOCK request.
* @see DavConstants#HEADER_TIMEOUT
* @see DavConstants#HEADER_DEPTH
* @see DavConstants#XML_LOCKINFO
* @throws DavException
*/
public LockInfo getLockInfo() throws DavException;
/**
* Returns true, if the {@link DavConstants#HEADER_IF If header} present
* with the request matches the given resource.
*
* @param resource
* @return true, if the test is successful, false otherwise.
*/
public boolean matchesIfHeader(DavResource resource);
/**
* Returns true, if the {@link DavConstants#HEADER_IF If header} present
* with the request matches to the given href, token and eTag.
*
* @param href
* @param token
* @param eTag
* @return true, if the test is successful, false otherwise.
*/
public boolean matchesIfHeader(String href, String token, String eTag);
}