Класс ObjectInputFilter.Config

Вложенный интерфейс:
ObjectInputFilter
public static final class ObjectInputFilter.Config
extends Object

Утилитарный класс для установки и получения фильтра на уровне процесса или создания фильтра из строки шаблона. Если фильтр на уровне процесса установлен, он будет использоваться для каждого ObjectInputStream, который не задаёт собственный фильтр.

При установке фильтра он должен быть бессостоятельным и идемпотентным, возвращая тот же результат при передаче тех же аргументов.

Фильтр настраивается во время инициализации класса ObjectInputFilter.Config. Например, вызвав Config.getSerialFilter. Если системная переменная jdk.serialFilter определена, она используется для настройки фильтра. Если системная переменная не определена, и свойство Security jdk.serialFilter определено, тогда оно используется для настройки фильтра. В противном случае, фильтр не настраивается во время инициализации. Синтаксис для каждой переменной такой же, как и для метода createFilter. Если фильтр не настроен, его можно установить с помощью Config.setSerialFilter.

С тех пор как:
9

Методы

Модификатор и тип Метод Описание
static ObjectInputFilter createFilter​(String pattern)

Возвращает ObjectInputFilter из строки шаблонов.

static ObjectInputFilter getSerialFilter()

Возвращает фильтр сериализации на уровне процесса или null, если он не настроен.

static void setSerialFilter​(ObjectInputFilter filter)

Устанавливает фильтр на уровне процесса, если он ещё не настроен или установлен.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы

getSerialFilter

public static ObjectInputFilter getSerialFilter()

Возвращает фильтр сериализации на уровне процесса или null, если он не настроен.

Возвращает:
фильтр сериализации на уровне процесса или null, если он не настроен

setSerialFilter

public static void setSerialFilter(ObjectInputFilter filter)

Устанавливает фильтр на уровне процесса, если он ещё не настроен или установлен.

Параметры:
filter - фильтр сериализации, который необходимо установить как фильтр на уровне процесса; не null
Исключения:
SecurityException - если существует менеджер безопасности и SerializablePermission("serialFilter") не предоставлен
IllegalStateException - если фильтр уже установлен non-null

createFilter

public static ObjectInputFilter createFilter(String pattern)

Возвращает ObjectInputFilter из строки шаблонов.

Шаблоны разделяются символом «;» (точка с запятой). Пробелы важны и считаются частью шаблона. Если шаблон включает присвоение значения «=», «=», он устанавливает ограничение. Если ограничение встречается более одного раза, используется последнее значение.

  • maxdepth=value - максимальная глубина графа
  • maxrefs=value - максимальное количество внутренних ссылок
  • maxbytes=value - максимальное количество байтов в потоке ввода
  • maxarray=value - максимальная длина массива, разрешенная

Другие шаблоны соответствуют или отклоняют имя класса или пакета, как возвращается из Class.getName(), и если присутствует необязательное имя модуля class.getModule().getName(). Обратите внимание, что для массивов используется тип элемента в шаблоне, а не тип массива.

  • Если шаблон начинается с «!», класс отклоняется, если совпадает оставшийся шаблон; в противном случае класс допускается, если шаблон совпадает.
  • Если шаблон содержит «/», префикс, не содержащий пробелов, до «/» является именем модуля; если имя модуля соответствует имени модуля класса, то оставшийся шаблон сопоставляется с именем класса. Если нет «/», имя модуля не сравнивается.
  • Если шаблон заканчивается «.**», он соответствует любому классу в пакете и всем подпакетам.
  • Если шаблон заканчивается «.*», он соответствует любому классу в пакете.
  • Если шаблон заканчивается «*», он соответствует любому классу с шаблоном в качестве префикса.
  • Если шаблон равен имени класса, он соответствует.
  • В противном случае шаблон не соответствует.

Результирующий фильтр выполняет проверки ограничений, а затем пытается сопоставить класс, если таковой имеется. Если какое-либо из ограничений превышено, фильтр возвращает Status.REJECTED. Если класс является типом массива, класс, который необходимо сопоставить, — это тип элемента. Массивы любого числа измерений обрабатываются так же, как тип элемента. Например, шаблон «!example.Foo» отклоняет создание любого экземпляра или массива example.Foo. Первый шаблон, который соответствует, работая слева направо, определяет результат Status.ALLOWED или Status.REJECTED. Если ограничения не превышены и ни один шаблон не соответствует классу, результат — Status.UNDECIDED.

Параметры:
pattern - строка шаблона для парсинга; не null
Возвращает:
фильтр для проверки класса, который сериализуется; null если нет шаблонов
Исключения:
IllegalArgumentException - если строка шаблона некорректна или имеет неправильный формат и не может быть обработана. В частности, если выполняется любое из следующих условий:
  • если ограничение отсутствует имя или имя не равно «maxdepth», «maxrefs», «maxbytes» или «maxarray»
  • если значение ограничения не может быть обработано с помощью Long.parseLong или отрицательно
  • если шаблон содержит «/» и имя модуля отсутствует или оставшийся шаблон пуст
  • если пакет отсутствует для «.*» и «.**»

© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/ObjectInputFilter.Config.html

Spec-Zone .ru
спецификации, руководства, описания, API