Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
837d927b
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看板
提交
837d927b
编写于
1月 17, 2015
作者:
S
serb
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8066132: BufferedImage::getPropertyNames() always returns null
Reviewed-by: prr, flar
上级
d0ad57b0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
133 addition
and
27 deletion
+133
-27
src/share/classes/java/awt/image/BufferedImage.java
src/share/classes/java/awt/image/BufferedImage.java
+30
-27
test/java/awt/image/BufferedImage/GetPropertyNames.java
test/java/awt/image/BufferedImage/GetPropertyNames.java
+103
-0
未找到文件。
src/share/classes/java/awt/image/BufferedImage.java
浏览文件 @
837d927b
/*
* Copyright (c) 1997, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
5
, 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
...
...
@@ -25,26 +25,23 @@
package
java.awt.image
;
import
java.awt.Transparency
;
import
java.awt.color.ColorSpace
;
import
java.awt.Graphics2D
;
import
java.awt.GraphicsConfiguration
;
import
java.awt.GraphicsEnvironment
;
import
java.awt.ImageCapabilities
;
import
java.awt.geom.Rectangle2D
;
import
java.awt.geom.Point2D
;
import
java.awt.Point
;
import
java.awt.Rectangle
;
import
java.awt.Transparency
;
import
java.awt.color.ColorSpace
;
import
java.security.AccessController
;
import
java.security.PrivilegedAction
;
import
java.util.Hashtable
;
import
java.util.Set
;
import
java.util.Vector
;
import
sun.awt.image.BytePackedRaster
;
import
sun.awt.image.ShortComponentRaster
;
import
sun.awt.image.ByteComponentRaster
;
import
sun.awt.image.BytePackedRaster
;
import
sun.awt.image.IntegerComponentRaster
;
import
sun.awt.image.OffScreenImageSource
;
import
sun.awt.image.ShortComponentRaster
;
/**
*
...
...
@@ -68,18 +65,14 @@ import sun.awt.image.OffScreenImageSource;
* @see Raster
* @see WritableRaster
*/
public
class
BufferedImage
extends
java
.
awt
.
Image
implements
WritableRenderedImage
,
Transparency
{
int
imageType
=
TYPE_CUSTOM
;
ColorModel
colorModel
;
WritableRaster
raster
;
OffScreenImageSource
osis
;
Hashtable
properties
;
boolean
isAlphaPremultiplied
;
// If true, alpha has been premultiplied in
// color channels
private
int
imageType
=
TYPE_CUSTOM
;
private
ColorModel
colorModel
;
private
final
WritableRaster
raster
;
private
OffScreenImageSource
osis
;
private
Hashtable
<
String
,
Object
>
properties
;
/**
* Image Type Constants
...
...
@@ -328,8 +321,8 @@ public class BufferedImage extends java.awt.Image
0x000000ff
,
// Blue
0x0
// Alpha
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
}
break
;
...
...
@@ -355,9 +348,8 @@ public class BufferedImage extends java.awt.Image
true
,
// Alpha Premultiplied
DataBuffer
.
TYPE_INT
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
}
break
;
...
...
@@ -368,8 +360,8 @@ public class BufferedImage extends java.awt.Image
0x0000ff00
,
// Green
0x00ff0000
// Blue
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
raster
=
colorModel
.
createCompatibleWritableRaster
(
width
,
height
);
}
break
;
...
...
@@ -642,7 +634,14 @@ public class BufferedImage extends java.awt.Image
colorModel
=
cm
;
this
.
raster
=
raster
;
this
.
properties
=
properties
;
if
(
properties
!=
null
&&
!
properties
.
isEmpty
())
{
this
.
properties
=
new
Hashtable
<>();
for
(
final
Object
key
:
properties
.
keySet
())
{
if
(
key
instanceof
String
)
{
this
.
properties
.
put
((
String
)
key
,
properties
.
get
(
key
));
}
}
}
int
numBands
=
raster
.
getNumBands
();
boolean
isAlphaPre
=
cm
.
isAlphaPremultiplied
();
final
boolean
isStandard
=
isStandard
(
cm
,
raster
);
...
...
@@ -1272,7 +1271,11 @@ public class BufferedImage extends java.awt.Image
* or <code>null</code> if no property names are recognized.
*/
public
String
[]
getPropertyNames
()
{
return
null
;
if
(
properties
==
null
||
properties
.
isEmpty
())
{
return
null
;
}
final
Set
<
String
>
keys
=
properties
.
keySet
();
return
keys
.
toArray
(
new
String
[
keys
.
size
()]);
}
/**
...
...
test/java/awt/image/BufferedImage/GetPropertyNames.java
0 → 100644
浏览文件 @
837d927b
/*
* Copyright (c) 2015, 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.
*/
import
java.awt.Image
;
import
java.awt.image.BufferedImage
;
import
java.util.Properties
;
import
static
java
.
awt
.
image
.
BufferedImage
.
TYPE_INT_ARGB
;
/**
* @test
* @bug 8066132
* @author Sergey Bylokhov
*/
public
final
class
GetPropertyNames
{
static
BufferedImage
defaultProps
=
new
BufferedImage
(
1
,
1
,
TYPE_INT_ARGB
);
public
static
void
main
(
final
String
[]
args
)
{
// default result is null
if
(
defaultProps
.
getPropertyNames
()
!=
null
)
{
throw
new
RuntimeException
(
"PropertyNames should be null"
);
}
// for null properties result is null
final
BufferedImage
emptyProps
=
getBufferedImage
(
null
);
if
(
emptyProps
.
getPropertyNames
()
!=
null
)
{
throw
new
RuntimeException
(
"PropertyNames should be null"
);
}
// for empty properties result is null
final
BufferedImage
nullProps
=
getBufferedImage
(
new
Properties
());
if
(
nullProps
.
getPropertyNames
()
!=
null
)
{
throw
new
RuntimeException
(
"PropertyNames should be null"
);
}
// for non-string keys result is null
final
Properties
properties
=
new
Properties
();
properties
.
put
(
1
,
1
);
properties
.
put
(
2
,
2
);
properties
.
put
(
3
,
3
);
final
BufferedImage
nonStringProps
=
getBufferedImage
(
properties
);
if
(
nonStringProps
.
getPropertyNames
()
!=
null
)
{
throw
new
RuntimeException
(
"PropertyNames should be null"
);
}
// for string keys result is not null
properties
.
clear
();
properties
.
setProperty
(
"1"
,
"1"
);
properties
.
setProperty
(
"2"
,
"2"
);
validate
(
getBufferedImage
(
properties
),
2
);
// for the mix of strings and objects result is not null
properties
.
clear
();
properties
.
put
(
1
,
1
);
properties
.
put
(
2
,
2
);
properties
.
put
(
3
,
3
);
properties
.
setProperty
(
"key1"
,
"value1"
);
properties
.
setProperty
(
"key2"
,
"value2"
);
final
BufferedImage
mixProps
=
getBufferedImage
(
properties
);
validate
(
mixProps
,
2
);
if
(!
"value1"
.
equals
(
mixProps
.
getProperty
(
"key1"
))
||
!
"value2"
.
equals
(
mixProps
.
getProperty
(
"key2"
)))
{
throw
new
RuntimeException
(
"Wrong key-value pair"
);
}
}
private
static
BufferedImage
getBufferedImage
(
final
Properties
properties
)
{
return
new
BufferedImage
(
defaultProps
.
getColorModel
(),
defaultProps
.
getRaster
(),
defaultProps
.
isAlphaPremultiplied
(),
properties
);
}
private
static
void
validate
(
final
BufferedImage
bi
,
final
int
expected
)
{
final
String
[]
names
=
bi
.
getPropertyNames
();
if
(
names
.
length
!=
expected
)
{
throw
new
RuntimeException
(
"Wrong number of names"
);
}
for
(
final
String
name
:
names
)
{
final
Object
property
=
bi
.
getProperty
(
name
);
if
(
property
==
Image
.
UndefinedProperty
||
property
==
null
)
{
throw
new
RuntimeException
(
"Unexpected property"
);
}
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录