Класс CompoundName

Все реализованные интерфейсы:
Serializable, Cloneable, Comparable<Object>, Name
public class CompoundName
extends Object
implements Name

Этот класс представляет составное имя — имя из иерархического пространства имен. Каждый компонент составного имени — это атомарное имя.

Компоненты составного имени пронумерованы. Индексы составного имени с N компонентами варьируются от 0 до, но не включая, N. Этот диапазон можно записать как [0, N). Наиболее значимый компонент имеет индекс 0. Пустое составное имя не имеет компонентов.

Синтаксис составного имени

Синтаксис составного имени задается набором свойств:
jndi.syntax.direction
Направление разбора ("right_to_left", "left_to_right", "flat"). Если не указано, по умолчанию используется "flat", что означает, что пространство имен является плоским без иерархической структуры.
jndi.syntax.separator
Разделитель между атомарными компонентами имени. Требуется, если направление не "flat".
jndi.syntax.ignorecase
Если присутствует, "true" означает игнорирование регистра при сравнении компонентов имени. Если его значение не "true", или если свойство отсутствует, регистр учитывается при сравнении компонентов имени.
jndi.syntax.escape
Если присутствует, задает строку экранирования для переопределения разделителя, экранирования и кавычек.
jndi.syntax.beginquote
Если присутствует, задает строку, определяющую начало цитируемой строки.
jndi.syntax.endquote
Строка, определяющая конец цитируемой строки. Если присутствует, задает строку, определяющую конец цитируемой строки. Если отсутствует, в качестве конечной кавычки используется syntax.beginquote.
jndi.syntax.beginquote2
Альтернативный набор кавычек начала/конца.
jndi.syntax.endquote2
Альтернативный набор кавычек начала/конца.
jndi.syntax.trimblanks
Если присутствует, "true" означает обрезку начальных и конечных пробелов в компоненте имени для целей сравнения. Если его значение не "true", или если свойство отсутствует, пробелы имеют значение.
jndi.syntax.separator.ava
Если присутствует, задает строку, разделяющую утверждения атрибут-значение, когда указывается несколько пар атрибут/значение (например, "," в age=65,gender=male).
jndi.syntax.separator.typeval
Если присутствует, задает строку, разделяющую атрибут и значение (например, "=" в "age=65")
Эти свойства интерпретируются по следующим правилам:
  1. В строке без кавычек или экранирования любая вставка разделителя ограничивает два атомарных имени. Каждое атомарное имя называется компонентом.
  2. Разделитель, кавычки или экранирование экранируются, если им непосредственно предшествует (слева) экранирование.
  3. Если есть два набора кавычек, конкретная кавычка начала должна соответствовать своей соответствующей кавычке конца.
  4. Неэкранированная кавычка начала, которая предшествует компоненту, должна соответствовать неэкранированной кавычке конца в конце компонента. Такой цитируемый компонент называется цитируемым компонентом. Он анализируется путем удаления кавычек начала и конца, а интервальные символы обрабатываются как обычные символы, если не применяется одно из правил, касающихся цитируемых компонентов, перечисленных ниже.
  5. Кавычки, вставленные в нецитируемые компоненты, обрабатываются как обычные строки и не требуют соответствия.
  6. Разделитель, который экранирован или появляется между неэкранированными кавычками, обрабатывается как обычная строка, а не как разделитель.
  7. Строка экранирования внутри цитируемого компонента действует как экранирование только тогда, когда ей следует соответствующая строка кавычек конца. Это может использоваться для вставки экранированной кавычки в цитируемый компонент.
  8. Экранированная строка экранирования не обрабатывается как строка экранирования.
  9. Строка экранирования, которая не предшествует метастроке (кавычки или разделитель) и не находится в конце компонента, обрабатывается как обычная строка.
  10. Ведущее разделение (строка составного имени начинается с разделителя) обозначает ведущий пустой атомарный компонент (состоящий из пустой строки). Завершающий разделитель (строка составного имени заканчивается разделителем) обозначает завершающий пустой атомарный компонент. Смежные разделители обозначают пустой атомарный компонент.

Строковая форма составного имени следует указанному выше синтаксису. Когда компоненты составного имени преобразуются в их строковое представление, применяются перечисленные выше правила синтаксического анализа (например, вставленные разделители экранируются или заключаются в кавычки), чтобы при разборе той же самой строки были получены те же компоненты исходного составного имени.

Доступ в многопоточных средах

Объект типа CompoundName не синхронизирован для доступа в многопоточных средах. Несколько потоков, пытающихся получить доступ к и изменить объект CompoundName, должны заблокировать объект.
С:
1.3
См. также:
Сериализованная форма

Поля

Модификатор и тип Поле Описание
protected Properties mySyntax

Свойства синтаксиса для этого составного имени.

Конструкторы

Модификатор Конструктор Описание
CompoundName​(String n, Properties syntax)

Создает новый экземпляр составного имени путем разбора строки n с использованием синтаксиса, заданного предоставленными свойствами синтаксиса.

protected CompoundName​(Enumeration<String> comps, Properties syntax)

Создает новый экземпляр составного имени, используя указанные в comps компоненты и синтаксис.

Методы

Модификатор и тип Метод Описание
Name add​(int posn, String comp)

Добавляет один компонент в указанное положение внутри этого составного имени.

Name add​(String comp)

Добавляет один компонент в конец этого составного имени.

Name addAll​(int posn, Name n)

Добавляет компоненты составного имени — по порядку — в указанное положение внутри этого составного имени.

Name addAll​(Name suffix)

Добавляет компоненты составного имени — по порядку — в конец этого составного имени.

Object clone()

Создает копию этого составного имени.

int compareTo​(Object obj)

Сравнивает это составное имя с указанным объектом для определения порядка.

boolean endsWith​(Name n)

Определяет, является ли составное имя суффиксом этого составного имени.

boolean equals​(Object obj)

Определяет, является ли obj синтаксически равным этому составному имени.

String get​(int posn)

Возвращает компонент этого составного имени.

Enumeration<String> getAll()

Возвращает компоненты этого составного имени в виде перечисления строк.

Name getPrefix​(int posn)

Создает составное имя, компоненты которого состоят из префикса компонентов в этом составном имени.

Name getSuffix​(int posn)

Создает составное имя, компоненты которого состоят из суффикса компонентов в этом составном имени.

int hashCode()

Вычисляет хеш-код этого составного имени.

boolean isEmpty()

Определяет, пусто ли это составное имя.

Object remove​(int posn)

Удаляет компонент из этого составного имени.

int size()

Возвращает количество компонентов в этом составном имени.

boolean startsWith​(Name n)

Определяет, является ли составное имя префиксом этого составного имени.

String toString()

Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени.

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

finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

mySyntax

protected transient Properties mySyntax

Свойства синтаксиса для этого составного имени. Это поле инициализируется конструкторами и не может быть null. Оно должно рассматриваться подклассами как неизменяемая переменная. Все необходимые изменения в mySyntax должны выполняться внутри конструкторов, а не после создания составного имени.

Конструкторы

CompoundName

protected CompoundName(Enumeration<String> comps,
                       Properties syntax)

Создаёт новый экземпляр составного имени, используя компоненты, указанные в comps и syntax. Этот защищённый метод предназначен для использования подклассами CompoundName при переопределении методов, таких как clone(), getPrefix(), getSuffix().

Параметры:
comps - Непустой перечисление компонентов для добавления. Каждый элемент перечисления имеет тип String. Перечисление будет использовано для извлечения элементов.
syntax - Непустой объект свойств, определяющий синтаксис этого составного имени. См. описание класса для содержимого свойств.

CompoundName

public CompoundName(String n,
                    Properties syntax)
             throws InvalidNameException

Создаёт новый экземпляр составного имени, анализируя строку n с использованием синтаксиса, указанного в свойствах синтаксиса.

Параметры:
n - Непустая строка для анализа.
syntax - Непустой список свойств, определяющих синтаксис этого составного имени. См. описание класса для содержимого свойств.
Исключения:
InvalidNameException - Если 'n' нарушает синтаксис, указанный в syntax.

Методы

toString

public String toString()

Генерирует строковое представление этого составного имени, используя правила синтаксиса составного имени. Правила синтаксиса описаны в описании класса. Пустой компонент представляется пустой строкой. Сгенерированное таким образом строковое представление может быть передано конструктору CompoundName с теми же свойствами синтаксиса для создания нового эквивалентного составного имени.

Переопределяет:
toString в классе Object
Возвращает:
Непустое строковое представление этого составного имени.

equals

public boolean equals(Object obj)

Определяет, является ли obj синтаксически равным этому составному имени. Если obj равен null или не является CompoundName, возвращается false. Два составных имени равны, если каждый компонент в одном "равен" соответствующему компоненту в другом.

Равенство также определяется с точки зрения синтаксиса этого составного имени. Реализация CompoundName по умолчанию использует свойства синтаксиса jndi.syntax.ignorecase и jndi.syntax.trimblanks при сравнении двух компонентов на равенство. Если регистр игнорируется, две строки с одинаковой последовательностью символов, но с разным регистром, считаются равными. Если пробелы обрезаются, начальные и конечные пробелы игнорируются при сравнении.

Оба составных имени должны иметь одинаковое количество компонентов.

Примечание к реализации: В настоящее время свойства синтаксиса двух составных имен не сравниваются на равенство. Возможно, это будет реализовано в будущем.

Переопределяет:
equals в классе Object
Параметры:
obj - Возможно, нулевой объект для сравнения.
Возвращает:
true, если obj равен этому составному имени, false в противном случае.
См. также:
compareTo(java.lang.Object obj)

hashCode

public int hashCode()

Вычисляет хэш-код этого составного имени. Хэш-код представляет собой сумму хэш-кодов "канонизированных" форм отдельных компонентов этого составного имени. Каждый компонент "канонизируется" в соответствии с синтаксисом составного имени, прежде чем вычисляется его хэш-код. Например, для имени без учёта регистра, строчная форма имени имеет тот же хэш-код, что и его эквивалент в верхнем регистре.

Переопределяет:
hashCode в классе Object
Возвращает:
Целое число, представляющее хэш-код этого имени.
См. также:
Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)

clone

public Object clone()

Создает копию этого составного имени. Изменения в компонентах этого составного имени не повлияют на новую копию и наоборот. Клон и это составное имя используют один и тот же синтаксис.

Указано в:
clone в интерфейсе Name
Переопределяет:
clone в классе Object
Возвращает:
Непустая копия этого составного имени.
См. также:
Cloneable

compareTo

public int compareTo(Object obj)

Сравнивает это CompoundName с указанным Object для определения порядка. Возвращает отрицательное целое число, ноль или положительное целое число в зависимости от того, меньше ли это имя, равно или больше, чем данный Object.

Если obj равен null или не является экземпляром CompoundName, выбрасывается ClassCastException.

См. equals() для определения того, что означает равенство двух составных имён. Если два составных имени равны, возвращается 0.

Порядок составных имён зависит от синтаксиса составного имени. По умолчанию они следуют лексикографическим правилам для сравнения строк с расширением, что это относится ко всем компонентам в составном имени и что сравнение отдельных компонентов зависит от свойств jndi.syntax.ignorecase и jndi.syntax.trimblanks, аналогично тому, как они влияют на equals(). Если это составное имя "лексикографически" меньше, чем obj, возвращается отрицательное число. Если это составное имя "лексикографически" больше, чем obj, возвращается положительное число.

Примечание к реализации: В настоящее время свойства синтаксиса двух составных имён не сравниваются при проверке порядка. Возможно, это будет реализовано в будущем.

Указано в:
compareTo в интерфейсе Comparable<Object>
Указано в:
compareTo в интерфейсе Name
Параметры:
obj - Непустой объект для сравнения.
Возвращает:
отрицательное целое число, ноль или положительное целое число в зависимости от того, меньше ли это имя, равно или больше, чем данный Object.
Исключения:
ClassCastException - если obj не является CompoundName.
См. также:
equals(java.lang.Object)

size

public int size()

Извлекает количество компонентов в этом составном имени.

Указано в:
size в интерфейсе Name
Возвращает:
Неотрицательное количество компонентов в этом составном имени.

isEmpty

public boolean isEmpty()

Определяет, является ли это составное имя пустым. Составное имя является пустым, если оно имеет ноль компонентов.

Указано в:
isEmpty в интерфейсе Name
Возвращает:
true, если это составное имя пустое, false в противном случае.

getAll

public Enumeration<String> getAll()

Извлекает компоненты этого составного имени как перечисление строк. Эффекты обновлений этого составного имени для этого перечисления не определены.

Указано в:
getAll в интерфейсе Name
Возвращает:
Непустое перечисление компонентов этого составного имени. Каждый элемент перечисления имеет класс String.

get

public String get(int posn)

Извлекает компонент этого составного имени.

Указано в:
get в интерфейсе Name
Параметры:
posn - Индекс компонента, который нужно извлечь, с учётом 0. Должен находиться в диапазоне [0,size()).
Возвращает:
Компонент с индексом posn.
Исключения:
ArrayIndexOutOfBoundsException - если posn находится за пределами указанного диапазона.

getPrefix

public Name getPrefix(int posn)

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

Указано в:
getPrefix в интерфейсе Name
Параметры:
posn - Индекс компонента, на котором нужно остановиться, с учётом 0. Должен находиться в диапазоне [0,size()].
Возвращает:
Составное имя, состоящее из компонентов с индексами в диапазоне [0,posn).
Исключения:
ArrayIndexOutOfBoundsException - Если posn находится за пределами указанного диапазона.

getSuffix

public Name getSuffix(int posn)

Создает составное имя, компоненты которого состоят из суффикса компонентов в этом составном имени. Результат и это составное имя используют один и тот же синтаксис. Последующие изменения этого составного имени не влияют на возвращаемое имя.

Указано в:
getSuffix в интерфейсе Name
Параметры:
posn - Индекс компонента, с которого нужно начать, с учётом 0. Должен находиться в диапазоне [0,size()].
Возвращает:
Составное имя, состоящее из компонентов с индексами в диапазоне [posn,size()). Если posn равен size(), возвращается пустое составное имя.
Исключения:
ArrayIndexOutOfBoundsException - Если posn находится за пределами указанного диапазона.

startsWith

public boolean startsWith(Name n)

Определяет, является ли составное имя префиксом этого составного имени. Составное имя 'n' является префиксом, если оно равно getPrefix(n.size()) — другими словами, это составное имя начинается с 'n'. Если n равно null или не является составным именем, возвращается false.

Примечание к реализации: В настоящее время свойства синтаксиса n не используются при сравнении. Возможно, это будет реализовано в будущем.

Указано в:
startsWith в интерфейсе Name
Параметры:
n - Возможно, нулевое составное имя для проверки.
Возвращает:
true, если n является CompoundName и является префиксом этого составного имени, false в противном случае.

endsWith

public boolean endsWith(Name n)

Определяет, является ли составное имя суффиксом этого составного имени. Составное имя 'n' является суффиксом, если оно равно getSuffix(size()-n.size()) — другими словами, это составное имя заканчивается на 'n'. Если n равно null или не является составным именем, возвращается false.

Примечание к реализации: В настоящее время свойства синтаксиса n не используются при сравнении. Возможно, это будет реализовано в будущем.

Указано в:
endsWith в интерфейсе Name
Параметры:
n - Возможно, нулевое составное имя для проверки.
Возвращает:
true, если n является CompoundName и является суффиксом этого составного имени, false в противном случае.

addAll

public Name addAll(Name suffix)
            throws InvalidNameException

Добавляет компоненты составного имени — по порядку — в конец этого составного имени.

Примечание к реализации: В настоящее время свойства синтаксиса суффикса не используются и не проверяются. Возможно, это будет реализовано в будущем.

Указано в:
addAll в интерфейсе Name
Параметры:
suffix - Непустые компоненты для добавления.
Возвращает:
Обновленное CompoundName, а не новое. Не может быть null.
Исключения:
InvalidNameException - Если suffix не является составным именем или если добавление компонентов нарушает синтаксис этого составного имени (например, превышение количества компонентов).

addAll

public Name addAll(int posn,
                   Name n)
            throws InvalidNameException

Добавляет компоненты составного имени — по порядку — в указанную позицию в этом составном имени. Компоненты этого составного имени в или после индекса первого нового компонента сдвигаются вверх (от индекса 0), чтобы разместить новые компоненты.

Примечание к реализации: В настоящее время свойства синтаксиса суффикса не используются и не проверяются. Возможно, это будет реализовано в будущем.

Указано в:
addAll в интерфейсе Name
Параметры:
n - Добавляемые непустые компоненты.
posn - Индекс в этом имени, в котором следует добавить новые компоненты. Должно быть в диапазоне [0,size()].
Возвращает:
Обновлённое CompoundName, а не новое. Не может быть null.
Выбрасывает:
ArrayIndexOutOfBoundsException - Если posn находится за пределами указанного диапазона.
InvalidNameException - Если n не является составным именем или добавление компонентов нарушает синтаксис этого составного имени (например, превышено количество компонентов).

add

public Name add(String comp)
         throws InvalidNameException

Добавляет один компонент в конец этого составного имени.

Указано в:
add в интерфейсе Name
Параметры:
comp - Добавляемый непустой компонент.
Возвращает:
Обновлённое CompoundName, а не новое. Не может быть null.
Выбрасывает:
InvalidNameException - Если добавление comp в конец имени нарушит синтаксис составного имени.

add

public Name add(int posn,
                String comp)
         throws InvalidNameException

Добавляет один компонент в указанную позицию внутри этого составного имени. Компоненты этого составного имени в или после индекса нового компонента сдвигаются вверх на единицу (от индекса 0) для размещения нового компонента.

Указано в:
add в интерфейсе Name
Параметры:
comp - Добавляемый непустой компонент.
posn - Индекс, в который необходимо добавить новый компонент. Должно быть в диапазоне [0,size()].
Возвращает:
Обновлённое CompoundName, а не новое. Не может быть null.
Выбрасывает:
ArrayIndexOutOfBoundsException - Если posn находится за пределами указанного диапазона.
InvalidNameException - Если добавление comp в указанную позицию нарушит синтаксис составного имени.

remove

public Object remove(int posn)
              throws InvalidNameException

Удаляет компонент из этого составного имени. Компонент этого составного имени в позиции 'posn' удаляется, а компоненты с индексами больше 'posn' сдвигаются вниз (к индексу 0) на единицу.

Указано в:
remove в интерфейсе Name
Параметры:
posn - Индекс компонента для удаления. Должно быть в диапазоне [0,size()).
Возвращает:
Удаленный компонент (строка).
Выбрасывает:
ArrayIndexOutOfBoundsException - Если posn находится за пределами указанного диапазона (включает случай, когда составное имя пустое).
InvalidNameException - Если удаление компонента нарушит синтаксис составного имени.

© 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.naming/javax/naming/CompoundName.html

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