Module  java.base
软件包  javax.security.auth

Class SubjectDomainCombiner

  • All Implemented Interfaces:
    DomainCombiner


    public class SubjectDomainCombiner
    extends Object
    implements DomainCombiner
    A SubjectDomainCombiner更新来自与此 SubjectDomainCombiner相关联的 Subject中的主体的 SubjectDomainCombiner
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • SubjectDomainCombiner

        public SubjectDomainCombiner​(Subject subject)
        将所提供的 Subject与此 SubjectDomainCombiner
        参数
        subject -在 Subject到与此相关 SubjectDomainCombiner
    • 方法详细信息

      • getSubject

        public Subject getSubject​()
        获取 Subject与此 SubjectDomainCombiner相关联。
        结果
        所述 Subject与此相关 SubjectDomainCombiner ,或 null如果没有 Subject与此相关联的 SubjectDomainCombiner
        异常
        SecurityException -如果调用方无权获得 Subject与此相关 SubjectDomainCombiner
      • combine

        public ProtectionDomain[] combine​(ProtectionDomain[] currentDomains,
                                          ProtectionDomain[] assignedDomains)
        更新从校长有关的ProtectionDomains Subject与此相关SubjectDomainCombiner

        一个新的ProtectionDomain实例为每个创建的非静态ProtectionDomain ((staticPermissionsOnly()== FALSE)中currentDomains阵列。每个新ProtectionDomain实例使用所创建的CodeSourcePermission S和ClassLoader从相应ProtectionDomaincurrentDomains ,以及与来自与此Subject相关联的SubjectDomainCombiner 。静态ProtectionDomains按原样组合,并且不创建新实例。

        所有的ProtectionDomains(静态和新实例化的)被组合成一个新的数组。 来自assignedDomains数组的ProtectionDomains会追加到新的数组中,并返回结果。

        请注意,可能会发生优化,例如删除重复的ProtectionDomain。 另外,可以允许缓存ProtectionDomains。

        Specified by:
        combine在接口 DomainCombiner
        参数
        currentDomains - 与当前执行线程相关联的ProtectionDomains,最高权限为ProtectionDomain ProtectionDomains按执行顺序列出,最近执行的ProtectionDomain位于阵列的开头。 如果当前执行的线程没有关联的ProtectionDomains,此参数可能为null
        assignedDomains -从特权从父线程继承的ProtectionDomain,或的ProtectionDomain context ,如果一个电话 AccessController.doPrivileged(..., context)发生此参数可以为 null如果没有从父线程继承的ProtectionDomain,或从特权 context
        结果
        一个由更新的ProtectionDomains组成的新阵列,或 null