javax.security.auth

接口
异常
java.lang.Object
  继承者 javax.security.auth.SubjectDomainCombiner
所有已实现的接口:
DomainCombiner

public class SubjectDomainCombiner
     
extends Object
implements DomainCombiner

SubjectDomainCombiner 通过与此 SubjectDomainCombiner 关联的 Subject 中的 Principals 更新 ProtectionDomains。


构造方法摘要
SubjectDomainCombiner(Subject subject)
          将提供的 Subject 与此 SubjectDomainCombiner 关联。
 
方法摘要
 ProtectionDomain[] combine(ProtectionDomain[] currentDomains, ProtectionDomain[] assignedDomains)
          使用与此 SubjectDomainCombiner 关联的 Subject 中的 Principals 更新相关的 ProtectionDomains。
 Subject getSubject()
          获取与此 SubjectDomainCombiner 关联的 Subject
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SubjectDomainCombiner

public SubjectDomainCombiner(Subject subject)
将提供的 Subject 与此 SubjectDomainCombiner 关联。

参数:
subject - 要与此 SubjectDomainCombiner 关联的 Subject
方法详细信息

getSubject

public Subject getSubject()
获取与此 SubjectDomainCombiner 关联的 Subject

返回:
与此 SubjectDomainCombiner 关联的 Subject,如果没有与此 SubjectDomainCombiner 关联的 Subject,则返回 null
抛出:
SecurityException - 如果调用者没有获取与此 SubjectDomainCombiner 关联的 Subject 的权限。

combine

public ProtectionDomain[] combine(ProtectionDomain[] currentDomains,
                                  ProtectionDomain[] assignedDomains)
使用与此 SubjectDomainCombiner 关联的 Subject 中的 Principals 更新相关的 ProtectionDomains。

currentDomains 数组中的每个 ProtectionDomain 创建一个新的 ProtectionDomain 实例。每个新 ProtectionDomain 实例使用相应的 currentDomains 中的 ProtectionDomainCodeSourcePermissionClassLoader,以及与此 SubjectDomainCombiner 关联的 Subject 的 Principals 来创建。

将所有新实例化的 ProtectionDomains 组合到一个新数组中。把 assignedDomains 数组中的 ProtectionDomains 追加到此新数组中,同时返回结果。

注意,可能发生移除重复的 ProtectionDomains 这样的优化。另外,也允许缓存 ProtectionDomains。

指定者:
接口 DomainCombiner 中的 combine
参数:
currentDomains - 与当前执行线程关联的 ProtectionDomain,直到最近的特权 ProtectionDomain。ProtectionDomain 按执行的顺序列出,最近执行的 ProtectionDomain 位于数组的开头。如果当前的执行线程没有相关的 ProtectionDomains,则此参数可以为 null

assignedDomains - 从父线程继承的 ProtectionDomains,如果发生对 AccessController.doPrivileged(..., context) 的调用,则此参数为特权 context 中的 ProtectionDomains。如果不存在从父线程继承的 ProtectionDomains 或不存在取自 context 的 ProtectionDomains,则此参数可以为 null
返回:
由更新的 ProtectionDomains 组成的新数组,或 null