1 package org.modeshape.graph.connector.path; 2 3 import org.modeshape.graph.ExecutionContext; 4 import org.modeshape.graph.connector.LockFailedException; 5 import org.modeshape.graph.property.Path; 6 import org.modeshape.graph.query.QueryResults; 7 import org.modeshape.graph.request.AccessQueryRequest; 8 import org.modeshape.graph.request.LockBranchRequest.LockScope; 9 10 public interface PathWorkspace { 11 /** 12 * Returns the name of the workspace. There can only be one workspace with a given name per repository. 13 * 14 * @return the name of the workspace 15 */ 16 String getName(); 17 18 /** 19 * Returns the node at the given path, if one exists of {@code null} if no {@PathNode node} exists at the given 20 * path. 21 * 22 * @param path the path of the node to retrieve; may not be null 23 * @return the node at the given path, if one exists of {@code null} if no {@PathNode node} exists at the given 24 * path. 25 */ 26 PathNode getNode( Path path ); 27 28 /** 29 * Attempts to lock the given node with the given timeout. If the lock attempt fails, a {@link LockFailedException} will be 30 * thrown. 31 * 32 * @param node the node to be locked; may not be null 33 * @param lockScope the scope of the lock (i.e., whether descendants of {@code node} should be included in the lock 34 * @param lockTimeoutInMillis the maximum lifetime of the lock in milliseconds; zero (0) indicates that the connector default 35 * should be used 36 * @throws LockFailedException if the implementing connector supports locking but the lock could not be acquired. 37 */ 38 void lockNode( PathNode node, 39 LockScope lockScope, 40 long lockTimeoutInMillis ) throws LockFailedException; 41 42 /** 43 * Attempts to unlock the given node. 44 * 45 * @param node the node to be unlocked; may not be null 46 */ 47 void unlockNode( PathNode node ); 48 49 /** 50 * Find the lowest existing node along the path. 51 * 52 * @param path the path to the node; may not be null 53 * @return the lowest existing node along the path, or the root node if no node exists on the path 54 */ 55 Path getLowestExistingPath( Path path ); 56 57 /** 58 * Perform a query of this workspace. 59 * 60 * @param context the context in which the query is to be executed; may not be null 61 * @param accessQuery the access query; may not be null 62 * @return the query results, or null if the query is not supported 63 */ 64 QueryResults query( ExecutionContext context, 65 AccessQueryRequest accessQuery ); 66 67 /** 68 * Perform a full-text search of this workspace. 69 * 70 * @param context the context in which the query is to be executed; may not be null 71 * @param fullTextSearchExpression the full-text search expression; may not be null 72 * @return the query results, or null if the query is not supported 73 */ 74 QueryResults search( ExecutionContext context, 75 String fullTextSearchExpression ); 76 }