Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
1d3dd0e8
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看板
提交
1d3dd0e8
编写于
10月 15, 2013
作者:
J
jgodinez
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8015586: [macosx] Test closed/java/awt/print/PrinterJob/PrintToDir.java fails on MacOSX
Reviewed-by: prr, jchen
上级
118c9a46
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
183 addition
and
28 deletion
+183
-28
src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java
src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java
+4
-0
src/share/classes/sun/print/RasterPrinterJob.java
src/share/classes/sun/print/RasterPrinterJob.java
+35
-28
test/java/awt/print/PrinterJob/PrintToDir.java
test/java/awt/print/PrinterJob/PrintToDir.java
+144
-0
未找到文件。
src/macosx/classes/sun/lwawt/macosx/CPrinterJob.java
浏览文件 @
1d3dd0e8
...
...
@@ -233,6 +233,10 @@ public class CPrinterJob extends RasterPrinterJob {
setAttributes
(
attributes
);
// throw exception for invalid destination
if
(
destinationAttr
!=
null
)
{
validateDestination
(
destinationAttr
);
}
/* Get the range of pages we are to print. If the
* last page to print is unknown, then we print to
...
...
src/share/classes/sun/print/RasterPrinterJob.java
浏览文件 @
1d3dd0e8
...
...
@@ -1359,34 +1359,7 @@ public abstract class RasterPrinterJob extends PrinterJob {
setAttributes
(
attributes
);
// throw exception for invalid destination
if
(
destinationAttr
!=
null
)
{
// destinationAttr is null for Destination(new URI(""))
// because isAttributeValueSupported returns false in setAttributes
// Destination(new URI(" ")) throws URISyntaxException
File
f
=
new
File
(
destinationAttr
);
try
{
// check if this is a new file and if filename chars are valid
if
(
f
.
createNewFile
())
{
f
.
delete
();
}
}
catch
(
IOException
ioe
)
{
throw
new
PrinterException
(
"Cannot write to file:"
+
destinationAttr
);
}
catch
(
SecurityException
se
)
{
//There is already file read/write access so at this point
// only delete access is denied. Just ignore it because in
// most cases the file created in createNewFile gets overwritten
// anyway.
}
File
pFile
=
f
.
getParentFile
();
if
((
f
.
exists
()
&&
(!
f
.
isFile
()
||
!
f
.
canWrite
()))
||
((
pFile
!=
null
)
&&
(!
pFile
.
exists
()
||
(
pFile
.
exists
()
&&
!
pFile
.
canWrite
()))))
{
throw
new
PrinterException
(
"Cannot write to file:"
+
destinationAttr
);
}
validateDestination
(
destinationAttr
);
}
}
else
{
spoolToService
(
psvc
,
attributes
);
...
...
@@ -1509,6 +1482,40 @@ public abstract class RasterPrinterJob extends PrinterJob {
}
}
protected
void
validateDestination
(
String
dest
)
throws
PrinterException
{
if
(
dest
==
null
)
{
return
;
}
// dest is null for Destination(new URI(""))
// because isAttributeValueSupported returns false in setAttributes
// Destination(new URI(" ")) throws URISyntaxException
File
f
=
new
File
(
dest
);
try
{
// check if this is a new file and if filename chars are valid
if
(
f
.
createNewFile
())
{
f
.
delete
();
}
}
catch
(
IOException
ioe
)
{
throw
new
PrinterException
(
"Cannot write to file:"
+
dest
);
}
catch
(
SecurityException
se
)
{
//There is already file read/write access so at this point
// only delete access is denied. Just ignore it because in
// most cases the file created in createNewFile gets overwritten
// anyway.
}
File
pFile
=
f
.
getParentFile
();
if
((
f
.
exists
()
&&
(!
f
.
isFile
()
||
!
f
.
canWrite
()))
||
((
pFile
!=
null
)
&&
(!
pFile
.
exists
()
||
(
pFile
.
exists
()
&&
!
pFile
.
canWrite
()))))
{
throw
new
PrinterException
(
"Cannot write to file:"
+
dest
);
}
}
/**
* updates a Paper object to reflect the current printer's selected
* paper size and imageable area for that paper size.
...
...
test/java/awt/print/PrinterJob/PrintToDir.java
0 → 100644
浏览文件 @
1d3dd0e8
/*
* Copyright (c) 2013, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/* @test
@bug 4973278 8015586
@run main PrintToDir
@summary Must throw exception when printing to an invalid filename - a dir.
*/
import
java.io.*
;
import
java.net.*
;
import
java.awt.*
;
import
java.awt.geom.*
;
import
java.awt.print.*
;
import
javax.print.PrintService
;
import
javax.print.attribute.*
;
import
javax.print.attribute.standard.*
;
import
java.util.PropertyPermission
;
public
class
PrintToDir
extends
Frame
implements
Printable
{
boolean
firstTime
=
true
;
double
sx
,
sy
;
Shape
clip
,
firstClip
;
TextField
tf
=
new
TextField
();
Label
tfLabel
=
new
Label
(
"File Name"
);
Panel
p
=
new
Panel
(
new
GridLayout
(
2
,
2
));
Button
b
=
new
Button
(
"Print"
);
PrintToDir
()
{
add
(
"South"
,
p
);
p
.
add
(
tfLabel
);
p
.
add
(
tf
);
p
.
add
(
b
);
setSize
(
300
,
300
);
setVisible
(
true
);
}
public
int
print
(
Graphics
g
,
PageFormat
pf
,
int
pageIndex
)
{
Graphics2D
g2
=
(
Graphics2D
)
g
;
if
(
pageIndex
>=
1
)
{
return
Printable
.
NO_SUCH_PAGE
;
}
g2
.
drawString
(
"hello world"
,
100
,
100
);
return
Printable
.
PAGE_EXISTS
;
}
void
doPrintJob
(
String
fileStr
)
{
PageAttributes
pa
=
new
PageAttributes
();
JobAttributes
ja
=
new
JobAttributes
();
ja
.
setDialog
(
JobAttributes
.
DialogType
.
NONE
);
ja
.
setDestination
(
JobAttributes
.
DestinationType
.
FILE
);
ja
.
setFileName
(
fileStr
);
try
{
PrintJob
pjob
=
Toolkit
.
getDefaultToolkit
().
getPrintJob
(
this
,
"PrintDialog Testing"
,
ja
,
pa
);
if
(
pjob
!=
null
)
{
System
.
out
.
println
(
"Printjob successfully created: "
+
pjob
);
Graphics
g
=
pjob
.
getGraphics
();
this
.
printAll
(
g
);
g
.
dispose
();
pjob
.
end
();
}
System
.
out
.
println
(
"Printing completed"
);
}
catch
(
IllegalArgumentException
e
)
{
System
.
out
.
println
(
"PrintJob passed."
);
return
;
}
throw
new
RuntimeException
(
"PrintJob::IllegalArgumentException expected but not thrown. \nTEST FAILED"
);
}
public
static
void
doPrinterJob
(
String
fileStr
,
OrientationRequested
o
)
{
PrinterJob
pj
=
PrinterJob
.
getPrinterJob
();
PrintService
ps
=
pj
.
getPrintService
();
if
(
ps
==
null
)
{
System
.
out
.
println
(
"No print service found."
);
return
;
}
pj
.
setPrintable
(
new
PrintToDir
());
PrintRequestAttributeSet
aset
=
new
HashPrintRequestAttributeSet
();
aset
.
add
(
o
);
File
f
=
new
File
(
fileStr
);
// f.deleteOnExit();
URI
dest
=
f
.
toURI
();
Destination
d
=
new
Destination
(
dest
);
if
(
ps
.
isAttributeValueSupported
(
d
,
null
,
null
))
{
aset
.
add
(
d
);
try
{
pj
.
print
(
aset
);
}
catch
(
PrinterException
e
)
{
System
.
out
.
println
(
"PrinterJob passed."
);
return
;
}
throw
new
RuntimeException
(
"PrinterJob:PrinterException expected but not thrown. \nTEST FAILED"
);
}
else
{
System
.
out
.
println
(
"Destination attribute is not a supported value. PrinterJob passed."
);
}
}
public
static
void
main
(
String
arg
[])
{
SecurityManager
security
=
System
.
getSecurityManager
();
if
(
security
!=
null
)
{
System
.
out
.
println
(
"Security manager detected"
);
try
{
security
.
checkPermission
(
new
FilePermission
(
"<<ALL FILES>>"
,
"read,write"
));
security
.
checkPermission
(
new
PropertyPermission
(
"user.dir"
,
"read"
));
}
catch
(
SecurityException
se
)
{
System
.
out
.
println
(
"Security requirement not obtained. TEST PASSED"
);
return
;
}
}
String
[]
testStr
=
{
"."
,
""
};
for
(
int
i
=
0
;
i
<
testStr
.
length
;
i
++)
{
System
.
out
.
println
(
"Testing file name = \""
+
testStr
[
i
]+
"\""
);
doPrinterJob
(
testStr
[
i
],
OrientationRequested
.
PORTRAIT
);
PrintToDir
ptd
=
new
PrintToDir
();
ptd
.
doPrintJob
(
testStr
[
i
]);
ptd
.
dispose
();
}
System
.
out
.
println
(
"TEST PASSED"
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录