Class WebDavServiceImpl
java.lang.Object
org.exoplatform.services.jcr.webdav.WebDavServiceImpl
- All Implemented Interfaces:
WebDavService,org.exoplatform.services.rest.resource.ResourceContainer
public class WebDavServiceImpl
extends Object
implements WebDavService, org.exoplatform.services.rest.resource.ResourceContainer
Created by The eXo Platform SAS.
WebDavServiceImpl is the WebDav connector on top of eXo JCR.
It allows to execute CRUD operations on the JCR thanks to the Webdav protocol.
- Author:
- Gennady Azarenkov
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected WebDavServiceInitParamsEncapsulates WebDAV service initial parameters. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedWebDavServiceImpl(Map<String, String> params, org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) Constructor.WebDavServiceImpl(org.exoplatform.container.xml.InitParams params, org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) Constructor.protectedWebDavServiceImpl(org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionjavax.ws.rs.core.Responseacl(String repoName, String repoPath, String lockTokenHeader, String ifHeader, org.exoplatform.common.util.HierarchicalProperty body) WebDAV ACL method according to protocol extension - Access Control Protocol: RFC3744 More details here: Web Distributed Authoring and Versioning (WebDAV) Access Control Protocoljavax.ws.rs.core.Responsejavax.ws.rs.core.Responsejavax.ws.rs.core.Responsecopy(String repoName, String repoPath, String destinationHeader, String lockTokenHeader, String ifHeader, String depthHeader, String overwriteHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) javax.ws.rs.core.Responsejavax.ws.rs.core.Responseget(String repoName, String repoPath, String rangeHeader, String ifModifiedSince, String ifNoneMatch, String version, javax.ws.rs.core.UriInfo uriInfo) WedDAV "GET" method.protected StringgetRepositoryName(String repoName) Gives the name of the repository to access.javax.ws.rs.core.ResponseWedDAV "HEAD" method.javax.ws.rs.core.Responselock(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String depthHeader, org.exoplatform.common.util.HierarchicalProperty body) lockTokens(String lockTokenHeader, String ifHeader) Creates the list of Lock tokens from Lock-Token and If headers.javax.ws.rs.core.Responsemkcol(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String folderNodeTypeHeader, String mixinTypesHeader, javax.ws.rs.core.UriInfo uriInfo) javax.ws.rs.core.Responsemove(String repoName, String repoPath, String destinationHeader, String lockTokenHeader, String ifHeader, String depthHeader, String overwriteHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) protected StringnormalizePath(String repoPath) Normalizes path.javax.ws.rs.core.Responsejavax.ws.rs.core.Responseorder(String repoName, String repoPath, String lockTokenHeader, String ifHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) protected StringExtracts path from repository path.protected StringExtracts path from repository path.javax.ws.rs.core.Responsepropfind(String repoName, String repoPath, String depthHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) javax.ws.rs.core.Responseproppatch(String repoName, String repoPath, String lockTokenHeader, String ifHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) javax.ws.rs.core.Responseput(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String fileNodeTypeHeader, String contentNodeTypeHeader, String mixinTypes, javax.ws.rs.core.MediaType mediaType, String userAgent, InputStream inputStream, javax.ws.rs.core.UriInfo uriInfo) WedDAV "PUT" method.javax.ws.rs.core.Responsereport(String repoName, String repoPath, String depthHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) javax.ws.rs.core.Responsesearch(String repoName, String repoPath, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) protected javax.jcr.SessionGives access to the current session.javax.ws.rs.core.Responseuncheckout(String repoName, String repoPath, String lockTokenHeader, String ifHeader) javax.ws.rs.core.Responsejavax.ws.rs.core.ResponseversionControl(String repoName, String repoPath, String lockTokenHeader, String ifHeader) protected StringworkspaceName(String repoPath) Extracts workspace name from repository path.
-
Field Details
-
webDavServiceInitParams
Encapsulates WebDAV service initial parameters.
-
-
Constructor Details
-
WebDavServiceImpl
public WebDavServiceImpl(org.exoplatform.container.xml.InitParams params, org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) throws Exception Constructor. -
WebDavServiceImpl
protected WebDavServiceImpl(Map<String, String> params, org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) throws ExceptionConstructor.- Parameters:
params- Initialization paramsrepositoryService- repository servicesessionProviderService- session provider service- Throws:
Exception
-
WebDavServiceImpl
protected WebDavServiceImpl(org.exoplatform.services.jcr.RepositoryService repositoryService, org.exoplatform.services.jcr.ext.app.SessionProviderService sessionProviderService) Constructor.- Parameters:
repositoryService- repository servicesessionProviderService- session provider service
-
-
Method Details
-
checkin
public javax.ws.rs.core.Response checkin(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
checkinin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
checkout
public javax.ws.rs.core.Response checkout(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
checkoutin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
copy
public javax.ws.rs.core.Response copy(String repoName, String repoPath, @HeaderParam("Destination") String destinationHeader, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @HeaderParam("depth") String depthHeader, @HeaderParam("Overwrite") String overwriteHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
copyin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorydestinationHeader- Destination HTTP HeaderlockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderdepthHeader- Depth HTTP headeroverwriteHeader- Overwrite HTTP headeruriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
delete
public javax.ws.rs.core.Response delete(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
deletein interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
get
public javax.ws.rs.core.Response get(String repoName, String repoPath, @HeaderParam("Range") String rangeHeader, @HeaderParam("If-Modified-Since") String ifModifiedSince, @HeaderParam("If-None-Match") String ifNoneMatch, String version, @Context javax.ws.rs.core.UriInfo uriInfo) WedDAV "GET" method. See HTTP methods for distributed authoring sec. 8.4 "GET, HEAD for Collections".- Specified by:
getin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositoryrangeHeader- Range HTTP headerifModifiedSince- if-modified-since headerifNoneMatch- if-none-match headerversion- version nameuriInfo- base URI info- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
head
public javax.ws.rs.core.Response head(String repoName, String repoPath, @Context javax.ws.rs.core.UriInfo uriInfo) WedDAV "HEAD" method. see HTTP methods for distributed authoring sec. 8.4 "GET, HEAD for Collections".- Specified by:
headin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositoryuriInfo- base URI info- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
lock
public javax.ws.rs.core.Response lock(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @HeaderParam("depth") String depthHeader, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
lockin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderdepthHeader- Depth HTTP headerbody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
unlock
public javax.ws.rs.core.Response unlock(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
unlockin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
mkcol
public javax.ws.rs.core.Response mkcol(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @HeaderParam("Folder-NodeType") String folderNodeTypeHeader, @HeaderParam("Content-MixinTypes") String mixinTypesHeader, @Context javax.ws.rs.core.UriInfo uriInfo) - Specified by:
mkcolin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderfolderNodeTypeHeader- JCR Node-Type headermixinTypesHeader- JCR Mixin-Types header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
move
public javax.ws.rs.core.Response move(String repoName, String repoPath, @HeaderParam("Destination") String destinationHeader, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @HeaderParam("depth") String depthHeader, @HeaderParam("Overwrite") String overwriteHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
movein interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorydestinationHeader- Destination HTTP headerlockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderdepthHeader- Depth HTTP headeroverwriteHeader- Overwrite HTTP headeruriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
options
- Specified by:
optionsin interfaceWebDavService- Parameters:
path-- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
order
public javax.ws.rs.core.Response order(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
orderin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderuriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
propfind
public javax.ws.rs.core.Response propfind(String repoName, String repoPath, @HeaderParam("depth") String depthHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
propfindin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorydepthHeader- Depth HTTP headeruriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response HTTP response
- eXo level API
- Platform
-
proppatch
public javax.ws.rs.core.Response proppatch(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
proppatchin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP HeaderuriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response HTTP response
- eXo level API
- Platform
-
put
public javax.ws.rs.core.Response put(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, @HeaderParam("File-NodeType") String fileNodeTypeHeader, @HeaderParam("Content-NodeType") String contentNodeTypeHeader, @HeaderParam("Content-MixinTypes") String mixinTypes, @HeaderParam("Content-Type") javax.ws.rs.core.MediaType mediaType, @HeaderParam("User-Agent") String userAgent, InputStream inputStream, @Context javax.ws.rs.core.UriInfo uriInfo) WedDAV "PUT" method. See HTTP methods for distributed authoring sec. 8.7 "PUT".- Specified by:
putin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If HTTP HeaderfileNodeTypeHeader- JCR NodeType headercontentNodeTypeHeader- JCR Content-NodeType headermixinTypes- JCR Mixin types headermediaType- Content-Type HTTP headeruserAgent- User-Agent HTTP headerinputStream- stream that contain incoming datauriInfo- URI info- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
report
public javax.ws.rs.core.Response report(String repoName, String repoPath, @HeaderParam("depth") String depthHeader, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
reportin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorydepthHeader- Depth HTTP headeruriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
search
public javax.ws.rs.core.Response search(String repoName, String repoPath, @Context javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body) - Specified by:
searchin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositoryuriInfo- base URI infobody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
uncheckout
public javax.ws.rs.core.Response uncheckout(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
uncheckoutin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
versionControl
public javax.ws.rs.core.Response versionControl(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader) - Specified by:
versionControlin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Header- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Platform
-
acl
public javax.ws.rs.core.Response acl(String repoName, String repoPath, @HeaderParam("lock-token") String lockTokenHeader, @HeaderParam("If") String ifHeader, org.exoplatform.common.util.HierarchicalProperty body) WebDAV ACL method according to protocol extension - Access Control Protocol: RFC3744 More details here: Web Distributed Authoring and Versioning (WebDAV) Access Control Protocol- Specified by:
aclin interfaceWebDavService- Parameters:
repoName- repository namerepoPath- path in repositorylockTokenHeader- Lock-Token HTTP headerifHeader- If- HTTP Headerbody- Request body- Returns:
- the instance of javax.ws.rs.core.Response
- eXo level API
- Provisional
-
session
protected javax.jcr.Session session(String repoName, String wsName, List<String> lockTokens) throws Exception, javax.jcr.NoSuchWorkspaceException Gives access to the current session. -
getRepositoryName
Gives the name of the repository to access.- Parameters:
repoName- the name of the expected repository.- Returns:
- the name of the repository to access.
- Throws:
javax.jcr.RepositoryException
-
workspaceName
Extracts workspace name from repository path.- Parameters:
repoPath- repository path- Returns:
- workspace name
-
normalizePath
Normalizes path.- Parameters:
repoPath- repository path- Returns:
- normalized path.
-
path
Extracts path from repository path.- Parameters:
repoPath- repository path- Returns:
- path
-
path
Extracts path from repository path.- Parameters:
repoPath- repository pathwithIndex- indicates whether the index must be removed or not- Returns:
- path
-
lockTokens
Creates the list of Lock tokens from Lock-Token and If headers.- Parameters:
lockTokenHeader- Lock-Token HTTP headerifHeader- If HTTP header- Returns:
- the list of lock tokens
-