モジュール java.naming
パッケージ javax.naming

クラスCompositeName

java.lang.Object
javax.naming.CompositeName
すべての実装されたインタフェース:
Serializable, Cloneable, Comparable<Object>, Name

public class CompositeName extends Object implements Name
このクラスは、合成名を表します。合成名とは、複数の名前空間にまたがる一連のコンポーネントの名前です。 各コンポーネントは、ネーミング・システムの名前空間に由来する文字列名です。 コンポーネントが階層名前空間から生ずる場合、CompoundNameクラスを使用することでその基本部分をさらに構文解析できます。

合成名のコンポーネントには、番号が付けられます。 Nコンポーネントの合成名のインデックス範囲は、0からN未満の範囲で番号が付けられます。 この範囲は、[0,N]と表されます。 もっとも重要なコンポーネントは、インデックス0にあります。 空の合成名にはコンポーネントはありません。

JNDI合成名の構文

JNDIでは、合成名の標準文字列表記が定義されます。 この表記では、各コンポーネントを区切るためのコンポーネント区切り文字(スラッシュ(/))を使用して、左から右に合成名のコンポーネントが連結されます。 JNDI構文では、次のメタキャラクタが定義されます。
  • エスケープ(バックスラッシュ\)、
  • 引用符文字(単一引用符(')および二重引用符("))
  • コンポーネント区切り文字(スラッシュ(/))
先行する引用符、メタキャラクタに先行するエスケープ、コンポーネントの末尾のエスケープ、または引用符のないコンポーネントのコンポーネント区切り文字には、そのコンポーネントが合成名文字列に変換されるときに、前にエスケープ文字を付ける必要があります。 または、このようなエスケープ文字を追加しない場合は、単一引用符または二重引用符を対で使用して、コンポーネント全体を引用符で囲みます。 二重引用符で囲まれたコンポーネントの単一引用符は、メタキャラクタとはみなされず、エスケープされる必要もありません。また逆の場合も同じです。

2つの合成名を比較する場合は、大文字小文字の区別が重要になります。

先行するコンポーネント区切り文字(区切り文字で始まる合成名の文字列)は、先行する空のコンポーネント(空の文字列で構成されるコンポーネント)を表します。 末尾のコンポーネント区切り文字(区切り文字で終わる合成名の文字列)は、末尾の空のコンポーネントを表します。 隣接する複合区切り文字は、空のコンポーネントを表します。

合成名の例

次の表に、合成名の例を示します。 各行には、コンポジット名の文字列形式とそれに対応する構造形式(CompositeName)が表示されます。
合成名の文字列形式、およびそれに対応する構造形式(CompositeName)を示す例
文字列名 CompositeName
"" {} (空の名前==新しいCompositeName("")==新しいCompositeName())
"x" {"x"}
"x/y" {"x", "y"}
"x/" {"x", ""}
"/x" {"", "x"}
"/" {""}
"//" {"", ""}
"/x/" {"", "x", ""}
"x//y" {"x", "", "y"}

変換の例

変換の例を示します。 右の列は文字列コンポジット名の構成を示し、左の列は対応するCompositeNameの作成を示しています。 2つの合成名を持つ文字列形式の変換は、文字列形式を連結するだけです。
文字列名および合成名を示す構成例
文字列名 CompositeNames
"x/y" + "/" = x/y/ {"x", "y"} + {""} = {"x", "y", ""}
"" + "x" = "x" {} + {"x"} = {"x"}
"/" + "x" = "/x" {""} + {"x"} = {"", "x"}
"x" + "" + "" = "x" {"x"} + {} + {} = {"x"}

マルチスレッド・アクセス

CompositeNameインスタンスは、同時マルチスレッド・アクセスに対して同期されません。 複数のスレッドがCompositeNameにアクセスして変更しようとすると、オブジェクトがロックされます。
導入されたバージョン:
1.3
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    修飾子
    コンストラクタ
    説明
     
    新しい空の合成名を構築します。
     
    合成名の構文(左から右、スラッシュで区切られる)を使用して、文字列nを構文解析することで、新しい合成名インスタンスを構築します。
    protected
    'comps'で指定されるコンポーネントを使用して、新しい合成名インスタンスを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    add(int posn, String comp)
    単一のコンポーネントを、この合成名の指定した位置に追加します。
    add(String comp)
    単一のコンポーネントをこの合成名の最後に追加します。
    addAll(int posn, Name n)
    合成名のコンポーネントを、この合成名の指定した位置に順に追加します。
    addAll(Name suffix)
    合成名のコンポーネントを、この合成名の末尾に順に追加します。
    この合成名のコピーを生成します。
    int
    CompositeNameと、指定されたObjectの順序を比較します。
    boolean
    合成名がこの合成名の接尾辞であるかが判定されます。
    boolean
    2つの合成名が等しいかを判定します。
    get(int posn)
    この合成名のコンポーネントを取得します。
    この合成名のコンポーネントを、文字列の列挙として取得します。
    getPrefix(int posn)
    コンポーネントがこの合成名のコンポーネントの接頭辞で構成される合成名を作成します。
    getSuffix(int posn)
    コンポーネントがこの合成名のコンポーネントの接尾辞で構成される合成名を作成します。
    int
    この合成名のハッシュ・コードを計算します。
    boolean
    この合成名が空かを判定します。
    remove(int posn)
    この合成名からコンポーネントを削除します。
    int
    この合成名のコンポーネントの数を取得します。
    boolean
    合成名がこの合成名の接頭辞であるかが判定されます。
    この合成名の文字列表記を生成します。

    クラスjava.lang.Objectで宣言されたメソッド

    finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • CompositeName

      protected CompositeName(Enumeration<String> comps)
      'comps'で指定されるコンポーネントを使用して、新しい合成名インスタンスを構築します。 この保護されたメソッドは、clone()、getPrefix()、getSuffix()などのメソッドをオーバーライドする場合に、CompositeNameのサブクラスによって使用されます。
      パラメータ:
      comps - 新しい合成名のコンポーネントを格納するnull以外の列挙。 各要素のクラスはString。 列挙は要素の抽出に使用される。
    • CompositeName

      public CompositeName(String n) throws InvalidNameException
      合成名の構文(左から右、スラッシュで区切られる)を使用して、文字列nを構文解析することで、新しい合成名インスタンスを構築します。 合成名の構文は、クラスの説明のときに詳しく説明します。
      パラメータ:
      n - 構文解析するnull以外の文字列。
      例外:
      InvalidNameException - nに無効な合成名の構文がある場合。
    • CompositeName

      public CompositeName()
      新しい空の合成名を構築します。 それらの名前に対してisEmpty()が呼び出されると、trueを返します。
  • メソッドの詳細

    • toString

      public String toString()
      この合成名の文字列表記を生成します。 文字列表記では、合成名の各コンポーネントが列挙され、各コンポーネントがスラッシュ文字で区切られます。 引用とエスケープ文字は、JNDI構文に応じて必要のある場所に適用されます。これについては、クラスの説明で説明します。 空のコンポーネントは、空の文字列で表されます。 このように生成された文字列表記をCompositeNameコンストラクタに引き渡すと、新しい同様の合成名を作成できます。
      オーバーライド:
      toString、クラスObject
      戻り値:
      この合成名のnull以外の文字列表記。
    • equals

      public boolean equals(Object obj)
      2つの合成名が等しいかを判定します。 objがnullであるか、または合成名ではない場合は、falseを返します。 一方の各コンポーネントがもう一方の対応するコンポーネントと等しい場合は、2つの合成名は等しくなります。 これは、両方の合成名に同じ数のコンポーネントがあり、各コンポーネントのequals()テストでもう一方の名前の対応するコンポーネントを調べるとtrueが返されることを示しています。
      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj - 比較対象となるnullの可能性があるオブジェクト。
      戻り値:
      objがこの合成名と等しい場合はtrue、そうでない場合はfalse。
      関連項目:
    • hashCode

      public int hashCode()
      この合成名のハッシュ・コードを計算します。 ハッシュ・コードとは、この合成名の各コンポーネントのハッシュ・コードの集合です。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      この名前のハッシュ・コードを表すint。
      関連項目:
    • compareTo

      public int compareTo(Object obj)
      CompositeNameと、指定されたObjectの順序を比較します。 このNameが指定されたObjectより小さい場合は負の整数、等しい場合は0、大きい場合は正の整数をそれぞれ返します。

      objがnull、またはCompositeNameのインスタンスではない場合は、ClassCastExceptionがスローされます。

      2つの合成名が等しいとはどのような意味かについては、equals()を参照してください。 2つの合成名が等しい場合は、0を返します。

      合成名の順序付けは、文字列比較の辞書規則に従っています。合成名のすべてのコンポーネントに適用される拡張機能もあります。 その結果、すべてのコンポーネントが指定した順序で、2つのラインアップに適用された辞書規則に従って並べられたようになります。 この合成名が「辞書規則に従って」objより小さい場合は、負の数が返されます。 この合成名が「辞書規則に従って」objより大きい場合は、正の数が返されます。

      定義:
      compareTo、インタフェースComparable<Object>
      定義:
      compareTo、インタフェースName
      パラメータ:
      obj - 比較対象となるnull以外のオブジェクト。
      戻り値:
      このNameが指定されたObjectより小さい場合は負の整数、等しい場合は0、大きい場合は正の整数。
      例外:
      ClassCastException - objがCompositeNameではない場合。
      関連項目:
    • clone

      public Object clone()
      この合成名のコピーを生成します。 この合成名のコンポーネントを変更しても、新しいコピーには影響しません。また逆の場合も同じです。
      定義:
      clone、インタフェースName
      オーバーライド:
      clone、クラスObject
      戻り値:
      この合成名のnull以外のコピー。
      関連項目:
    • size

      public int size()
      この合成名のコンポーネントの数を取得します。
      定義:
      size、インタフェースName
      戻り値:
      この合成名のコンポーネントの数の負以外の値。
    • isEmpty

      public boolean isEmpty()
      この合成名が空かを判定します。 コンポーネントがゼロの場合、合成名は空です。
      定義:
      isEmpty、インタフェースName
      戻り値:
      この合成名が空の場合はtrue、そうでない場合はfalse。
    • getAll

      public Enumeration<String> getAll()
      この合成名のコンポーネントを、文字列の列挙として取得します。 この列挙でこの合成名を更新する影響については、定義されていません。
      定義:
      getAll、インタフェースName
      戻り値:
      この合成名のコンポーネントのnull以外の列挙。 列挙された各要素のクラスはString。
    • get

      public String get(int posn)
      この合成名のコンポーネントを取得します。
      定義:
      get、インタフェースName
      パラメータ:
      posn - 取得するコンポーネントの0から始まるインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      インデックス位置のnull以外のコンポーネント。
      例外:
      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())のインデックスのコンポーネントで構成される合成名。 位置がsize()と等しい場合は、空の合成名が返される。
      例外:
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
    • startsWith

      public boolean startsWith(Name n)
      合成名がこの合成名の接頭辞であるかが判定されます。 合成名'n'は、getPrefix(n.size())と等しい場合に接頭辞になります。つまり、この合成名は'n'で始まります。 'n'がnullであるか、または合成名ではない場合は、falseが返されます。
      定義:
      startsWith、インタフェースName
      パラメータ:
      n - チェックするnullの可能性がある名前。
      戻り値:
      nがCompositeNameで、この合成名の接頭辞である場合はtrue、そうでない場合はfalse。
    • endsWith

      public boolean endsWith(Name n)
      合成名がこの合成名の接尾辞であるかが判定されます。 コンポジット名'n'は、getSuffix(size()-n.size()と等しい場合のサフィクスです。つまり、このコンポジット名は'n'で終わります。 nがnullであるか、または合成名ではない場合は、falseが返されます。
      定義:
      endsWith、インタフェースName
      パラメータ:
      n - チェックするnullの可能性がある名前。
      戻り値:
      nがCompositeNameで、この合成名の接尾辞である場合はtrue、そうでない場合はfalse。
    • addAll

      public Name addAll(Name suffix) throws InvalidNameException
      合成名のコンポーネントを、この合成名の末尾に順に追加します。
      定義:
      addAll、インタフェースName
      パラメータ:
      suffix - 追加するnull以外のコンポーネント。
      戻り値:
      新しいCompositeNameではなく、更新されたCompositeName。 nullは不可。
      例外:
      InvalidNameException - 接尾辞が合成名ではない場合。
    • addAll

      public Name addAll(int posn, Name n) throws InvalidNameException
      合成名のコンポーネントを、この合成名の指定した位置に順に追加します。 最初の新しいコンポーネントのインデックス、またはその後ろにあるこの合成名のコンポーネントは、新しいコンポーネントを取り込むために上に移動(インデックス0から離れる)します。
      定義:
      addAll、インタフェースName
      パラメータ:
      posn - 新しいコンポーネントを追加する位置を示す、この名前内のインデックス。 範囲は[0,size()]でなければならない。
      n - 追加するnull以外のコンポーネント。
      戻り値:
      新しいCompositeNameではなく、更新されたCompositeName。 nullは不可。
      例外:
      InvalidNameException - nが合成名ではない場合。
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
    • add

      public Name add(String comp) throws InvalidNameException
      単一のコンポーネントをこの合成名の最後に追加します。
      定義:
      add、インタフェースName
      パラメータ:
      comp - 追加するnull以外のコンポーネント。
      戻り値:
      新しいCompositeNameではなく、更新されたCompositeName。 nullは不可。
      例外:
      InvalidNameException - 名前の最後へのcompの追加が名前の構文に違反する場合。
    • add

      public Name add(int posn, String comp) throws InvalidNameException
      単一のコンポーネントを、この合成名の指定した位置に追加します。 新しいコンポーネントのインデックス、またはその後ろにあるこの合成名のコンポーネントは、新しいコンポーネントを取り込むために1つ上に移動(インデックス0から離れる)します。
      定義:
      add、インタフェースName
      パラメータ:
      posn - 新しいコンポーネントを追加するインデックス。 範囲は[0,size()]でなければならない。
      comp - 追加するnull以外のコンポーネント。
      戻り値:
      新しいCompositeNameではなく、更新されたCompositeName。 nullは不可。
      例外:
      ArrayIndexOutOfBoundsException - posnが指定された範囲にない場合。
      InvalidNameException - 指定された位置へのcompの追加が名前の構文に違反する場合。
    • remove

      public Object remove(int posn) throws InvalidNameException
      この合成名からコンポーネントを削除します。 位置'posn'にある合成名のコンポーネントが削除され、'posn'より大きいインデックスのコンポーネントは、1つ下(インデックス0の方)に移動します。
      定義:
      remove、インタフェースName
      パラメータ:
      posn - 削除するコンポーネントのインデックス。 範囲は[0,size()]でなければならない。
      戻り値:
      削除されたコンポーネント(String)。
      例外:
      ArrayIndexOutOfBoundsException - 位置が指定した範囲にない場合(合成名が空の場合を含む)。
      InvalidNameException - コンポーネントを削除すると、名前の構文に違反する場合。