Class FilesystemStorageStrategyImpl
- java.lang.Object
-
- org.jclouds.filesystem.strategy.internal.FilesystemStorageStrategyImpl
-
- All Implemented Interfaces:
LocalStorageStrategy
public class FilesystemStorageStrategyImpl extends Object implements LocalStorageStrategy
FilesystemStorageStrategyImpl implements a blob store that stores objects on the file system. Content metadata and user attributes are stored in extended attributes if the file system supports them. Directory blobs (blobs that end with a /) cannot have content, but otherwise appear in LIST like normal blobs.
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
autoDetectContentType
protected String
baseDirectory
protected javax.inject.Provider<BlobBuilder>
blobBuilders
protected FilesystemBlobKeyValidator
filesystemBlobKeyValidator
protected FilesystemContainerNameValidator
filesystemContainerNameValidator
protected Logger
logger
-
Constructor Summary
Constructors Modifier Constructor Description protected
FilesystemStorageStrategyImpl(javax.inject.Provider<BlobBuilder> blobBuilders, String baseDir, boolean autoDetectContentType, FilesystemContainerNameValidator filesystemContainerNameValidator, FilesystemBlobKeyValidator filesystemBlobKeyValidator, com.google.common.base.Supplier<Location> defaultLocation)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
blobExists(String container, String key)
Return true if a blob named by key existsprotected String
buildPathStartingFromBaseDir(String... pathTokens)
Facility method used to concatenate path tokens normalizing separatorsvoid
clearContainer(String container)
Empty the container of its content (files and subdirectories), but doesn't delete the container itselfvoid
clearContainer(String container, ListContainerOptions options)
LikeLocalStorageStrategy.clearContainer(String)
except you can use options to do things like recursive deletes, or clear at a different path than root.boolean
containerExists(String container)
Checks if a container existslong
countBlobs(String container, ListContainerOptions options)
boolean
createContainer(String container)
boolean
createContainerInLocation(String container, Location location, CreateContainerOptions options)
Creates a new containervoid
createDirectory(String container, String directory)
protected boolean
createDirectoryWithResult(String container, String directory)
Creates a directory and returns the resultvoid
deleteContainer(String container)
Deletes a container and all its contentvoid
deleteDirectory(String container, String directory)
boolean
directoryExists(String container, String directory)
Collection<String>
getAllContainerNames()
Return an iterator that reports all the containers under base pathBlob
getBlob(String container, String key)
Load the blob with the given key belonging to the container with the given name.BlobAccess
getBlobAccess(String containerName, String blobName)
Iterable<String>
getBlobKeysInsideContainer(String container, String prefix)
Returns all the blobs key inside a containerContainerAccess
getContainerAccess(String container)
StorageMetadata
getContainerMetadata(String container)
File
getFileForBlobKey(String container, String blobKey)
Returns aFile
object that links to the blobLocation
getLocation(String containerName)
String
getSeparator()
protected UserDefinedFileAttributeView
getUserDefinedFileAttributeView(Path path)
Blob
newBlob(String name)
String
putBlob(String containerName, Blob blob)
String
putBlob(String containerName, Blob blob, BlobAccess access)
Write aBlob
into a filevoid
removeBlob(String container, String blobKey)
Remove blob named by the given keyvoid
setBlobAccess(String container, String name, BlobAccess access)
void
setContainerAccess(String container, ContainerAccess access)
-
-
-
Field Detail
-
logger
protected Logger logger
-
blobBuilders
protected final javax.inject.Provider<BlobBuilder> blobBuilders
-
baseDirectory
protected final String baseDirectory
-
autoDetectContentType
protected final boolean autoDetectContentType
-
filesystemContainerNameValidator
protected final FilesystemContainerNameValidator filesystemContainerNameValidator
-
filesystemBlobKeyValidator
protected final FilesystemBlobKeyValidator filesystemBlobKeyValidator
-
-
Constructor Detail
-
FilesystemStorageStrategyImpl
@Inject protected FilesystemStorageStrategyImpl(javax.inject.Provider<BlobBuilder> blobBuilders, @Named("jclouds.filesystem.basedir") String baseDir, @Named("jclouds.filesystem.auto-detect-content-type") boolean autoDetectContentType, FilesystemContainerNameValidator filesystemContainerNameValidator, FilesystemBlobKeyValidator filesystemBlobKeyValidator, com.google.common.base.Supplier<Location> defaultLocation)
-
-
Method Detail
-
containerExists
public boolean containerExists(String container)
Description copied from interface:LocalStorageStrategy
Checks if a container exists- Specified by:
containerExists
in interfaceLocalStorageStrategy
- Returns:
-
getAllContainerNames
public Collection<String> getAllContainerNames()
Description copied from interface:LocalStorageStrategy
Return an iterator that reports all the containers under base path- Specified by:
getAllContainerNames
in interfaceLocalStorageStrategy
- Returns:
-
createContainerInLocation
public boolean createContainerInLocation(String container, Location location, CreateContainerOptions options)
Description copied from interface:LocalStorageStrategy
Creates a new container- Specified by:
createContainerInLocation
in interfaceLocalStorageStrategy
- Returns:
-
getContainerAccess
public ContainerAccess getContainerAccess(String container)
- Specified by:
getContainerAccess
in interfaceLocalStorageStrategy
-
setContainerAccess
public void setContainerAccess(String container, ContainerAccess access)
- Specified by:
setContainerAccess
in interfaceLocalStorageStrategy
-
deleteContainer
public void deleteContainer(String container)
Description copied from interface:LocalStorageStrategy
Deletes a container and all its content- Specified by:
deleteContainer
in interfaceLocalStorageStrategy
-
clearContainer
public void clearContainer(String container)
Description copied from interface:LocalStorageStrategy
Empty the container of its content (files and subdirectories), but doesn't delete the container itself- Specified by:
clearContainer
in interfaceLocalStorageStrategy
-
clearContainer
public void clearContainer(String container, ListContainerOptions options)
Description copied from interface:LocalStorageStrategy
LikeLocalStorageStrategy.clearContainer(String)
except you can use options to do things like recursive deletes, or clear at a different path than root.- Specified by:
clearContainer
in interfaceLocalStorageStrategy
- Parameters:
container
- what to clearoptions
- recursion and path to clear
-
getContainerMetadata
public StorageMetadata getContainerMetadata(String container)
- Specified by:
getContainerMetadata
in interfaceLocalStorageStrategy
- Returns:
- StorageMetadata associated with a container name, e.g., creation date and location, or null if container does not exist
-
blobExists
public boolean blobExists(String container, String key)
Description copied from interface:LocalStorageStrategy
Return true if a blob named by key exists- Specified by:
blobExists
in interfaceLocalStorageStrategy
- Returns:
-
getBlobKeysInsideContainer
public Iterable<String> getBlobKeysInsideContainer(String container, String prefix) throws IOException
Returns all the blobs key inside a container- Specified by:
getBlobKeysInsideContainer
in interfaceLocalStorageStrategy
- Parameters:
container
-- Returns:
- Throws:
IOException
-
getBlob
public Blob getBlob(String container, String key)
Description copied from interface:LocalStorageStrategy
Load the blob with the given key belonging to the container with the given name. There must exist a resource on the file system whose complete name is given concatenating the container name and the key- Specified by:
getBlob
in interfaceLocalStorageStrategy
- Returns:
- the blob belonging to the given container with the given key
-
putBlob
public String putBlob(String containerName, Blob blob) throws IOException
- Specified by:
putBlob
in interfaceLocalStorageStrategy
- Throws:
IOException
-
putBlob
public String putBlob(String containerName, Blob blob, BlobAccess access) throws IOException
Description copied from interface:LocalStorageStrategy
Write aBlob
into a file- Specified by:
putBlob
in interfaceLocalStorageStrategy
- Returns:
- etag of blob
- Throws:
IOException
-
removeBlob
public void removeBlob(String container, String blobKey)
Description copied from interface:LocalStorageStrategy
Remove blob named by the given key- Specified by:
removeBlob
in interfaceLocalStorageStrategy
-
getBlobAccess
public BlobAccess getBlobAccess(String containerName, String blobName)
- Specified by:
getBlobAccess
in interfaceLocalStorageStrategy
-
setBlobAccess
public void setBlobAccess(String container, String name, BlobAccess access)
- Specified by:
setBlobAccess
in interfaceLocalStorageStrategy
-
getLocation
public Location getLocation(String containerName)
- Specified by:
getLocation
in interfaceLocalStorageStrategy
- Parameters:
containerName
- name of container- Returns:
- Location of container or null
-
getSeparator
public String getSeparator()
- Specified by:
getSeparator
in interfaceLocalStorageStrategy
- Returns:
- path separator, either / or \
-
createContainer
public boolean createContainer(String container)
-
getFileForBlobKey
public File getFileForBlobKey(String container, String blobKey)
Returns aFile
object that links to the blob- Parameters:
container
-blobKey
-- Returns:
-
countBlobs
public long countBlobs(String container, ListContainerOptions options)
-
getUserDefinedFileAttributeView
protected UserDefinedFileAttributeView getUserDefinedFileAttributeView(Path path) throws IOException
- Throws:
IOException
-
buildPathStartingFromBaseDir
protected String buildPathStartingFromBaseDir(String... pathTokens)
Facility method used to concatenate path tokens normalizing separators- Parameters:
pathTokens
- all the string in the proper order that must be concatenated in order to obtain the filename- Returns:
- the resulting string
-
-