org.apache.jackrabbit.webdav.jcr.version
Class VersionItemCollection

java.lang.Object
  extended by org.apache.jackrabbit.webdav.jcr.DefaultItemCollection
      extended by org.apache.jackrabbit.webdav.jcr.version.VersionItemCollection
All Implemented Interfaces:
JcrRemotingConstants, DavResource, ItemResourceConstants, ObservationResource, OrderingResource, SearchResource, TransactionResource, DeltaVResource, VersionResource

public class VersionItemCollection
extends DefaultItemCollection
implements VersionResource

VersionItemCollection represents a JCR version.

See Also:
Version

Field Summary
protected  boolean initedProps
           
protected  Item item
           
protected  DavPropertySet properties
           
protected  SupportedLock supportedLock
           
protected  SupportedReportSetProperty supportedReports
           
 
Fields inherited from interface org.apache.jackrabbit.webdav.version.VersionResource
ACTIVITY_SET, CHECKIN_FORK, CHECKOUT_FORK, CHECKOUT_SET, LABEL_NAME_SET, METHODS, PREDECESSOR_SET, SUCCESSOR_SET, VERSION_CONTROLLED_BINDING_SET, VERSION_HISTORY, VERSION_NAME
 
Fields inherited from interface org.apache.jackrabbit.webdav.version.DeltaVResource
METHODS_INCL_MKWORKSPACE
 
Fields inherited from interface org.apache.jackrabbit.webdav.ordering.OrderingResource
METHODS
 
Fields inherited from interface org.apache.jackrabbit.webdav.observation.ObservationResource
METHODS
 
Fields inherited from interface org.apache.jackrabbit.webdav.jcr.ItemResourceConstants
EXCLUSIVE_SESSION, JCR_DEFINITION, JCR_DEPTH, JCR_INDEX, JCR_ISMODIFIED, JCR_ISNEW, JCR_LENGTH, JCR_LENGTHS, JCR_MIXINNODETYPES, JCR_NAME, JCR_NAMESPACES, JCR_PARENT, JCR_PATH, JCR_PRIMARYITEM, JCR_PRIMARYNODETYPE, JCR_REFERENCES, JCR_SELECTOR_NAME, JCR_TYPE, JCR_UUID, JCR_VALUE, JCR_VALUES, JCR_VERSIONABLEUUID, JCR_WEAK_REFERENCES, JCR_WORKSPACE_NAME, METHODS, NAMESPACE, PRIVILEGE_JCR_ADD_NODE, PRIVILEGE_JCR_READ, PRIVILEGE_JCR_REMOVE, PRIVILEGE_JCR_SET_PROPERTY
 
Fields inherited from interface org.apache.jackrabbit.commons.webdav.JcrRemotingConstants
ATTR_VALUE_TYPE, IMPORT_UUID_BEHAVIOR, JCR_DEFINITION_LN, JCR_DEPTH_LN, JCR_INDEX_LN, JCR_ISMODIFIED_LN, JCR_ISNEW_LN, JCR_LENGTH_LN, JCR_LENGTHS_LN, JCR_MIXINNODETYPES_LN, JCR_NAME_LN, JCR_NAMESPACES_LN, JCR_PARENT_LN, JCR_PATH_LN, JCR_PRIMARYITEM_LN, JCR_PRIMARYNODETYPE_LN, JCR_QUERY_RESULT_LN, JCR_REFERENCES_LN, JCR_SELECTOR_NAME_LN, JCR_TYPE_LN, JCR_UUID_LN, JCR_VALUE_LN, JCR_VALUES_LN, JCR_VERSIONABLEUUID_LN, JCR_WEAK_REFERENCES_LN, JCR_WORKSPACE_NAME_LN, NS_PREFIX, NS_URI, REPORT_EXPORT_VIEW, REPORT_LOCATE_BY_UUID, REPORT_LOCATE_CORRESPONDING_NODE, REPORT_NODETYPES, REPORT_PRIVILEGES, REPORT_REGISTERED_NAMESPACES, REPORT_REPOSITORY_DESCRIPTORS, ROOT_ITEM_PATH, ROOT_ITEM_RESOURCEPATH, VERSIONSTORAGE_PATH, XML_DESCRIPTOR, XML_DESCRIPTORKEY, XML_DESCRIPTORVALUE, XML_EXCLUSIVE_SESSION_SCOPED, XML_LENGTH, XML_NAMESPACE, XML_PREFIX, XML_PRIMARYNODETYPE, XML_QUERY_RESULT_COLUMN, XML_RELPATH, XML_REMOVEEXISTING, XML_URI, XML_VALUE
 
Fields inherited from interface org.apache.jackrabbit.webdav.transaction.TransactionResource
METHODS
 
Fields inherited from interface org.apache.jackrabbit.webdav.search.SearchResource
METHODS
 
Constructor Summary
VersionItemCollection(DavResourceLocator locator, JcrDavSession session, DavResourceFactory factory, Item item)
          Create a new VersionItemCollection.
 
Method Summary
 void addLockManager(LockManager lockMgr)
          Add an external LockManager to this resource.
 void addWorkspace(DavResource workspace)
          The JCR api does not provide methods to create new workspaces.
 void copy(DavResource destination, boolean shallow)
          Copies the underlying repository item to the indicated destination.
protected  DavResource createResourceFromLocator(DavResourceLocator loc)
          Create a new DavResource from the given locator.
 boolean exists()
          Returns true if there exists a repository item with the given resource path, false otherwise.
 DavResource getCollection()
          Returns the resource representing the parent item of the repository item represented by this resource.
 String getDisplayName()
          Retrieves the last segment of the item path (or the resource path if this resource does not exist).
 DavResourceFactory getFactory()
          Return the DavResourceFactory that created this resource.
 String getHref()
          Returns the absolute href of this resource as returned in the multistatus response body.
protected static String getItemName(String itemPath)
          Retrieves the last segment of the given path and removes the index if present.
 DavResourceLocator getLocator()
          Returns the locator object for this webdav resource, which encapsulates the information for building the complete 'href'.
protected  DavResourceLocator getLocatorFromItem(Item repositoryItem)
          Build a new DavResourceLocator from the given repository item.
protected  DavResourceLocator getLocatorFromItemPath(String itemPath)
          Build a DavResourceLocator from the given itemPath path.
 ActiveLock[] getLocks()
          Returns an array of all locks applied to the given resource.
 OptionsResponse getOptionResponse(OptionsInfo optionsInfo)
          Retrieves the information requested in the OPTIONS request body and returns the corresponding values.
 DavPropertySet getProperties()
          Returns all webdav properties present on this resource.
 DavProperty<?> getProperty(DavPropertyName name)
          Return the webdav property with the specified name.
 DavPropertyName[] getPropertyNames()
          Returns an array of all property names available on this resource.
 QueryGrammerSet getQueryGrammerSet()
          Returns the protected DAV:supported-method-set property which is defined mandatory by RTF 3253.
 DavResource[] getReferenceResources(DavPropertyName hrefPropertyName)
          Return an array of DavResource objects that are referenced by the property with the specified name.
 Report getReport(ReportInfo reportInfo)
          Runs the report specified by the given ReportInfo.
protected  Session getRepositorySession()
          Shortcut for getSession().getRepositorySession()
 String getResourcePath()
          Returns the path of the underlying repository item or the item to be created (PUT/MKCOL).
 DavSession getSession()
          Retrieve the DavSession associated with this resource.
 String getSupportedMethods()
          Returns a comma separated list of all METHODS supported by the given resource.
 String getTransactionId()
          The TransactionId or null according to the value of the corresponding request header field.
 VersionHistoryResource getVersionHistory()
          Returns the VersionHistory associated with the repository version.
protected  String getWorkspaceHref()
          Retrieve the href of the workspace the current session belongs to.
 void init(SubscriptionManager subsMgr)
          Initializes this resource.
 void init(TxLockManager txMgr, String transactionId)
          Initializes the TransactionResource.
protected  void initProperties()
          Fill the property set for this resource.
protected  void initSupportedReports()
          Define the set of reports supported by this resource.
 boolean isLockable(Type type, Scope scope)
          Returns true, if the SupportedLock property contains an entry with the given type and scope.
 void label(LabelInfo labelInfo)
          Modify the labels defined for the underlying repository version.
 void move(DavResource destination)
          Moves the underlying repository item to the indicated destination.
 EventDiscovery poll(String subscriptionId, long timeout)
          Retrieve the list of events that where recorded for the event listener with the given SubscriptionId.
 MultiStatus search(SearchInfo sInfo)
          Runs a search with the language and query defined in the SearchInfo object specified and returns a MultiStatus object listing the results.
 Subscription subscribe(SubscriptionInfo info, String subscriptionId)
          Subscribe this resource for event listening defined by the specified subscription info.
 void unlock(String lockToken, TransactionInfo tInfo)
          Overloads the unlock method of the DavResource interface.
 void unsubscribe(String subscriptionId)
          Unsubscribe the event listener with the given SubscriptionId.
 
Methods inherited from class org.apache.jackrabbit.webdav.jcr.DefaultItemCollection
addHrefProperty, addHrefProperty, addHrefProperty, addMember, alterProperties, getComplianceClass, getLock, getMembers, getModificationTime, hasLock, initLockSupport, isCollection, isOrderable, lock, orderMembers, refreshLock, removeMember, removeProperty, setProperty, spool, unlock
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.jackrabbit.webdav.version.DeltaVResource
addWorkspace, getOptionResponse, getReferenceResources, getReport
 
Methods inherited from interface org.apache.jackrabbit.webdav.DavResource
addLockManager, addMember, alterProperties, copy, exists, getCollection, getComplianceClass, getDisplayName, getFactory, getHref, getLocator, getLock, getLocks, getMembers, getModificationTime, getProperties, getProperty, getPropertyNames, getResourcePath, getSession, hasLock, isCollection, isLockable, lock, move, refreshLock, removeMember, removeProperty, setProperty, spool, unlock
 

Field Detail

item

protected final Item item

initedProps

protected boolean initedProps

properties

protected DavPropertySet properties

supportedLock

protected SupportedLock supportedLock

supportedReports

protected SupportedReportSetProperty supportedReports
Constructor Detail

VersionItemCollection

public VersionItemCollection(DavResourceLocator locator,
                             JcrDavSession session,
                             DavResourceFactory factory,
                             Item item)
Create a new VersionItemCollection.

Parameters:
locator -
session -
factory -
Method Detail

getSupportedMethods

public String getSupportedMethods()
Description copied from interface: DavResource
Returns a comma separated list of all METHODS supported by the given resource.

Specified by:
getSupportedMethods in interface DavResource
Overrides:
getSupportedMethods in class DefaultItemCollection
Returns:
METHODS supported by this resource.
See Also:
DavResource.getSupportedMethods()

label

public void label(LabelInfo labelInfo)
           throws DavException
Modify the labels defined for the underlying repository version.

Specified by:
label in interface VersionResource
Parameters:
labelInfo -
Throws:
DavException
See Also:
VersionResource.label(org.apache.jackrabbit.webdav.version.LabelInfo), VersionHistory.addVersionLabel(String, String, boolean), VersionHistory.removeVersionLabel(String)

getVersionHistory

public VersionHistoryResource getVersionHistory()
                                         throws DavException
Returns the VersionHistory associated with the repository version. Note: in contrast to a versionable node, the version history of a version item is always represented by its nearest ancestor.

Specified by:
getVersionHistory in interface VersionResource
Returns:
the VersionHistoryResource associated with this resource.
Throws:
DavException
See Also:
VersionResource.getVersionHistory(), Item.getParent()

initSupportedReports

protected void initSupportedReports()
Define the set of reports supported by this resource.

Overrides:
initSupportedReports in class DefaultItemCollection
See Also:
SupportedReportSetProperty

initProperties

protected void initProperties()
Fill the property set for this resource.

Overrides:
initProperties in class DefaultItemCollection

exists

public boolean exists()
Returns true if there exists a repository item with the given resource path, false otherwise.

Specified by:
exists in interface DavResource
Returns:
true, if the resource represents an existing repository item.
See Also:
DavResource.exists()

getDisplayName

public String getDisplayName()
Retrieves the last segment of the item path (or the resource path if this resource does not exist). An item path is in addition first translated to the corresponding resource path.
NOTE: the displayname is not equivalent to item name which is exposed with the {http://www.day.com/jcr/webdav/1.0}name property.

Specified by:
getDisplayName in interface DavResource
Returns:
display name.
See Also:
DavResource.getDisplayName()

getCollection

public DavResource getCollection()
Returns the resource representing the parent item of the repository item represented by this resource. If this resoure represents the root item a RootCollection is returned.

Specified by:
getCollection in interface DavResource
Returns:
the collection this resource is internal member of. Except for the repository root, the returned collection always represent the parent repository node.
See Also:
DavResource.getCollection()

move

public void move(DavResource destination)
          throws DavException
Moves the underlying repository item to the indicated destination.

Specified by:
move in interface DavResource
Parameters:
destination -
Throws:
DavException
See Also:
DavResource.move(DavResource), Session.move(String, String)

copy

public void copy(DavResource destination,
                 boolean shallow)
          throws DavException
Copies the underlying repository item to the indicated destination. If the locator of the specified destination resource indicates a different workspace, Workspace.copy(String, String, String) is used to perform the copy operation, Workspace.copy(String, String) otherwise.

Note, that this implementation does not support shallow copy.

Specified by:
copy in interface DavResource
Parameters:
destination -
shallow -
Throws:
DavException
See Also:
DavResource.copy(DavResource, boolean), Workspace.copy(String, String), Workspace.copy(String, String, String)

init

public void init(SubscriptionManager subsMgr)
Description copied from interface: ObservationResource
Initializes this resource.

Specified by:
init in interface ObservationResource
Parameters:
subsMgr - subscription manager object
See Also:
ObservationResource.init(SubscriptionManager)

subscribe

public Subscription subscribe(SubscriptionInfo info,
                              String subscriptionId)
                       throws DavException
Description copied from interface: ObservationResource
Subscribe this resource for event listening defined by the specified subscription info. A subscriptionId may be specified in case an existing subscription should be modified.

Specified by:
subscribe in interface ObservationResource
Parameters:
info - SubscriptionInfo object as defined by the request body and headers.
subscriptionId - or null if the SubscriptionId header is missing.
Returns:
Subscription object in case the subscription was successful.
Throws:
DavException
See Also:
ObservationResource.subscribe(org.apache.jackrabbit.webdav.observation.SubscriptionInfo, String), SubscriptionManager.subscribe(org.apache.jackrabbit.webdav.observation.SubscriptionInfo, String, org.apache.jackrabbit.webdav.observation.ObservationResource)

unsubscribe

public void unsubscribe(String subscriptionId)
                 throws DavException
Description copied from interface: ObservationResource
Unsubscribe the event listener with the given SubscriptionId.

Specified by:
unsubscribe in interface ObservationResource
Parameters:
subscriptionId - as present in the SubscriptionId header.
Throws:
DavException
See Also:
ObservationResource.unsubscribe(String), SubscriptionManager.unsubscribe(String, org.apache.jackrabbit.webdav.observation.ObservationResource)

poll

public EventDiscovery poll(String subscriptionId,
                           long timeout)
                    throws DavException
Description copied from interface: ObservationResource
Retrieve the list of events that where recorded for the event listener with the given SubscriptionId.

Specified by:
poll in interface ObservationResource
Parameters:
subscriptionId - as present in the SubscriptionId header.
timeout - as present in the ObservationConstants.HEADER_POLL_TIMEOUT header or 0 (zero) if none is present.
Returns:
EventDiscovery object
Throws:
DavException
See Also:
ObservationResource.poll(String, long), SubscriptionManager.poll(String, long, org.apache.jackrabbit.webdav.observation.ObservationResource)

getWorkspaceHref

protected String getWorkspaceHref()
Retrieve the href of the workspace the current session belongs to.

Returns:
href of the workspace or null if this resource does not represent a repository item.
See Also:
AbstractResource.getWorkspaceHref()

getItemName

protected static String getItemName(String itemPath)
Retrieves the last segment of the given path and removes the index if present.

Parameters:
itemPath -
Returns:
valid jcr item name

getLocator

public DavResourceLocator getLocator()
Description copied from interface: DavResource
Returns the locator object for this webdav resource, which encapsulates the information for building the complete 'href'.

Specified by:
getLocator in interface DavResource
Returns:
the locator for this resource.
See Also:
DavResource.getLocator()

getResourcePath

public String getResourcePath()
Returns the path of the underlying repository item or the item to be created (PUT/MKCOL). If the resource exists but does not represent a repository item null is returned.

Specified by:
getResourcePath in interface DavResource
Returns:
path of the underlying repository item.
See Also:
DavResource.getResourcePath(), DavResourceLocator.getResourcePath()

getHref

public String getHref()
Description copied from interface: DavResource
Returns the absolute href of this resource as returned in the multistatus response body.

Specified by:
getHref in interface DavResource
Returns:
href
See Also:
DavResource.getHref(), DavResourceLocator.getHref(boolean)

getPropertyNames

public DavPropertyName[] getPropertyNames()
Description copied from interface: DavResource
Returns an array of all property names available on this resource.

Specified by:
getPropertyNames in interface DavResource
Returns:
an array of property names.
See Also:
DavResource.getPropertyNames()

getProperty

public DavProperty<?> getProperty(DavPropertyName name)
Description copied from interface: DavResource
Return the webdav property with the specified name.

Specified by:
getProperty in interface DavResource
Parameters:
name - name of the webdav property
Returns:
the DavProperty with the given name or null if the property does not exist.
See Also:
DavResource.getProperty(org.apache.jackrabbit.webdav.property.DavPropertyName)

getProperties

public DavPropertySet getProperties()
Description copied from interface: DavResource
Returns all webdav properties present on this resource.

Specified by:
getProperties in interface DavResource
Returns:
a DavPropertySet containing all webdav property of this resource.
See Also:
DavResource.getProperties()

isLockable

public boolean isLockable(Type type,
                          Scope scope)
Returns true, if the SupportedLock property contains an entry with the given type and scope. By default resources allow for transaction lock only.

Specified by:
isLockable in interface DavResource
Parameters:
type -
scope -
Returns:
true if this resource may be locked by the given type and scope.
See Also:
DavResource.isLockable(org.apache.jackrabbit.webdav.lock.Type, org.apache.jackrabbit.webdav.lock.Scope)

getLocks

public ActiveLock[] getLocks()
Description copied from interface: DavResource
Returns an array of all locks applied to the given resource.

Specified by:
getLocks in interface DavResource
Returns:
array of locks. The array is empty if there are no locks applied to this resource.
See Also:
todo improve....

addLockManager

public void addLockManager(LockManager lockMgr)
Description copied from interface: DavResource
Add an external LockManager to this resource. This method may throw UnsupportedOperationException if the resource does handle locking itself.

Specified by:
addLockManager in interface DavResource
See Also:
DavResource.addLockManager(org.apache.jackrabbit.webdav.lock.LockManager)

getFactory

public DavResourceFactory getFactory()
Description copied from interface: DavResource
Return the DavResourceFactory that created this resource.

Specified by:
getFactory in interface DavResource
Returns:
the factory that created this resource.
See Also:
DavResource.getFactory()

getSession

public DavSession getSession()
Description copied from interface: DavResource
Retrieve the DavSession associated with this resource.

Specified by:
getSession in interface DavResource
Returns:
session object associated with this resource.
See Also:
DavResource.getSession(), DavResource.getSession()

init

public void init(TxLockManager txMgr,
                 String transactionId)
Description copied from interface: TransactionResource
Initializes the TransactionResource.

Specified by:
init in interface TransactionResource
See Also:
TransactionResource.init(TxLockManager, String)

unlock

public void unlock(String lockToken,
                   TransactionInfo tInfo)
            throws DavException
Description copied from interface: TransactionResource
Overloads the unlock method of the DavResource interface.

Specified by:
unlock in interface TransactionResource
Parameters:
lockToken - lock token as present in the request header.
tInfo - transaction info object as present in the UNLOCK request body.
Throws:
DavException - if an error occurs
See Also:
TransactionResource.unlock(String, org.apache.jackrabbit.webdav.transaction.TransactionInfo)

getTransactionId

public String getTransactionId()
Description copied from interface: TransactionResource
The TransactionId or null according to the value of the corresponding request header field.

Specified by:
getTransactionId in interface TransactionResource
Returns:
TransactionId header or null
See Also:
TransactionResource.getTransactionId()

getOptionResponse

public OptionsResponse getOptionResponse(OptionsInfo optionsInfo)
Description copied from interface: DeltaVResource
Retrieves the information requested in the OPTIONS request body and returns the corresponding values.

Specified by:
getOptionResponse in interface DeltaVResource
Parameters:
optionsInfo -
Returns:
object to be used in the OPTIONS response body or null
See Also:
DeltaVResource.getOptionResponse(org.apache.jackrabbit.webdav.version.OptionsInfo)

getReport

public Report getReport(ReportInfo reportInfo)
                 throws DavException
Description copied from interface: DeltaVResource
Runs the report specified by the given ReportInfo.

Specified by:
getReport in interface DeltaVResource
Parameters:
reportInfo -
Returns:
the requested report
Throws:
DavException
See Also:
DeltaVResource.getReport(org.apache.jackrabbit.webdav.version.report.ReportInfo)

addWorkspace

public void addWorkspace(DavResource workspace)
                  throws DavException
The JCR api does not provide methods to create new workspaces. Calling addWorkspace on this resource will always fail.

Specified by:
addWorkspace in interface DeltaVResource
Parameters:
workspace -
Throws:
DavException - Always throws.
See Also:
DeltaVResource.addWorkspace(org.apache.jackrabbit.webdav.DavResource)

getReferenceResources

public DavResource[] getReferenceResources(DavPropertyName hrefPropertyName)
                                    throws DavException
Return an array of DavResource objects that are referenced by the property with the specified name.

Specified by:
getReferenceResources in interface DeltaVResource
Parameters:
hrefPropertyName -
Returns:
array of DavResources
Throws:
DavException
See Also:
DeltaVResource.getReferenceResources(org.apache.jackrabbit.webdav.property.DavPropertyName)

getQueryGrammerSet

public QueryGrammerSet getQueryGrammerSet()
Description copied from interface: SearchResource
Returns the protected DAV:supported-method-set property which is defined mandatory by RTF 3253. This method call is a shortcut for DavResource.getProperty(SearchConstants.QUERY_GRAMMER_SET).

Specified by:
getQueryGrammerSet in interface SearchResource
Returns:
See Also:
SearchResource.getQueryGrammerSet()

search

public MultiStatus search(SearchInfo sInfo)
                   throws DavException
Description copied from interface: SearchResource
Runs a search with the language and query defined in the SearchInfo object specified and returns a MultiStatus object listing the results.

Specified by:
search in interface SearchResource
Parameters:
sInfo -
Returns:
Throws:
DavException
See Also:
SearchResource.search(org.apache.jackrabbit.webdav.search.SearchInfo)

createResourceFromLocator

protected DavResource createResourceFromLocator(DavResourceLocator loc)
                                         throws DavException
Create a new DavResource from the given locator.

Parameters:
loc -
Returns:
new DavResource
Throws:
DavException

getLocatorFromItemPath

protected DavResourceLocator getLocatorFromItemPath(String itemPath)
Build a DavResourceLocator from the given itemPath path.

Parameters:
itemPath -
Returns:
a new DavResourceLocator
See Also:
DavLocatorFactory.createResourceLocator(String, String, String)

getLocatorFromItem

protected DavResourceLocator getLocatorFromItem(Item repositoryItem)
Build a new DavResourceLocator from the given repository item.

Parameters:
repositoryItem -
Returns:
a new locator for the specified item.
See Also:
getLocatorFromItemPath(String)

getRepositorySession

protected Session getRepositorySession()
Shortcut for getSession().getRepositorySession()

Returns:
repository session present in the AbstractResource.session.


Copyright © 2004-2010 The Apache Software Foundation. All Rights Reserved.