org.apache.jackrabbit.util
Class Text

java.lang.Object
  extended byorg.apache.jackrabbit.util.Text

public class Text
extends Object

This Class provides some text related utilities


Field Summary
static char[] hexTable
          used for the md5
static BitSet URISave
          The list of characters that are not encoded by the escape() and unescape() METHODS.
static BitSet URISaveEx
          Same as URISave but also contains the '/'
 
Method Summary
static String digest(String algorithm, byte[] data)
          Digest the plain string using the given algorithm.
static String digest(String algorithm, String data, String enc)
          Digest the plain string using the given algorithm.
static String encodeIllegalXMLCharacters(String text)
          Replaces illegal XML characters in the given string by their corresponding predefined entity references.
static String escape(String string)
          Does a URL encoding of the string.
static String escape(String string, char escape)
          Does an URL encoding of the string using the escape character.
static String escape(String string, char escape, boolean isPath)
          Does an URL encoding of the string using the escape character.
static String escapePath(String path)
          Does a URL encoding of the path.
static String[] explode(String str, int ch)
          returns an array of strings decomposed of the original string, split at every occurance of 'ch'.
static String[] explode(String str, int ch, boolean respectEmpty)
          returns an array of strings decomposed of the original string, split at every occurance of 'ch'.
static String getAbsoluteParent(String path, int level)
          Returns the nth absolute parent of the path, where n=level.
static String getLocalName(String qname)
          Returns the local name of the given qname.
static String getName(String path)
          Returns the name part of the path
static String getName(String path, char delim)
          Returns the name part of the path, delimited by the given delim
static String getNamespacePrefix(String qname)
          Returns the namespace prefix of the given qname.
static String getRelativeParent(String path, int level)
          Returns the nth relative parent of the path, where n=level.
static String implode(String[] arr, String delim)
          Concatenates all strings in the string array using the specified delimiter.
static boolean isDescendant(String path, String descendant)
          Determines if the descendant path is hierarchical a descendant of path.
static boolean isDescendantOrEqual(String path, String descendant)
          Determines if the descendant path is hierarchical a descendant of path or equal to it.
static boolean isSibling(String p1, String p2)
          Determines, if two paths denote hierarchical siblins.
static String md5(String data)
          Calculate an MD5 hash of the string given using 'utf-8' encoding.
static String md5(String data, String enc)
          Calculate an MD5 hash of the string given.
static String replace(String text, String oldString, String newString)
          Replaces all occurences of oldString in text with newString.
static String replaceVariables(Properties variables, String value, boolean ignoreMissing)
          Performs variable replacement on the given string value.
static String unescape(String string)
          Does a URL decoding of the string.
static String unescape(String string, char escape)
          Does a URL decoding of the string using the escape character.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

hexTable

public static final char[] hexTable
used for the md5


URISave

public static BitSet URISave
The list of characters that are not encoded by the escape() and unescape() METHODS. They contains the characters as defined 'unreserved' in section 2.3 of the RFC 2396 'URI generic syntax':

 unreserved  = alphanum | mark
 mark        = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"
 


URISaveEx

public static BitSet URISaveEx
Same as URISave but also contains the '/'

Method Detail

md5

public static String md5(String data,
                         String enc)
                  throws UnsupportedEncodingException
Calculate an MD5 hash of the string given.

Parameters:
data - the data to encode
enc - the character encoding to use
Returns:
a hex encoded string of the md5 digested input
Throws:
UnsupportedEncodingException

md5

public static String md5(String data)
Calculate an MD5 hash of the string given using 'utf-8' encoding.

Parameters:
data - the data to encode
Returns:
a hex encoded string of the md5 digested input

digest

public static String digest(String algorithm,
                            String data,
                            String enc)
                     throws NoSuchAlgorithmException,
                            UnsupportedEncodingException
Digest the plain string using the given algorithm.

Parameters:
algorithm - The alogrithm for the digest. This algorithm must be supported by the MessageDigest class.
data - The plain text String to be digested.
enc - The character encoding to use
Returns:
The digested plain text String represented as Hex digits.
Throws:
NoSuchAlgorithmException - if the desired algorithm is not supported by the MessageDigest class.
UnsupportedEncodingException - if the encoding is not supported

digest

public static String digest(String algorithm,
                            byte[] data)
                     throws NoSuchAlgorithmException
Digest the plain string using the given algorithm.

Parameters:
algorithm - The alogrithm for the digest. This algorithm must be supported by the MessageDigest class.
data - the data to digest with the given algorithm
Returns:
The digested plain text String represented as Hex digits.
Throws:
NoSuchAlgorithmException - if the desired algorithm is not supported by the MessageDigest class.

explode

public static String[] explode(String str,
                               int ch)
returns an array of strings decomposed of the original string, split at every occurance of 'ch'. if 2 'ch' follow each other with no intermediate characters, empty "" entries are avoided.

Parameters:
str - the string to decompose
ch - the character to use a split pattern
Returns:
an array of strings

explode

public static String[] explode(String str,
                               int ch,
                               boolean respectEmpty)
returns an array of strings decomposed of the original string, split at every occurance of 'ch'.

Parameters:
str - the string to decompose
ch - the character to use a split pattern
respectEmpty - if true, empty elements are generated
Returns:
an array of strings

implode

public static String implode(String[] arr,
                             String delim)
Concatenates all strings in the string array using the specified delimiter.

Parameters:
arr -
delim -
Returns:
the concatenated string

replace

public static String replace(String text,
                             String oldString,
                             String newString)
Replaces all occurences of oldString in text with newString.

Parameters:
text -
oldString - old substring to be replaced with newString
newString - new substring to replace occurences of oldString
Returns:
a string

encodeIllegalXMLCharacters

public static String encodeIllegalXMLCharacters(String text)
Replaces illegal XML characters in the given string by their corresponding predefined entity references.

Parameters:
text - text to be escaped
Returns:
a string

escape

public static String escape(String string,
                            char escape)
Does an URL encoding of the string using the escape character. The characters that don't need encoding are those defined 'unreserved' in section 2.3 of the 'URI generic syntax' RFC 2396, but without the escape character.

Parameters:
string - the string to encode.
escape - the escape character.
Returns:
the escaped string
Throws:
NullPointerException - if string is null.

escape

public static String escape(String string,
                            char escape,
                            boolean isPath)
Does an URL encoding of the string using the escape character. The characters that don't need encoding are those defined 'unreserved' in section 2.3 of the 'URI generic syntax' RFC 2396, but without the escape character. If isPath is true, additionally the slash '/' is ignored, too.

Parameters:
string - the string to encode.
escape - the escape character.
isPath - if true, the string is treated as path
Returns:
the escaped string
Throws:
NullPointerException - if string is null.

escape

public static String escape(String string)
Does a URL encoding of the string. The characters that don't need encoding are those defined 'unreserved' in section 2.3 of the 'URI generic syntax' RFC 2396.

Parameters:
string - the string to encode
Returns:
the escaped string
Throws:
NullPointerException - if string is null.

escapePath

public static String escapePath(String path)
Does a URL encoding of the path. The characters that don't need encoding are those defined 'unreserved' in section 2.3 of the 'URI generic syntax' RFC 2396. In contrast to the escape(String) method, not the entire path string is escaped, but every individual part (i.e. the slashes are not escaped).

Parameters:
path - the path to encode
Returns:
the escaped path
Throws:
NullPointerException - if path is null.

unescape

public static String unescape(String string,
                              char escape)
Does a URL decoding of the string using the escape character. Please note that in opposite to the URLDecoder it does not transform the + into spaces.

Parameters:
string - the string to decode
escape - the escape character
Returns:
the decoded string
Throws:
NullPointerException - if string is null.
ArrayIndexOutOfBoundsException - if not enough character follow an escape character
IllegalArgumentException - if the 2 characters following the escape character do not represent a hex-number.

unescape

public static String unescape(String string)
Does a URL decoding of the string. Please note that in opposite to the URLDecoder it does not transform the + into spaces.

Parameters:
string - the string to decode
Returns:
the decoded string
Throws:
NullPointerException - if string is null.
ArrayIndexOutOfBoundsException - if not enough character follow an escape character
IllegalArgumentException - if the 2 characters following the escape character do not represent a hex-number.

getName

public static String getName(String path)
Returns the name part of the path

Parameters:
path - the path
Returns:
the name part

getNamespacePrefix

public static String getNamespacePrefix(String qname)
Returns the namespace prefix of the given qname. If the prefix is missing, an empty string is returned. Please note, that this method does not validate the name or prefix.

the qname has the format: qname := [prefix ':'] local;

Parameters:
qname - a qualified name
Returns:
the prefix of the name or "".
Throws:
NullPointerException - if qname is null
See Also:
getLocalName(String)

getLocalName

public static String getLocalName(String qname)
Returns the local name of the given qname. Please note, that this method does not validate the name.

the qname has the format: qname := [prefix ':'] local;

Parameters:
qname - a qualified name
Returns:
the localname
Throws:
NullPointerException - if qname is null
See Also:
getNamespacePrefix(String)

getName

public static String getName(String path,
                             char delim)
Returns the name part of the path, delimited by the given delim

Parameters:
path - the path
delim - the delimiter
Returns:
the name part

isSibling

public static boolean isSibling(String p1,
                                String p2)
Determines, if two paths denote hierarchical siblins.

Parameters:
p1 - first path
p2 - second path
Returns:
true if on same level, false otherwise

isDescendant

public static boolean isDescendant(String path,
                                   String descendant)
Determines if the descendant path is hierarchical a descendant of path.

Parameters:
path - the current path
descendant - the potential descendant
Returns:
true if the descendant is a descendant; false otherwise.

isDescendantOrEqual

public static boolean isDescendantOrEqual(String path,
                                          String descendant)
Determines if the descendant path is hierarchical a descendant of path or equal to it.

Parameters:
path - the path to check
descendant - the potential descendant
Returns:
true if the descendant is a descendant or equal; false otherwise.

getRelativeParent

public static String getRelativeParent(String path,
                                       int level)
Returns the nth relative parent of the path, where n=level.

Example:
Text.getRelativeParent("/foo/bar/test", 1) == "/foo/bar"

Parameters:
path - the path of the page
level - the level of the parent

getAbsoluteParent

public static String getAbsoluteParent(String path,
                                       int level)
Returns the nth absolute parent of the path, where n=level.

Example:
Text.getAbsoluteParent("/foo/bar/test", 1) == "/foo/bar"

Parameters:
path - the path of the page
level - the level of the parent

replaceVariables

public static String replaceVariables(Properties variables,
                                      String value,
                                      boolean ignoreMissing)
                               throws IllegalArgumentException
Performs variable replacement on the given string value. Each ${...} sequence within the given value is replaced with the value of the named parser variable. If a variable is not found in the properties an IllegalArgumentException is thrown unless ignoreMissing is true. In the later case, the missing variable is replaced by the empty string.

Parameters:
value - the original value
ignoreMissing - if true, missing variables are replaced by the empty string.
Returns:
value after variable replacements
Throws:
IllegalArgumentException - if the replacement of a referenced variable is not found


Copyright © 2004-2006 The Apache Software Foundation. All Rights Reserved.