Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
cdd269f4
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看板
提交
cdd269f4
编写于
4月 01, 2014
作者:
M
mullan
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8035004: Provider provides less service
Reviewed-by: wetmore, skoivu
上级
6d3e5208
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
25 addition
and
13 deletion
+25
-13
src/share/classes/java/security/Provider.java
src/share/classes/java/security/Provider.java
+25
-13
未找到文件。
src/share/classes/java/security/Provider.java
浏览文件 @
cdd269f4
/*
* Copyright (c) 1996, 201
3
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1996, 201
4
, 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
...
...
@@ -1372,7 +1372,7 @@ public abstract class Provider extends Properties {
* <p>This class defines the methods {@link #supportsParameter
* supportsParameter()} and {@link #newInstance newInstance()}
* which are used by the Java security framework when it searches for
* suitable services and instantes them. The valid arguments to those
* suitable services and instant
iat
es them. The valid arguments to those
* methods depend on the type of service. For the service types defined
* within Java SE, see the
* <a href="../../../technotes/guides/security/crypto/CryptoSpec.html">
...
...
@@ -1562,7 +1562,7 @@ public abstract class Provider extends Properties {
*
* @throws InvalidParameterException if the value of
* constructorParameter is invalid for this type of service.
* @throws NoSuchAlgorithmException if instantation failed for
* @throws NoSuchAlgorithmException if instant
i
ation failed for
* any other reason.
*/
public
Object
newInstance
(
Object
constructorParameter
)
...
...
@@ -1590,7 +1590,9 @@ public abstract class Provider extends Properties {
+
" engines"
);
}
Class
<?>
clazz
=
getImplClass
();
return
clazz
.
newInstance
();
Class
<?>[]
empty
=
{};
Constructor
<?>
con
=
clazz
.
getConstructor
(
empty
);
return
con
.
newInstance
();
}
else
{
Class
<?>
paramClass
=
cap
.
getConstructorParameterClass
();
if
(
constructorParameter
!=
null
)
{
...
...
@@ -1633,13 +1635,18 @@ public abstract class Provider extends Properties {
}
else
{
clazz
=
cl
.
loadClass
(
className
);
}
if
(!
Modifier
.
isPublic
(
clazz
.
getModifiers
()))
{
throw
new
NoSuchAlgorithmException
(
"class configured for "
+
type
+
" (provider: "
+
provider
.
getName
()
+
") is not public."
);
}
classRef
=
new
WeakReference
<
Class
<?>>(
clazz
);
}
return
clazz
;
}
catch
(
ClassNotFoundException
e
)
{
throw
new
NoSuchAlgorithmException
(
"class configured for "
+
type
+
"(provider: "
+
provider
.
getName
()
+
")
"
+
"
cannot be found."
,
e
);
(
"class configured for "
+
type
+
"
(provider: "
+
provider
.
getName
()
+
")
cannot be found."
,
e
);
}
}
...
...
@@ -1652,15 +1659,21 @@ public abstract class Provider extends Properties {
throws
Exception
{
Class
<?>
clazz
=
getImplClass
();
if
(
constructorParameter
==
null
)
{
Object
o
=
clazz
.
newInstance
();
return
o
;
// create instance with public no-arg constructor if it exists
try
{
Class
<?>[]
empty
=
{};
Constructor
<?>
con
=
clazz
.
getConstructor
(
empty
);
return
con
.
newInstance
();
}
catch
(
NoSuchMethodException
e
)
{
throw
new
NoSuchAlgorithmException
(
"No public no-arg "
+
"constructor found in class "
+
className
);
}
}
Class
<?>
argClass
=
constructorParameter
.
getClass
();
Constructor
[]
cons
=
clazz
.
getConstructors
();
// find first public constructor that can take the
// argument as parameter
for
(
int
i
=
0
;
i
<
cons
.
length
;
i
++)
{
Constructor
<?>
con
=
cons
[
i
];
for
(
Constructor
<?>
con
:
cons
)
{
Class
<?>[]
paramTypes
=
con
.
getParameterTypes
();
if
(
paramTypes
.
length
!=
1
)
{
continue
;
...
...
@@ -1668,10 +1681,9 @@ public abstract class Provider extends Properties {
if
(
paramTypes
[
0
].
isAssignableFrom
(
argClass
)
==
false
)
{
continue
;
}
Object
o
=
con
.
newInstance
(
new
Object
[]
{
constructorParameter
});
return
o
;
return
con
.
newInstance
(
constructorParameter
);
}
throw
new
NoSuchAlgorithmException
(
"No constructor matching "
throw
new
NoSuchAlgorithmException
(
"No
public
constructor matching "
+
argClass
.
getName
()
+
" found in class "
+
className
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录