public abstract class WebDAVMethod
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
protected class |
WebDAVMethod.Condition
Class used for storing conditions which comes with "If" header of the request
|
Modifier and Type | Field and Description |
---|---|
protected static org.apache.commons.logging.Log |
logger |
protected java.util.Map |
m_childToParent |
protected java.util.LinkedList |
m_conditions |
protected WebDAVHelper |
m_davHelper |
protected int |
m_depth |
protected java.util.Map |
m_parentLockInfo |
protected javax.servlet.http.HttpServletRequest |
m_request |
protected java.lang.String |
m_resourceTag |
protected javax.servlet.http.HttpServletResponse |
m_response |
protected org.alfresco.service.cmr.repository.NodeRef |
m_rootNodeRef |
protected java.lang.String |
m_strPath |
protected java.lang.String |
m_userAgent |
Constructor and Description |
---|
WebDAVMethod()
Default constructor
|
Modifier and Type | Method and Description |
---|---|
protected org.alfresco.repo.webdav.LockInfo |
checkNode(org.alfresco.service.cmr.model.FileInfo fileInfo)
Checks if write operation can be performed on node.
|
protected org.alfresco.repo.webdav.LockInfo |
checkNode(org.alfresco.service.cmr.model.FileInfo fileInfo,
boolean ignoreShared,
boolean lockMethod)
Checks if write operation can be performed on node.
|
protected org.dom4j.io.XMLWriter |
createXMLWriter()
Create an XML writer for the response
|
void |
execute()
Executes the method, wrapping the call to
WebDAVMethod.executeImpl() in an appropriate transaction
and handling the error conditions. |
protected abstract void |
executeImpl()
Access the content repository to satisfy the request and generates the appropriate WebDAV
response.
|
protected void |
flushXML(org.dom4j.io.XMLWriter writer)
Flushes all XML written so far to the response
|
protected void |
generateLockDiscoveryXML(org.dom4j.io.XMLWriter xml,
org.alfresco.service.cmr.model.FileInfo lockNodeInfo,
boolean emptyNamespace,
java.lang.String scope,
java.lang.String depth,
java.lang.String lToken,
java.lang.String owner,
java.util.Date expiryDate)
Generates the lock discovery XML response
|
protected void |
generateLockDiscoveryXML(org.dom4j.io.XMLWriter xml,
org.alfresco.service.cmr.model.FileInfo lockNodeInfo,
org.alfresco.repo.webdav.LockInfo lockInfo)
Generates the lock discovery XML response
|
protected java.lang.String |
generateNamespaceDeclarations(java.util.HashMap nameSpaces)
Generates a list of namespace declarations for the response
|
protected void |
generateResponseImpl()
Does nothing unless overridden - for reasons of backwards compatibility.
|
protected org.alfresco.service.cmr.action.ActionService |
getActionService()
Convenience method to return the action service
|
protected org.alfresco.service.cmr.security.AuthenticationService |
getAuthenticationService()
Convenience method to return the authentication service
|
protected org.alfresco.service.cmr.repository.ContentService |
getContentService()
Convenience method to return the content service
|
protected java.lang.String |
getContextPath() |
protected WebDAVHelper |
getDAVHelper()
Return the WebDAV protocol helper
|
protected WebDAVLockService |
getDAVLockService()
Retrieve the (WebDAV protocol-level) locking service.
|
int |
getDepth()
Return the property find depth
|
protected org.alfresco.service.cmr.model.FileFolderService |
getFileFolderService() |
protected org.alfresco.service.cmr.repository.MimetypeService |
getMimetypeService()
Convenience method to return the mimetype service
|
protected org.alfresco.service.namespace.NamespaceService |
getNamespaceService()
Convenience method to return the namespace service
|
protected org.alfresco.service.cmr.model.FileInfo |
getNodeForPath(org.alfresco.service.cmr.repository.NodeRef rootNodeRef,
java.lang.String path)
Get the file info for the given paths
|
protected org.alfresco.repo.webdav.LockInfo |
getNodeLockInfo(org.alfresco.service.cmr.model.FileInfo nodeInfo)
Returns node Lock token in consideration of WebDav lock depth.
|
protected org.alfresco.service.cmr.repository.NodeService |
getNodeService()
Convenience method to return the node service
|
java.lang.String |
getPath()
Return the relative path
|
protected org.alfresco.service.cmr.security.PermissionService |
getPermissionService()
Convenience method to return the permission service
|
protected org.w3c.dom.Document |
getRequestBodyAsDocument()
Retrieves the request body as an XML document
|
protected org.alfresco.service.cmr.repository.NodeRef |
getRootNodeRef()
Return the root node
|
protected org.alfresco.service.cmr.search.SearchService |
getSearchService()
Convenience method to return the search service
|
protected org.alfresco.service.ServiceRegistry |
getServiceRegistry()
Return the service registry
|
protected java.lang.String |
getServletPath() |
protected java.lang.String |
getSiteId()
Get the site ID (short-name) that the current request relates to.
|
protected int |
getStatusForAccessDeniedException()
Determines status code for AccessDeniedException based on client's HTTP headers.
|
protected java.lang.String |
getTenantDomain()
Get the tenant domain for the current user and request.
|
protected org.alfresco.service.transaction.TransactionService |
getTransactionService()
Convenience method to return the transaction service
|
protected java.lang.String |
getURLForPath(javax.servlet.http.HttpServletRequest request,
java.lang.String path,
boolean isFolder)
Returns a URL that could be used to access the given path.
|
protected org.alfresco.service.cmr.model.FileInfo |
getWorkingCopy(org.alfresco.service.cmr.repository.NodeRef nodeRef)
Returns a working copy of node for current user.
|
protected org.dom4j.io.OutputFormat |
getXMLOutputFormat()
Returns the format required for an XML response.
|
protected boolean |
isReadOnly()
Override and return true if the method is a query method only.
|
protected void |
parseDepthHeader()
Parses "Depth" request header
|
protected void |
parseIfHeader()
Parses "If" header of the request.
|
protected abstract void |
parseRequestBody()
Parses the given request body represented as an XML document and sets any necessary context
ready for execution.
|
protected abstract void |
parseRequestHeaders()
Parses the HTTP headers of the request and sets any necessary context ready for execution.
|
void |
setDetails(javax.servlet.http.HttpServletRequest req,
javax.servlet.http.HttpServletResponse resp,
WebDAVHelper davHelper,
org.alfresco.service.cmr.repository.NodeRef rootNode)
Set the request/response details
|
protected boolean |
shouldFlushXMLWriter()
Determines whether the XMLWriter should be flushed when XML is flushed.
|
java.lang.String |
toString() |
protected static org.apache.commons.logging.Log logger
protected javax.servlet.http.HttpServletRequest m_request
protected javax.servlet.http.HttpServletResponse m_response
protected WebDAVHelper m_davHelper
protected org.alfresco.service.cmr.repository.NodeRef m_rootNodeRef
protected java.lang.String m_strPath
protected java.lang.String m_userAgent
protected java.util.LinkedList m_conditions
protected java.lang.String m_resourceTag
protected int m_depth
protected java.util.Map m_childToParent
protected java.util.Map m_parentLockInfo
public void setDetails(javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse resp, WebDAVHelper davHelper, org.alfresco.service.cmr.repository.NodeRef rootNode)
req
- HttpServletRequestresp
- HttpServletResponseregistry
- ServiceRegistryrootNode
- NodeRefprotected boolean isReadOnly()
public final int getDepth()
public void execute() throws WebDAVServerException
WebDAVMethod.executeImpl()
in an appropriate transaction
and handling the error conditions.java.io.IOException
WebDAVServerException
protected abstract void executeImpl() throws WebDAVServerException, java.lang.Exception
WebDAVServerException
- a general server exceptionjava.lang.Exception
- any unhandled exceptionprotected void generateResponseImpl() throws java.lang.Exception
WebDAVMethod.executeImpl()
method
and should NOT contain any code that writes to the response. Conversely response generation logic
should NOT contain any code relating to the desired effect of the WebDAV method (e.g. setting properties
on a node) and should be contained purely within this method.
Older methods, until refactored will not override this method, relying only on WebDAVMethod.executeImpl()
.
java.lang.Exception
protected abstract void parseRequestBody() throws WebDAVServerException
WebDAVServerException
protected abstract void parseRequestHeaders() throws WebDAVServerException
WebDAVServerException
protected org.w3c.dom.Document getRequestBodyAsDocument() throws WebDAVServerException
WebDAVServerException
protected void parseDepthHeader() throws WebDAVServerException
WebDAVServerException
protected void parseIfHeader() throws WebDAVServerException
WebDAVServerException
protected final WebDAVHelper getDAVHelper()
protected final org.alfresco.service.ServiceRegistry getServiceRegistry()
protected final org.alfresco.service.transaction.TransactionService getTransactionService()
protected final org.alfresco.service.cmr.repository.NodeService getNodeService()
protected final org.alfresco.service.cmr.search.SearchService getSearchService()
protected final org.alfresco.service.namespace.NamespaceService getNamespaceService()
protected final org.alfresco.service.cmr.model.FileFolderService getFileFolderService()
protected final org.alfresco.service.cmr.repository.ContentService getContentService()
protected final org.alfresco.service.cmr.repository.MimetypeService getMimetypeService()
protected final WebDAVLockService getDAVLockService()
protected final org.alfresco.service.cmr.action.ActionService getActionService()
protected final org.alfresco.service.cmr.security.PermissionService getPermissionService()
protected final org.alfresco.service.cmr.security.AuthenticationService getAuthenticationService()
protected final java.lang.String getServletPath()
protected final java.lang.String getContextPath()
protected final org.alfresco.service.cmr.repository.NodeRef getRootNodeRef()
public java.lang.String getPath()
protected org.dom4j.io.OutputFormat getXMLOutputFormat()
protected final org.dom4j.io.XMLWriter createXMLWriter() throws java.io.IOException
java.io.IOException
protected void generateLockDiscoveryXML(org.dom4j.io.XMLWriter xml, org.alfresco.service.cmr.model.FileInfo lockNodeInfo, org.alfresco.repo.webdav.LockInfo lockInfo) throws java.lang.Exception
xml
- XMLWriterlockNode
- NodeReflockInfo
- java.lang.Exception
protected void generateLockDiscoveryXML(org.dom4j.io.XMLWriter xml, org.alfresco.service.cmr.model.FileInfo lockNodeInfo, boolean emptyNamespace, java.lang.String scope, java.lang.String depth, java.lang.String lToken, java.lang.String owner, java.util.Date expiryDate) throws java.lang.Exception
xml
- XMLWriterlockNode
- NodeRefemptyNamespace
- boolean True if namespace should be empty. Used to avoid bugs in WebDAV clients.scope
- String lock scopedepth
- String lock depthlToken
- String locktokenowner
- String lock ownerexpiryDate
- the date/time the lock should expirejava.lang.Exception
protected java.lang.String generateNamespaceDeclarations(java.util.HashMap nameSpaces)
protected org.alfresco.repo.webdav.LockInfo checkNode(org.alfresco.service.cmr.model.FileInfo fileInfo, boolean ignoreShared, boolean lockMethod) throws WebDAVServerException
fileInfo
- - node's file infoignoreShared
- - if true ignores shared lockslockMethod
- - must be true if used from lock methodWebDAVServerException
- if node has shared or exclusive lock
or If header preconditions failedprotected org.alfresco.repo.webdav.LockInfo checkNode(org.alfresco.service.cmr.model.FileInfo fileInfo) throws WebDAVServerException
fileInfo
- WebDAVServerException
- if node has shared or exclusive lock
or If header preconditions failedprotected org.alfresco.repo.webdav.LockInfo getNodeLockInfo(org.alfresco.service.cmr.model.FileInfo nodeInfo)
fileInfo
- nodeprotected org.alfresco.service.cmr.model.FileInfo getNodeForPath(org.alfresco.service.cmr.repository.NodeRef rootNodeRef, java.lang.String path) throws org.alfresco.service.cmr.model.FileNotFoundException
rootNodeRef
- the acting webdav rootpath
- the path to search fororg.alfresco.service.cmr.model.FileNotFoundException
- if the path doesn't refer to a valid nodeprotected java.lang.String getURLForPath(javax.servlet.http.HttpServletRequest request, java.lang.String path, boolean isFolder)
request
- HttpServletRequestpath
- the path to search forisFolder
- indicates file or folder is requestedprotected boolean shouldFlushXMLWriter()
true
if the XMLWriter should be flushed when XML is flushedprotected final void flushXML(org.dom4j.io.XMLWriter writer) throws java.io.IOException
xml
- XMLWriter that should be flushedjava.io.IOException
protected org.alfresco.service.cmr.model.FileInfo getWorkingCopy(org.alfresco.service.cmr.repository.NodeRef nodeRef)
nodeRef
- node referenceprotected int getStatusForAccessDeniedException()
public java.lang.String toString()
toString
in class java.lang.Object
protected java.lang.String getSiteId()
DEFAULT_SITE_ID
if not specifically set.protected java.lang.String getTenantDomain()
TenantService.DEFAULT_DOMAIN
if not specifically set.Copyright © 2005 - 2013 Alfresco Software, Inc. All Rights Reserved.