You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2014/04/07 08:59:09 UTC
svn commit: r1585407 - in /db/derby/code/trunk/java:
engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java
testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java
Author: kahatlen
Date: Mon Apr 7 06:59:08 2014
New Revision: 1585407
URL: http://svn.apache.org/r1585407
Log:
DERBY-6410: ClassCastException when launching derby from windows subst drive
Avoid calling Files.getFileStore() since it fails when called on a
file that lives on a subst drive. (Because of a bug in the JVM:
JDK-8034057.)
It is used for checking if a specific FileAttributeView is supported
on the file system. The same information can be found by checking if
Files.getFileAttributeView() returns null, which we already do, so
skip the failing call.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java?rev=1585407&r1=1585406&r2=1585407&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/io/FilePermissionServiceImpl.java Mon Apr 7 06:59:08 2014
@@ -23,7 +23,6 @@ package org.apache.derby.iapi.services.i
import java.io.File;
import java.io.IOException;
-import java.nio.file.FileStore;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.attribute.AclEntry;
@@ -40,20 +39,17 @@ import java.util.Collections;
final class FilePermissionServiceImpl implements FilePermissionService {
public boolean limitAccessToOwner(File file) throws IOException {
Path fileP = file.toPath();
- FileStore fileStore = Files.getFileStore(fileP);
// If we have a posix view, just return and fall back on
// the JDK 6 approach.
- if (fileStore.supportsFileAttributeView(PosixFileAttributeView.class)) {
+ PosixFileAttributeView posixView = Files.getFileAttributeView(
+ fileP, PosixFileAttributeView.class);
+ if (posixView != null) {
return false;
}
- if (!fileStore.supportsFileAttributeView(AclFileAttributeView.class)) {
- return false;
- }
-
- AclFileAttributeView aclView =
- Files.getFileAttributeView(fileP, AclFileAttributeView.class);
+ AclFileAttributeView aclView = Files.getFileAttributeView(
+ fileP, AclFileAttributeView.class);
if (aclView == null) {
return false;
}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java?rev=1585407&r1=1585406&r2=1585407&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/engine/RestrictiveFilePermissionsTest.java Mon Apr 7 06:59:08 2014
@@ -515,12 +515,9 @@ public class RestrictiveFilePermissionsT
private static Class<?> linkOptionArrayClz;
private static Class<?> linkOptionClz;
private static Class<?> stringArrayClz;
- private static Class<?> fileStoreClz;
private static Method get;
private static Method getFileAttributeView;
- private static Method supportsFileAttributeView;
- private static Method getFileStore;
private static Method getOwner;
private static Method getAcl;
private static Method principal;
@@ -632,8 +629,6 @@ public class RestrictiveFilePermissionsT
"java.nio.file.LinkOption");
stringArrayClz = Class.forName(
"[Ljava.lang.String;");
- fileStoreClz = Class.forName(
- "java.nio.file.FileStore");
get = pathsClz.
getMethod("get",
@@ -645,11 +640,6 @@ public class RestrictiveFilePermissionsT
new Class[]{pathClz,
Class.class,
linkOptionArrayClz});
- supportsFileAttributeView = fileStoreClz.getMethod(
- "supportsFileAttributeView",
- new Class[]{Class.class});
- getFileStore = filesClz.getMethod("getFileStore",
- new Class[]{pathClz});
getOwner = filesClz.
getMethod(
"getOwner",
@@ -702,16 +692,6 @@ public class RestrictiveFilePermissionsT
// ACLs supported on this platform? Check the current
// file system:
- Object fileStore = getFileStore.invoke(
- null,
- new Object[]{fileP});
-
- boolean aclsSupported =
- ((Boolean)supportsFileAttributeView.invoke(
- fileStore,
- new Object[]{aclFileAttributeViewClz})).
- booleanValue();
-
Object aclView = getFileAttributeView.invoke(
null,
new Object[]{
@@ -726,8 +706,7 @@ public class RestrictiveFilePermissionsT
posixFileAttributeViewClz,
Array.newInstance(linkOptionClz, 0)});
- if (aclsSupported && aclView != null &&
- posixView == null) {
+ if (aclView != null && posixView == null) {
// Windows
Object owner = getOwner.invoke(
null,