Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
爱吃血肠
spring-framework
提交
0179c66d
S
spring-framework
项目概览
爱吃血肠
/
spring-framework
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-framework
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0179c66d
编写于
8月 24, 2009
作者:
C
Costin Leau
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
+ add security manager checks to avoid the creation of inner privileged action classes
上级
04b619eb
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
15 deletion
+22
-15
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/SimpleInstantiationStrategy.java
...rk/beans/factory/support/SimpleInstantiationStrategy.java
+22
-15
未找到文件。
org.springframework.beans/src/main/java/org/springframework/beans/factory/support/SimpleInstantiationStrategy.java
浏览文件 @
0179c66d
...
...
@@ -54,12 +54,15 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy {
throw
new
BeanInstantiationException
(
clazz
,
"Specified class is an interface"
);
}
try
{
constructorToUse
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Constructor
>()
{
public
Constructor
run
()
throws
Exception
{
return
clazz
.
getDeclaredConstructor
((
Class
[])
null
);
}
});
if
(
System
.
getSecurityManager
()
!=
null
)
{
constructorToUse
=
AccessController
.
doPrivileged
(
new
PrivilegedExceptionAction
<
Constructor
>()
{
public
Constructor
run
()
throws
Exception
{
return
clazz
.
getDeclaredConstructor
((
Class
[])
null
);
}
});
}
else
{
constructorToUse
=
clazz
.
getDeclaredConstructor
((
Class
[])
null
);
}
beanDefinition
.
resolvedConstructorOrFactoryMethod
=
constructorToUse
;
}
catch
(
Exception
ex
)
{
...
...
@@ -127,14 +130,19 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy {
Object
factoryBean
,
final
Method
factoryMethod
,
Object
[]
args
)
{
try
{
if
(
System
.
getSecurityManager
()
!=
null
)
{
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Object
>()
{
public
Object
run
()
{
ReflectionUtils
.
makeAccessible
(
factoryMethod
);
return
null
;
}
});
}
else
{
ReflectionUtils
.
makeAccessible
(
factoryMethod
);
}
// It's a static method if the target is null.
AccessController
.
doPrivileged
(
new
PrivilegedAction
<
Object
>()
{
public
Object
run
()
{
ReflectionUtils
.
makeAccessible
(
factoryMethod
);
return
null
;
}
});
return
factoryMethod
.
invoke
(
factoryBean
,
args
);
}
catch
(
IllegalArgumentException
ex
)
{
...
...
@@ -151,5 +159,4 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy {
"Factory method ["
+
factoryMethod
+
"] threw exception"
,
ex
.
getTargetException
());
}
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录