org.alfresco.repo.avm
Class AVMLockingAwareService

java.lang.Object
  extended by org.alfresco.repo.avm.AVMLockingAwareService
All Implemented Interfaces:
AVMService, org.springframework.context.ApplicationContextAware

public class AVMLockingAwareService
extends java.lang.Object
implements AVMService, org.springframework.context.ApplicationContextAware

An AVMLockingService aware implemantation of AVMService.


Constructor Summary
AVMLockingAwareService()
           
 
Method Summary
 void addAspect(java.lang.String path, QName aspectName)
          Add an aspect to an AVM node.
 void copy(int srcVersion, java.lang.String srcPath, java.lang.String dstPath, java.lang.String name)
          Perform a non-virtual (heavy-weight), and potentially recursive copy of the source into the destination directory.
 void createBranch(int version, java.lang.String srcPath, java.lang.String dstPath, java.lang.String name)
          Create a branch from a given version and path.
 void createDirectory(java.lang.String path, java.lang.String name)
          Create a new directory.
 void createDirectory(java.lang.String path, java.lang.String name, java.util.List aspects, java.util.Map properties)
          Create a new directory with aspects and properties.
 java.io.OutputStream createFile(java.lang.String path, java.lang.String name)
          Create a new "plain" (non-layered) file within a path.
 void createFile(java.lang.String path, java.lang.String name, java.io.InputStream in)
          Create a new "plain" (non-layered) file.
 void createFile(java.lang.String path, java.lang.String name, java.io.InputStream in, java.util.List aspects, java.util.Map properties)
          Create a new "plain" (non-layered) file with aspects and properties.
 void createLayeredDirectory(java.lang.String targetPath, java.lang.String parent, java.lang.String name)
          Create a new layered directory.
 void createLayeredFile(java.lang.String targetPath, java.lang.String parent, java.lang.String name)
          Create a new layered file.
 java.util.Map createSnapshot(java.lang.String store, java.lang.String tag, java.lang.String description)
          Snapshot the given AVMStore.
 void createStore(java.lang.String name)
          Create a new AVMStore.
 void deleteNodeProperties(java.lang.String path)
          Delete all the properties attached to an AVM node.
 void deleteNodeProperty(java.lang.String path, QName name)
          Delete a property.
 void deleteStoreProperty(java.lang.String store, QName name)
          Delete a property on a store by name.
 AVMNodeDescriptor forceCopy(java.lang.String path)
          Low-level internal function:   Force a copy on write write event on the given node.
 org.alfresco.util.Pair getAPath(AVMNodeDescriptor desc)
          Get a single valid path to a given node.
 java.util.Set getAspects(AVMNodeDescriptor desc)
          Get all the aspects from a node descriptor.
 java.util.Set getAspects(int version, java.lang.String path)
          Get all the aspects on an AVM node.
 AVMNodeDescriptor getCommonAncestor(AVMNodeDescriptor left, AVMNodeDescriptor right)
          Get the common ancestor of two nodes if a common ancestor exists.
 ContentData getContentDataForRead(AVMNodeDescriptor desc)
          Get ContentData using only a node descriptor.
 ContentData getContentDataForRead(int version, java.lang.String path)
          Low-level internal function:   Get the ContentData for a node in a read context.
 ContentData getContentDataForWrite(java.lang.String path)
          Low-level internal function:   Get the ContentData for a node in a write context.
 ContentReader getContentReader(int version, java.lang.String path)
          Low-level internal function:   Fetch a content reader for a file node.
 ContentWriter getContentWriter(java.lang.String path)
          Low-level internal function:   Fetch a ContentWriter to a file node.
 java.util.List getDeleted(int version, java.lang.String path)
          Non-recursively get the names of nodes that have been deleted in a directory identified by a version ID and a path
 java.util.SortedMap getDirectoryListing(AVMNodeDescriptor dir)
          Get a non-recursive directory listing of a directory node identified by a node descriptor.
 java.util.SortedMap getDirectoryListing(AVMNodeDescriptor dir, boolean includeDeleted)
          Get a non-recursive directory listing of a directory identified by a node descriptor; optionally, deleted nodes can be included in this listing.
 java.util.SortedMap getDirectoryListing(int version, java.lang.String path)
          Get a non-recursive listing of a directory identified by its version ID and path.
 java.util.SortedMap getDirectoryListing(int version, java.lang.String path, boolean includeDeleted)
          Get a non-recursive listing of a directory node identified by its version ID and path; optionally, deleted notes can be included in this listing.
 AVMNodeDescriptor[] getDirectoryListingArray(AVMNodeDescriptor dir, boolean includeDeleted)
          A convenience method to get a non-recursive directory listing as an Array from a directory identified by a node descriptor; optionally, deleted nodes can be included in this listing.
 AVMNodeDescriptor[] getDirectoryListingArray(int version, java.lang.String path, boolean includeDeleted)
          A convenience method to get a directory listing as an Array of AVMNodeDescriptors; this function is otherwise equivalent to getDirectoryListing
 java.util.SortedMap getDirectoryListingDirect(AVMNodeDescriptor dir, boolean includeDeleted)
          Get a non-recursive listing of all the nodes contained by a directory identified by an AVMNodeDescriptor, excluding those that are only present "indirectly" via layering; optionally, deleted nodes that are directly contained can be included this listing.
 java.util.SortedMap getDirectoryListingDirect(int version, java.lang.String path)
          Get a non-recursive listing of nodes contained by a directory identified by its version ID and path, but exclude all nodes that are only contained "indirectly" via layering.
 java.util.SortedMap getDirectoryListingDirect(int version, java.lang.String path, boolean includeDeleted)
          Get a non-recursive listing of nodes contained directly, but exclude all nodes that are only contained "indirectly" (i.e.: via layering).
 java.io.InputStream getFileInputStream(AVMNodeDescriptor desc)
          Get an InputStream for reading the contents of a file node identified by its descriptor.
 java.io.InputStream getFileInputStream(int version, java.lang.String path)
          Get an InputStream for reading the contents of a file identified by its version ID and AVM path.
 java.io.OutputStream getFileOutputStream(java.lang.String path)
          Get an output stream to write to a file identified by an AVM path.
 java.util.List getHeadPaths(AVMNodeDescriptor desc)
          Get all paths that a given node has that are in the HEAD version ( -1 ).
 java.util.List getHistory(AVMNodeDescriptor desc, int count)
          Get a list of up to count nodes in the history chain of a node.
 java.lang.String getIndirectionPath(int version, java.lang.String path)
          Get the indirection path for a node in a layered context whether that indirection path is primary or non-primary (or seen via transparency).
 int getLatestSnapshotID(java.lang.String storeName)
          Get the latest snapshot ID of a store.
 LayeringDescriptor getLayeringInfo(int version, java.lang.String path)
          Get layering information about a path.
 int getNextVersionID(java.lang.String storeName)
          Gets the ID that the next snapshotted version of a store will have.
 java.util.Map getNodeProperties(AVMNodeDescriptor desc)
          Get all the properties associated with a node identified by a descriptor.
 java.util.Map getNodeProperties(int version, java.lang.String path)
          Get all the properties associated with a node that is identified by a version ID and a path.
 PropertyValue getNodeProperty(int version, java.lang.String path, QName name)
          Get a property of a node by QName.
 java.util.List getPaths(AVMNodeDescriptor desc)
          Get a list of all paths that a given node has.
 java.util.List getPathsInStoreHead(AVMNodeDescriptor desc, java.lang.String store)
          Get all paths to a node starting at the HEAD version ( -1 ) of a store.
 java.util.List getPathsInStoreVersion(AVMNodeDescriptor desc, java.lang.String store, int version)
          Get all paths to a given node in a single store in a single non-head version.
 AVMStoreDescriptor getStore(java.lang.String name)
          Get a descriptor for an AVMStore.
 java.util.Map getStoreProperties(java.lang.String store)
          Get all the properties associated with a store.
 PropertyValue getStoreProperty(java.lang.String store, QName name)
          Get a property from a store.
 AVMNodeDescriptor getStoreRoot(int version, java.lang.String name)
          A convenience method for getting the specified root directory of an AVMStore (e.g.: "mysite:/").
 java.util.List getStores()
          Get the descriptors of all AVMStores in the repository.
 java.util.List getStoreVersions(java.lang.String name)
          Get the set of versions in an AVMStore.
 java.util.List getStoreVersions(java.lang.String name, java.util.Date from, java.util.Date to)
          Get AVMStore version descriptors by creation date.
 AVMStoreDescriptor getSystemStore()
          Low-level internal function:   Retrieve the reserved "system" store.
 boolean hasAspect(int version, java.lang.String path, QName aspectName)
          Determines whether a node has a particular aspect.
 void init()
           
 void link(java.lang.String parentPath, java.lang.String name, AVMNodeDescriptor toLink)
          Low-level internal function:   Insert a node into a parent directly.
 AVMNodeDescriptor lookup(AVMNodeDescriptor dir, java.lang.String name)
          Lookup a node identified by the directory node that contains it, and its name.
 AVMNodeDescriptor lookup(AVMNodeDescriptor dir, java.lang.String name, boolean includeDeleted)
          Lookup a node identified by the directory that contains it, and its name; optionally, the lookup can retrive the descriptor of a node even if it has been deleted from its containing directory.
 AVMNodeDescriptor lookup(int version, java.lang.String path)
          Lookup a node identified by version ID and path.
 AVMNodeDescriptor lookup(int version, java.lang.String path, boolean includeDeleted)
          Lookup a node identified by version ID and path; optionally, if the node is deleted, its descriptor can still be retrieved.
 void makePrimary(java.lang.String path)
          Make a directory into a primary indirection node.
 void makeTransparent(java.lang.String dirPath, java.lang.String name)
          Atomically delete name within dirPath and uncover it so whatever is underneath can be seen via transparency.
 void purgeStore(java.lang.String name)
          Purge an AVMStore.
 void purgeVersion(int version, java.lang.String name)
          Purge a version from an AVMStore.
 java.util.Map queryStorePropertyKey(java.lang.String store, QName keyPattern)
          Queries a given store for properties with keys that match a given pattern.
 java.util.Map queryStoresPropertyKeys(QName keyPattern)
          Queries all AVM stores for properties with keys that match a given pattern.
 void removeAspect(java.lang.String path, QName aspectName)
          Remove an aspect and its properties from a node.
 void removeNode(java.lang.String path)
          A convenience method that removes a node specified by an AVM path.
 void removeNode(java.lang.String parent, java.lang.String name)
          Remove a file or directory from its parent directory.
 void rename(java.lang.String srcParent, java.lang.String srcName, java.lang.String dstParent, java.lang.String dstName)
          Rename a file or directory.
 void renameStore(java.lang.String sourceName, java.lang.String destName)
          Rename a store.
 void retargetLayeredDirectory(java.lang.String path, java.lang.String target)
          Retarget a layered directory.
 void revert(java.lang.String path, AVMNodeDescriptor toRevertTo)
          Revert a HEAD path to a given version.
 void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
           
 void setContentData(java.lang.String path, ContentData data)
          Low-level internal function:   Set the content data on a file.
 void setEncoding(java.lang.String path, java.lang.String encoding)
          Set the encoding.
 void setGuid(java.lang.String path, java.lang.String guid)
          Set the GUID on a node.
 void setMetaDataFrom(java.lang.String path, AVMNodeDescriptor from)
          Set all metadata on a node from another node.
 void setMimeType(java.lang.String path, java.lang.String mimeType)
          Set the mime type.
 void setNodeProperties(java.lang.String path, java.util.Map properties)
          Set a collection of properties on a node.
 void setNodeProperty(java.lang.String path, QName name, PropertyValue value)
          Set a property on a node.
 void setOpacity(java.lang.String path, boolean opacity)
          Set the opacity of a layered directory.
 void setStoreProperties(java.lang.String store, java.util.Map props)
          Set a group of properties on a store.
 void setStoreProperty(java.lang.String store, QName name, PropertyValue value)
          Set a property on a store.
 void uncover(java.lang.String dirPath, java.lang.String name)
          If a layered directory dirPath has a deleted entry of the given name, remove that name from the deleted list, so that if a layer below it contains an entry of this name, it can be seen via transparency from dirPath.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AVMLockingAwareService

public AVMLockingAwareService()
Method Detail

setApplicationContext

public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
                           throws org.springframework.beans.BeansException
Specified by:
setApplicationContext in interface org.springframework.context.ApplicationContextAware
Throws:
org.springframework.beans.BeansException

init

public void init()

addAspect

public void addAspect(java.lang.String path,
                      QName aspectName)
Description copied from interface: AVMService
Add an aspect to an AVM node.

Specified by:
addAspect in interface AVMService
Parameters:
path - The path to the node.
aspectName - The QName of the aspect.

copy

public void copy(int srcVersion,
                 java.lang.String srcPath,
                 java.lang.String dstPath,
                 java.lang.String name)
Description copied from interface: AVMService
Perform a non-virtual (heavy-weight), and potentially recursive copy of the source into the destination directory. All node properties, access control lists (ACLs), and aspects are copied.

Specified by:
copy in interface AVMService
Parameters:
srcVersion - The version of the source.
srcPath - The path of the source directory.
dstPath - The directory containing the destination directory.
name - The name of the destination within dstPath.

createBranch

public void createBranch(int version,
                         java.lang.String srcPath,
                         java.lang.String dstPath,
                         java.lang.String name)
Description copied from interface: AVMService
Create a branch from a given version and path. As a side effect, an automatic snapshot is taken of the store that contains the node that is being branched from.

Specified by:
createBranch in interface AVMService
Parameters:
version - The version number from which to make the branch.
srcPath - The path to the node to branch from.
dstPath - The path to the directory to contain the new branch.
name - The name to give the new branch.

createDirectory

public void createDirectory(java.lang.String path,
                            java.lang.String name)
Description copied from interface: AVMService
Create a new directory. If path is within a layer, the new directory will be a layered directory; otherwise, the new directory will be a plain directory.

Specified by:
createDirectory in interface AVMService
Parameters:
path - The simple absolute path to the parent.
name - The name to give the directory.

createFile

public java.io.OutputStream createFile(java.lang.String path,
                                       java.lang.String name)
Description copied from interface: AVMService
Create a new "plain" (non-layered) file within a path. This function fails if the file already exists, or if the directory identified by path does not exist.

Specified by:
createFile in interface AVMService
Parameters:
path - The path of the directory containing the created file.
name - The name of the new file
Returns:
An opaque handle to a server side output stream.

createFile

public void createFile(java.lang.String path,
                       java.lang.String name,
                       java.io.InputStream in)
Description copied from interface: AVMService
Create a new "plain" (non-layered) file. Guarantees that the entire contents of the input stream will be loaded atomically. The directory identified by path must already exist.

Specified by:
createFile in interface AVMService
Parameters:
path - The path of the directory containing the created file.
name - The name of the new file
in - An input stream with data for the file.

createLayeredDirectory

public void createLayeredDirectory(java.lang.String targetPath,
                                   java.lang.String parent,
                                   java.lang.String name)
Description copied from interface: AVMService
Create a new layered directory. In whatever context this is created, this will be a layered directory that has a primary indirection.

Note: a "primary" indirection is one in which the target is explicitly set; "non-primary" indirect nodes compute their effective target dynamically on the basis of their relative position to the closest "primary" indirect node that contains them. Therefore, changing the target of a "primary" layered directory node immediately alters the indirection targets computed by the "non-primary" layered nodes it contains.

Note: the target of the indirection does not need to exist at the time the layered directory node is created.

Specified by:
createLayeredDirectory in interface AVMService
Parameters:
targetPath - The absolute path to the underlying directory that the layered directory being created will point at.
parent - The absolute path to directory containing the layered directory being created.
name - The name of the layered directory being created

createLayeredFile

public void createLayeredFile(java.lang.String targetPath,
                              java.lang.String parent,
                              java.lang.String name)
Description copied from interface: AVMService
Create a new layered file.

Note: the target of the indirection does not need to exist at the time the layered file node is created.

Specified by:
createLayeredFile in interface AVMService
Parameters:
targetPath - The absolute path of the underlying file being pointed at
parent - The absolute path of the directory containing layered file to be created
name - The name of the layered file to be created

createSnapshot

public java.util.Map createSnapshot(java.lang.String store,
                                    java.lang.String tag,
                                    java.lang.String description)
Description copied from interface: AVMService
Snapshot the given AVMStore. When files have been modified since the previous snapshot, a new snapshot version is created; otherwise, no extra snapshot is actually taken.

When no snapshot is actually taken, but either 'tag' or 'store' are non-null, they will override the value for the last snapshot (i.e.: the old values will be discarded); however, if both 'tag' and 'description' are null then invoking createSnapshot when no files have been modified becomes a true no-op.

Specified by:
createSnapshot in interface AVMService
Parameters:
store - The name of the AVMStore to snapshot.
tag - The short description.
description - The thick description.
Returns:
A Map of all implicitly or explicitly snapshotted stores to last version id.

createStore

public void createStore(java.lang.String name)
Description copied from interface: AVMService
Create a new AVMStore. All stores are top level objects within the AVM repository. The AVM is a forest of versioned trees; each versioned tree is contained within a AVM store with a unique name. If a store is removed via purgeStore, the name of the deleted store can be reused in a later call to createStore.

The store name must be non-null, cannot be the empty string, and must not contain characters that are illegal in normal file names.

Specified by:
createStore in interface AVMService
Parameters:
name - The name of the new AVMStore.

deleteNodeProperties

public void deleteNodeProperties(java.lang.String path)
Description copied from interface: AVMService
Delete all the properties attached to an AVM node.

Note: to remove an apsect, see: removeAspect

Specified by:
deleteNodeProperties in interface AVMService
Parameters:
path - The path to the node.

deleteNodeProperty

public void deleteNodeProperty(java.lang.String path,
                               QName name)
Description copied from interface: AVMService
Delete a property.

Note: to remove an apsect, see: removeAspect

Specified by:
deleteNodeProperty in interface AVMService
Parameters:
path - The path to the node.
name - The QName of the property to delete.

deleteStoreProperty

public void deleteStoreProperty(java.lang.String store,
                                QName name)
Description copied from interface: AVMService
Delete a property on a store by name.

Note: to remove an apsect, see: removeAspect

Specified by:
deleteStoreProperty in interface AVMService
Parameters:
store - The name of the store.
name - The name of the property to delete.

forceCopy

public AVMNodeDescriptor forceCopy(java.lang.String path)
Description copied from interface: AVMService
Low-level internal function:   Force a copy on write write event on the given node. This function is not usually needed, and may be removed from the public interface.

Specified by:
forceCopy in interface AVMService
Parameters:
path - The path to force.

getAPath

public org.alfresco.util.Pair getAPath(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get a single valid path to a given node.

Specified by:
getAPath in interface AVMService
Parameters:
desc - The descriptor of the node to which a version and path will be fetched.
Returns:
version and path.

getPathsInStoreVersion

public java.util.List getPathsInStoreVersion(AVMNodeDescriptor desc,
                                             java.lang.String store,
                                             int version)
Description copied from interface: AVMService
Get all paths to a given node in a single store in a single non-head version.

Specified by:
getPathsInStoreVersion in interface AVMService
Parameters:
desc - The node descriptor.
store - The name of the store.
version - The version.
Returns:
A List of AVM paths.

getAspects

public java.util.Set getAspects(int version,
                                java.lang.String path)
Description copied from interface: AVMService
Get all the aspects on an AVM node.

Specified by:
getAspects in interface AVMService
Parameters:
version - The version to look under.
path - The path to the node.
Returns:
A Set of the QNames of the aspects.

getAspects

public java.util.Set getAspects(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get all the aspects from a node descriptor.

Specified by:
getAspects in interface AVMService
Parameters:
desc - The node descriptor.
Returns:
The Set of Aspects.

getCommonAncestor

public AVMNodeDescriptor getCommonAncestor(AVMNodeDescriptor left,
                                           AVMNodeDescriptor right)
Description copied from interface: AVMService
Get the common ancestor of two nodes if a common ancestor exists. This function is useful for detecting and merging conflicts.

Specified by:
getCommonAncestor in interface AVMService
Parameters:
left - The first node.
right - The second node.
Returns:
The common ancestor. There are four possible results. Null means that there is no common ancestor. Left returned means that left is strictly an ancestor of right. Right returned means that right is strictly an ancestor of left. Any other non null return is the common ancestor and indicates that left and right are in conflict.

getContentDataForRead

public ContentData getContentDataForRead(int version,
                                         java.lang.String path)
Description copied from interface: AVMService
Low-level internal function:   Get the ContentData for a node in a read context. Only applies to a file.

Specified by:
getContentDataForRead in interface AVMService
Parameters:
version - The version to look under.
path - The path to the node.
Returns:
The ContentData object.

getContentDataForRead

public ContentData getContentDataForRead(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get ContentData using only a node descriptor.

Specified by:
getContentDataForRead in interface AVMService
Parameters:
desc - The node descriptor.
Returns:
The ContentData

getContentDataForWrite

public ContentData getContentDataForWrite(java.lang.String path)
Description copied from interface: AVMService
Low-level internal function:   Get the ContentData for a node in a write context.

Specified by:
getContentDataForWrite in interface AVMService
Parameters:
path - The path to the node.
Returns:
The ContentData object.

getContentReader

public ContentReader getContentReader(int version,
                                      java.lang.String path)
Description copied from interface: AVMService
Low-level internal function:   Fetch a content reader for a file node. This function is similar to getFileInputStream; however, it can be used to fetch either InputStream or a random-access nio channel.

Specified by:
getContentReader in interface AVMService
Parameters:
version - The version ID of the file.
path - The absolute AVM path to the file.
Returns:
A ContentReader.

getContentWriter

public ContentWriter getContentWriter(java.lang.String path)
Description copied from interface: AVMService
Low-level internal function:   Fetch a ContentWriter to a file node.

Specified by:
getContentWriter in interface AVMService
Parameters:
path - The path to the file.
Returns:
A ContentWriter.

getDeleted

public java.util.List getDeleted(int version,
                                 java.lang.String path)
Description copied from interface: AVMService
Non-recursively get the names of nodes that have been deleted in a directory identified by a version ID and a path

Specified by:
getDeleted in interface AVMService
Parameters:
version - The version to look under.
path - The path of the directory.
Returns:
A List of names.

getDirectoryListing

public java.util.SortedMap getDirectoryListing(int version,
                                               java.lang.String path)
Description copied from interface: AVMService
Get a non-recursive listing of a directory identified by its version ID and path. If path does not refer to a directory node, AVMWrongTypeException is thrown.

Specified by:
getDirectoryListing in interface AVMService
Parameters:
version - The version ID to look in.
path - The absolute AVM path to the file.
Returns:
A Map of names to descriptors.

getDirectoryListing

public java.util.SortedMap getDirectoryListing(int version,
                                               java.lang.String path,
                                               boolean includeDeleted)
Description copied from interface: AVMService
Get a non-recursive listing of a directory node identified by its version ID and path; optionally, deleted notes can be included in this listing.

If instead, you wish to obtain a list of only the deleted nodes within a directory, see: getDeleted.

Specified by:
getDirectoryListing in interface AVMService
Parameters:
version - The version ID to look in.
path - The absolute AVM path to the file.
includeDeleted - Whether to include deleted nodes
Returns:
A Map of names to descriptors.

getDirectoryListing

public java.util.SortedMap getDirectoryListing(AVMNodeDescriptor dir)
Description copied from interface: AVMService
Get a non-recursive directory listing of a directory node identified by a node descriptor.

Specified by:
getDirectoryListing in interface AVMService
Parameters:
dir - The directory node descriptor.
Returns:
A sorted Map of names to node descriptors.

getDirectoryListing

public java.util.SortedMap getDirectoryListing(AVMNodeDescriptor dir,
                                               boolean includeDeleted)
Description copied from interface: AVMService
Get a non-recursive directory listing of a directory identified by a node descriptor; optionally, deleted nodes can be included in this listing.

Specified by:
getDirectoryListing in interface AVMService
Parameters:
dir - The directory node descriptor.
includeDeleted - Whether to include deleted nodes.
Returns:
A Map of names to node descriptors.

getDirectoryListingArray

public AVMNodeDescriptor[] getDirectoryListingArray(int version,
                                                    java.lang.String path,
                                                    boolean includeDeleted)
Description copied from interface: AVMService
A convenience method to get a directory listing as an Array of AVMNodeDescriptors; this function is otherwise equivalent to getDirectoryListing

Specified by:
getDirectoryListingArray in interface AVMService
Parameters:
version - The version to look under.
path - The path to the directory to be listed.
includeDeleted - Whether to include deleted nodes
Returns:
An array of AVMNodeDescriptors.

getDirectoryListingArray

public AVMNodeDescriptor[] getDirectoryListingArray(AVMNodeDescriptor dir,
                                                    boolean includeDeleted)
Description copied from interface: AVMService
A convenience method to get a non-recursive directory listing as an Array from a directory identified by a node descriptor; optionally, deleted nodes can be included in this listing. This function is identical to getDirectoryListing except that it returns an array.

Specified by:
getDirectoryListingArray in interface AVMService
Parameters:
dir - The descriptor pointing at the directory to list.
includeDeleted - Whether include deleted nodes
Returns:
An array of AVMNodeDescriptors.

getDirectoryListingDirect

public java.util.SortedMap getDirectoryListingDirect(int version,
                                                     java.lang.String path)
Description copied from interface: AVMService
Get a non-recursive listing of nodes contained by a directory identified by its version ID and path, but exclude all nodes that are only contained "indirectly" via layering.

If this function is called on a "plain" (non-layered) directory, it is equivalent to getDirectoryListing.

Specified by:
getDirectoryListingDirect in interface AVMService
Parameters:
version - The version to look up.
path - The full path to get listing for.
Returns:
A Map of names to descriptors.

getDirectoryListingDirect

public java.util.SortedMap getDirectoryListingDirect(int version,
                                                     java.lang.String path,
                                                     boolean includeDeleted)
Description copied from interface: AVMService
Get a non-recursive listing of nodes contained directly, but exclude all nodes that are only contained "indirectly" (i.e.: via layering). This function is identical to getDirectoryListingDirect but it has the option of including deleted nodes in the listing.

Specified by:
getDirectoryListingDirect in interface AVMService
Parameters:
version - The version to look up.
path - The absolute AVM directory path to get a listing for.
includeDeleted - Whether to include deleted nodes.
Returns:
A Map of names to descriptors.

getDirectoryListingDirect

public java.util.SortedMap getDirectoryListingDirect(AVMNodeDescriptor dir,
                                                     boolean includeDeleted)
Description copied from interface: AVMService
Get a non-recursive listing of all the nodes contained by a directory identified by an AVMNodeDescriptor, excluding those that are only present "indirectly" via layering; optionally, deleted nodes that are directly contained can be included this listing.

Specified by:
getDirectoryListingDirect in interface AVMService
Parameters:
dir - The directory descriptor.
includeDeleted - Whether to include directly contained deleted nodes
Returns:
A Map of Strings to descriptors.

getFileInputStream

public java.io.InputStream getFileInputStream(int version,
                                              java.lang.String path)
Description copied from interface: AVMService
Get an InputStream for reading the contents of a file identified by its version ID and AVM path. This method can be used for either plain or layered files.

Specified by:
getFileInputStream in interface AVMService
Parameters:
version - The version ID to look in.
path - The absolute path to the file.
Returns:
An InputStream for the designated file.

getFileInputStream

public java.io.InputStream getFileInputStream(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get an InputStream for reading the contents of a file node identified by its descriptor. This method can be used for either plain or layered files.

Specified by:
getFileInputStream in interface AVMService
Parameters:
desc - The descriptor.
Returns:
An InputStream.

getFileOutputStream

public java.io.OutputStream getFileOutputStream(java.lang.String path)
Description copied from interface: AVMService
Get an output stream to write to a file identified by an AVM path. This file must already exist. This method can be used for either plain or layered files. To create a plain file, see: createFile. To create a layered file, see: createLayeredFile.

Specified by:
getFileOutputStream in interface AVMService
Parameters:
path - The absolute path to the file.

getHeadPaths

public java.util.List getHeadPaths(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get all paths that a given node has that are in the HEAD version ( -1 ). This can be an expensive operation but less so than getPaths().

Specified by:
getHeadPaths in interface AVMService
Parameters:
desc - The node descriptor to get paths for.
Returns:
A List of version, path Pairs.

getHistory

public java.util.List getHistory(AVMNodeDescriptor desc,
                                 int count)
Description copied from interface: AVMService
Get a list of up to count nodes in the history chain of a node. The initial element of the list returned will be desc (as long as the count is non-zero).

Specified by:
getHistory in interface AVMService
Parameters:
desc - The descriptor for a node to find ancestors for.
count - maximum number of ancestors to return in the list (the value -1 means "no limit -- return them all")
Returns:
A List of ancestors starting with the most recent.

getIndirectionPath

public java.lang.String getIndirectionPath(int version,
                                           java.lang.String path)
Description copied from interface: AVMService
Get the indirection path for a node in a layered context whether that indirection path is primary or non-primary (or seen via transparency). If you call getIndirectionPath on a layered node, you'll fetch its explicitly set target; if you call this function on a non-primary indirection node or a node seen via transparency, you'll get back the path to the corresponding node in the underlying target.

For example, if "mysite--alice:/www" is a layered directory that targets "mysite:/www", and "mysite--alice" contains no content directly, then if the path path "mysite:/www/avm_webapps/ROOT/x/y/z" is valid, calling getIndirectionPath on "mysite--alice:/www/avm_webapps/ROOT/x/y/z" will yield "mysite:/www/avm_webapps/ROOT/x/y/z".

Specified by:
getIndirectionPath in interface AVMService
Parameters:
version - The version number to get.
path - The path to the node of interest.
Returns:
The indirection path, or null if the path is not in a layered context.

getLatestSnapshotID

public int getLatestSnapshotID(java.lang.String storeName)
Description copied from interface: AVMService
Get the latest snapshot ID of a store. Note: All stores have at least one snapshot ID: 0; this is the "empty" snapshot taken when the store is first created.

Specified by:
getLatestSnapshotID in interface AVMService
Parameters:
storeName - The store name.
Returns:
The ID of the latest extant version of the store.

getLayeringInfo

public LayeringDescriptor getLayeringInfo(int version,
                                          java.lang.String path)
Description copied from interface: AVMService
Get layering information about a path. The LayeringDescriptor returned can be used to determine whether a node is in the background (and if so, which AVM store contains it directly), or if it is directly contained by the AVM store referenced by path.

Specified by:
getLayeringInfo in interface AVMService
Parameters:
version - The version to look under.
path - The absolute AVM path.
Returns:
A LayeringDescriptor.

getNextVersionID

public int getNextVersionID(java.lang.String storeName)
Description copied from interface: AVMService
Gets the ID that the next snapshotted version of a store will have.

Note: unless the operations that require this value to be valid are performed within a transaction, this value can become "stale".

Specified by:
getNextVersionID in interface AVMService
Parameters:
storeName - The name of the AVMStore.
Returns:
The next version ID of the AVMStore.

getNodeProperties

public java.util.Map getNodeProperties(int version,
                                       java.lang.String path)
Description copied from interface: AVMService
Get all the properties associated with a node that is identified by a version ID and a path.

Specified by:
getNodeProperties in interface AVMService
Parameters:
version - The version to look under.
path - The path to the node.
Returns:
A Map of QNames to PropertyValues.

getNodeProperties

public java.util.Map getNodeProperties(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get all the properties associated with a node identified by a descriptor.

Specified by:
getNodeProperties in interface AVMService
Parameters:
desc - The node descriptor
Returns:
A Map of the properties.

getNodeProperty

public PropertyValue getNodeProperty(int version,
                                     java.lang.String path,
                                     QName name)
Description copied from interface: AVMService
Get a property of a node by QName.

Specified by:
getNodeProperty in interface AVMService
Parameters:
version - The version to look under.
path - The path to the node.
name - The QName.
Returns:
The PropertyValue or null if it doesn't exist.

getPaths

public java.util.List getPaths(AVMNodeDescriptor desc)
Description copied from interface: AVMService
Get a list of all paths that a given node has. This can be an extremely expensive operation due to the large number of paths to an AVMNodeDescriptor that can be generated via branching and versioning. For example, if an asset is present in the initial version of a store, and that store has been versioned 10,000 times, there are a minimum of 10,000 paths that lead to it. The effect of branching is multiplicative.

Note: paths that only access desc via transparency are not returned by this function; only "direct" containment relationships are considered.

For those concerned with records management applications, it's worth noting that once every path to an asset has been deleted, the system will purge it entirely in an asynchronous manner.

Specified by:
getPaths in interface AVMService
Parameters:
desc - The node descriptor to get paths for.
Returns:
A List of version, path Pairs.

getPathsInStoreHead

public java.util.List getPathsInStoreHead(AVMNodeDescriptor desc,
                                          java.lang.String store)
Description copied from interface: AVMService
Get all paths to a node starting at the HEAD version ( -1 ) of a store. This can be an expensive operation but less so than getHeadPaths().

Specified by:
getPathsInStoreHead in interface AVMService
Parameters:
desc - The node descriptor.
store - The store.
Returns:
A List of all paths meeting the criteria.

getStore

public AVMStoreDescriptor getStore(java.lang.String name)
Description copied from interface: AVMService
Get a descriptor for an AVMStore.

Specified by:
getStore in interface AVMService
<