summaryrefslogtreecommitdiff
path: root/qpid/java/broker-core/src
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2015-04-01 12:46:30 +0000
committerAlex Rudyy <orudyy@apache.org>2015-04-01 12:46:30 +0000
commit997786858ca43a457c934e15cf84588883ccb8d2 (patch)
tree49b5e96dbd389a3ac7b1748c477f553ed7d43062 /qpid/java/broker-core/src
parent3fa59ae052adc930209ff47e3223262a03f12ccc (diff)
downloadqpid-python-997786858ca43a457c934e15cf84588883ccb8d2.tar.gz
QPID-6446: Verify that store path is a writable folder on creation of derby virtual host and node
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1670629 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-core/src')
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/FileHelper.java26
-rw-r--r--qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java2
-rw-r--r--qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/FileHelperTest.java40
3 files changed, 66 insertions, 2 deletions
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/FileHelper.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/FileHelper.java
index 0e1a28f220..a13e3f52f9 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/FileHelper.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/util/FileHelper.java
@@ -130,4 +130,30 @@ public class FileHelper
}
}
}
+
+ public boolean isWritableDirectory(String path)
+ {
+ File storePath = new File(path);
+ if (storePath.exists())
+ {
+ if (!storePath.isDirectory())
+ {
+ return false;
+ }
+ }
+ else
+ {
+ do
+ {
+ storePath = storePath.getParentFile();
+ if (storePath == null)
+ {
+ return false;
+ }
+ }
+ while (!storePath.exists());
+ }
+ return storePath.canWrite();
+ }
+
}
diff --git a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
index 76fbb4f48e..e0b0d37cbe 100644
--- a/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
+++ b/qpid/java/broker-core/src/main/java/org/apache/qpid/server/virtualhost/AbstractVirtualHost.java
@@ -297,7 +297,7 @@ public abstract class AbstractVirtualHost<X extends AbstractVirtualHost<X>> exte
- private void validateMessageStoreCreation()
+ protected void validateMessageStoreCreation()
{
MessageStore store = createMessageStore();
if (store != null)
diff --git a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/FileHelperTest.java b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/FileHelperTest.java
index 9d47ed496a..27581fa60f 100644
--- a/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/FileHelperTest.java
+++ b/qpid/java/broker-core/src/test/java/org/apache/qpid/server/util/FileHelperTest.java
@@ -27,10 +27,11 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributeView;
import java.nio.file.attribute.PosixFilePermission;
-import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;
import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.test.utils.TestFileUtils;
+import org.apache.qpid.util.FileUtils;
public class FileHelperTest extends QpidTestCase
{
@@ -121,6 +122,43 @@ public class FileHelperTest extends QpidTestCase
}
}
+ public void testIsWritableDirectoryForFilePath() throws Exception
+ {
+ File workDir = TestFileUtils.createTestDirectory("test", true);
+ try
+ {
+ File file = new File(workDir, getTestName());
+ file.createNewFile();
+ assertFalse("Should return false for a file", _fileHelper.isWritableDirectory(file.getAbsolutePath()));
+ }
+ finally
+ {
+ FileUtils.delete(workDir, true);
+ }
+ }
+
+
+ public void testIsWritableDirectoryForNonWritablePath() throws Exception
+ {
+ File workDir = TestFileUtils.createTestDirectory("test", true);
+ try
+ {
+ if (Files.getFileStore(workDir.toPath()).supportsFileAttributeView(PosixFileAttributeView.class))
+ {
+ File file = new File(workDir, getTestName());
+ file.mkdirs();
+ if (file.setWritable(false, false))
+ {
+ assertFalse("Should return false for non writable folder",
+ _fileHelper.isWritableDirectory(new File(file, "test").getAbsolutePath()));
+ }
+ }
+ }
+ finally
+ {
+ FileUtils.delete(workDir, true);
+ }
+ }
private void assertPermissions(Path path) throws IOException
{