JavaTM 2 Platform
Standard Ed. 6

javax.naming.ldap
類別 LdapName

java.lang.Object
  繼承者 javax.naming.ldap.LdapName
所有已實作的介面:
Serializable, Cloneable, Comparable<Object>, Name

public class LdapName
extends Object
implements Name

此類別表示 RFC 2253 指定的標識名。標識名(即 DN)由名為相對標識名(即 RDN)的一列有序元件組成。RFC 2253 中描述了 DN 的語法細節。

此類別對 RFC 2253 中存在的一些歧義解釋如下:

傳遞給 LdapName 或由它返回的字元串名稱使用完整的 Unicode 字元集。它們也可能包含一些編碼為 UTF-8 的字元,用三字元的子字元串(如 "\\B4")表示其中每個八位組。但是,它們不能包含編碼為 UTF-8 並使用該字元串中的單個字元表示每個八位組的字元:因為這可能會使含義不明確。

LdapName 將恰當地解析所有有效名稱,但是在解析無效名稱時不會嘗試檢測所有可能的錯誤情況。在接受無效名稱時,它顯得很“大方”。名稱的“有效性”在將名稱提供給 LDAP 伺服器時最終確定,伺服器將基於名稱的網要資訊和互操作性考慮之類別的因素來決定接受還是拒絕該名稱。

在測試名稱的相等性時,屬性型別(二進制和字元串值)不區分大小寫。值不同但使用等效的參考、轉義或 UTF8 十六進制編碼的字元串視為相等。多值 RDN 中元件的順序(如 "ou=Sales+cn=Bob")無關緊要。

LDAP 名稱的元件(即 RDN)已經編號。帶有 n 個 RDN 的 LDAP 名稱的索引範圍從 0 到 n-1。可將該範圍寫為 [0,n)。最右邊的 RDN 位於索引 0 處,最左邊的 RDN 位於索引 n-1 處。例如,標識名:"CN=Steve Kille, O=Isode Limited, C=GB" 按以下順序進行編號,範圍為從 0 到 2:{C=GB, O=Isode Limited, CN=Steve Kille}。空 LDAP 名稱由空 RDN 列表表示。

LdapName 的實例的共時多執行緒只讀存取不必是同步的。

除非另有說明,否則將 null 參數傳遞給此類別中的建構子或方法的行為都會導致拋出 NullPointerException。

從以下版本開始:
1.5
另請參見:
序列化表格

建構子摘要
LdapName(List<Rdn> rdns)
          在給定已解析 RDN 元件的情況下建構 LDAP 名稱。
LdapName(String name)
          根據給定標識名建構 LDAP 名稱。
 
方法摘要
 Name add(int posn, Rdn comp)
          將單個 RDN 添加到此 LDAP 名稱中的指定位置。
 Name add(int posn, String comp)
          將單個元件添加到此 LDAP 名稱中的指定位置。
 Name add(Rdn comp)
          將單個 RDN 添加到此 LDAP 名稱的末尾。
 Name add(String comp)
          將單個元件添加到此 LDAP 名稱的末尾。
 Name addAll(int posn, List<Rdn> suffixRdns)
          按順序將名稱的 RDN 添加到此名稱中的指定位置。
 Name addAll(int posn, Name suffix)
          按順序將名稱的元件添加到此名稱中的指定位置。
 Name addAll(List<Rdn> suffixRdns)
          按順序將名稱的 RDN 添加到此名稱的末尾。
 Name addAll(Name suffix)
          按順序將名稱的元件添加到此名稱的末尾。
 Object clone()
          產生此名稱的新副本。
 int compareTo(Object obj)
          比較此 LdapName 與指定 Object 的順序。
 boolean endsWith(List<Rdn> rdns)
          確定指定的 RDN 序列是否形成此 LDAP 名稱的後綴。
 boolean endsWith(Name n)
          確定此 LDAP 名稱是否以某一指定 LDAP 名稱後綴結尾。
 boolean equals(Object obj)
          確定兩個 LDAP 名稱是否相等。
 String get(int posn)
          以字元串形式檢索此 LDAP 名稱的元件。
 Enumeration<String> getAll()
          以字元串列舉的形式檢索此名稱的元件。
 Name getPrefix(int posn)
          創建一個名稱,其元件由此 LDAP 名稱中元件的前綴組成。
 Rdn getRdn(int posn)
          以 Rdn 形式檢索此 LDAP 名稱的 RDN。
 List<Rdn> getRdns()
          檢索相對標識名列表。
 Name getSuffix(int posn)
          創建一個名稱,其元件由此 LDAP 名稱中元件的後綴組成。
 int hashCode()
          計算此 LDAP 名稱的雜湊碼。
 boolean isEmpty()
          確定此 LDAP 名稱是否為空。
 Object remove(int posn)
          從此 LDAP 名稱中移除一個元件。
 int size()
          檢索此 LDAP 名稱中的元件數。
 boolean startsWith(List<Rdn> rdns)
          確定指定的 RDN 序列是否形成此 LDAP 名稱的前綴。
 boolean startsWith(Name n)
          確定此 LDAP 名稱是否從某一指定 LDAP 名稱前綴開始。
 String toString()
          返回一個此 LDAP 名稱的字元串表示形式,該表示形式使用 RFC 2253 定義並在類別描述中描述的格式。
 
從類別 java.lang.Object 繼承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

建構子詳細資訊

LdapName

public LdapName(String name)
         throws InvalidNameException
根據給定標識名建構 LDAP 名稱。

參數:
name - 此為根據在 RFC 2253 中定義的規則格式化的非 null 標識名。
拋出:
InvalidNameException - 如果檢測到違反語法的情況。
另請參見:
Rdn.escapeValue(Object value)

LdapName

public LdapName(List<Rdn> rdns)
在給定已解析 RDN 元件的情況下建構 LDAP 名稱。

列表中 RDN 的索引遵從類別描述中描述的 RDN 編號方式。

參數:
rdns - 形成此 LDAP 名稱的非 null Rdn 列表。
方法詳細資訊

size

public int size()
檢索此 LDAP 名稱中的元件數。

指定者:
介面 Name 中的 size
返回:
此 LDAP 名稱中的非負元件數。

isEmpty

public boolean isEmpty()
確定此 LDAP 名稱是否為空。空名稱是沒有任何元件的名稱。

指定者:
介面 Name 中的 isEmpty
返回:
如果此 LDAP 名稱為空,則返回 true,否則返回 false。

getAll

public Enumeration<String> getAll()
以字元串列舉的形式檢索此名稱的元件。在此列舉上更新此名稱的結果是不確定的。如果該名稱沒有元件,則返回空(非 null)列舉。列舉返回元件的順序與根據類別描述中的描述對元件進行編號的順序相同。

指定者:
介面 Name 中的 getAll
返回:
此 LDAP 名稱元件所組成的非 null 列舉。每個列舉元素都屬於 String 類別。

get

public String get(int posn)
以字元串形式檢索此 LDAP 名稱的元件。

指定者:
介面 Name 中的 get
參數:
posn - 要檢索的從 0 開始的元件索引。該索引必須在範圍 [0,size()) 內。
返回:
位於索引 posn 處的非 null 元件。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

getRdn

public Rdn getRdn(int posn)
以 Rdn 形式檢索此 LDAP 名稱的 RDN。

參數:
posn - 要檢索的從 0 開始的 RDN 索引。該索引必須在範圍 [0,size()) 內。
返回:
位於索引 posn 處的非 null RDN。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

getPrefix

public Name getPrefix(int posn)
創建一個名稱,其元件由此 LDAP 名稱中元件的前綴組成。對此名稱進行的後續更改不會影響返回的名稱,反之亦然。

指定者:
介面 Name 中的 getPrefix
參數:
posn - 從 0 開始的元件索引,在該索引處停止。該索引必須在範圍 [0,size()] 內。
返回:
由索引範圍在 [0,posn) 之間的元件組成的 LdapName 實例。如果 posn 為零,則返回空 LDAP 名稱。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

getSuffix

public Name getSuffix(int posn)
創建一個名稱,其元件由此 LDAP 名稱中元件的後綴組成。對此名稱進行的後續更改不會影響返回的名稱,反之亦然。

指定者:
介面 Name 中的 getSuffix
參數:
posn - 從 0 開始的元件索引,在該索引處開始。該索引必須在範圍 [0,size()] 內。
返回:
由索引範圍在 [posn,size()) 之間的元件組成的 LdapName 實例。如果 posn 等於 size(),則返回一個空 LDAP 名稱。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

startsWith

public boolean startsWith(Name n)
確定此 LDAP 名稱是否從某一指定 LDAP 名稱前綴開始。如果名稱 n 等於 getPrefix(n.size()),則該名稱是前綴,換句話說,此 LDAP 名稱從 'n' 開始。如果 n 為 null 或者不是按照類別描述中的描述進行格式化的 RFC2253,則返回 false。

指定者:
介面 Name 中的 startsWith
參數:
n - 要檢查的 LDAP 名稱。
返回:
如果 n 是此 LDAP 名稱的前綴,則返回 true,否則返回 false。
另請參見:
getPrefix(int posn)

startsWith

public boolean startsWith(List<Rdn> rdns)
確定指定的 RDN 序列是否形成此 LDAP 名稱的前綴。如果此 LdapName 至少等於 rdns 的長度,則返回 true,對於範圍 [0, rdns.size()) 中的每個位置 p,元件 getRdn(p) 都比對 rdns.get(p)。否則返回 false。如果 rdns 為 null,則返回 false。

參數:
rdns - 要檢查的 Rdn 的序列。
返回:
如果 rdns 形成此 LDAP 名稱的前綴,則返回 true,否則返回 false。

endsWith

public boolean endsWith(Name n)
確定此 LDAP 名稱是否以某一指定 LDAP 名稱後綴結尾。如果名稱 n 等於 getSuffix(size()-n.size()),則該名稱是後綴,換句話說,此 LDAP 名稱以 'n' 結尾。如果 n 為 null 或者不是按照類別描述中的描述進行格式化的 RFC2253,則返回 false。

指定者:
介面 Name 中的 endsWith
參數:
n - 要檢查的 LDAP 名稱。
返回:
如果 n 是此名稱的後綴,則返回 true,否則返回 false。
另請參見:
getSuffix(int posn)

endsWith

public boolean endsWith(List<Rdn> rdns)
確定指定的 RDN 序列是否形成此 LDAP 名稱的後綴。如果此 LdapName 至少等於 rdns 的長度,則返回 true,對於範圍 [size() - rdns.size(), size()) 中的每個位置 p,元件 getRdn(p) 都比對 rdns.get(p)。否則返回 false。如果 rdns 為 null,則返回 false。

參數:
rdns - 要檢查的 Rdn 的序列。
返回:
如果 rdns 形成此 LDAP 名稱的後綴,則返回 true,否則返回 false。

addAll

public Name addAll(Name suffix)
            throws InvalidNameException
按順序將名稱的元件添加到此名稱的末尾。

指定者:
介面 Name 中的 addAll
參數:
suffix - 要添加的非 null 元件。
返回:
已更新的名稱(而不是新實例)。
拋出:
InvalidNameException - 如果 suffix 不是一個有效的 LDAP 名稱,或者添加元件將違反此 LDAP 名稱的語法規則。

addAll

public Name addAll(List<Rdn> suffixRdns)
按順序將名稱的 RDN 添加到此名稱的末尾。

參數:
suffixRdns - 要添加的非 null 後綴 Rdn
返回:
已更新的名稱(而不是新實例)。

addAll

public Name addAll(int posn,
                   Name suffix)
            throws InvalidNameException
按順序將名稱的元件添加到此名稱中的指定位置。此 LDAP 名稱位於第一個新元件的索引(如果有)處或這之後的元件被上移(遠離索引 0),以容納新元件。

指定者:
介面 Name 中的 addAll
參數:
suffix - 要添加的非 null 元件。
posn - 在其所在位置處添加新元件的索引。該索引必須在範圍 [0,size()] 內。
返回:
更新的名稱(而不是新實例)。
拋出:
InvalidNameException - 如果 suffix 不是一個有效的 LDAP 名稱,或者添加元件將違反此 LDAP 名稱的語法規則。
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

addAll

public Name addAll(int posn,
                   List<Rdn> suffixRdns)
按順序將名稱的 RDN 添加到此名稱中的指定位置。此 LDAP 名稱位於第一個新 RDN 的索引(如果有)處或這之後的 RDN 被上移(遠離索引 0),以容納新 RDN。

參數:
suffixRdns - 要添加的非 null 後綴 Rdn
posn - 在其所在位置處添加後綴 RDN 的索引。該索引必須在範圍 [0,size()] 內。
返回:
更新的名稱(而不是新實例)。
拋出:
IndexOutOfBoundsException.如果 - posn 超出指定範圍。

add

public Name add(String comp)
         throws InvalidNameException
將單個元件添加到此 LDAP 名稱的末尾。

指定者:
介面 Name 中的 add
參數:
comp - 要添加的非 null 元件。
返回:
更新的 LdapName,而不是新實例。不能為 null。
拋出:
InvalidNameException - 如果在該名稱末尾添加 comp 違反該名稱的語法。

add

public Name add(Rdn comp)
將單個 RDN 添加到此 LDAP 名稱的末尾。

參數:
comp - 要添加的非 null RDN。
返回:
更新的 LdapName,而不是新實例。不能為 null。

add

public Name add(int posn,
                String comp)
         throws InvalidNameException
將單個元件添加到此 LDAP 名稱中的指定位置。此 LDAP 名稱位於新元件的索引(如果有)處或這之後的元件被上移(遠離索引 0)一位,以容納新元件。

指定者:
介面 Name 中的 add
參數:
comp - 要添加的非 null 元件。
posn - 在其所在位置處添加新元件的索引。該索引必須在範圍 [0,size()] 內。
返回:
更新的 LdapName,而不是新實例。不能為 null。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。
InvalidNameException - 如果在指定位置添加 comp 違反該名稱的語法。

add

public Name add(int posn,
                Rdn comp)
將單個 RDN 添加到此 LDAP 名稱中的指定位置。此 LDAP 名稱位於新 RDN 的索引(如果有)處或這之後的 RDN 被上移(遠離索引 0)一位,以容納新 RDN。

參數:
comp - 要添加的非 null RDN。
posn - 在其所在位置處添加新 RDN 的索引。該索引必須在範圍 [0,size()] 內。
返回:
更新的 LdapName,而不是新實例。不能為 null。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。

remove

public Object remove(int posn)
              throws InvalidNameException
從此 LDAP 名稱中移除一個元件。移除此名稱位於指定位置處的元件。索引大於此位置的元件(如果有)都被下移(朝向索引 0)一位。

指定者:
介面 Name 中的 remove
參數:
posn - 要移除的元件的索引。該索引必須在範圍 [0,size()) 內。
返回:
移除的元件(一個 String)。
拋出:
IndexOutOfBoundsException - 如果 posn 超出指定範圍。
InvalidNameException - 如果刪除元件將違反該名稱的語法規則。

getRdns

public List<Rdn> getRdns()
檢索相對標識名列表。列表的內容不可修改。返回列表中 RDN 的索引遵從類別描述中描述的 RDN 編號方式。如果名稱沒有元件,則返回空列表。

返回:
作為 RDN 列表的名稱,這些 RDN 是 Rdn 類別的實例。

clone

public Object clone()
產生此名稱的新副本。對此名稱的元件進行的後續更改不會影響新副本,反之亦然。

指定者:
介面 Name 中的 clone
覆寫:
類別 Object 中的 clone
返回:
此 LDAP 名稱的副本。
另請參見:
Cloneable

toString

public String toString()
返回一個此 LDAP 名稱的字元串表示形式,該表示形式使用 RFC 2253 定義並在類別描述中描述的格式。如果名稱沒有元件,則返回空字元串。

覆寫:
類別 Object 中的 toString
返回:
LdapName 的字元串表示形式。

equals

public boolean equals(Object obj)
確定兩個 LDAP 名稱是否相等。如果 obj 為 null 或者不是 LDAP 名稱,則返回 false。

如果一個 LDAP 名稱中的每個 RDN 都等於另一個 LDAP 名稱中的相應 RDN,則兩個 LDAP 名稱相等。這意味著兩個 LDAP 名稱有相同數量的 RDN,並且每個 RDN 與另一個名稱中相應 RDN 的 equals() 測試都返回 true。有關 RDN 相等性的定義,請參閱 Rdn.equals(Object obj)

覆寫:
類別 Object 中的 equals
參數:
obj - 要與之比較的物件(可能為 null)。
返回:
如果 obj 等於此 LDAP 名稱,則返回 true,否則返回 false。
另請參見:
hashCode()

compareTo

public int compareTo(Object obj)
比較此 LdapName 與指定 Object 的順序。根據此 Name 小於、等於還是大於指定 Object 分別返回負整數、零或正整數。

如果 obj 為 null 或者不是一個 LdapName 實例,則拋出 ClassCastException。

LDAP 名稱的排序遵從字元串比較的字典規則,並將此擴展到應用於 LDAP 名稱中的所有 RDN。按照 RDN 的指定順序將它們排列起來,並按字典順序進行比較。有關 RDN 比較規則,請參見 Rdn.compareTo(Object obj)

如果此 LDAP 名稱按字典順序小於 obj,則返回一個負數。如果此 LDAP 名稱按字典順序大於 obj,則返回一個正數。

指定者:
介面 Comparable<Object> 中的 compareTo
指定者:
介面 Name 中的 compareTo
參數:
obj - 要與之比較的非 null LdapName 實例。
返回:
根據此 Name 小於、等於還是大於指定 obj 分別返回負整數、零或正整數。
拋出:
ClassCastException - 如果 obj 為 null 或者不是一個 LdapName。
另請參見:
Comparable.compareTo(Object)

hashCode

public int hashCode()
計算此 LDAP 名稱的雜湊碼。該雜湊碼是此名稱各個 RDN 雜湊碼的總和。

覆寫:
類別 Object 中的 hashCode
返回:
表示此名稱的雜湊碼的 int。
另請參見:
equals(java.lang.Object)

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only