org.modeshape.connector.filesystem
Class FileSystemSource

java.lang.Object
  extended by org.modeshape.graph.connector.path.AbstractPathRepositorySource
      extended by org.modeshape.connector.filesystem.FileSystemSource
All Implemented Interfaces:
Serializable, Referenceable, ObjectFactory, PathRepositorySource, RepositorySource

@ThreadSafe
public class FileSystemSource
extends AbstractPathRepositorySource
implements ObjectFactory

The RepositorySource for the connector that exposes an area of the local file system as content in a repository. This source considers a workspace name to be the path to the directory on the file system that represents the root of that workspace. New workspaces can be created, as long as the names represent valid paths to existing directories.

See Also:
Serialized Form

Field Summary
static String DEFAULT_EXCLUSION_PATTERN
           
static int DEFAULT_MAX_PATH_LENGTH
           
static String DEFAULT_NAME_OF_DEFAULT_WORKSPACE
          The initial name of the default workspace is ""default" ", unless otherwise specified.
static boolean DEFAULT_SUPPORTS_UPDATES
          This source does not support updates by default, but each instance may be configured to be read-only or updateable}.
 
Fields inherited from class org.modeshape.graph.connector.path.AbstractPathRepositorySource
DEFAULT_CACHE_POLICY, DEFAULT_RETRY_LIMIT, DEFAULT_ROOT_NODE_UUID
 
Constructor Summary
FileSystemSource()
           
 
Method Summary
 boolean areUpdatesAllowed()
          Get whether this source allows updates.
 RepositorySourceCapabilities getCapabilities()
          Get the capabilities for this source.
 RepositoryConnection getConnection()
          Get a connection from this source.
 CustomPropertiesFactory getCustomPropertiesFactory()
          Get the factory that is used to create custom properties on "nt:folder", "nt:file", and "nt:resource" nodes.
 String getDefaultWorkspaceName()
          Get the name of the default workspace.
 String getExclusionPattern()
          Get the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored
 int getMaxPathLength()
          Get the maximum path length (in characters) allowed by the underlying file system
 Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?,?> environment)
          
 String[] getPredefinedWorkspaceNames()
          Gets the names of the workspaces that are available when this source is created.
 Reference getReference()
          
 boolean getUpdatesAllowed()
          Get whether this source supports updates.
 String getWorkspaceRootPath()
          Get the relative root directory for the workspaces.
 boolean isCreatingWorkspacesAllowed()
          Get whether this source allows workspaces to be created dynamically.
 void setCreatingWorkspacesAllowed(boolean allowWorkspaceCreation)
          Set whether this source allows workspaces to be created dynamically.
 void setCustomPropertiesFactory(CustomPropertiesFactory customPropertiesFactory)
          Set the factory that is used to create custom properties on "nt:folder", "nt:file", and "nt:resource" nodes.
 void setDefaultWorkspaceName(String nameOfDefaultWorkspace)
          Set the name of the workspace that should be used when clients don't specify a workspace.
 void setExclusionPattern(String exclusionPattern)
          Sets the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored
 void setMaxPathLength(int maxPathLength)
          Set the maximum absolute path length supported by this source.
 void setPredefinedWorkspaceNames(String[] predefinedWorkspaceNames)
          Sets the names of the workspaces that are available when this source is created.
 void setUpdatesAllowed(boolean allowUpdates)
          Set whether this source allows updates to data within workspaces
 void setWorkspaceRootPath(String workspaceRootPath)
          Sets the relative root directory for workspaces
 
Methods inherited from class org.modeshape.graph.connector.path.AbstractPathRepositorySource
close, getCachePolicy, getName, getPathRepositoryCache, getRepositoryContext, getRetryLimit, getRootNodeUuid, initialize, setCachePolicy, setName, setRetryLimit, setRootNodeUuid
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_NAME_OF_DEFAULT_WORKSPACE

public static final String DEFAULT_NAME_OF_DEFAULT_WORKSPACE
The initial name of the default workspace is ""default" ", unless otherwise specified.

See Also:
Constant Field Values

DEFAULT_SUPPORTS_UPDATES

public static final boolean DEFAULT_SUPPORTS_UPDATES
This source does not support updates by default, but each instance may be configured to be read-only or updateable}.

See Also:
Constant Field Values

DEFAULT_MAX_PATH_LENGTH

public static final int DEFAULT_MAX_PATH_LENGTH
See Also:
Constant Field Values

DEFAULT_EXCLUSION_PATTERN

public static final String DEFAULT_EXCLUSION_PATTERN
Constructor Detail

FileSystemSource

public FileSystemSource()
Method Detail

getCapabilities

public RepositorySourceCapabilities getCapabilities()
Get the capabilities for this source.

Specified by:
getCapabilities in interface RepositorySource
Returns:
the capabilities for this source; never null
See Also:
RepositorySource.getCapabilities()

getUpdatesAllowed

public boolean getUpdatesAllowed()
Get whether this source supports updates.

Returns:
true if this source supports updates, or false if this source only supports reading content.

getWorkspaceRootPath

public String getWorkspaceRootPath()
Get the relative root directory for the workspaces. If this property is set, workspaces can be given as relative paths from this directory and all workspace paths must be ancestors of this path.

Returns:
the root directory for workspaces

setWorkspaceRootPath

public void setWorkspaceRootPath(String workspaceRootPath)
Sets the relative root directory for workspaces

Parameters:
workspaceRootPath - the relative root directory for workspaces. If this value is non-null, all workspace paths will be treated as paths relative to this directory

getExclusionPattern

public String getExclusionPattern()
Get the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored

Returns:
the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored

setExclusionPattern

public void setExclusionPattern(String exclusionPattern)
Sets the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored

Parameters:
exclusionPattern - the regular expression that, if matched by a file or folder, indicates that the file or folder should be ignored. If this pattern is null, no files will be excluded.

getMaxPathLength

public int getMaxPathLength()
Get the maximum path length (in characters) allowed by the underlying file system

Returns:
the maximum path length (in characters) allowed by the underlying file system

setMaxPathLength

public void setMaxPathLength(int maxPathLength)
Set the maximum absolute path length supported by this source.

The length of any path is calculated relative to the file system root, NOT the repository root. That is, if a workspace foo is mapped to the /tmp/foo/bar directory on the file system, then the path /node1/node2 in the foo workspace has an effective length of 23 for the purposes of the maxPathLength calculation (/tmp/foo/bar has length 11, /node1/node2 has length 12, 11 + 12 = 23).

Parameters:
maxPathLength - the maximum absolute path length supported by this source; must be non-negative

getDefaultWorkspaceName

public String getDefaultWorkspaceName()
Get the name of the default workspace.

Specified by:
getDefaultWorkspaceName in interface PathRepositorySource
Returns:
the name of the workspace that should be used by default; never null

setDefaultWorkspaceName

public void setDefaultWorkspaceName(String nameOfDefaultWorkspace)
Set the name of the workspace that should be used when clients don't specify a workspace.

Parameters:
nameOfDefaultWorkspace - the name of the workspace that should be used by default, or null if the default name should be used

getPredefinedWorkspaceNames

public String[] getPredefinedWorkspaceNames()
Gets the names of the workspaces that are available when this source is created. Each workspace name corresponds to a path to a directory on the file system.

Returns:
the names of the workspaces that this source starts with, or null if there are no such workspaces
See Also:
setPredefinedWorkspaceNames(String[]), setCreatingWorkspacesAllowed(boolean)

setPredefinedWorkspaceNames

public void setPredefinedWorkspaceNames(String[] predefinedWorkspaceNames)
Sets the names of the workspaces that are available when this source is created. Each workspace name corresponds to a path to a directory on the file system.

Parameters:
predefinedWorkspaceNames - the names of the workspaces that this source should start with, or null if there are no such workspaces
See Also:
setCreatingWorkspacesAllowed(boolean), getPredefinedWorkspaceNames()

isCreatingWorkspacesAllowed

public boolean isCreatingWorkspacesAllowed()
Get whether this source allows workspaces to be created dynamically.

Returns:
true if this source allows workspaces to be created by clients, or false if the set of workspaces is fixed
See Also:
setPredefinedWorkspaceNames(String[]), getPredefinedWorkspaceNames(), setCreatingWorkspacesAllowed(boolean)

setCreatingWorkspacesAllowed

public void setCreatingWorkspacesAllowed(boolean allowWorkspaceCreation)
Set whether this source allows workspaces to be created dynamically.

Parameters:
allowWorkspaceCreation - true if this source allows workspaces to be created by clients, or false if the set of workspaces is fixed
See Also:
setPredefinedWorkspaceNames(String[]), getPredefinedWorkspaceNames(), isCreatingWorkspacesAllowed()

areUpdatesAllowed

public boolean areUpdatesAllowed()
Get whether this source allows updates.

Specified by:
areUpdatesAllowed in interface PathRepositorySource
Overrides:
areUpdatesAllowed in class AbstractPathRepositorySource
Returns:
true if this source allows updates by clients, or false if no updates are allowed
See Also:
setUpdatesAllowed(boolean)

setUpdatesAllowed

public void setUpdatesAllowed(boolean allowUpdates)
Set whether this source allows updates to data within workspaces

Specified by:
setUpdatesAllowed in interface PathRepositorySource
Parameters:
allowUpdates - true if this source allows updates to data within workspaces clients, or false if updates are not allowed.
See Also:
areUpdatesAllowed()

getCustomPropertiesFactory

public CustomPropertiesFactory getCustomPropertiesFactory()
Get the factory that is used to create custom properties on "nt:folder", "nt:file", and "nt:resource" nodes.

Returns:
the factory, or null if no custom properties are to be created

setCustomPropertiesFactory

public void setCustomPropertiesFactory(CustomPropertiesFactory customPropertiesFactory)
Set the factory that is used to create custom properties on "nt:folder", "nt:file", and "nt:resource" nodes.

Parameters:
customPropertiesFactory - the factory reference, or null if no custom properties will be created

getReference

public Reference getReference()

Specified by:
getReference in interface Referenceable
See Also:
Referenceable.getReference()

getObjectInstance

public Object getObjectInstance(Object obj,
                                Name name,
                                Context nameCtx,
                                Hashtable<?,?> environment)
                         throws Exception

Specified by:
getObjectInstance in interface ObjectFactory
Throws:
Exception

getConnection

public RepositoryConnection getConnection()
                                   throws RepositorySourceException
Get a connection from this source. Even though each RepositorySource need not be thread safe, this method should be safe to be called concurrently by multiple threads.

Specified by:
getConnection in interface RepositorySource
Returns:
a connection
Throws:
RepositorySourceException - if there is a problem obtaining a connection
See Also:
RepositorySource.getConnection()


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