Force application/x-directory for directories
Paths created by Files.createParentDirs lack extended attributes and
thus Content-Type for directories.
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index 1c438df..f34b3aa 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -368,6 +368,7 @@
builder.name(key);
File file = getFileForBlobKey(container, key);
ByteSource byteSource;
+ boolean isDirectory = false;
if (getDirectoryBlobSuffix(key) != null) {
if (!file.isDirectory()) {
@@ -379,6 +380,7 @@
}
logger.debug("%s - %s is a directory", container, key);
byteSource = ByteSource.empty();
+ isDirectory = true;
} else {
byteSource = Files.asByteSource(file);
}
@@ -387,7 +389,7 @@
String contentDisposition = null;
String contentEncoding = null;
String contentLanguage = null;
- String contentType = null;
+ String contentType = isDirectory ? "application/x-directory" : null;
HashCode hashCode = null;
String eTag = null;
Date expires = null;
@@ -403,9 +405,11 @@
contentDisposition = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_DISPOSITION);
contentEncoding = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_ENCODING);
contentLanguage = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_LANGUAGE);
- contentType = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_TYPE);
- if (contentType == null && autoDetectContentType) {
- contentType = probeContentType(file.toPath());
+ if (!isDirectory) {
+ contentType = readStringAttributeIfPresent(view, attributes, XATTR_CONTENT_TYPE);
+ if (contentType == null && autoDetectContentType) {
+ contentType = probeContentType(file.toPath());
+ }
}
if (attributes.contains(XATTR_CONTENT_MD5)) {
ByteBuffer buf = ByteBuffer.allocate(view.size(XATTR_CONTENT_MD5));