mirror of https://github.com/apache/jclouds.git
Propagate access denied when creating container
Previously this method only reported whether it created a container or not and callers could not determine whether there was an error or if the container already existed. References gaul/s3proxy#122.
This commit is contained in:
parent
3877303ede
commit
52c92a9eb5
|
@ -19,6 +19,7 @@ package org.jclouds.filesystem.strategy.internal;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||||
import static com.google.common.io.BaseEncoding.base16;
|
import static com.google.common.io.BaseEncoding.base16;
|
||||||
|
import static java.nio.file.Files.createDirectories;
|
||||||
import static java.nio.file.Files.getFileAttributeView;
|
import static java.nio.file.Files.getFileAttributeView;
|
||||||
import static java.nio.file.Files.getPosixFilePermissions;
|
import static java.nio.file.Files.getPosixFilePermissions;
|
||||||
import static java.nio.file.Files.probeContentType;
|
import static java.nio.file.Files.probeContentType;
|
||||||
|
@ -36,6 +37,7 @@ import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.AccessDeniedException;
|
||||||
import java.nio.file.NoSuchFileException;
|
import java.nio.file.NoSuchFileException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.attribute.BasicFileAttributes;
|
import java.nio.file.attribute.BasicFileAttributes;
|
||||||
|
@ -75,6 +77,7 @@ import org.jclouds.filesystem.util.Utils;
|
||||||
import org.jclouds.io.ContentMetadata;
|
import org.jclouds.io.ContentMetadata;
|
||||||
import org.jclouds.io.Payload;
|
import org.jclouds.io.Payload;
|
||||||
import org.jclouds.logging.Logger;
|
import org.jclouds.logging.Logger;
|
||||||
|
import org.jclouds.rest.AuthorizationException;
|
||||||
import org.jclouds.rest.annotations.ParamValidators;
|
import org.jclouds.rest.annotations.ParamValidators;
|
||||||
|
|
||||||
import com.google.common.base.Function;
|
import com.google.common.base.Function;
|
||||||
|
@ -908,8 +911,15 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
|
||||||
}
|
}
|
||||||
|
|
||||||
File directoryToCreate = new File(directoryFullName);
|
File directoryToCreate = new File(directoryFullName);
|
||||||
boolean result = directoryToCreate.mkdirs();
|
try {
|
||||||
return result;
|
createDirectories(directoryToCreate.toPath());
|
||||||
|
} catch (AccessDeniedException ade) {
|
||||||
|
throw new AuthorizationException(ade);
|
||||||
|
} catch (IOException ioe) {
|
||||||
|
logger.debug("Could not create directory: %s", ioe.getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Read the String representation of filesystem attribute, or return null if not present. */
|
/** Read the String representation of filesystem attribute, or return null if not present. */
|
||||||
|
|
Loading…
Reference in New Issue