Интерфейс DomainCombiner
- Все известные реализующие классы:
- SubjectDomainCombiner
public interface DomainCombiner
Обеспечивает возможность динамического обновления ProtectionDomains, связанных с текущим AccessControlContext.
Объект DomainCombiner передаётся в качестве параметра соответствующему конструктору AccessControlContext. Полученный контекст затем передаётся методу AccessController.doPrivileged(..., context), чтобы связать предоставленный контекст (и связанные DomainCombiner) с текущей нитью выполнения. Последующие вызовы AccessController.getContext или AccessController.checkPermission вызывают вызов DomainCombiner.combine.
Метод combine принимает два аргумента. Первый аргумент представляет массив ProtectionDomains из текущей нити выполнения, начиная с последнего вызова AccessController.doPrivileged. Если вызов doPrivileged не производился, первый аргумент будет содержать все ProtectionDomains текущей нити выполнения. Второй аргумент представляет массив унаследованных ProtectionDomains, которые могут быть null. ProtectionDomains могут быть унаследованы от родительской нити или от привилегированного контекста. Если вызов doPrivileged не производился, второй аргумент будет содержать ProtectionDomains, унаследованные от родительской нити. Если один или несколько вызовов doPrivileged были совершены, и последний вызов был doPrivileged(action, context), второй аргумент будет содержать ProtectionDomains из привилегированного контекста. Если последний вызов был doPrivileged(action), привилегированного контекста нет, и второй аргумент будет null.
Метод combine исследует два входных массива ProtectionDomains и возвращает один массив, содержащий обновлённые ProtectionDomains. В простейшем случае метод combine объединяет две стеки в одну. В более сложных случаях метод combine возвращает изменённую стек ProtectionDomains. Изменение может включать добавление новых ProtectionDomains, удаление определённых ProtectionDomains или просто обновление существующих ProtectionDomains. Также допускается переупорядочивание и другие оптимизации ProtectionDomains. Обычно метод combine основывает свои обновления на информации, содержащейся в DomainCombiner.
После того, как метод AccessController.getContext получает объединённую стек ProtectionDomains от DomainCombiner, он возвращает новый AccessControlContext, содержащий объединённые ProtectionDomains, а также DomainCombiner.
- С:
- 1.3
- См. также:
-
AccessController,AccessControlContext
Методы
| Модификатор и тип | Метод и описание |
|---|---|
ProtectionDomain[] |
combine(ProtectionDomain[] currentDomains,
ProtectionDomain[] assignedDomains) Изменение или обновление предоставленных ProtectionDomains. |
Методы
combine
ProtectionDomain[] combine(ProtectionDomain[] currentDomains,
ProtectionDomain[] assignedDomains) Изменение или обновление предоставленных ProtectionDomains. ProtectionDomains могут быть добавлены или удалены из заданных ProtectionDomains. ProtectionDomains могут быть переупорядочены. Отдельные ProtectionDomains могут быть изменены (например, с новым набором разрешений).
- Параметры:
-
currentDomains- ProtectionDomains, связанные с текущей нитью выполнения до последнего привилегированногоProtectionDomain. ProtectionDomains перечислены в порядке выполнения, с последним выполняемымProtectionDomainв начале массива. Этот параметр может бытьnull, если текущая нить выполнения не имеет связанных ProtectionDomains. -
assignedDomains- массив унаследованных ProtectionDomains. ProtectionDomains могут быть унаследованы от родительской нити или от привилегированногоAccessControlContext. Этот параметр может бытьnull, если унаследованных ProtectionDomains нет. - Возвращает:
- новый массив, состоящий из обновлённых ProtectionDomains, или
null.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.