Remove filesystem dependency on Apache commons-io

This commit is contained in:
Andrew Gaul 2012-10-30 20:06:45 -07:00
parent cd330a759b
commit b3da8e4603
5 changed files with 66 additions and 16 deletions

View File

@ -52,11 +52,6 @@
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>org.jclouds</groupId>
<artifactId>jclouds-blobstore</artifactId>

View File

@ -35,7 +35,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.io.ByteStreams;
import com.google.common.io.Files;
import org.apache.commons.io.FileUtils;
import org.jclouds.blobstore.LocalStorageStrategy;
import org.jclouds.blobstore.domain.Blob;
import org.jclouds.blobstore.domain.BlobBuilder;
@ -46,6 +45,7 @@ import org.jclouds.domain.Location;
import org.jclouds.filesystem.predicates.validators.FilesystemBlobKeyValidator;
import org.jclouds.filesystem.predicates.validators.FilesystemContainerNameValidator;
import org.jclouds.filesystem.reference.FilesystemConstants;
import org.jclouds.filesystem.util.Utils;
import org.jclouds.io.Payload;
import org.jclouds.io.Payloads;
import org.jclouds.logging.Logger;
@ -131,7 +131,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
File[] children = containerFile.listFiles();
if (null != children) {
for (File child : children)
FileUtils.forceDelete(child);
Utils.deleteRecursively(child);
}
} catch (IOException e) {
logger.error(e, "An error occurred while clearing container %s", container);
@ -283,7 +283,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
// create complete dir path
String fullDirPath = buildPathStartingFromBaseDir(container, directory);
try {
FileUtils.forceDelete(new File(fullDirPath));
Utils.deleteRecursively(new File(fullDirPath));
} catch (IOException ex) {
logger.error("An error occurred removing directory %s.", fullDirPath);
Throwables.propagate(ex);

View File

@ -0,0 +1,49 @@
/*
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.filesystem.util;
import java.io.File;
import java.io.IOException;
/**
* Utilities for the filesystem blobstore.
*
* @author Andrew Gaul
*/
public class Utils {
/** Private constructor for utility class. */
private Utils() {
// Do nothing
}
/** Delete a file or a directory recursively. */
public static void deleteRecursively(File file) throws IOException {
if (file.isDirectory()) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
deleteRecursively(child);
}
}
}
if (!file.delete()) {
throw new IOException("Could not delete: " + file);
}
}
}

View File

@ -36,7 +36,6 @@ import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.jclouds.ContextBuilder;
import org.jclouds.blobstore.BlobRequestSigner;
import org.jclouds.blobstore.BlobStore;
@ -52,6 +51,7 @@ import org.jclouds.blobstore.options.GetOptions;
import org.jclouds.blobstore.options.ListContainerOptions;
import org.jclouds.crypto.CryptoStreams;
import org.jclouds.filesystem.reference.FilesystemConstants;
import org.jclouds.filesystem.util.Utils;
import org.jclouds.filesystem.utils.TestUtils;
import org.jclouds.http.HttpRequest;
import org.jclouds.io.InputSuppliers;
@ -106,7 +106,7 @@ public class FilesystemAsyncBlobStoreTest {
@AfterMethod
protected void tearDown() throws IOException {
context.close();
FileUtils.forceDelete(new File(TestUtils.TARGET_BASE_DIR));
Utils.deleteRecursively(new File(TestUtils.TARGET_BASE_DIR));
}
/**

View File

@ -28,10 +28,11 @@ import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import org.jclouds.filesystem.util.Utils;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterators;
import org.apache.commons.io.FileUtils;
import com.google.common.io.Files;
/**
* Utility class for test
@ -98,7 +99,10 @@ public class TestUtils {
* @throws IOException
*/
public static void createContainerAsDirectory(String containerName) throws IOException {
FileUtils.forceMkdir(new File(TARGET_BASE_DIR + containerName));
File file = new File(TARGET_BASE_DIR, containerName);
if (!file.mkdirs()) {
throw new IOException("Could not mkdir: " + file);
};
}
/**
@ -167,8 +171,8 @@ public class TestUtils {
File parentDirectory = new File(directoryName);
File[] children = parentDirectory.listFiles();
if (null != children) {
for(File child:children) {
FileUtils.forceDelete(child);
for (File child : children) {
Utils.deleteRecursively(child);
}
}
}
@ -186,7 +190,9 @@ public class TestUtils {
filePath = containerName + blobKey;
else
filePath = containerName + File.separator + blobKey;
FileUtils.copyFile(source, new File(TARGET_BASE_DIR + filePath));
File file = new File(TARGET_BASE_DIR + filePath);
Files.createParentDirs(file);
Files.copy(source, file);
}