org.modeshape.graph.connector.path
Class WritablePathRepository

java.lang.Object
  extended by org.modeshape.graph.connector.path.PathRepository
      extended by org.modeshape.graph.connector.path.WritablePathRepository

@ThreadSafe
public abstract class WritablePathRepository
extends PathRepository

Extension of PathRepository for repositories that support modification of nodes as well as access to the nodes.


Field Summary
 
Fields inherited from class org.modeshape.graph.connector.path.PathRepository
rootNodeUuid, workspaces
 
Constructor Summary
WritablePathRepository(PathRepositorySource source)
           
 
Method Summary
protected abstract  WritablePathWorkspace createWorkspace(ExecutionContext context, String name)
          Creates a new workspace with the given name containing only a root node.
 WritablePathWorkspace createWorkspace(ExecutionContext context, String name, CreateWorkspaceRequest.CreateConflictBehavior behavior)
          Attempts to create a workspace with the given name with name-collision behavior determined by the behavior parameter.
 WritablePathWorkspace createWorkspace(ExecutionContext context, String name, CreateWorkspaceRequest.CreateConflictBehavior existingWorkspaceBehavior, String nameOfWorkspaceToClone)
          Attempts to create a workspace with the requested name as in the #createWorkspace(ExecutionContext, String, CreateConflictBehavior) method and then clones the content from the given source workspace into the new workspace if the creation was successful.
 boolean destroyWorkspace(String name)
          Removes the named workspace from the #workspaces workspaces map.
 boolean isWritable()
           
 
Methods inherited from class org.modeshape.graph.connector.path.PathRepository
getDefaultWorkspaceName, getRootNodeUuid, getSourceName, getWorkspace, getWorkspaceNames, initialize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WritablePathRepository

public WritablePathRepository(PathRepositorySource source)
Method Detail

createWorkspace

protected abstract WritablePathWorkspace createWorkspace(ExecutionContext context,
                                                         String name)
Creates a new workspace with the given name containing only a root node.

This method does NOT automatically add the newly created workspace to the workspace map or check to see if a workspace already exists in this repository with the same name.

Parameters:
context - the context in which the workspace is to be created
name - the name of the workspace
Returns:
the newly created workspace; may not be null

createWorkspace

public WritablePathWorkspace createWorkspace(ExecutionContext context,
                                             String name,
                                             CreateWorkspaceRequest.CreateConflictBehavior behavior)
Attempts to create a workspace with the given name with name-collision behavior determined by the behavior parameter.

This method will first check to see if a workspace already exists with the given name. If no such workspace exists, the method will create a new workspace with the given name, add it to the #workspaces workspaces map, and return it. If a workspace with the requested name already exists and the behavior is CreateWorkspaceRequest.CreateConflictBehavior.DO_NOT_CREATE , this method will return null without modifying the state of the repository. If a workspace with the requested name already exists and the behavior is CreateWorkspaceRequest.CreateConflictBehavior.CREATE_WITH_ADJUSTED_NAME, this method will generate a unique new name for the workspace, create a new workspace with the given name, added it to the #workspaces workspaces map, and return it.

Parameters:
context - the context in which the workspace is to be created; may not be null
name - the requested name of the workspace. The name of the workspace that is returned from this method may not be the same as the requested name; may not be null
behavior - the behavior to use in case a workspace with the requested name already exists in the repository
Returns:
the newly created workspace or null if a workspace with the requested name already exists in the repository and behavior == CreateConflictBehavior#DO_NOT_CREATE.

createWorkspace

public WritablePathWorkspace createWorkspace(ExecutionContext context,
                                             String name,
                                             CreateWorkspaceRequest.CreateConflictBehavior existingWorkspaceBehavior,
                                             String nameOfWorkspaceToClone)
Attempts to create a workspace with the requested name as in the #createWorkspace(ExecutionContext, String, CreateConflictBehavior) method and then clones the content from the given source workspace into the new workspace if the creation was successful.

If no workspace with the name nameOfWorkspaceToClone exists, the method will return an empty workspace.

Parameters:
context - the context in which the workspace is to be created; may not be null
name - the requested name of the workspace. The name of the workspace that is returned from this method may not be the same as the requested name; may not be null
existingWorkspaceBehavior - the behavior to use in case a workspace with the requested name already exists in the repository
nameOfWorkspaceToClone - the name of the workspace from which the content should be cloned; may not be null
Returns:
the newly created workspace with an exact copy of the contents from the workspace named nameOfWorkspaceToClone or null if a workspace with the requested name already exists in the repository and behavior == CreateConflictBehavior#DO_NOT_CREATE.

destroyWorkspace

public boolean destroyWorkspace(String name)
Removes the named workspace from the #workspaces workspaces map.

Parameters:
name - the name of the workspace to remove
Returns:
true if a workspace with that name previously existed in the map

isWritable

public boolean isWritable()
Overrides:
isWritable in class PathRepository


Copyright © 2008-2011 JBoss, a division of Red Hat. All Rights Reserved.