Class Text


  • public class Text
    extends Object
    This Class provides some text related utilities
    • 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)
        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,
                                    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.
        IllegalArgumentException - if the 2 characters following the escape character do not represent a hex-number or if not enough characters follow an escape character
      • 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.
      • escapeIllegalJcrChars

        public static String escapeIllegalJcrChars​(String name)
        Escapes all illegal JCR name characters of a string. The encoding is loosely modeled after URI encoding, but only encodes the characters it absolutely needs to in order to make the resulting string a valid JCR name. Use unescapeIllegalJcrChars(String) for decoding.

        QName EBNF:

         simplename ::= onecharsimplename | twocharsimplename | threeormorecharname
         onecharsimplename ::= (* Any Unicode character except: '.', '/', ':', '[', ']', '*', ''', '"', '|' or any whitespace character *)
         twocharsimplename ::= '.' onecharsimplename | onecharsimplename '.' | onecharsimplename onecharsimplename
         threeormorecharname ::= nonspace string nonspace
         string ::= char | string char
         char ::= nonspace | ' '
         nonspace ::= (* Any Unicode character except: '/', ':', '[', ']', '*', ''', '"', '|' or any whitespace character *)
         
        Parameters:
        name - the name to escape
        Returns:
        the escaped name
      • escapeIllegalXpathSearchChars

        public static String escapeIllegalXpathSearchChars​(String s)
        Escapes all illegal XPath search characters of a string.

        Example:
        A search string like 'test?' will run into a ParseException documented in http://issues.apache.org/jira/browse/JCR-1248

        Parameters:
        s - the string to encode
        Returns:
        the escaped string
      • unescapeIllegalJcrChars

        public static String unescapeIllegalJcrChars​(String name)
        Unescapes previously escaped jcr chars.

        Please note, that this does not exactly the same as the url related unescape(String), since it handles the byte-encoding differently.

        Parameters:
        name - the name to unescape
        Returns:
        the unescaped name
      • getName

        public static String getName​(String path)
        Returns the name part of the path. If the given path is already a name (i.e. contains no slashes) it is returned.
        Parameters:
        path - the path
        Returns:
        the name part or null if path is null.
      • getName

        public static String getName​(String path,
                                     char delim)
        Returns the name part of the path, delimited by the given delim. If the given path is already a name (i.e. contains no delim characters) it is returned.
        Parameters:
        path - the path
        delim - the delimiter
        Returns:
        the name part or null if path is null.
      • 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)
      • 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