public class SubjectDomainCombiner extends Object implements DomainCombiner
SubjectDomainCombiner
从与
Subject
联的
SubjectDomainCombiner
更新ProtectionDomains与
SubjectDomainCombiner
。
Constructor and Description |
---|
SubjectDomainCombiner(Subject subject)
将所提供的
Subject 与此
SubjectDomainCombiner 。
|
Modifier and Type | Method and Description |
---|---|
ProtectionDomain[] |
combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
从与
Subject 相关联的Subject更新与Principal的相关
SubjectDomainCombiner 。
|
Subject |
getSubject()
获取
Subject 与此相关
SubjectDomainCombiner 。
|
public SubjectDomainCombiner(Subject subject)
Subject
与此
SubjectDomainCombiner
。
subject
-在
Subject
到与此相关
SubjectDomainCombiner
。
public Subject getSubject()
Subject
与此相关
SubjectDomainCombiner
。
Subject
与此相关
SubjectDomainCombiner
,或
null
如果没有
Subject
与此相关联的
SubjectDomainCombiner
。
SecurityException
-如果调用方无权获得
Subject
与此相关
SubjectDomainCombiner
。
public ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
Subject
相关联的Subject更新与Principals的相关SubjectDomainCombiner
。
将为currentDomains数组中的每个ProtectionDomain
创建一个新的ProtectionDomain
实例。 每个新ProtectionDomain
实例使用所创建的CodeSource
, Permission
S和ClassLoader
从相应ProtectionDomain
在currentDomains,以及与从校长Subject
与此相关的SubjectDomainCombiner
。
所有新实例化的ProtectionDomains都组合成一个新的数组。 protectedDomains数组中的ProtectionDomains会追加到新的数组中,并返回结果。
请注意,可能会发生优化,例如删除重复的ProtectionDomain。 另外,可以允许缓存ProtectionDomains。
combine
在界面
DomainCombiner
currentDomains
- 与当前执行Thread相关联的ProtectionDomains,最高权限为ProtectionDomain
。
ProtectionDomains按执行顺序列出,最近执行的ProtectionDomain
位于阵列的开头。
此参数可以为null
如果当前的执行线程没有相关的ProtectionDomains。
assignedDomains
- 如果发生了AccessController.doPrivileged(...,
context )的调用,则从父线程继承的ProtectionDomains或者来自特权
上下文的
null
如果没有从父线程继承ProtectionDomains,则此参数可能为
null
,或从特权
上下文中 。
null
。