Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
9ebf0f88
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
“b2ed8b05823c5b002c660f9f471a2af761ff742d”上不存在“...reference/apis/js-apis-inputmethod-engine.md”
提交
9ebf0f88
编写于
8月 20, 2009
作者:
A
alanb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6866804: (file) Path calls checkPermission insteadof checkXXX (sol)
Reviewed-by: sherman
上级
acd702cf
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
704 addition
and
33 deletion
+704
-33
src/solaris/classes/sun/nio/fs/UnixPath.java
src/solaris/classes/sun/nio/fs/UnixPath.java
+7
-32
src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java
...windows/classes/sun/nio/fs/WindowsFileAttributeViews.java
+1
-0
test/java/nio/file/Path/CheckPermissions.java
test/java/nio/file/Path/CheckPermissions.java
+695
-0
test/java/nio/file/Path/Misc.java
test/java/nio/file/Path/Misc.java
+1
-1
未找到文件。
src/solaris/classes/sun/nio/fs/UnixPath.java
浏览文件 @
9ebf0f88
...
...
@@ -65,9 +65,6 @@ class UnixPath
// array of offsets of elements in path (created lazily)
private
volatile
int
[]
offsets
;
// file permissions (created lazily)
private
volatile
FilePermission
[]
perms
;
UnixPath
(
UnixFileSystem
fs
,
byte
[]
path
)
{
this
.
fs
=
fs
;
this
.
path
=
path
;
...
...
@@ -768,45 +765,23 @@ class UnixPath
}
}
// create file permissions used for read and write checks
private
void
checkReadOrWrite
(
boolean
checkRead
)
{
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
==
null
)
return
;
if
(
perms
==
null
)
{
synchronized
(
this
)
{
if
(
perms
==
null
)
{
FilePermission
[]
p
=
new
FilePermission
[
2
];
String
pathForPermCheck
=
getPathForPermissionCheck
();
p
[
0
]
=
new
FilePermission
(
pathForPermCheck
,
SecurityConstants
.
FILE_READ_ACTION
);
p
[
1
]
=
new
FilePermission
(
pathForPermCheck
,
SecurityConstants
.
FILE_WRITE_ACTION
);
perms
=
p
;
}
}
}
if
(
checkRead
)
{
sm
.
checkPermission
(
perms
[
0
]);
}
else
{
sm
.
checkPermission
(
perms
[
1
]);
}
}
void
checkRead
()
{
checkReadOrWrite
(
true
);
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
!=
null
)
sm
.
checkRead
(
getPathForPermissionCheck
());
}
void
checkWrite
()
{
checkReadOrWrite
(
false
);
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
!=
null
)
sm
.
checkWrite
(
getPathForPermissionCheck
());
}
void
checkDelete
()
{
SecurityManager
sm
=
System
.
getSecurityManager
();
if
(
sm
!=
null
)
{
// permission not cached
if
(
sm
!=
null
)
sm
.
checkDelete
(
getPathForPermissionCheck
());
}
}
@Override
...
...
src/windows/classes/sun/nio/fs/WindowsFileAttributeViews.java
浏览文件 @
9ebf0f88
...
...
@@ -46,6 +46,7 @@ class WindowsFileAttributeViews {
@Override
public
WindowsFileAttributes
readAttributes
()
throws
IOException
{
file
.
checkRead
();
try
{
return
WindowsFileAttributes
.
get
(
file
,
followLinks
);
}
catch
(
WindowsException
x
)
{
...
...
test/java/nio/file/Path/CheckPermissions.java
0 → 100644
浏览文件 @
9ebf0f88
/*
* Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/* @test
* @bug 6866804
* @summary Unit test for java.nio.file.Path
* @library ..
*/
import
java.nio.ByteBuffer
;
import
java.nio.file.*
;
import
java.nio.file.attribute.*
;
import
java.nio.channels.SeekableByteChannel
;
import
java.security.Permission
;
import
java.io.*
;
import
java.util.*
;
/**
* Checks each method that accesses the file system does the right permission
* check when there is a security manager set.
*/
public
class
CheckPermissions
{
static
class
Checks
{
private
List
<
Permission
>
permissionsChecked
=
new
ArrayList
<
Permission
>();
private
Set
<
String
>
propertiesChecked
=
new
HashSet
<
String
>();
private
List
<
String
>
readsChecked
=
new
ArrayList
<
String
>();
private
List
<
String
>
writesChecked
=
new
ArrayList
<
String
>();
private
List
<
String
>
deletesChecked
=
new
ArrayList
<
String
>();
private
List
<
String
>
execsChecked
=
new
ArrayList
<
String
>();
List
<
Permission
>
permissionsChecked
()
{
return
permissionsChecked
;
}
Set
<
String
>
propertiesChecked
()
{
return
propertiesChecked
;
}
List
<
String
>
readsChecked
()
{
return
readsChecked
;
}
List
<
String
>
writesChecked
()
{
return
writesChecked
;
}
List
<
String
>
deletesChecked
()
{
return
deletesChecked
;
}
List
<
String
>
execsChecked
()
{
return
execsChecked
;
}
}
static
ThreadLocal
<
Checks
>
myChecks
=
new
ThreadLocal
<
Checks
>()
{
@Override
protected
Checks
initialValue
()
{
return
null
;
}
};
static
void
prepare
()
{
myChecks
.
set
(
new
Checks
());
}
static
void
assertCheckPermission
(
Class
<?
extends
Permission
>
type
,
String
name
)
{
for
(
Permission
perm:
myChecks
.
get
().
permissionsChecked
())
{
if
(
type
.
isInstance
(
perm
)
&&
perm
.
getName
().
equals
(
name
))
return
;
}
throw
new
RuntimeException
(
type
.
getName
()
+
"\""
+
name
+
"\") not checked"
);
}
static
void
assertCheckPropertyAccess
(
String
key
)
{
if
(!
myChecks
.
get
().
propertiesChecked
().
contains
(
key
))
throw
new
RuntimeException
(
"Property "
+
key
+
" not checked"
);
}
static
void
assertChecked
(
Path
file
,
List
<
String
>
list
)
{
String
s
=
file
.
toString
();
for
(
String
f:
list
)
{
if
(
f
.
endsWith
(
s
))
return
;
}
throw
new
RuntimeException
(
"Access not checked"
);
}
static
void
assertCheckRead
(
Path
file
)
{
assertChecked
(
file
,
myChecks
.
get
().
readsChecked
());
}
static
void
assertCheckWrite
(
Path
file
)
{
assertChecked
(
file
,
myChecks
.
get
().
writesChecked
());
}
static
void
assertCheckDelete
(
Path
file
)
{
assertChecked
(
file
,
myChecks
.
get
().
deletesChecked
());
}
static
void
assertCheckExec
(
Path
file
)
{
assertChecked
(
file
,
myChecks
.
get
().
execsChecked
());
}
static
class
LoggingSecurityManager
extends
SecurityManager
{
static
void
install
()
{
System
.
setSecurityManager
(
new
LoggingSecurityManager
());
}
@Override
public
void
checkPermission
(
Permission
perm
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
permissionsChecked
().
add
(
perm
);
}
@Override
public
void
checkPropertyAccess
(
String
key
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
propertiesChecked
().
add
(
key
);
}
@Override
public
void
checkRead
(
String
file
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
readsChecked
().
add
(
file
);
}
@Override
public
void
checkWrite
(
String
file
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
writesChecked
().
add
(
file
);
}
@Override
public
void
checkDelete
(
String
file
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
deletesChecked
().
add
(
file
);
}
@Override
public
void
checkExec
(
String
file
)
{
Checks
checks
=
myChecks
.
get
();
if
(
checks
!=
null
)
checks
.
execsChecked
().
add
(
file
);
}
}
static
void
testBasicFileAttributeView
(
BasicFileAttributeView
view
,
Path
file
)
throws
IOException
{
prepare
();
view
.
readAttributes
();
assertCheckRead
(
file
);
prepare
();
FileTime
now
=
FileTime
.
fromMillis
(
System
.
currentTimeMillis
());
view
.
setTimes
(
null
,
now
,
now
);
assertCheckWrite
(
file
);
}
static
void
testPosixFileAttributeView
(
PosixFileAttributeView
view
,
Path
file
)
throws
IOException
{
prepare
();
PosixFileAttributes
attrs
=
view
.
readAttributes
();
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
prepare
();
view
.
setPermissions
(
attrs
.
permissions
());
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
prepare
();
view
.
setOwner
(
attrs
.
owner
());
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
prepare
();
view
.
setOwner
(
attrs
.
owner
());
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
}
public
static
void
main
(
String
[]
args
)
throws
IOException
{
Path
dir
=
Paths
.
get
(
System
.
getProperty
(
"test.src"
,
"."
));
Path
file
=
dir
.
resolve
(
"file1234"
).
createFile
();
try
{
LoggingSecurityManager
.
install
();
// -- checkAccess --
prepare
();
file
.
checkAccess
();
assertCheckRead
(
file
);
prepare
();
file
.
checkAccess
(
AccessMode
.
READ
);
assertCheckRead
(
file
);
prepare
();
file
.
checkAccess
(
AccessMode
.
WRITE
);
assertCheckWrite
(
file
);
prepare
();
try
{
file
.
checkAccess
(
AccessMode
.
EXECUTE
);
}
catch
(
AccessDeniedException
x
)
{
}
assertCheckExec
(
file
);
prepare
();
try
{
file
.
checkAccess
(
AccessMode
.
READ
,
AccessMode
.
WRITE
,
AccessMode
.
EXECUTE
);
}
catch
(
AccessDeniedException
x
)
{
}
assertCheckRead
(
file
);
assertCheckWrite
(
file
);
assertCheckExec
(
file
);
// -- copyTo --
Path
target
=
dir
.
resolve
(
"target1234"
);
prepare
();
file
.
copyTo
(
target
);
try
{
assertCheckRead
(
file
);
assertCheckWrite
(
target
);
}
finally
{
target
.
delete
();
}
if
(
TestUtil
.
supportsLinks
(
dir
))
{
Path
link
=
dir
.
resolve
(
"link1234"
).
createSymbolicLink
(
file
);
try
{
prepare
();
link
.
copyTo
(
target
,
LinkOption
.
NOFOLLOW_LINKS
);
try
{
assertCheckRead
(
link
);
assertCheckWrite
(
target
);
assertCheckPermission
(
LinkPermission
.
class
,
"symbolic"
);
}
finally
{
target
.
delete
();
}
}
finally
{
link
.
delete
();
}
}
// -- createDirectory --
Path
subdir
=
dir
.
resolve
(
"subdir1234"
);
prepare
();
subdir
.
createDirectory
();
try
{
assertCheckWrite
(
subdir
);
}
finally
{
subdir
.
delete
();
}
// -- createFile --
Path
fileToCreate
=
dir
.
resolve
(
"file7890"
);
prepare
();
try
{
fileToCreate
.
createFile
();
assertCheckWrite
(
fileToCreate
);
}
finally
{
fileToCreate
.
delete
();
}
// -- createSymbolicLink --
if
(
TestUtil
.
supportsLinks
(
dir
))
{
prepare
();
Path
link
=
dir
.
resolve
(
"link1234"
).
createSymbolicLink
(
file
);
try
{
assertCheckWrite
(
link
);
assertCheckPermission
(
LinkPermission
.
class
,
"symbolic"
);
}
finally
{
link
.
delete
();
}
}
// -- delete/deleteIfExists --
Path
fileToDelete
=
dir
.
resolve
(
"file7890"
);
fileToDelete
.
createFile
();
prepare
();
fileToDelete
.
delete
();
assertCheckDelete
(
fileToDelete
);
fileToDelete
.
createFile
();
prepare
();
fileToDelete
.
deleteIfExists
();
assertCheckDelete
(
fileToDelete
);
// -- exists/notExists --
prepare
();
file
.
exists
();
assertCheckRead
(
file
);
prepare
();
file
.
notExists
();
assertCheckRead
(
file
);
// -- getFileStore --
prepare
();
file
.
getFileStore
();
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"getFileStoreAttributes"
);
// -- isSameFile --
prepare
();
file
.
isSameFile
(
dir
);
assertCheckRead
(
file
);
assertCheckRead
(
dir
);
// -- moveTo --
Path
target2
=
dir
.
resolve
(
"target1234"
);
prepare
();
file
.
moveTo
(
target2
);
try
{
assertCheckWrite
(
file
);
assertCheckWrite
(
target2
);
}
finally
{
// restore file
target2
.
moveTo
(
file
);
}
// -- newByteChannel --
SeekableByteChannel
sbc
;
prepare
();
sbc
=
file
.
newByteChannel
();
try
{
assertCheckRead
(
file
);
}
finally
{
sbc
.
close
();
}
prepare
();
sbc
=
file
.
newByteChannel
(
StandardOpenOption
.
WRITE
);
try
{
assertCheckWrite
(
file
);
}
finally
{
sbc
.
close
();
}
prepare
();
sbc
=
file
.
newByteChannel
(
StandardOpenOption
.
READ
,
StandardOpenOption
.
WRITE
);
try
{
assertCheckRead
(
file
);
assertCheckWrite
(
file
);
}
finally
{
sbc
.
close
();
}
prepare
();
sbc
=
file
.
newByteChannel
(
StandardOpenOption
.
DELETE_ON_CLOSE
);
try
{
assertCheckRead
(
file
);
assertCheckDelete
(
file
);
}
finally
{
sbc
.
close
();
}
file
.
createFile
();
// restore file
// -- newInputStream/newOutptuStream --
prepare
();
InputStream
in
=
file
.
newInputStream
();
try
{
assertCheckRead
(
file
);
}
finally
{
in
.
close
();
}
prepare
();
OutputStream
out
=
file
.
newOutputStream
();
try
{
assertCheckWrite
(
file
);
}
finally
{
out
.
close
();
}
// -- newDirectoryStream --
prepare
();
DirectoryStream
<
Path
>
stream
=
dir
.
newDirectoryStream
();
try
{
assertCheckRead
(
dir
);
if
(
stream
instanceof
SecureDirectoryStream
<?>)
{
Path
entry
;
SecureDirectoryStream
<
Path
>
sds
=
(
SecureDirectoryStream
<
Path
>)
stream
;
// newByteChannel
entry
=
file
.
getName
();
prepare
();
sbc
=
sds
.
newByteChannel
(
entry
,
EnumSet
.
of
(
StandardOpenOption
.
READ
));
try
{
assertCheckRead
(
file
);
}
finally
{
sbc
.
close
();
}
prepare
();
sbc
=
sds
.
newByteChannel
(
entry
,
EnumSet
.
of
(
StandardOpenOption
.
WRITE
));
try
{
assertCheckWrite
(
file
);
}
finally
{
sbc
.
close
();
}
// deleteFile
entry
=
file
.
getName
();
prepare
();
sds
.
deleteFile
(
entry
);
assertCheckDelete
(
file
);
dir
.
resolve
(
entry
).
createFile
();
// restore file
// deleteDirectory
entry
=
Paths
.
get
(
"subdir1234"
);
dir
.
resolve
(
entry
).
createDirectory
();
prepare
();
sds
.
deleteDirectory
(
entry
);
assertCheckDelete
(
dir
.
resolve
(
entry
));
// move
entry
=
Paths
.
get
(
"tempname1234"
);
prepare
();
sds
.
move
(
file
.
getName
(),
sds
,
entry
);
assertCheckWrite
(
file
);
assertCheckWrite
(
dir
.
resolve
(
entry
));
sds
.
move
(
entry
,
sds
,
file
.
getName
());
// restore file
// newDirectoryStream
entry
=
Paths
.
get
(
"subdir1234"
);
dir
.
resolve
(
entry
).
createDirectory
();
try
{
prepare
();
sds
.
newDirectoryStream
(
entry
).
close
();
assertCheckRead
(
dir
.
resolve
(
entry
));
}
finally
{
dir
.
resolve
(
entry
).
delete
();
}
// getFileAttributeView to access attributes of directory
testBasicFileAttributeView
(
sds
.
getFileAttributeView
(
BasicFileAttributeView
.
class
),
dir
);
testPosixFileAttributeView
(
sds
.
getFileAttributeView
(
PosixFileAttributeView
.
class
),
dir
);
// getFileAttributeView to access attributes of entry
entry
=
file
.
getName
();
testBasicFileAttributeView
(
sds
.
getFileAttributeView
(
entry
,
BasicFileAttributeView
.
class
),
file
);
testPosixFileAttributeView
(
sds
.
getFileAttributeView
(
entry
,
PosixFileAttributeView
.
class
),
file
);
}
else
{
System
.
out
.
println
(
"SecureDirectoryStream not tested"
);
}
}
finally
{
stream
.
close
();
}
// -- toAbsolutePath --
prepare
();
file
.
getName
().
toAbsolutePath
();
assertCheckPropertyAccess
(
"user.dir"
);
// -- toRealPath --
prepare
();
file
.
toRealPath
(
true
);
assertCheckRead
(
file
);
prepare
();
file
.
toRealPath
(
false
);
assertCheckRead
(
file
);
prepare
();
Paths
.
get
(
"."
).
toRealPath
(
true
);
assertCheckPropertyAccess
(
"user.dir"
);
prepare
();
Paths
.
get
(
"."
).
toRealPath
(
false
);
assertCheckPropertyAccess
(
"user.dir"
);
// -- register --
WatchService
watcher
=
FileSystems
.
getDefault
().
newWatchService
();
try
{
prepare
();
dir
.
register
(
watcher
,
StandardWatchEventKind
.
ENTRY_DELETE
);
assertCheckRead
(
dir
);
}
finally
{
watcher
.
close
();
}
// -- getAttribute/setAttribute/readAttributes --
prepare
();
file
.
getAttribute
(
"size"
);
assertCheckRead
(
file
);
prepare
();
file
.
setAttribute
(
"lastModifiedTime"
,
FileTime
.
fromMillis
(
System
.
currentTimeMillis
()));
assertCheckWrite
(
file
);
prepare
();
file
.
readAttributes
(
"*"
);
assertCheckRead
(
file
);
// -- BasicFileAttributeView --
testBasicFileAttributeView
(
file
.
getFileAttributeView
(
BasicFileAttributeView
.
class
),
file
);
// -- PosixFileAttributeView --
{
PosixFileAttributeView
view
=
file
.
getFileAttributeView
(
PosixFileAttributeView
.
class
);
if
(
view
!=
null
&&
file
.
getFileStore
().
supportsFileAttributeView
(
PosixFileAttributeView
.
class
))
{
testPosixFileAttributeView
(
view
,
file
);
}
else
{
System
.
out
.
println
(
"PosixFileAttributeView not tested"
);
}
}
// -- DosFileAttributeView --
{
DosFileAttributeView
view
=
file
.
getFileAttributeView
(
DosFileAttributeView
.
class
);
if
(
view
!=
null
&&
file
.
getFileStore
().
supportsFileAttributeView
(
DosFileAttributeView
.
class
))
{
prepare
();
view
.
readAttributes
();
assertCheckRead
(
file
);
prepare
();
view
.
setArchive
(
false
);
assertCheckWrite
(
file
);
prepare
();
view
.
setHidden
(
false
);
assertCheckWrite
(
file
);
prepare
();
view
.
setReadOnly
(
false
);
assertCheckWrite
(
file
);
prepare
();
view
.
setSystem
(
false
);
assertCheckWrite
(
file
);
}
else
{
System
.
out
.
println
(
"DosFileAttributeView not tested"
);
}
}
// -- FileOwnerAttributeView --
{
FileOwnerAttributeView
view
=
file
.
getFileAttributeView
(
FileOwnerAttributeView
.
class
);
if
(
view
!=
null
&&
file
.
getFileStore
().
supportsFileAttributeView
(
FileOwnerAttributeView
.
class
))
{
prepare
();
UserPrincipal
owner
=
view
.
getOwner
();
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
prepare
();
view
.
setOwner
(
owner
);
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
}
else
{
System
.
out
.
println
(
"FileOwnerAttributeView not tested"
);
}
}
// -- UserDefinedFileAttributeView --
{
UserDefinedFileAttributeView
view
=
file
.
getFileAttributeView
(
UserDefinedFileAttributeView
.
class
);
if
(
view
!=
null
&&
file
.
getFileStore
().
supportsFileAttributeView
(
UserDefinedFileAttributeView
.
class
))
{
prepare
();
view
.
write
(
"test"
,
ByteBuffer
.
wrap
(
new
byte
[
100
]));
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserDefinedAttributes"
);
prepare
();
view
.
read
(
"test"
,
ByteBuffer
.
allocate
(
100
));
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserDefinedAttributes"
);
prepare
();
view
.
size
(
"test"
);
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserDefinedAttributes"
);
prepare
();
view
.
list
();
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserDefinedAttributes"
);
prepare
();
view
.
delete
(
"test"
);
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserDefinedAttributes"
);
}
else
{
System
.
out
.
println
(
"UserDefinedFileAttributeView not tested"
);
}
}
// -- AclFileAttributeView --
{
AclFileAttributeView
view
=
file
.
getFileAttributeView
(
AclFileAttributeView
.
class
);
if
(
view
!=
null
&&
file
.
getFileStore
().
supportsFileAttributeView
(
AclFileAttributeView
.
class
))
{
prepare
();
List
<
AclEntry
>
acl
=
view
.
getAcl
();
assertCheckRead
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
prepare
();
view
.
setAcl
(
acl
);
assertCheckWrite
(
file
);
assertCheckPermission
(
RuntimePermission
.
class
,
"accessUserInformation"
);
}
else
{
System
.
out
.
println
(
"AclFileAttributeView not tested"
);
}
}
// -- UserPrincipalLookupService
UserPrincipalLookupService
lookupService
=
FileSystems
.
getDefault
().
getUserPrincipalLookupService
();
UserPrincipal
owner
=
Attributes
.
getOwner
(
file
);
prepare
();
lookupService
.
lookupPrincipalByName
(
owner
.
getName
());
assertCheckPermission
(
RuntimePermission
.
class
,
"lookupUserInformation"
);
try
{
UserPrincipal
group
=
Attributes
.
readPosixFileAttributes
(
file
).
group
();
prepare
();
lookupService
.
lookupPrincipalByGroupName
(
group
.
getName
());
assertCheckPermission
(
RuntimePermission
.
class
,
"lookupUserInformation"
);
}
catch
(
UnsupportedOperationException
ignore
)
{
System
.
out
.
println
(
"lookupPrincipalByGroupName not tested"
);
}
}
finally
{
file
.
deleteIfExists
();
}
}
}
test/java/nio/file/Path/Misc.java
浏览文件 @
9ebf0f88
...
...
@@ -22,7 +22,7 @@
*/
/* @test
* @bug 4313887 6838333 686
6804
* @bug 4313887 6838333 686
7101
* @summary Unit test for java.nio.file.Path for miscellenous methods not
* covered by other tests
* @library ..
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录