eXo JCR :: Component :: Webdav Service 1.15.10-GA

org.exoplatform.services.jcr.webdav
Class WebDavServiceImpl

java.lang.Object
  extended by 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

Constructor Summary
  WebDavServiceImpl(org.exoplatform.container.xml.InitParams params, org.exoplatform.services.jcr.RepositoryService repositoryService, ThreadLocalSessionProviderService sessionProviderService)
          Constructor.
protected WebDavServiceImpl(Map<String,String> params, org.exoplatform.services.jcr.RepositoryService repositoryService, ThreadLocalSessionProviderService sessionProviderService)
          Constructor.
protected WebDavServiceImpl(org.exoplatform.services.jcr.RepositoryService repositoryService, ThreadLocalSessionProviderService sessionProviderService)
          Constructor.
 
Method Summary
 javax.ws.rs.core.Response acl(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 Protocol
 javax.ws.rs.core.Response checkin(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
 javax.ws.rs.core.Response checkout(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
 javax.ws.rs.core.Response copy(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.Response delete(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
 javax.ws.rs.core.Response get(String repoName, String repoPath, String rangeHeader, String ifModifiedSince, String ifNoneMatch, String version, javax.ws.rs.core.UriInfo uriInfo)
          WedDAV "GET" method.
protected  String getRepositoryName(String repoName)
          Gives the name of the repository to access.
 javax.ws.rs.core.Response head(String repoName, String repoPath, javax.ws.rs.core.UriInfo uriInfo)
          WedDAV "HEAD" method.
 javax.ws.rs.core.Response lock(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String depthHeader, org.exoplatform.common.util.HierarchicalProperty body)
           
protected  List<String> lockTokens(String lockTokenHeader, String ifHeader)
          Creates the list of Lock tokens from Lock-Token and If headers.
 javax.ws.rs.core.Response mkcol(String repoName, String repoPath, String lockTokenHeader, String ifHeader, String folderNodeTypeHeader, String mixinTypesHeader, javax.ws.rs.core.UriInfo uriInfo)
           
 javax.ws.rs.core.Response move(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  String normalizePath(String repoPath)
          Normalizes path.
 javax.ws.rs.core.Response options(String path)
           
 javax.ws.rs.core.Response order(String repoName, String repoPath, String lockTokenHeader, String ifHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body)
           
protected  String path(String repoPath)
          Extracts path from repository path.
 javax.ws.rs.core.Response propfind(String repoName, String repoPath, String depthHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body)
           
 javax.ws.rs.core.Response proppatch(String repoName, String repoPath, String lockTokenHeader, String ifHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body)
           
 javax.ws.rs.core.Response put(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.Response report(String repoName, String repoPath, String depthHeader, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body)
           
 javax.ws.rs.core.Response search(String repoName, String repoPath, javax.ws.rs.core.UriInfo uriInfo, org.exoplatform.common.util.HierarchicalProperty body)
           
protected  javax.jcr.Session session(String repoName, String wsName, List<String> lockTokens)
          Gives access to the current session.
 javax.ws.rs.core.Response uncheckout(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
 javax.ws.rs.core.Response unlock(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
 javax.ws.rs.core.Response versionControl(String repoName, String repoPath, String lockTokenHeader, String ifHeader)
           
protected  String workspaceName(String repoPath)
          Extracts workspace name from repository path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WebDavServiceImpl

public WebDavServiceImpl(org.exoplatform.container.xml.InitParams params,
                         org.exoplatform.services.jcr.RepositoryService repositoryService,
                         ThreadLocalSessionProviderService sessionProviderService)
                  throws Exception
Constructor.

Parameters:
params - Initialization parameters
repositoryService - repository service
sessionProviderService - session provider service
Throws:
Exception - Exception

WebDavServiceImpl

protected WebDavServiceImpl(Map<String,String> params,
                            org.exoplatform.services.jcr.RepositoryService repositoryService,
                            ThreadLocalSessionProviderService sessionProviderService)
                     throws Exception
Constructor.

Parameters:
params - Initialization params
repositoryService - repository service
sessionProviderService - session provider service
Throws:
Exception

WebDavServiceImpl

protected WebDavServiceImpl(org.exoplatform.services.jcr.RepositoryService repositoryService,
                            ThreadLocalSessionProviderService sessionProviderService)
Constructor.

Parameters:
repositoryService - repository service
sessionProviderService - session provider service
Method Detail

checkin

public javax.ws.rs.core.Response checkin(String repoName,
                                         String repoPath,
                                         @HeaderParam(value="lock-token")
                                         String lockTokenHeader,
                                         @HeaderParam(value="If")
                                         String ifHeader)
Specified by:
checkin in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

checkout

public javax.ws.rs.core.Response checkout(String repoName,
                                          String repoPath,
                                          @HeaderParam(value="lock-token")
                                          String lockTokenHeader,
                                          @HeaderParam(value="If")
                                          String ifHeader)
Specified by:
checkout in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

copy

public javax.ws.rs.core.Response copy(String repoName,
                                      String repoPath,
                                      @HeaderParam(value="Destination")
                                      String destinationHeader,
                                      @HeaderParam(value="lock-token")
                                      String lockTokenHeader,
                                      @HeaderParam(value="If")
                                      String ifHeader,
                                      @HeaderParam(value="depth")
                                      String depthHeader,
                                      @HeaderParam(value="Overwrite")
                                      String overwriteHeader,
                                      @Context
                                      javax.ws.rs.core.UriInfo uriInfo,
                                      org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
copy in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
destinationHeader - Destination HTTP Header
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
depthHeader - Depth HTTP header
overwriteHeader - Overwrite HTTP header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

delete

public javax.ws.rs.core.Response delete(String repoName,
                                        String repoPath,
                                        @HeaderParam(value="lock-token")
                                        String lockTokenHeader,
                                        @HeaderParam(value="If")
                                        String ifHeader)
Specified by:
delete in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

get

public javax.ws.rs.core.Response get(String repoName,
                                     String repoPath,
                                     @HeaderParam(value="Range")
                                     String rangeHeader,
                                     @HeaderParam(value="If-Modified-Since")
                                     String ifModifiedSince,
                                     @HeaderParam(value="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:
get in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
rangeHeader - Range HTTP header
version - version name
ifModifiedSince - if-modified-since header
ifNoneMatch - if-none-match header
uriInfo - base URI info
Returns:
the instance of javax.ws.rs.core.Response

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:
head in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
uriInfo - base URI info
Returns:
the instance of javax.ws.rs.core.Response

lock

public javax.ws.rs.core.Response lock(String repoName,
                                      String repoPath,
                                      @HeaderParam(value="lock-token")
                                      String lockTokenHeader,
                                      @HeaderParam(value="If")
                                      String ifHeader,
                                      @HeaderParam(value="depth")
                                      String depthHeader,
                                      org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
lock in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
depthHeader - Depth HTTP header
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

unlock

public javax.ws.rs.core.Response unlock(String repoName,
                                        String repoPath,
                                        @HeaderParam(value="lock-token")
                                        String lockTokenHeader,
                                        @HeaderParam(value="If")
                                        String ifHeader)
Specified by:
unlock in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

mkcol

public javax.ws.rs.core.Response mkcol(String repoName,
                                       String repoPath,
                                       @HeaderParam(value="lock-token")
                                       String lockTokenHeader,
                                       @HeaderParam(value="If")
                                       String ifHeader,
                                       @HeaderParam(value="Folder-NodeType")
                                       String folderNodeTypeHeader,
                                       @HeaderParam(value="Content-MixinTypes")
                                       String mixinTypesHeader,
                                       @Context
                                       javax.ws.rs.core.UriInfo uriInfo)
Specified by:
mkcol in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
folderNodeTypeHeader - JCR Node-Type header
mixinTypesHeader - JCR Mixin-Types header
Returns:
the instance of javax.ws.rs.core.Response

move

public javax.ws.rs.core.Response move(String repoName,
                                      String repoPath,
                                      @HeaderParam(value="Destination")
                                      String destinationHeader,
                                      @HeaderParam(value="lock-token")
                                      String lockTokenHeader,
                                      @HeaderParam(value="If")
                                      String ifHeader,
                                      @HeaderParam(value="depth")
                                      String depthHeader,
                                      @HeaderParam(value="Overwrite")
                                      String overwriteHeader,
                                      @Context
                                      javax.ws.rs.core.UriInfo uriInfo,
                                      org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
move in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
destinationHeader - Destination HTTP header
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
depthHeader - Depth HTTP header
overwriteHeader - Overwrite HTTP header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

options

public javax.ws.rs.core.Response options(String path)
Specified by:
options in interface WebDavService
Parameters:
repoName - repository name
Returns:
the instance of javax.ws.rs.core.Response

order

public javax.ws.rs.core.Response order(String repoName,
                                       String repoPath,
                                       @HeaderParam(value="lock-token")
                                       String lockTokenHeader,
                                       @HeaderParam(value="If")
                                       String ifHeader,
                                       @Context
                                       javax.ws.rs.core.UriInfo uriInfo,
                                       org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
order in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

propfind

public javax.ws.rs.core.Response propfind(String repoName,
                                          String repoPath,
                                          @HeaderParam(value="depth")
                                          String depthHeader,
                                          @Context
                                          javax.ws.rs.core.UriInfo uriInfo,
                                          org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
propfind in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
depthHeader - Depth HTTP header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response HTTP response

proppatch

public javax.ws.rs.core.Response proppatch(String repoName,
                                           String repoPath,
                                           @HeaderParam(value="lock-token")
                                           String lockTokenHeader,
                                           @HeaderParam(value="If")
                                           String ifHeader,
                                           @Context
                                           javax.ws.rs.core.UriInfo uriInfo,
                                           org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
proppatch in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response HTTP response

put

public javax.ws.rs.core.Response put(String repoName,
                                     String repoPath,
                                     @HeaderParam(value="lock-token")
                                     String lockTokenHeader,
                                     @HeaderParam(value="If")
                                     String ifHeader,
                                     @HeaderParam(value="File-NodeType")
                                     String fileNodeTypeHeader,
                                     @HeaderParam(value="Content-NodeType")
                                     String contentNodeTypeHeader,
                                     @HeaderParam(value="Content-MixinTypes")
                                     String mixinTypes,
                                     @HeaderParam(value="Content-Type")
                                     javax.ws.rs.core.MediaType mediaType,
                                     @HeaderParam(value="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:
put in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If HTTP Header
fileNodeTypeHeader - JCR NodeType header
contentNodeTypeHeader - JCR Content-NodeType header
mixinTypes - JCR Mixin types header
mediaType - Content-Type HTTP header
userAgent - User-Agent HTTP header
inputStream - stream that contain incoming data
uriInfo - URI info
Returns:
the instance of javax.ws.rs.core.Response

report

public javax.ws.rs.core.Response report(String repoName,
                                        String repoPath,
                                        @HeaderParam(value="depth")
                                        String depthHeader,
                                        @Context
                                        javax.ws.rs.core.UriInfo uriInfo,
                                        org.exoplatform.common.util.HierarchicalProperty body)
Specified by:
report in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
depthHeader - Depth HTTP header
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

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:
search in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
uriInfo - base URI info
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

uncheckout

public javax.ws.rs.core.Response uncheckout(String repoName,
                                            String repoPath,
                                            @HeaderParam(value="lock-token")
                                            String lockTokenHeader,
                                            @HeaderParam(value="If")
                                            String ifHeader)
Specified by:
uncheckout in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

versionControl

public javax.ws.rs.core.Response versionControl(String repoName,
                                                String repoPath,
                                                @HeaderParam(value="lock-token")
                                                String lockTokenHeader,
                                                @HeaderParam(value="If")
                                                String ifHeader)
Specified by:
versionControl in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
Returns:
the instance of javax.ws.rs.core.Response

acl

public javax.ws.rs.core.Response acl(String repoName,
                                     String repoPath,
                                     @HeaderParam(value="lock-token")
                                     String lockTokenHeader,
                                     @HeaderParam(value="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:
acl in interface WebDavService
Parameters:
repoName - repository name
repoPath - path in repository
lockTokenHeader - Lock-Token HTTP header
ifHeader - If- HTTP Header
body - Request body
Returns:
the instance of javax.ws.rs.core.Response

session

protected javax.jcr.Session session(String repoName,
                                    String wsName,
                                    List<String> lockTokens)
                             throws Exception,
                                    javax.jcr.NoSuchWorkspaceException
Gives access to the current session.

Parameters:
repoName - repository name
wsName - workspace name
lockTokens - Lock tokens
Returns:
current session
Throws:
Exception - Exception
javax.jcr.NoSuchWorkspaceException

getRepositoryName

protected String getRepositoryName(String repoName)
                            throws javax.jcr.RepositoryException
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

protected String workspaceName(String repoPath)
Extracts workspace name from repository path.

Parameters:
repoPath - repository path
Returns:
workspace name

normalizePath

protected String normalizePath(String repoPath)
Normalizes path.

Parameters:
repoPath - repository path
Returns:
normalized path.

path

protected String path(String repoPath)
Extracts path from repository path.

Parameters:
repoPath - repository path
Returns:
path

lockTokens

protected List<String> lockTokens(String lockTokenHeader,
                                  String ifHeader)
Creates the list of Lock tokens from Lock-Token and If headers.

Parameters:
lockTokenHeader - Lock-Token HTTP header
ifHeader - If HTTP header
Returns:
the list of lock tokens

eXo JCR :: Component :: Webdav Service 1.15.10-GA

Copyright © 2014 eXo Platform SAS. All Rights Reserved.